• Home
  • Raw
  • Download

Lines Matching refs:sbi

64 struct rb_node **__lookup_rb_tree_for_insert(struct f2fs_sb_info *sbi,  in __lookup_rb_tree_for_insert()  argument
80 f2fs_bug_on(sbi, 1); in __lookup_rb_tree_for_insert()
162 bool __check_rb_tree_consistence(struct f2fs_sb_info *sbi, in __check_rb_tree_consistence() argument
181 f2fs_msg(sbi->sb, KERN_INFO, "inconsistent rbtree, " in __check_rb_tree_consistence()
197 static struct extent_node *__attach_extent_node(struct f2fs_sb_info *sbi, in __attach_extent_node() argument
214 atomic_inc(&sbi->total_ext_node); in __attach_extent_node()
218 static void __detach_extent_node(struct f2fs_sb_info *sbi, in __detach_extent_node() argument
223 atomic_dec(&sbi->total_ext_node); in __detach_extent_node()
236 static void __release_extent_node(struct f2fs_sb_info *sbi, in __release_extent_node() argument
239 spin_lock(&sbi->extent_lock); in __release_extent_node()
240 f2fs_bug_on(sbi, list_empty(&en->list)); in __release_extent_node()
242 spin_unlock(&sbi->extent_lock); in __release_extent_node()
244 __detach_extent_node(sbi, et, en); in __release_extent_node()
249 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __grab_extent_tree() local
253 mutex_lock(&sbi->extent_tree_lock); in __grab_extent_tree()
254 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __grab_extent_tree()
257 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
265 atomic_inc(&sbi->total_ext_tree); in __grab_extent_tree()
267 atomic_dec(&sbi->total_zombie_tree); in __grab_extent_tree()
270 mutex_unlock(&sbi->extent_tree_lock); in __grab_extent_tree()
278 static struct extent_node *__init_extent_tree(struct f2fs_sb_info *sbi, in __init_extent_tree() argument
284 en = __attach_extent_node(sbi, et, ei, NULL, p); in __init_extent_tree()
293 static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi, in __free_extent_tree() argument
304 __release_extent_node(sbi, et, en); in __free_extent_tree()
325 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __f2fs_init_extent_tree() local
350 en = __init_extent_tree(sbi, et, &ei); in __f2fs_init_extent_tree()
352 spin_lock(&sbi->extent_lock); in __f2fs_init_extent_tree()
353 list_add_tail(&en->list, &sbi->extent_list); in __f2fs_init_extent_tree()
354 spin_unlock(&sbi->extent_lock); in __f2fs_init_extent_tree()
374 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_lookup_extent_tree() local
379 f2fs_bug_on(sbi, !et); in f2fs_lookup_extent_tree()
389 stat_inc_largest_node_hit(sbi); in f2fs_lookup_extent_tree()
399 stat_inc_cached_node_hit(sbi); in f2fs_lookup_extent_tree()
401 stat_inc_rbtree_node_hit(sbi); in f2fs_lookup_extent_tree()
404 spin_lock(&sbi->extent_lock); in f2fs_lookup_extent_tree()
406 list_move_tail(&en->list, &sbi->extent_list); in f2fs_lookup_extent_tree()
409 spin_unlock(&sbi->extent_lock); in f2fs_lookup_extent_tree()
412 stat_inc_total_hit(sbi); in f2fs_lookup_extent_tree()
424 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __try_merge_extent_node() local
438 __release_extent_node(sbi, et, prev_ex); in __try_merge_extent_node()
448 spin_lock(&sbi->extent_lock); in __try_merge_extent_node()
450 list_move_tail(&en->list, &sbi->extent_list); in __try_merge_extent_node()
453 spin_unlock(&sbi->extent_lock); in __try_merge_extent_node()
462 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __insert_extent_tree() local
473 p = __lookup_rb_tree_for_insert(sbi, &et->root, &parent, ei->fofs); in __insert_extent_tree()
475 en = __attach_extent_node(sbi, et, ei, parent, p); in __insert_extent_tree()
482 spin_lock(&sbi->extent_lock); in __insert_extent_tree()
483 list_add_tail(&en->list, &sbi->extent_list); in __insert_extent_tree()
485 spin_unlock(&sbi->extent_lock); in __insert_extent_tree()
492 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_update_extent_tree_range() local
540 f2fs_bug_on(sbi, pos >= org_end); in f2fs_update_extent_tree_range()
575 __release_extent_node(sbi, et, en); in f2fs_update_extent_tree_range()
607 __free_extent_tree(sbi, et); in f2fs_update_extent_tree_range()
612 unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink) in f2fs_shrink_extent_tree() argument
619 if (!test_opt(sbi, EXTENT_CACHE)) in f2fs_shrink_extent_tree()
622 if (!atomic_read(&sbi->total_zombie_tree)) in f2fs_shrink_extent_tree()
625 if (!mutex_trylock(&sbi->extent_tree_lock)) in f2fs_shrink_extent_tree()
629 list_for_each_entry_safe(et, next, &sbi->zombie_list, list) { in f2fs_shrink_extent_tree()
632 node_cnt += __free_extent_tree(sbi, et); in f2fs_shrink_extent_tree()
635 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_shrink_extent_tree()
637 radix_tree_delete(&sbi->extent_tree_root, et->ino); in f2fs_shrink_extent_tree()
639 atomic_dec(&sbi->total_ext_tree); in f2fs_shrink_extent_tree()
640 atomic_dec(&sbi->total_zombie_tree); in f2fs_shrink_extent_tree()
647 mutex_unlock(&sbi->extent_tree_lock); in f2fs_shrink_extent_tree()
651 if (!mutex_trylock(&sbi->extent_tree_lock)) in f2fs_shrink_extent_tree()
656 spin_lock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
658 if (list_empty(&sbi->extent_list)) in f2fs_shrink_extent_tree()
660 en = list_first_entry(&sbi->extent_list, in f2fs_shrink_extent_tree()
665 list_move_tail(&en->list, &sbi->extent_list); in f2fs_shrink_extent_tree()
670 spin_unlock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
672 __detach_extent_node(sbi, et, en); in f2fs_shrink_extent_tree()
676 spin_lock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
678 spin_unlock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
681 mutex_unlock(&sbi->extent_tree_lock); in f2fs_shrink_extent_tree()
683 trace_f2fs_shrink_extent_tree(sbi, node_cnt, tree_cnt); in f2fs_shrink_extent_tree()
690 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_destroy_extent_node() local
698 node_cnt = __free_extent_tree(sbi, et); in f2fs_destroy_extent_node()
706 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_drop_extent_tree() local
715 __free_extent_tree(sbi, et); in f2fs_drop_extent_tree()
722 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_destroy_extent_tree() local
731 mutex_lock(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
732 list_add_tail(&et->list, &sbi->zombie_list); in f2fs_destroy_extent_tree()
733 atomic_inc(&sbi->total_zombie_tree); in f2fs_destroy_extent_tree()
734 mutex_unlock(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
742 mutex_lock(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
743 f2fs_bug_on(sbi, atomic_read(&et->node_cnt)); in f2fs_destroy_extent_tree()
744 radix_tree_delete(&sbi->extent_tree_root, inode->i_ino); in f2fs_destroy_extent_tree()
746 atomic_dec(&sbi->total_ext_tree); in f2fs_destroy_extent_tree()
747 mutex_unlock(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
791 void init_extent_cache_info(struct f2fs_sb_info *sbi) in init_extent_cache_info() argument
793 INIT_RADIX_TREE(&sbi->extent_tree_root, GFP_NOIO); in init_extent_cache_info()
794 mutex_init(&sbi->extent_tree_lock); in init_extent_cache_info()
795 INIT_LIST_HEAD(&sbi->extent_list); in init_extent_cache_info()
796 spin_lock_init(&sbi->extent_lock); in init_extent_cache_info()
797 atomic_set(&sbi->total_ext_tree, 0); in init_extent_cache_info()
798 INIT_LIST_HEAD(&sbi->zombie_list); in init_extent_cache_info()
799 atomic_set(&sbi->total_zombie_tree, 0); in init_extent_cache_info()
800 atomic_set(&sbi->total_ext_node, 0); in init_extent_cache_info()