Introudce a helper function to check whether an inode may use large folio for scalability.
Signed-off-by: Nanzhe Zhao <[email protected]> --- fs/f2fs/f2fs.h | 16 ++++++++++++++++ fs/f2fs/inode.c | 3 +-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index bdcd446f6b18..e5b8f5374666 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -5035,6 +5035,22 @@ static inline bool f2fs_quota_file(struct f2fs_sb_info *sbi, nid_t ino) return false; } +static inline bool f2fs_inode_may_use_large_folio(struct inode *inode) +{ + if (f2fs_has_inline_data(inode)) + return false; + + if (f2fs_compressed_file(inode)) + return false; + + if (f2fs_is_atomic_file(inode)) + return false; + + if (f2fs_quota_file(F2FS_I_SB(inode), inode->i_ino)) + return false; + return true; +} + static inline bool f2fs_block_unit_discard(struct f2fs_sb_info *sbi) { return F2FS_OPTION(sbi).discard_unit == DISCARD_UNIT_BLOCK; diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c index b8cf1fab6391..e2e85ac9c44e 100644 --- a/fs/f2fs/inode.c +++ b/fs/f2fs/inode.c @@ -620,8 +620,7 @@ struct inode *f2fs_iget(struct super_block *sb, unsigned long ino) inode->i_op = &f2fs_file_inode_operations; inode->i_fop = &f2fs_file_operations; inode->i_mapping->a_ops = &f2fs_dblock_aops; - if (IS_IMMUTABLE(inode) && !f2fs_compressed_file(inode) && - !f2fs_quota_file(sbi, inode->i_ino)) + if (f2fs_inode_may_use_large_folio(inode)) mapping_set_folio_min_order(inode->i_mapping, 0); } else if (S_ISDIR(inode->i_mode)) { inode->i_op = &f2fs_dir_inode_operations; -- 2.34.1 _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
