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, GFP_NOFS); in __grab_extent_tree()
296 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
297 memset(et, 0, sizeof(struct extent_tree)); in __grab_extent_tree()
298 et->ino = ino; in __grab_extent_tree()
299 et->root = RB_ROOT_CACHED; in __grab_extent_tree()
300 et->cached_en = NULL; in __grab_extent_tree()
301 rwlock_init(&et->lock); in __grab_extent_tree()
302 INIT_LIST_HEAD(&et->list); in __grab_extent_tree()
303 atomic_set(&et->node_cnt, 0); in __grab_extent_tree()
307 list_del_init(&et->list); in __grab_extent_tree()
312 F2FS_I(inode)->extent_tree = et; in __grab_extent_tree()
314 return et; in __grab_extent_tree()
318 struct extent_tree *et, struct extent_info *ei) in __init_extent_tree() argument
320 struct rb_node **p = &et->root.rb_root.rb_node; in __init_extent_tree()
323 en = __attach_extent_node(sbi, et, ei, NULL, p, true); in __init_extent_tree()
327 et->largest = en->ei; in __init_extent_tree()
328 et->cached_en = en; in __init_extent_tree()
333 struct extent_tree *et) in __free_extent_tree() argument
337 unsigned int count = atomic_read(&et->node_cnt); in __free_extent_tree()
339 node = rb_first_cached(&et->root); in __free_extent_tree()
343 __release_extent_node(sbi, et, en); in __free_extent_tree()
347 return count - atomic_read(&et->node_cnt); in __free_extent_tree()
350 static void __drop_largest_extent(struct extent_tree *et, in __drop_largest_extent() argument
353 if (fofs < et->largest.fofs + et->largest.len && in __drop_largest_extent()
354 fofs + len > et->largest.fofs) { in __drop_largest_extent()
355 et->largest.len = 0; in __drop_largest_extent()
356 et->largest_updated = true; in __drop_largest_extent()
365 struct extent_tree *et; in __f2fs_init_extent_tree() local
380 et = __grab_extent_tree(inode); in __f2fs_init_extent_tree()
387 write_lock(&et->lock); in __f2fs_init_extent_tree()
388 if (atomic_read(&et->node_cnt)) in __f2fs_init_extent_tree()
391 en = __init_extent_tree(sbi, et, &ei); in __f2fs_init_extent_tree()
398 write_unlock(&et->lock); in __f2fs_init_extent_tree()
413 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_lookup_extent_tree() local
417 f2fs_bug_on(sbi, !et); in f2fs_lookup_extent_tree()
421 read_lock(&et->lock); in f2fs_lookup_extent_tree()
423 if (et->largest.fofs <= pgofs && in f2fs_lookup_extent_tree()
424 et->largest.fofs + et->largest.len > pgofs) { in f2fs_lookup_extent_tree()
425 *ei = et->largest; in f2fs_lookup_extent_tree()
431 en = (struct extent_node *)f2fs_lookup_rb_tree(&et->root, in f2fs_lookup_extent_tree()
432 (struct rb_entry *)et->cached_en, pgofs); in f2fs_lookup_extent_tree()
436 if (en == et->cached_en) in f2fs_lookup_extent_tree()
445 et->cached_en = en; in f2fs_lookup_extent_tree()
451 read_unlock(&et->lock); in f2fs_lookup_extent_tree()
458 struct extent_tree *et, struct extent_info *ei, in __try_merge_extent_node() argument
475 __release_extent_node(sbi, et, prev_ex); in __try_merge_extent_node()
483 __try_update_largest_extent(et, en); in __try_merge_extent_node()
488 et->cached_en = en; in __try_merge_extent_node()
495 struct extent_tree *et, struct extent_info *ei, in __insert_extent_tree() argument
512 p = f2fs_lookup_rb_tree_for_insert(sbi, &et->root, &parent, in __insert_extent_tree()
515 en = __attach_extent_node(sbi, et, ei, parent, p, leftmost); in __insert_extent_tree()
519 __try_update_largest_extent(et, en); in __insert_extent_tree()
524 et->cached_en = en; in __insert_extent_tree()
533 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_update_extent_tree_range() local
543 if (!et) in f2fs_update_extent_tree_range()
548 write_lock(&et->lock); in f2fs_update_extent_tree_range()
551 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
555 prev = et->largest; in f2fs_update_extent_tree_range()
562 __drop_largest_extent(et, fofs, len); in f2fs_update_extent_tree_range()
565 en = (struct extent_node *)f2fs_lookup_rb_tree_ret(&et->root, in f2fs_update_extent_tree_range()
566 (struct rb_entry *)et->cached_en, fofs, in f2fs_update_extent_tree_range()
596 en1 = __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
616 __try_update_largest_extent(et, en); in f2fs_update_extent_tree_range()
618 __release_extent_node(sbi, et, en); in f2fs_update_extent_tree_range()
636 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en)) in f2fs_update_extent_tree_range()
637 __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
643 et->largest.len < F2FS_MIN_EXTENT_LEN) { in f2fs_update_extent_tree_range()
644 et->largest.len = 0; in f2fs_update_extent_tree_range()
645 et->largest_updated = true; in f2fs_update_extent_tree_range()
651 __free_extent_tree(sbi, et); in f2fs_update_extent_tree_range()
653 if (et->largest_updated) { in f2fs_update_extent_tree_range()
654 et->largest_updated = false; in f2fs_update_extent_tree_range()
658 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
666 struct extent_tree *et, *next; in f2fs_shrink_extent_tree() local
681 list_for_each_entry_safe(et, next, &sbi->zombie_list, list) { in f2fs_shrink_extent_tree()
682 if (atomic_read(&et->node_cnt)) { in f2fs_shrink_extent_tree()
683 write_lock(&et->lock); in f2fs_shrink_extent_tree()
684 node_cnt += __free_extent_tree(sbi, et); in f2fs_shrink_extent_tree()
685 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
687 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_shrink_extent_tree()
688 list_del_init(&et->list); in f2fs_shrink_extent_tree()
689 radix_tree_delete(&sbi->extent_tree_root, et->ino); in f2fs_shrink_extent_tree()
690 kmem_cache_free(extent_tree_slab, et); in f2fs_shrink_extent_tree()
714 et = en->et; in f2fs_shrink_extent_tree()
715 if (!write_trylock(&et->lock)) { in f2fs_shrink_extent_tree()
724 __detach_extent_node(sbi, et, en); in f2fs_shrink_extent_tree()
726 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
743 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_node() local
746 if (!et || !atomic_read(&et->node_cnt)) in f2fs_destroy_extent_node()
749 write_lock(&et->lock); in f2fs_destroy_extent_node()
750 node_cnt = __free_extent_tree(sbi, et); in f2fs_destroy_extent_node()
751 write_unlock(&et->lock); in f2fs_destroy_extent_node()
759 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_drop_extent_tree() local
767 write_lock(&et->lock); in f2fs_drop_extent_tree()
768 __free_extent_tree(sbi, et); in f2fs_drop_extent_tree()
769 if (et->largest.len) { in f2fs_drop_extent_tree()
770 et->largest.len = 0; in f2fs_drop_extent_tree()
773 write_unlock(&et->lock); in f2fs_drop_extent_tree()
781 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_tree() local
784 if (!et) in f2fs_destroy_extent_tree()
788 atomic_read(&et->node_cnt)) { in f2fs_destroy_extent_tree()
790 list_add_tail(&et->list, &sbi->zombie_list); in f2fs_destroy_extent_tree()
801 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_destroy_extent_tree()
803 kmem_cache_free(extent_tree_slab, et); in f2fs_destroy_extent_tree()