Lines Matching refs:sbi

24 static struct extent_node *__attach_extent_node(struct f2fs_sb_info *sbi,  in __attach_extent_node()  argument
40 atomic_inc(&sbi->total_ext_node); in __attach_extent_node()
44 static void __detach_extent_node(struct f2fs_sb_info *sbi, in __detach_extent_node() argument
49 atomic_dec(&sbi->total_ext_node); in __detach_extent_node()
57 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __grab_extent_tree() local
61 down_write(&sbi->extent_tree_lock); in __grab_extent_tree()
62 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __grab_extent_tree()
65 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
73 sbi->total_ext_tree++; in __grab_extent_tree()
76 up_write(&sbi->extent_tree_lock); in __grab_extent_tree()
84 static struct extent_node *__lookup_extent_tree(struct f2fs_sb_info *sbi, in __lookup_extent_tree() argument
94 stat_inc_cached_node_hit(sbi); in __lookup_extent_tree()
107 stat_inc_rbtree_node_hit(sbi); in __lookup_extent_tree()
114 static struct extent_node *__init_extent_tree(struct f2fs_sb_info *sbi, in __init_extent_tree() argument
120 en = __attach_extent_node(sbi, et, ei, NULL, p); in __init_extent_tree()
129 static unsigned int __free_extent_tree(struct f2fs_sb_info *sbi, in __free_extent_tree() argument
142 spin_lock(&sbi->extent_lock); in __free_extent_tree()
145 spin_unlock(&sbi->extent_lock); in __free_extent_tree()
149 __detach_extent_node(sbi, et, en); in __free_extent_tree()
177 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_init_extent_tree() local
197 en = __init_extent_tree(sbi, et, &ei); in f2fs_init_extent_tree()
199 spin_lock(&sbi->extent_lock); in f2fs_init_extent_tree()
200 list_add_tail(&en->list, &sbi->extent_list); in f2fs_init_extent_tree()
201 spin_unlock(&sbi->extent_lock); in f2fs_init_extent_tree()
210 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_lookup_extent_tree() local
215 f2fs_bug_on(sbi, !et); in f2fs_lookup_extent_tree()
225 stat_inc_largest_node_hit(sbi); in f2fs_lookup_extent_tree()
229 en = __lookup_extent_tree(sbi, et, pgofs); in f2fs_lookup_extent_tree()
232 spin_lock(&sbi->extent_lock); in f2fs_lookup_extent_tree()
234 list_move_tail(&en->list, &sbi->extent_list); in f2fs_lookup_extent_tree()
236 spin_unlock(&sbi->extent_lock); in f2fs_lookup_extent_tree()
240 stat_inc_total_hit(sbi); in f2fs_lookup_extent_tree()
328 static struct extent_node *__try_merge_extent_node(struct f2fs_sb_info *sbi, in __try_merge_extent_node() argument
344 __detach_extent_node(sbi, et, prev_ex); in __try_merge_extent_node()
360 static struct extent_node *__insert_extent_tree(struct f2fs_sb_info *sbi, in __insert_extent_tree() argument
384 f2fs_bug_on(sbi, 1); in __insert_extent_tree()
387 en = __attach_extent_node(sbi, et, ei, parent, p); in __insert_extent_tree()
399 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_update_extent_tree_range() local
444 f2fs_bug_on(sbi, pos >= org_end); in f2fs_update_extent_tree_range()
457 en1 = __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
480 __detach_extent_node(sbi, et, en); in f2fs_update_extent_tree_range()
493 spin_lock(&sbi->extent_lock); in f2fs_update_extent_tree_range()
497 list_add_tail(&en1->list, &sbi->extent_list); in f2fs_update_extent_tree_range()
498 spin_unlock(&sbi->extent_lock); in f2fs_update_extent_tree_range()
512 en1 = __try_merge_extent_node(sbi, et, &ei, &den, in f2fs_update_extent_tree_range()
515 en1 = __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
526 spin_lock(&sbi->extent_lock); in f2fs_update_extent_tree_range()
529 list_add_tail(&en1->list, &sbi->extent_list); in f2fs_update_extent_tree_range()
531 list_move_tail(&en1->list, &sbi->extent_list); in f2fs_update_extent_tree_range()
535 spin_unlock(&sbi->extent_lock); in f2fs_update_extent_tree_range()
542 __free_extent_tree(sbi, et, true); in f2fs_update_extent_tree_range()
549 unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink) in f2fs_shrink_extent_tree() argument
553 unsigned long ino = F2FS_ROOT_INO(sbi); in f2fs_shrink_extent_tree()
554 struct radix_tree_root *root = &sbi->extent_tree_root; in f2fs_shrink_extent_tree()
559 if (!test_opt(sbi, EXTENT_CACHE)) in f2fs_shrink_extent_tree()
562 if (!down_write_trylock(&sbi->extent_tree_lock)) in f2fs_shrink_extent_tree()
576 node_cnt += __free_extent_tree(sbi, et, true); in f2fs_shrink_extent_tree()
581 sbi->total_ext_tree--; in f2fs_shrink_extent_tree()
589 up_write(&sbi->extent_tree_lock); in f2fs_shrink_extent_tree()
592 if (!down_write_trylock(&sbi->extent_tree_lock)) in f2fs_shrink_extent_tree()
597 spin_lock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
598 list_for_each_entry_safe(en, tmp, &sbi->extent_list, list) { in f2fs_shrink_extent_tree()
603 spin_unlock(&sbi->extent_lock); in f2fs_shrink_extent_tree()
608 ino = F2FS_ROOT_INO(sbi); in f2fs_shrink_extent_tree()
619 node_cnt += __free_extent_tree(sbi, et, false); in f2fs_shrink_extent_tree()
627 up_write(&sbi->extent_tree_lock); in f2fs_shrink_extent_tree()
629 trace_f2fs_shrink_extent_tree(sbi, node_cnt, tree_cnt); in f2fs_shrink_extent_tree()
636 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_destroy_extent_node() local
644 node_cnt = __free_extent_tree(sbi, et, true); in f2fs_destroy_extent_node()
652 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_destroy_extent_tree() local
668 down_write(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
670 f2fs_bug_on(sbi, atomic_read(&et->refcount) || et->count); in f2fs_destroy_extent_tree()
671 radix_tree_delete(&sbi->extent_tree_root, inode->i_ino); in f2fs_destroy_extent_tree()
673 sbi->total_ext_tree--; in f2fs_destroy_extent_tree()
674 up_write(&sbi->extent_tree_lock); in f2fs_destroy_extent_tree()
719 void init_extent_cache_info(struct f2fs_sb_info *sbi) in init_extent_cache_info() argument
721 INIT_RADIX_TREE(&sbi->extent_tree_root, GFP_NOIO); in init_extent_cache_info()
722 init_rwsem(&sbi->extent_tree_lock); in init_extent_cache_info()
723 INIT_LIST_HEAD(&sbi->extent_list); in init_extent_cache_info()
724 spin_lock_init(&sbi->extent_lock); in init_extent_cache_info()
725 sbi->total_ext_tree = 0; in init_extent_cache_info()
726 atomic_set(&sbi->total_ext_node, 0); in init_extent_cache_info()