Lines Matching refs:et
26 struct extent_tree *et = fi->extent_tree[EX_READ];
29 if (!et)
32 ei = &et->largest;
39 et->largest_updated = true;
115 static void __try_update_largest_extent(struct extent_tree *et,
118 if (et->type != EX_READ)
120 if (en->ei.len <= et->largest.len)
123 et->largest = en->ei;
124 et->largest_updated = true;
269 struct extent_tree *et, struct extent_info *ei,
273 struct extent_tree_info *eti = &sbi->extent_tree[et->type];
282 en->et = et;
285 rb_insert_color_cached(&en->rb_node, &et->root, leftmost);
286 atomic_inc(&et->node_cnt);
292 struct extent_tree *et, struct extent_node *en)
294 struct extent_tree_info *eti = &sbi->extent_tree[et->type];
296 rb_erase_cached(&en->rb_node, &et->root);
297 atomic_dec(&et->node_cnt);
300 if (et->cached_en == en)
301 et->cached_en = NULL;
312 struct extent_tree *et, struct extent_node *en)
314 struct extent_tree_info *eti = &sbi->extent_tree[et->type];
321 __detach_extent_node(sbi, et, en);
329 struct extent_tree *et;
333 et = radix_tree_lookup(&eti->extent_tree_root, ino);
334 if (!et) {
335 et = f2fs_kmem_cache_alloc(extent_tree_slab,
337 f2fs_radix_tree_insert(&eti->extent_tree_root, ino, et);
338 memset(et, 0, sizeof(struct extent_tree));
339 et->ino = ino;
340 et->type = type;
341 et->root = RB_ROOT_CACHED;
342 et->cached_en = NULL;
343 rwlock_init(&et->lock);
344 INIT_LIST_HEAD(&et->list);
345 atomic_set(&et->node_cnt, 0);
349 list_del_init(&et->list);
354 F2FS_I(inode)->extent_tree[type] = et;
356 return et;
360 struct extent_tree *et)
364 unsigned int count = atomic_read(&et->node_cnt);
366 node = rb_first_cached(&et->root);
370 __release_extent_node(sbi, et, en);
374 return count - atomic_read(&et->node_cnt);
377 static void __drop_largest_extent(struct extent_tree *et,
380 if (fofs < et->largest.fofs + et->largest.len &&
381 fofs + len > et->largest.fofs) {
382 et->largest.len = 0;
383 et->largest_updated = true;
392 struct extent_tree *et;
406 et = __grab_extent_tree(inode, EX_READ);
413 write_lock(&et->lock);
414 if (atomic_read(&et->node_cnt))
417 en = __attach_extent_node(sbi, et, &ei, NULL,
418 &et->root.rb_root.rb_node, true);
420 et->largest = en->ei;
421 et->cached_en = en;
428 write_unlock(&et->lock);
457 struct extent_tree *et = F2FS_I(inode)->extent_tree[type];
461 if (!et)
466 read_lock(&et->lock);
469 et->largest.fofs <= pgofs &&
470 et->largest.fofs + et->largest.len > pgofs) {
471 *ei = et->largest;
477 en = __lookup_extent_node(&et->root, et->cached_en, pgofs);
481 if (en == et->cached_en)
490 et->cached_en = en;
496 read_unlock(&et->lock);
506 struct extent_tree *et, struct extent_info *ei,
510 struct extent_tree_info *eti = &sbi->extent_tree[et->type];
513 if (prev_ex && __is_back_mergeable(ei, &prev_ex->ei, et->type)) {
519 if (next_ex && __is_front_mergeable(ei, &next_ex->ei, et->type)) {
522 if (et->type == EX_READ)
525 __release_extent_node(sbi, et, prev_ex);
533 __try_update_largest_extent(et, en);
538 et->cached_en = en;
545 struct extent_tree *et, struct extent_info *ei,
550 struct extent_tree_info *eti = &sbi->extent_tree[et->type];
551 struct rb_node **p = &et->root.rb_root.rb_node;
579 en = __attach_extent_node(sbi, et, ei, parent, p, leftmost);
583 __try_update_largest_extent(et, en);
588 et->cached_en = en;
597 struct extent_tree *et = F2FS_I(inode)->extent_tree[type];
607 if (!et)
617 write_lock(&et->lock);
621 write_unlock(&et->lock);
625 prev = et->largest;
632 __drop_largest_extent(et, fofs, len);
636 en = __lookup_extent_node_ret(&et->root,
637 et->cached_en, fofs,
670 en1 = __insert_extent_tree(sbi, et, &ei,
692 __try_update_largest_extent(et, en);
694 __release_extent_node(sbi, et, en);
717 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
718 __insert_extent_tree(sbi, et, &ei,
724 et->largest.len < F2FS_MIN_EXTENT_LEN) {
725 et->largest.len = 0;
726 et->largest_updated = true;
732 __free_extent_tree(sbi, et);
734 if (et->largest_updated) {
735 et->largest_updated = false;
745 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
746 __insert_extent_tree(sbi, et, &ei,
749 write_unlock(&et->lock);
761 struct extent_tree *et = F2FS_I(inode)->extent_tree[EX_READ];
771 /* it is safe here to check FI_NO_EXTENT w/o et->lock in ro image */
775 write_lock(&et->lock);
777 en = __lookup_extent_node_ret(&et->root,
778 et->cached_en, fofs,
788 if (!__try_merge_extent_node(sbi, et, &ei, prev_en, next_en))
789 __insert_extent_tree(sbi, et, &ei,
792 write_unlock(&et->lock);
900 struct extent_tree *et, *next;
912 list_for_each_entry_safe(et, next, &eti->zombie_list, list) {
913 if (atomic_read(&et->node_cnt)) {
914 write_lock(&et->lock);
915 node_cnt += __free_extent_tree(sbi, et);
916 write_unlock(&et->lock);
918 f2fs_bug_on(sbi, atomic_read(&et->node_cnt));
919 list_del_init(&et->list);
920 radix_tree_delete(&eti->extent_tree_root, et->ino);
921 kmem_cache_free(extent_tree_slab, et);
945 et = en->et;
946 if (!write_trylock(&et->lock)) {
955 __detach_extent_node(sbi, et, en);
957 write_unlock(&et->lock);
1061 struct extent_tree *et = F2FS_I(inode)->extent_tree[type];
1064 if (!et || !atomic_read(&et->node_cnt))
1067 write_lock(&et->lock);
1068 node_cnt = __free_extent_tree(sbi, et);
1069 write_unlock(&et->lock);
1083 struct extent_tree *et = F2FS_I(inode)->extent_tree[type];
1089 write_lock(&et->lock);
1090 __free_extent_tree(sbi, et);
1093 if (et->largest.len) {
1094 et->largest.len = 0;
1098 write_unlock(&et->lock);
1113 struct extent_tree *et = F2FS_I(inode)->extent_tree[type];
1116 if (!et)
1120 atomic_read(&et->node_cnt)) {
1122 list_add_tail(&et->list, &eti->zombie_list);
1133 f2fs_bug_on(sbi, atomic_read(&et->node_cnt));
1135 kmem_cache_free(extent_tree_slab, et);