Lines Matching refs:inode

22 bool sanity_check_extent_cache(struct inode *inode)  in sanity_check_extent_cache()  argument
24 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in sanity_check_extent_cache()
25 struct f2fs_inode_info *fi = F2FS_I(inode); in sanity_check_extent_cache()
48 __func__, inode->i_ino, in sanity_check_extent_cache()
77 static bool __init_may_extent_tree(struct inode *inode, enum extent_type type) in __init_may_extent_tree() argument
80 return test_opt(F2FS_I_SB(inode), READ_EXTENT_CACHE) && in __init_may_extent_tree()
81 S_ISREG(inode->i_mode); in __init_may_extent_tree()
83 return test_opt(F2FS_I_SB(inode), AGE_EXTENT_CACHE) && in __init_may_extent_tree()
84 (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)); in __init_may_extent_tree()
88 static bool __may_extent_tree(struct inode *inode, enum extent_type type) in __may_extent_tree() argument
94 if (list_empty(&F2FS_I_SB(inode)->s_list)) in __may_extent_tree()
97 if (!__init_may_extent_tree(inode, type)) in __may_extent_tree()
101 if (is_inode_flag_set(inode, FI_NO_EXTENT)) in __may_extent_tree()
103 if (is_inode_flag_set(inode, FI_COMPRESSED_FILE) && in __may_extent_tree()
104 !f2fs_sb_has_readonly(F2FS_I_SB(inode))) in __may_extent_tree()
107 if (is_inode_flag_set(inode, FI_COMPRESSED_FILE)) in __may_extent_tree()
109 if (file_is_cold(inode)) in __may_extent_tree()
324 static struct extent_tree *__grab_extent_tree(struct inode *inode, in __grab_extent_tree() argument
327 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __grab_extent_tree()
330 nid_t ino = inode->i_ino; in __grab_extent_tree()
354 F2FS_I(inode)->extent_tree[type] = et; in __grab_extent_tree()
387 void f2fs_init_read_extent_tree(struct inode *inode, struct page *ipage) in f2fs_init_read_extent_tree() argument
389 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_init_read_extent_tree()
396 if (!__may_extent_tree(inode, EX_READ)) { in f2fs_init_read_extent_tree()
406 et = __grab_extent_tree(inode, EX_READ); in f2fs_init_read_extent_tree()
430 if (!F2FS_I(inode)->extent_tree[EX_READ]) in f2fs_init_read_extent_tree()
431 set_inode_flag(inode, FI_NO_EXTENT); in f2fs_init_read_extent_tree()
434 void f2fs_init_age_extent_tree(struct inode *inode) in f2fs_init_age_extent_tree() argument
436 if (!__init_may_extent_tree(inode, EX_BLOCK_AGE)) in f2fs_init_age_extent_tree()
438 __grab_extent_tree(inode, EX_BLOCK_AGE); in f2fs_init_age_extent_tree()
441 void f2fs_init_extent_tree(struct inode *inode) in f2fs_init_extent_tree() argument
444 if (__init_may_extent_tree(inode, EX_READ)) in f2fs_init_extent_tree()
445 __grab_extent_tree(inode, EX_READ); in f2fs_init_extent_tree()
448 if (__init_may_extent_tree(inode, EX_BLOCK_AGE)) in f2fs_init_extent_tree()
449 __grab_extent_tree(inode, EX_BLOCK_AGE); in f2fs_init_extent_tree()
452 static bool __lookup_extent_tree(struct inode *inode, pgoff_t pgofs, in __lookup_extent_tree() argument
455 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __lookup_extent_tree()
457 struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; in __lookup_extent_tree()
464 trace_f2fs_lookup_extent_tree_start(inode, pgofs, type); in __lookup_extent_tree()
499 trace_f2fs_lookup_read_extent_tree_end(inode, pgofs, ei); in __lookup_extent_tree()
501 trace_f2fs_lookup_age_extent_tree_end(inode, pgofs, ei); in __lookup_extent_tree()
593 static void __update_extent_tree_range(struct inode *inode, in __update_extent_tree_range() argument
596 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __update_extent_tree_range()
597 struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; in __update_extent_tree_range()
611 trace_f2fs_update_read_extent_tree_range(inode, fofs, len, in __update_extent_tree_range()
614 trace_f2fs_update_age_extent_tree_range(inode, fofs, len, in __update_extent_tree_range()
620 if (is_inode_flag_set(inode, FI_NO_EXTENT)) { in __update_extent_tree_range()
727 set_inode_flag(inode, FI_NO_EXTENT); in __update_extent_tree_range()
731 if (is_inode_flag_set(inode, FI_NO_EXTENT)) in __update_extent_tree_range()
752 f2fs_mark_inode_dirty_sync(inode, true); in __update_extent_tree_range()
756 void f2fs_update_read_extent_tree_range_compressed(struct inode *inode, in f2fs_update_read_extent_tree_range_compressed() argument
760 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in f2fs_update_read_extent_tree_range_compressed()
761 struct extent_tree *et = F2FS_I(inode)->extent_tree[EX_READ]; in f2fs_update_read_extent_tree_range_compressed()
768 trace_f2fs_update_read_extent_tree_range(inode, fofs, llen, in f2fs_update_read_extent_tree_range_compressed()
772 if (is_inode_flag_set(inode, FI_NO_EXTENT)) in f2fs_update_read_extent_tree_range_compressed()
816 static int __get_new_block_age(struct inode *inode, struct extent_info *ei, in __get_new_block_age() argument
819 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __get_new_block_age()
820 loff_t f_size = i_size_read(inode); in __get_new_block_age()
834 if (__lookup_extent_tree(inode, ei->fofs, &tei, EX_BLOCK_AGE)) { in __get_new_block_age()
877 if (!__may_extent_tree(dn->inode, type)) in __update_extent_cache()
880 ei.fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) + in __update_extent_cache()
890 if (__get_new_block_age(dn->inode, &ei, dn->data_blkaddr)) in __update_extent_cache()
893 __update_extent_tree_range(dn->inode, &ei, type); in __update_extent_cache()
972 bool f2fs_lookup_read_extent_cache(struct inode *inode, pgoff_t pgofs, in f2fs_lookup_read_extent_cache() argument
975 if (!__may_extent_tree(inode, EX_READ)) in f2fs_lookup_read_extent_cache()
978 return __lookup_extent_tree(inode, pgofs, ei, EX_READ); in f2fs_lookup_read_extent_cache()
981 bool f2fs_lookup_read_extent_cache_block(struct inode *inode, pgoff_t index, in f2fs_lookup_read_extent_cache_block() argument
986 if (!f2fs_lookup_read_extent_cache(inode, index, &ei)) in f2fs_lookup_read_extent_cache_block()
1006 if (!__may_extent_tree(dn->inode, EX_READ)) in f2fs_update_read_extent_cache_range()
1009 __update_extent_tree_range(dn->inode, &ei, EX_READ); in f2fs_update_read_extent_cache_range()
1021 bool f2fs_lookup_age_extent_cache(struct inode *inode, pgoff_t pgofs, in f2fs_lookup_age_extent_cache() argument
1024 if (!__may_extent_tree(inode, EX_BLOCK_AGE)) in f2fs_lookup_age_extent_cache()
1027 return __lookup_extent_tree(inode, pgofs, ei, EX_BLOCK_AGE); in f2fs_lookup_age_extent_cache()
1043 if (!__may_extent_tree(dn->inode, EX_BLOCK_AGE)) in f2fs_update_age_extent_cache_range()
1046 __update_extent_tree_range(dn->inode, &ei, EX_BLOCK_AGE); in f2fs_update_age_extent_cache_range()
1057 static unsigned int __destroy_extent_node(struct inode *inode, in __destroy_extent_node() argument
1060 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __destroy_extent_node()
1061 struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; in __destroy_extent_node()
1074 void f2fs_destroy_extent_node(struct inode *inode) in f2fs_destroy_extent_node() argument
1076 __destroy_extent_node(inode, EX_READ); in f2fs_destroy_extent_node()
1077 __destroy_extent_node(inode, EX_BLOCK_AGE); in f2fs_destroy_extent_node()
1080 static void __drop_extent_tree(struct inode *inode, enum extent_type type) in __drop_extent_tree() argument
1082 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __drop_extent_tree()
1083 struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; in __drop_extent_tree()
1086 if (!__may_extent_tree(inode, type)) in __drop_extent_tree()
1092 set_inode_flag(inode, FI_NO_EXTENT); in __drop_extent_tree()
1100 f2fs_mark_inode_dirty_sync(inode, true); in __drop_extent_tree()
1103 void f2fs_drop_extent_tree(struct inode *inode) in f2fs_drop_extent_tree() argument
1105 __drop_extent_tree(inode, EX_READ); in f2fs_drop_extent_tree()
1106 __drop_extent_tree(inode, EX_BLOCK_AGE); in f2fs_drop_extent_tree()
1109 static void __destroy_extent_tree(struct inode *inode, enum extent_type type) in __destroy_extent_tree() argument
1111 struct f2fs_sb_info *sbi = F2FS_I_SB(inode); in __destroy_extent_tree()
1113 struct extent_tree *et = F2FS_I(inode)->extent_tree[type]; in __destroy_extent_tree()
1119 if (inode->i_nlink && !is_bad_inode(inode) && in __destroy_extent_tree()
1129 node_cnt = __destroy_extent_node(inode, type); in __destroy_extent_tree()
1134 radix_tree_delete(&eti->extent_tree_root, inode->i_ino); in __destroy_extent_tree()
1139 F2FS_I(inode)->extent_tree[type] = NULL; in __destroy_extent_tree()
1141 trace_f2fs_destroy_extent_tree(inode, node_cnt, type); in __destroy_extent_tree()
1144 void f2fs_destroy_extent_tree(struct inode *inode) in f2fs_destroy_extent_tree() argument
1146 __destroy_extent_tree(inode, EX_READ); in f2fs_destroy_extent_tree()
1147 __destroy_extent_tree(inode, EX_BLOCK_AGE); in f2fs_destroy_extent_tree()