Lines Matching refs:inode
145 static int __es_insert_extent(struct inode *inode, struct extent_status *newes);
146 static int __es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
175 static void ext4_es_print_tree(struct inode *inode) in ext4_es_print_tree() argument
180 printk(KERN_DEBUG "status extents for inode %lu:", inode->i_ino); in ext4_es_print_tree()
181 tree = &EXT4_I(inode)->i_es_tree; in ext4_es_print_tree()
194 #define ext4_es_print_tree(inode) argument
244 void ext4_es_find_delayed_extent_range(struct inode *inode, in ext4_es_find_delayed_extent_range() argument
254 trace_ext4_es_find_delayed_extent_range_enter(inode, lblk); in ext4_es_find_delayed_extent_range()
256 read_lock(&EXT4_I(inode)->i_es_lock); in ext4_es_find_delayed_extent_range()
257 tree = &EXT4_I(inode)->i_es_tree; in ext4_es_find_delayed_extent_range()
293 read_unlock(&EXT4_I(inode)->i_es_lock); in ext4_es_find_delayed_extent_range()
295 trace_ext4_es_find_delayed_extent_range_exit(inode, es); in ext4_es_find_delayed_extent_range()
298 static void ext4_es_list_add(struct inode *inode) in ext4_es_list_add() argument
300 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_es_list_add()
301 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); in ext4_es_list_add()
314 static void ext4_es_list_del(struct inode *inode) in ext4_es_list_del() argument
316 struct ext4_inode_info *ei = EXT4_I(inode); in ext4_es_list_del()
317 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); in ext4_es_list_del()
329 ext4_es_alloc_extent(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len, in ext4_es_alloc_extent() argument
344 if (!EXT4_I(inode)->i_es_shk_nr++) in ext4_es_alloc_extent()
345 ext4_es_list_add(inode); in ext4_es_alloc_extent()
346 percpu_counter_inc(&EXT4_SB(inode->i_sb)-> in ext4_es_alloc_extent()
350 EXT4_I(inode)->i_es_all_nr++; in ext4_es_alloc_extent()
351 percpu_counter_inc(&EXT4_SB(inode->i_sb)->s_es_stats.es_stats_all_cnt); in ext4_es_alloc_extent()
356 static void ext4_es_free_extent(struct inode *inode, struct extent_status *es) in ext4_es_free_extent() argument
358 EXT4_I(inode)->i_es_all_nr--; in ext4_es_free_extent()
359 percpu_counter_dec(&EXT4_SB(inode->i_sb)->s_es_stats.es_stats_all_cnt); in ext4_es_free_extent()
363 BUG_ON(EXT4_I(inode)->i_es_shk_nr == 0); in ext4_es_free_extent()
364 if (!--EXT4_I(inode)->i_es_shk_nr) in ext4_es_free_extent()
365 ext4_es_list_del(inode); in ext4_es_free_extent()
366 percpu_counter_dec(&EXT4_SB(inode->i_sb)-> in ext4_es_free_extent()
413 ext4_es_try_to_merge_left(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_left() argument
415 struct ext4_es_tree *tree = &EXT4_I(inode)->i_es_tree; in ext4_es_try_to_merge_left()
429 ext4_es_free_extent(inode, es); in ext4_es_try_to_merge_left()
437 ext4_es_try_to_merge_right(struct inode *inode, struct extent_status *es) in ext4_es_try_to_merge_right() argument
439 struct ext4_es_tree *tree = &EXT4_I(inode)->i_es_tree; in ext4_es_try_to_merge_right()
453 ext4_es_free_extent(inode, es1); in ext4_es_try_to_merge_right()
462 static void ext4_es_insert_extent_ext_check(struct inode *inode, in ext4_es_insert_extent_ext_check() argument
472 path = ext4_find_extent(inode, es->es_lblk, NULL, EXT4_EX_NOCACHE); in ext4_es_insert_extent_ext_check()
476 depth = ext_depth(inode); in ext4_es_insert_extent_ext_check()
499 inode->i_ino, ee_block, ee_len, in ext4_es_insert_extent_ext_check()
515 "es_status [%d/%d/%llu/%c]\n", inode->i_ino, in ext4_es_insert_extent_ext_check()
525 "es_status [%d/%d/%llu/%c]\n", inode->i_ino, in ext4_es_insert_extent_ext_check()
539 "[%d/%d/%llu/%x]\n", inode->i_ino, in ext4_es_insert_extent_ext_check()
549 static void ext4_es_insert_extent_ind_check(struct inode *inode, in ext4_es_insert_extent_ind_check() argument
565 retval = ext4_ind_map_blocks(NULL, inode, &map, 0); in ext4_es_insert_extent_ind_check()
575 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
582 inode->i_ino, retval, es->es_len); in ext4_es_insert_extent_ind_check()
589 inode->i_ino, map.m_pblk, in ext4_es_insert_extent_ind_check()
605 inode->i_ino, es->es_lblk, es->es_len, in ext4_es_insert_extent_ind_check()
612 static inline void ext4_es_insert_extent_check(struct inode *inode, in ext4_es_insert_extent_check() argument
619 BUG_ON(!rwsem_is_locked(&EXT4_I(inode)->i_data_sem)); in ext4_es_insert_extent_check()
620 if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) in ext4_es_insert_extent_check()
621 ext4_es_insert_extent_ext_check(inode, es); in ext4_es_insert_extent_check()
623 ext4_es_insert_extent_ind_check(inode, es); in ext4_es_insert_extent_check()
626 static inline void ext4_es_insert_extent_check(struct inode *inode, in ext4_es_insert_extent_check() argument
632 static int __es_insert_extent(struct inode *inode, struct extent_status *newes) in __es_insert_extent() argument
634 struct ext4_es_tree *tree = &EXT4_I(inode)->i_es_tree; in __es_insert_extent()
655 es = ext4_es_try_to_merge_left(inode, es); in __es_insert_extent()
662 es = ext4_es_try_to_merge_right(inode, es); in __es_insert_extent()
672 es = ext4_es_alloc_extent(inode, newes->es_lblk, newes->es_len, in __es_insert_extent()
690 int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t lblk, in ext4_es_insert_extent() argument
699 lblk, len, pblk, status, inode->i_ino); in ext4_es_insert_extent()
708 ext4_warning(inode->i_sb, "Inserting extent [%u/%u] as " in ext4_es_insert_extent()
717 trace_ext4_es_insert_extent(inode, &newes); in ext4_es_insert_extent()
719 ext4_es_insert_extent_check(inode, &newes); in ext4_es_insert_extent()
721 write_lock(&EXT4_I(inode)->i_es_lock); in ext4_es_insert_extent()
722 err = __es_remove_extent(inode, lblk, end); in ext4_es_insert_extent()
726 err = __es_insert_extent(inode, &newes); in ext4_es_insert_extent()
727 if (err == -ENOMEM && __es_shrink(EXT4_SB(inode->i_sb), in ext4_es_insert_extent()
728 128, EXT4_I(inode))) in ext4_es_insert_extent()
734 write_unlock(&EXT4_I(inode)->i_es_lock); in ext4_es_insert_extent()
736 ext4_es_print_tree(inode); in ext4_es_insert_extent()
746 void ext4_es_cache_extent(struct inode *inode, ext4_lblk_t lblk, in ext4_es_cache_extent() argument
757 trace_ext4_es_cache_extent(inode, &newes); in ext4_es_cache_extent()
764 write_lock(&EXT4_I(inode)->i_es_lock); in ext4_es_cache_extent()
766 es = __es_tree_search(&EXT4_I(inode)->i_es_tree.root, lblk); in ext4_es_cache_extent()
768 __es_insert_extent(inode, &newes); in ext4_es_cache_extent()
769 write_unlock(&EXT4_I(inode)->i_es_lock); in ext4_es_cache_extent()
779 int ext4_es_lookup_extent(struct inode *inode, ext4_lblk_t lblk, in ext4_es_lookup_extent() argument
788 trace_ext4_es_lookup_extent_enter(inode, lblk); in ext4_es_lookup_extent()
791 tree = &EXT4_I(inode)->i_es_tree; in ext4_es_lookup_extent()
792 read_lock(&EXT4_I(inode)->i_es_lock); in ext4_es_lookup_extent()
820 stats = &EXT4_SB(inode->i_sb)->s_es_stats; in ext4_es_lookup_extent()
833 read_unlock(&EXT4_I(inode)->i_es_lock); in ext4_es_lookup_extent()
835 trace_ext4_es_lookup_extent_exit(inode, es, found); in ext4_es_lookup_extent()
839 static int __es_remove_extent(struct inode *inode, ext4_lblk_t lblk, in __es_remove_extent() argument
842 struct ext4_es_tree *tree = &EXT4_I(inode)->i_es_tree; in __es_remove_extent()
882 err = __es_insert_extent(inode, &newes); in __es_remove_extent()
887 __es_shrink(EXT4_SB(inode->i_sb), in __es_remove_extent()
888 128, EXT4_I(inode))) in __es_remove_extent()
915 ext4_es_free_extent(inode, es); in __es_remove_extent()
944 int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk, in ext4_es_remove_extent() argument
950 trace_ext4_es_remove_extent(inode, lblk, len); in ext4_es_remove_extent()
952 lblk, len, inode->i_ino); in ext4_es_remove_extent()
965 write_lock(&EXT4_I(inode)->i_es_lock); in ext4_es_remove_extent()
966 err = __es_remove_extent(inode, lblk, end); in ext4_es_remove_extent()
967 write_unlock(&EXT4_I(inode)->i_es_lock); in ext4_es_remove_extent()
968 ext4_es_print_tree(inode); in ext4_es_remove_extent()
1158 ext4_es_seq_shrinker_info_open(struct inode *inode, struct file *file) in ext4_es_seq_shrinker_info_open() argument
1165 m->private = PDE_DATA(inode); in ext4_es_seq_shrinker_info_open()
1172 ext4_es_seq_shrinker_info_release(struct inode *inode, struct file *file) in ext4_es_seq_shrinker_info_release() argument
1174 return seq_release(inode, file); in ext4_es_seq_shrinker_info_release()
1246 struct inode *inode = &ei->vfs_inode; in es_do_reclaim_extents() local
1275 ext4_es_free_extent(inode, es); in es_do_reclaim_extents()
1291 struct inode *inode = &ei->vfs_inode; in es_reclaim_extents() local
1300 if (ext4_test_inode_state(inode, EXT4_STATE_EXT_PRECACHED) && in es_reclaim_extents()
1302 ext4_warning(inode->i_sb, "forced shrink of precached extents"); in es_reclaim_extents()