Lines Matching refs:et
25 struct extent_tree *et, struct extent_info *ei, in __attach_extent_node() argument
38 rb_insert_color(&en->rb_node, &et->root); in __attach_extent_node()
39 et->count++; in __attach_extent_node()
45 struct extent_tree *et, struct extent_node *en) in __detach_extent_node() argument
47 rb_erase(&en->rb_node, &et->root); in __detach_extent_node()
48 et->count--; in __detach_extent_node()
51 if (et->cached_en == en) in __detach_extent_node()
52 et->cached_en = NULL; in __detach_extent_node()
58 struct extent_tree *et; in __grab_extent_tree() local
62 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __grab_extent_tree()
63 if (!et) { in __grab_extent_tree()
64 et = f2fs_kmem_cache_alloc(extent_tree_slab, GFP_NOFS); in __grab_extent_tree()
65 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
66 memset(et, 0, sizeof(struct extent_tree)); in __grab_extent_tree()
67 et->ino = ino; in __grab_extent_tree()
68 et->root = RB_ROOT; in __grab_extent_tree()
69 et->cached_en = NULL; in __grab_extent_tree()
70 rwlock_init(&et->lock); in __grab_extent_tree()
71 atomic_set(&et->refcount, 0); in __grab_extent_tree()
72 et->count = 0; in __grab_extent_tree()
75 atomic_inc(&et->refcount); in __grab_extent_tree()
79 F2FS_I(inode)->extent_tree = et; in __grab_extent_tree()
81 return et; in __grab_extent_tree()
85 struct extent_tree *et, unsigned int fofs) in __lookup_extent_tree() argument
87 struct rb_node *node = et->root.rb_node; in __lookup_extent_tree()
88 struct extent_node *en = et->cached_en; in __lookup_extent_tree()
115 struct extent_tree *et, struct extent_info *ei) in __init_extent_tree() argument
117 struct rb_node **p = &et->root.rb_node; in __init_extent_tree()
120 en = __attach_extent_node(sbi, et, ei, NULL, p); in __init_extent_tree()
124 et->largest = en->ei; in __init_extent_tree()
125 et->cached_en = en; in __init_extent_tree()
130 struct extent_tree *et, bool free_all) in __free_extent_tree() argument
134 unsigned int count = et->count; in __free_extent_tree()
136 node = rb_first(&et->root); in __free_extent_tree()
149 __detach_extent_node(sbi, et, en); in __free_extent_tree()
155 return count - et->count; in __free_extent_tree()
178 struct extent_tree *et; in f2fs_init_extent_tree() local
185 et = __grab_extent_tree(inode); in f2fs_init_extent_tree()
193 write_lock(&et->lock); in f2fs_init_extent_tree()
194 if (et->count) in f2fs_init_extent_tree()
197 en = __init_extent_tree(sbi, et, &ei); in f2fs_init_extent_tree()
204 write_unlock(&et->lock); in f2fs_init_extent_tree()
211 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_lookup_extent_tree() local
215 f2fs_bug_on(sbi, !et); in f2fs_lookup_extent_tree()
219 read_lock(&et->lock); in f2fs_lookup_extent_tree()
221 if (et->largest.fofs <= pgofs && in f2fs_lookup_extent_tree()
222 et->largest.fofs + et->largest.len > pgofs) { in f2fs_lookup_extent_tree()
223 *ei = et->largest; in f2fs_lookup_extent_tree()
229 en = __lookup_extent_tree(sbi, et, pgofs); in f2fs_lookup_extent_tree()
235 et->cached_en = en; in f2fs_lookup_extent_tree()
241 read_unlock(&et->lock); in f2fs_lookup_extent_tree()
257 static struct extent_node *__lookup_extent_tree_ret(struct extent_tree *et, in __lookup_extent_tree_ret() argument
264 struct rb_node **pnode = &et->root.rb_node; in __lookup_extent_tree_ret()
266 struct extent_node *en = et->cached_en; in __lookup_extent_tree_ret()
273 if (RB_EMPTY_ROOT(&et->root)) in __lookup_extent_tree_ret()
329 struct extent_tree *et, struct extent_info *ei, in __try_merge_extent_node() argument
344 __detach_extent_node(sbi, et, prev_ex); in __try_merge_extent_node()
354 __try_update_largest_extent(et, en); in __try_merge_extent_node()
355 et->cached_en = en; in __try_merge_extent_node()
361 struct extent_tree *et, struct extent_info *ei, in __insert_extent_tree() argument
365 struct rb_node **p = &et->root.rb_node; in __insert_extent_tree()
387 en = __attach_extent_node(sbi, et, ei, parent, p); in __insert_extent_tree()
391 __try_update_largest_extent(et, en); in __insert_extent_tree()
392 et->cached_en = en; in __insert_extent_tree()
400 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_update_extent_tree_range() local
408 if (!et) in f2fs_update_extent_tree_range()
413 write_lock(&et->lock); in f2fs_update_extent_tree_range()
416 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
420 prev = et->largest; in f2fs_update_extent_tree_range()
430 en = __lookup_extent_tree_ret(et, fofs, &prev_en, &next_en, in f2fs_update_extent_tree_range()
457 en1 = __insert_extent_tree(sbi, et, &ei, in f2fs_update_extent_tree_range()
478 __try_update_largest_extent(et, en); in f2fs_update_extent_tree_range()
480 __detach_extent_node(sbi, et, en); 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()
521 et->largest.len < F2FS_MIN_EXTENT_LEN) { in f2fs_update_extent_tree_range()
522 et->largest.len = 0; in f2fs_update_extent_tree_range()
542 __free_extent_tree(sbi, et, true); in f2fs_update_extent_tree_range()
544 write_unlock(&et->lock); in f2fs_update_extent_tree_range()
546 return !__is_extent_same(&prev, &et->largest); in f2fs_update_extent_tree_range()
572 struct extent_tree *et = treevec[i]; in f2fs_shrink_extent_tree() local
574 if (!atomic_read(&et->refcount)) { in f2fs_shrink_extent_tree()
575 write_lock(&et->lock); in f2fs_shrink_extent_tree()
576 node_cnt += __free_extent_tree(sbi, et, true); in f2fs_shrink_extent_tree()
577 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
579 radix_tree_delete(root, et->ino); in f2fs_shrink_extent_tree()
580 kmem_cache_free(extent_tree_slab, et); in f2fs_shrink_extent_tree()
616 struct extent_tree *et = treevec[i]; in f2fs_shrink_extent_tree() local
618 write_lock(&et->lock); in f2fs_shrink_extent_tree()
619 node_cnt += __free_extent_tree(sbi, et, false); in f2fs_shrink_extent_tree()
620 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
637 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_node() local
640 if (!et) in f2fs_destroy_extent_node()
643 write_lock(&et->lock); in f2fs_destroy_extent_node()
644 node_cnt = __free_extent_tree(sbi, et, true); in f2fs_destroy_extent_node()
645 write_unlock(&et->lock); in f2fs_destroy_extent_node()
653 struct extent_tree *et = F2FS_I(inode)->extent_tree; in f2fs_destroy_extent_tree() local
656 if (!et) in f2fs_destroy_extent_tree()
659 if (inode->i_nlink && !is_bad_inode(inode) && et->count) { in f2fs_destroy_extent_tree()
660 atomic_dec(&et->refcount); in f2fs_destroy_extent_tree()
669 atomic_dec(&et->refcount); in f2fs_destroy_extent_tree()
670 f2fs_bug_on(sbi, atomic_read(&et->refcount) || et->count); in f2fs_destroy_extent_tree()
672 kmem_cache_free(extent_tree_slab, et); in f2fs_destroy_extent_tree()