Loading fs/f2fs/data.c +2 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,8 @@ static inline void __submit_bio(struct f2fs_sb_info *sbi, int rw, { if (!is_read_io(rw)) { atomic_inc(&sbi->nr_wb_bios); if (current->plug && (type == DATA || type == NODE)) if (f2fs_sb_mounted_hmsmr(sbi->sb) && current->plug && (type == DATA || type == NODE)) blk_finish_plug(current->plug); } submit_bio(rw, bio); Loading fs/f2fs/f2fs.h +21 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ struct f2fs_mount_info { }; #define F2FS_FEATURE_ENCRYPT 0x0001 #define F2FS_FEATURE_HMSMR 0x0002 #define F2FS_HAS_FEATURE(sb, mask) \ ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) Loading Loading @@ -2334,6 +2335,26 @@ static inline int f2fs_sb_has_crypto(struct super_block *sb) return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_ENCRYPT); } static inline int f2fs_sb_mounted_hmsmr(struct super_block *sb) { return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_HMSMR); } static inline void set_opt_mode(struct f2fs_sb_info *sbi, unsigned int mt) { clear_opt(sbi, ADAPTIVE); clear_opt(sbi, LFS); switch (mt) { case F2FS_MOUNT_ADAPTIVE: set_opt(sbi, ADAPTIVE); break; case F2FS_MOUNT_LFS: set_opt(sbi, LFS); break; } } static inline bool f2fs_may_encrypt(struct inode *inode) { #ifdef CONFIG_F2FS_FS_ENCRYPTION Loading fs/f2fs/segment.c +2 −1 Original line number Diff line number Diff line Loading @@ -2402,6 +2402,7 @@ int build_segment_manager(struct f2fs_sb_info *sbi) sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr); sm_info->rec_prefree_segments = sm_info->main_segments * DEF_RECLAIM_PREFREE_SEGMENTS / 100; if (!test_opt(sbi, LFS)) sm_info->ipu_policy = 1 << F2FS_IPU_FSYNC; sm_info->min_ipu_util = DEF_MIN_IPU_UTIL; sm_info->min_fsync_blocks = DEF_MIN_FSYNC_BLOCKS; Loading fs/f2fs/super.c +10 −6 Original line number Diff line number Diff line Loading @@ -515,12 +515,10 @@ static int parse_options(struct super_block *sb, char *options) return -ENOMEM; if (strlen(name) == 8 && !strncmp(name, "adaptive", 8)) { set_opt(sbi, ADAPTIVE); clear_opt(sbi, LFS); set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); } else if (strlen(name) == 3 && !strncmp(name, "lfs", 3)) { clear_opt(sbi, ADAPTIVE); set_opt(sbi, LFS); set_opt_mode(sbi, F2FS_MOUNT_LFS); } else { kfree(name); return -EINVAL; Loading Loading @@ -966,7 +964,12 @@ static void default_options(struct f2fs_sb_info *sbi) set_opt(sbi, EXTENT_CACHE); sbi->sb->s_flags |= MS_LAZYTIME; set_opt(sbi, FLUSH_MERGE); set_opt(sbi, ADAPTIVE); if (f2fs_sb_mounted_hmsmr(sbi->sb)) { set_opt_mode(sbi, F2FS_MOUNT_LFS); set_opt(sbi, DISCARD); } else { set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); } #ifdef CONFIG_F2FS_FS_XATTR set_opt(sbi, XATTR_USER); Loading Loading @@ -1615,6 +1618,8 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) goto free_sbi; sb->s_fs_info = sbi; sbi->raw_super = raw_super; default_options(sbi); /* parse mount options */ options = kstrdup((const char *)data, GFP_KERNEL); Loading Loading @@ -1644,7 +1649,6 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) memcpy(sb->s_uuid, raw_super->uuid, sizeof(raw_super->uuid)); /* init f2fs-specific super block info */ sbi->raw_super = raw_super; sbi->valid_super_block = valid_super_block; mutex_init(&sbi->gc_mutex); mutex_init(&sbi->cp_mutex); Loading Loading
fs/f2fs/data.c +2 −1 Original line number Diff line number Diff line Loading @@ -102,7 +102,8 @@ static inline void __submit_bio(struct f2fs_sb_info *sbi, int rw, { if (!is_read_io(rw)) { atomic_inc(&sbi->nr_wb_bios); if (current->plug && (type == DATA || type == NODE)) if (f2fs_sb_mounted_hmsmr(sbi->sb) && current->plug && (type == DATA || type == NODE)) blk_finish_plug(current->plug); } submit_bio(rw, bio); Loading
fs/f2fs/f2fs.h +21 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ struct f2fs_mount_info { }; #define F2FS_FEATURE_ENCRYPT 0x0001 #define F2FS_FEATURE_HMSMR 0x0002 #define F2FS_HAS_FEATURE(sb, mask) \ ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) Loading Loading @@ -2334,6 +2335,26 @@ static inline int f2fs_sb_has_crypto(struct super_block *sb) return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_ENCRYPT); } static inline int f2fs_sb_mounted_hmsmr(struct super_block *sb) { return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_HMSMR); } static inline void set_opt_mode(struct f2fs_sb_info *sbi, unsigned int mt) { clear_opt(sbi, ADAPTIVE); clear_opt(sbi, LFS); switch (mt) { case F2FS_MOUNT_ADAPTIVE: set_opt(sbi, ADAPTIVE); break; case F2FS_MOUNT_LFS: set_opt(sbi, LFS); break; } } static inline bool f2fs_may_encrypt(struct inode *inode) { #ifdef CONFIG_F2FS_FS_ENCRYPTION Loading
fs/f2fs/segment.c +2 −1 Original line number Diff line number Diff line Loading @@ -2402,6 +2402,7 @@ int build_segment_manager(struct f2fs_sb_info *sbi) sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr); sm_info->rec_prefree_segments = sm_info->main_segments * DEF_RECLAIM_PREFREE_SEGMENTS / 100; if (!test_opt(sbi, LFS)) sm_info->ipu_policy = 1 << F2FS_IPU_FSYNC; sm_info->min_ipu_util = DEF_MIN_IPU_UTIL; sm_info->min_fsync_blocks = DEF_MIN_FSYNC_BLOCKS; Loading
fs/f2fs/super.c +10 −6 Original line number Diff line number Diff line Loading @@ -515,12 +515,10 @@ static int parse_options(struct super_block *sb, char *options) return -ENOMEM; if (strlen(name) == 8 && !strncmp(name, "adaptive", 8)) { set_opt(sbi, ADAPTIVE); clear_opt(sbi, LFS); set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); } else if (strlen(name) == 3 && !strncmp(name, "lfs", 3)) { clear_opt(sbi, ADAPTIVE); set_opt(sbi, LFS); set_opt_mode(sbi, F2FS_MOUNT_LFS); } else { kfree(name); return -EINVAL; Loading Loading @@ -966,7 +964,12 @@ static void default_options(struct f2fs_sb_info *sbi) set_opt(sbi, EXTENT_CACHE); sbi->sb->s_flags |= MS_LAZYTIME; set_opt(sbi, FLUSH_MERGE); set_opt(sbi, ADAPTIVE); if (f2fs_sb_mounted_hmsmr(sbi->sb)) { set_opt_mode(sbi, F2FS_MOUNT_LFS); set_opt(sbi, DISCARD); } else { set_opt_mode(sbi, F2FS_MOUNT_ADAPTIVE); } #ifdef CONFIG_F2FS_FS_XATTR set_opt(sbi, XATTR_USER); Loading Loading @@ -1615,6 +1618,8 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) goto free_sbi; sb->s_fs_info = sbi; sbi->raw_super = raw_super; default_options(sbi); /* parse mount options */ options = kstrdup((const char *)data, GFP_KERNEL); Loading Loading @@ -1644,7 +1649,6 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) memcpy(sb->s_uuid, raw_super->uuid, sizeof(raw_super->uuid)); /* init f2fs-specific super block info */ sbi->raw_super = raw_super; sbi->valid_super_block = valid_super_block; mutex_init(&sbi->gc_mutex); mutex_init(&sbi->cp_mutex); Loading