• Home
  • Raw
  • Download

Lines Matching full: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 if (!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()
667 struct extent_tree *et, *next; in f2fs_shrink_extent_tree() local
682 list_for_each_entry_safe(et, next, &sbi->zombie_list, list) { in f2fs_shrink_extent_tree()
683 if (atomic_read(&et->node_cnt)) { in f2fs_shrink_extent_tree()
684 write_lock(&et->lock); in f2fs_shrink_extent_tree()
685 node_cnt += __free_extent_tree(sbi, et); in f2fs_shrink_extent_tree()
686 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
688 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_shrink_extent_tree()
689 list_del_init(&et->list); in f2fs_shrink_extent_tree()
690 radix_tree_delete(&sbi->extent_tree_root, et->ino); in f2fs_shrink_extent_tree()
691 kmem_cache_free(extent_tree_slab, et); in f2fs_shrink_extent_tree()
715 et = en->et; in f2fs_shrink_extent_tree()
716 if (!write_trylock(&et->lock)) { in f2fs_shrink_extent_tree()
725 __detach_extent_node(sbi, et, en); in f2fs_shrink_extent_tree()
727 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
744 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_node() local
747 if (!et || !atomic_read(&et->node_cnt)) in f2fs_destroy_extent_node()
750 write_lock(&et->lock); in f2fs_destroy_extent_node()
751 node_cnt = __free_extent_tree(sbi, et); in f2fs_destroy_extent_node()
752 write_unlock(&et->lock); in f2fs_destroy_extent_node()
760 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_drop_extent_tree() local
766 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()