Lines Matching refs:et

236 				struct extent_tree *et, struct extent_info *ei,  in __attach_extent_node()  argument
248 en->et = et; in __attach_extent_node()
251 rb_insert_color_cached(&en->rb_node, &et->root, leftmost); in __attach_extent_node()
252 atomic_inc(&et->node_cnt); in __attach_extent_node()
258 struct extent_tree *et, struct extent_node *en) in __detach_extent_node() argument
260 rb_erase_cached(&en->rb_node, &et->root); in __detach_extent_node()
261 atomic_dec(&et->node_cnt); in __detach_extent_node()
264 if (et->cached_en == en) in __detach_extent_node()
265 et->cached_en = NULL; in __detach_extent_node()
276 struct extent_tree *et, struct extent_node *en) in __release_extent_node() argument
283 __detach_extent_node(sbi, et, en); in __release_extent_node()
289 struct extent_tree *et; in __grab_extent_tree() local
293 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __grab_extent_tree()
294 if (!et) { in __grab_extent_tree()
295 et = f2fs_kmem_cache_alloc(extent_tree_slab, in __grab_extent_tree()
297 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
298 memset(et, 0, sizeof(struct extent_tree)); in __grab_extent_tree()
299 et->ino = ino; in __grab_extent_tree()
300 et->root = RB_ROOT_CACHED; in __grab_extent_tree()
301 et->cached_en = NULL; in __grab_extent_tree()
302 rwlock_init(&et->lock); in __grab_extent_tree()
303 INIT_LIST_HEAD(&et->list); in __grab_extent_tree()
304 atomic_set(&et->node_cnt, 0); in __grab_extent_tree()
308 list_del_init(&et->list); in __grab_extent_tree()
313 F2FS_I(inode)->extent_tree = et; in __grab_extent_tree()
315 return et; in __grab_extent_tree()
319 struct extent_tree *et, struct extent_info *ei) in __init_extent_tree() argument
321 struct rb_node **p = &et->root.rb_root.rb_node; in __init_extent_tree()
324 en = __attach_extent_node(sbi, et, ei, NULL, p, true); in __init_extent_tree()
328 et->largest = en->ei; in __init_extent_tree()
329 et->cached_en = en; in __init_extent_tree()
334 struct extent_tree *et) in __free_extent_tree() argument
338 unsigned int count = atomic_read(&et->node_cnt); in __free_extent_tree()
340 node = rb_first_cached(&et->root); in __free_extent_tree()
344 __release_extent_node(sbi, et, en); in __free_extent_tree()
348 return count - atomic_read(&et->node_cnt); in __free_extent_tree()
351 static void __drop_largest_extent(struct extent_tree *et, in __drop_largest_extent() argument
354 if (fofs < et->largest.fofs + et->largest.len && in __drop_largest_extent()
355 fofs + len > et->largest.fofs) { in __drop_largest_extent()
356 et->largest.len = 0; in __drop_largest_extent()
357 et->largest_updated = true; in __drop_largest_extent()
366 struct extent_tree *et; in __f2fs_init_extent_tree() local
381 et = __grab_extent_tree(inode); in __f2fs_init_extent_tree()
388 write_lock(&et->lock); in __f2fs_init_extent_tree()
389 if (atomic_read(&et->node_cnt)) in __f2fs_init_extent_tree()
392 en = __init_extent_tree(sbi, et, &ei); in __f2fs_init_extent_tree()
399 write_unlock(&et->lock); in __f2fs_init_extent_tree()
414 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_lookup_extent_tree() local
418 f2fs_bug_on(sbi, !et); in f2fs_lookup_extent_tree()
422 read_lock(&et->lock); in f2fs_lookup_extent_tree()
424 if (et->largest.fofs <= pgofs && in f2fs_lookup_extent_tree()
425 et->largest.fofs + et->largest.len > pgofs) { in f2fs_lookup_extent_tree()
426 *ei = et->largest; in f2fs_lookup_extent_tree()
432 en = (struct extent_node *)f2fs_lookup_rb_tree(&et->root, in f2fs_lookup_extent_tree()
433 (struct rb_entry *)et->cached_en, pgofs); in f2fs_lookup_extent_tree()
437 if (en == et->cached_en) in f2fs_lookup_extent_tree()
446 et->cached_en = en; in f2fs_lookup_extent_tree()
452 read_unlock(&et->lock); in f2fs_lookup_extent_tree()
459 struct extent_tree *et, struct extent_info *ei, in __try_merge_extent_node() argument
476 __release_extent_node(sbi, et, prev_ex); in __try_merge_extent_node()
484 __try_update_largest_extent(et, en); in __try_merge_extent_node()
489 et->cached_en = en; in __try_merge_extent_node()
496 struct extent_tree *et, struct extent_info *ei, in __insert_extent_tree() argument
513 p = f2fs_lookup_rb_tree_for_insert(sbi, &et->root, &parent, in __insert_extent_tree()
516 en = __attach_extent_node(sbi, et, ei, parent, p, leftmost); in __insert_extent_tree()
520 __try_update_largest_extent(et, en); in __insert_extent_tree()
525 et->cached_en = en; in __insert_extent_tree()
534 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_update_extent_tree_range() local
544 if (!et) in f2fs_update_extent_tree_range()
549 write_lock(&et->lock); in f2fs_update_extent_tree_range()
552 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
556 prev = et->largest; in f2fs_update_extent_tree_range()
563 __drop_largest_extent(et, fofs, len); in f2fs_update_extent_tree_range()
566 en = (struct extent_node *)f2fs_lookup_rb_tree_ret(&et->root, in f2fs_update_extent_tree_range()
567 (struct rb_entry *)et->cached_en, fofs, in f2fs_update_extent_tree_range()
597 en1 = __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
617 __try_update_largest_extent(et, en); in f2fs_update_extent_tree_range()
619 __release_extent_node(sbi, et, en); in f2fs_update_extent_tree_range()
637 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en)) in f2fs_update_extent_tree_range()
638 __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
644 et->largest.len < F2FS_MIN_EXTENT_LEN) { in f2fs_update_extent_tree_range()
645 et->largest.len = 0; in f2fs_update_extent_tree_range()
646 et->largest_updated = true; in f2fs_update_extent_tree_range()
652 __free_extent_tree(sbi, et); in f2fs_update_extent_tree_range()
654 if (et->largest_updated) { in f2fs_update_extent_tree_range()
655 et->largest_updated = false; in f2fs_update_extent_tree_range()
659 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
671 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_update_extent_tree_range_compressed() local
684 write_lock(&et->lock); in f2fs_update_extent_tree_range_compressed()
686 en = (struct extent_node *)f2fs_lookup_rb_tree_ret(&et->root, in f2fs_update_extent_tree_range_compressed()
687 (struct rb_entry *)et->cached_en, fofs, in f2fs_update_extent_tree_range_compressed()
698 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en)) in f2fs_update_extent_tree_range_compressed()
699 __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range_compressed()
702 write_unlock(&et->lock); in f2fs_update_extent_tree_range_compressed()
708 struct extent_tree *et, *next; in f2fs_shrink_extent_tree() local
723 list_for_each_entry_safe(et, next, &sbi->zombie_list, list) { in f2fs_shrink_extent_tree()
724 if (atomic_read(&et->node_cnt)) { in f2fs_shrink_extent_tree()
725 write_lock(&et->lock); in f2fs_shrink_extent_tree()
726 node_cnt += __free_extent_tree(sbi, et); in f2fs_shrink_extent_tree()
727 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
729 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_shrink_extent_tree()
730 list_del_init(&et->list); in f2fs_shrink_extent_tree()
731 radix_tree_delete(&sbi->extent_tree_root, et->ino); in f2fs_shrink_extent_tree()
732 kmem_cache_free(extent_tree_slab, et); in f2fs_shrink_extent_tree()
756 et = en->et; in f2fs_shrink_extent_tree()
757 if (!write_trylock(&et->lock)) { in f2fs_shrink_extent_tree()
766 __detach_extent_node(sbi, et, en); in f2fs_shrink_extent_tree()
768 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
785 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_node() local
788 if (!et || !atomic_read(&et->node_cnt)) in f2fs_destroy_extent_node()
791 write_lock(&et->lock); in f2fs_destroy_extent_node()
792 node_cnt = __free_extent_tree(sbi, et); in f2fs_destroy_extent_node()
793 write_unlock(&et->lock); in f2fs_destroy_extent_node()
801 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_drop_extent_tree() local
809 write_lock(&et->lock); in f2fs_drop_extent_tree()
810 __free_extent_tree(sbi, et); in f2fs_drop_extent_tree()
811 if (et->largest.len) { in f2fs_drop_extent_tree()
812 et->largest.len = 0; in f2fs_drop_extent_tree()
815 write_unlock(&et->lock); in f2fs_drop_extent_tree()
823 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_tree() local
826 if (!et) in f2fs_destroy_extent_tree()
830 atomic_read(&et->node_cnt)) { in f2fs_destroy_extent_tree()
832 list_add_tail(&et->list, &sbi->zombie_list); in f2fs_destroy_extent_tree()
843 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_destroy_extent_tree()
845 kmem_cache_free(extent_tree_slab, et); in f2fs_destroy_extent_tree()