Lines Matching refs:et
365 struct extent_tree *et, struct extent_info *ei, in __attach_extent_node() argument
378 rb_insert_color(&en->rb_node, &et->root); in __attach_extent_node()
379 et->count++; in __attach_extent_node()
385 struct extent_tree *et, struct extent_node *en) in __detach_extent_node() argument
387 rb_erase(&en->rb_node, &et->root); in __detach_extent_node()
388 et->count--; in __detach_extent_node()
391 if (et->cached_en == en) in __detach_extent_node()
392 et->cached_en = NULL; in __detach_extent_node()
398 struct extent_tree *et; in __find_extent_tree() local
401 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __find_extent_tree()
402 if (!et) { in __find_extent_tree()
406 atomic_inc(&et->refcount); in __find_extent_tree()
409 return et; in __find_extent_tree()
415 struct extent_tree *et; in __grab_extent_tree() local
419 et = radix_tree_lookup(&sbi->extent_tree_root, ino); in __grab_extent_tree()
420 if (!et) { in __grab_extent_tree()
421 et = f2fs_kmem_cache_alloc(extent_tree_slab, GFP_NOFS); in __grab_extent_tree()
422 f2fs_radix_tree_insert(&sbi->extent_tree_root, ino, et); in __grab_extent_tree()
423 memset(et, 0, sizeof(struct extent_tree)); in __grab_extent_tree()
424 et->ino = ino; in __grab_extent_tree()
425 et->root = RB_ROOT; in __grab_extent_tree()
426 et->cached_en = NULL; in __grab_extent_tree()
427 rwlock_init(&et->lock); in __grab_extent_tree()
428 atomic_set(&et->refcount, 0); in __grab_extent_tree()
429 et->count = 0; in __grab_extent_tree()
432 atomic_inc(&et->refcount); in __grab_extent_tree()
435 return et; in __grab_extent_tree()
438 static struct extent_node *__lookup_extent_tree(struct extent_tree *et, in __lookup_extent_tree() argument
441 struct rb_node *node = et->root.rb_node; in __lookup_extent_tree()
444 if (et->cached_en) { in __lookup_extent_tree()
445 struct extent_info *cei = &et->cached_en->ei; in __lookup_extent_tree()
448 return et->cached_en; in __lookup_extent_tree()
459 et->cached_en = en; in __lookup_extent_tree()
467 struct extent_tree *et, struct extent_node *en) in __try_back_merge() argument
481 __detach_extent_node(sbi, et, prev); in __try_back_merge()
488 struct extent_tree *et, struct extent_node *en) in __try_front_merge() argument
500 __detach_extent_node(sbi, et, next); in __try_front_merge()
507 struct extent_tree *et, struct extent_info *ei, in __insert_extent_tree() argument
510 struct rb_node **p = &et->root.rb_node; in __insert_extent_tree()
524 *den = __try_back_merge(sbi, et, en); in __insert_extent_tree()
532 *den = __try_front_merge(sbi, et, en); in __insert_extent_tree()
541 return __attach_extent_node(sbi, et, ei, parent, p); in __insert_extent_tree()
545 struct extent_tree *et, bool free_all) in __free_extent_tree() argument
549 unsigned int count = et->count; in __free_extent_tree()
551 node = rb_first(&et->root); in __free_extent_tree()
564 __detach_extent_node(sbi, et, en); in __free_extent_tree()
570 return count - et->count; in __free_extent_tree()
577 struct extent_tree *et; in f2fs_init_extent_tree() local
584 et = __grab_extent_tree(inode); in f2fs_init_extent_tree()
586 write_lock(&et->lock); in f2fs_init_extent_tree()
587 if (et->count) in f2fs_init_extent_tree()
593 en = __insert_extent_tree(sbi, et, &ei, NULL); in f2fs_init_extent_tree()
595 et->cached_en = en; in f2fs_init_extent_tree()
602 write_unlock(&et->lock); in f2fs_init_extent_tree()
603 atomic_dec(&et->refcount); in f2fs_init_extent_tree()
610 struct extent_tree *et; in f2fs_lookup_extent_tree() local
615 et = __find_extent_tree(sbi, inode->i_ino); in f2fs_lookup_extent_tree()
616 if (!et) in f2fs_lookup_extent_tree()
619 read_lock(&et->lock); in f2fs_lookup_extent_tree()
620 en = __lookup_extent_tree(et, pgofs); in f2fs_lookup_extent_tree()
630 read_unlock(&et->lock); in f2fs_lookup_extent_tree()
634 atomic_dec(&et->refcount); in f2fs_lookup_extent_tree()
642 struct extent_tree *et; in f2fs_update_extent_tree() local
650 et = __grab_extent_tree(inode); in f2fs_update_extent_tree()
652 write_lock(&et->lock); in f2fs_update_extent_tree()
655 en = __lookup_extent_tree(et, fofs); in f2fs_update_extent_tree()
660 __detach_extent_node(sbi, et, en); in f2fs_update_extent_tree()
668 en1 = __insert_extent_tree(sbi, et, &ei, NULL); in f2fs_update_extent_tree()
676 en2 = __insert_extent_tree(sbi, et, &ei, NULL); in f2fs_update_extent_tree()
684 en3 = __insert_extent_tree(sbi, et, &ei, &den); in f2fs_update_extent_tree()
716 write_unlock(&et->lock); in f2fs_update_extent_tree()
717 atomic_dec(&et->refcount); in f2fs_update_extent_tree()
722 struct extent_tree *et; in f2fs_preserve_extent_tree() local
729 et = __find_extent_tree(F2FS_I_SB(inode), inode->i_ino); in f2fs_preserve_extent_tree()
730 if (!et) { in f2fs_preserve_extent_tree()
738 read_lock(&et->lock); in f2fs_preserve_extent_tree()
739 if (et->count) { in f2fs_preserve_extent_tree()
742 if (et->cached_en) { in f2fs_preserve_extent_tree()
743 en = et->cached_en; in f2fs_preserve_extent_tree()
745 struct rb_node *node = rb_first(&et->root); in f2fs_preserve_extent_tree()
748 node = rb_last(&et->root); in f2fs_preserve_extent_tree()
762 read_unlock(&et->lock); in f2fs_preserve_extent_tree()
763 atomic_dec(&et->refcount); in f2fs_preserve_extent_tree()
800 struct extent_tree *et = treevec[i]; in f2fs_shrink_extent_tree() local
802 atomic_inc(&et->refcount); in f2fs_shrink_extent_tree()
803 write_lock(&et->lock); in f2fs_shrink_extent_tree()
804 node_cnt += __free_extent_tree(sbi, et, false); in f2fs_shrink_extent_tree()
805 write_unlock(&et->lock); in f2fs_shrink_extent_tree()
806 atomic_dec(&et->refcount); in f2fs_shrink_extent_tree()
814 struct extent_tree *et = (struct extent_tree *)*slot; in f2fs_shrink_extent_tree() local
816 if (!atomic_read(&et->refcount) && !et->count) { in f2fs_shrink_extent_tree()
817 radix_tree_delete(&sbi->extent_tree_root, et->ino); in f2fs_shrink_extent_tree()
818 kmem_cache_free(extent_tree_slab, et); in f2fs_shrink_extent_tree()
831 struct extent_tree *et; in f2fs_destroy_extent_tree() local
837 et = __find_extent_tree(sbi, inode->i_ino); in f2fs_destroy_extent_tree()
838 if (!et) in f2fs_destroy_extent_tree()
842 write_lock(&et->lock); in f2fs_destroy_extent_tree()
843 node_cnt = __free_extent_tree(sbi, et, true); in f2fs_destroy_extent_tree()
844 write_unlock(&et->lock); in f2fs_destroy_extent_tree()
846 atomic_dec(&et->refcount); in f2fs_destroy_extent_tree()
850 et = radix_tree_lookup(&sbi->extent_tree_root, inode->i_ino); in f2fs_destroy_extent_tree()
851 if (!et) { in f2fs_destroy_extent_tree()
855 f2fs_bug_on(sbi, atomic_read(&et->refcount) || et->count); in f2fs_destroy_extent_tree()
857 kmem_cache_free(extent_tree_slab, et); in f2fs_destroy_extent_tree()