]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: make LAZYTIME a mount option flag
authorEric Sandeen <sandeen@redhat.com>
Mon, 3 Mar 2025 17:12:15 +0000 (11:12 -0600)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 13 Mar 2025 18:16:06 +0000 (18:16 +0000)
Set LAZYTIME into sbi during parsing, and transfer it to the sb in
fill_super, so that an sb is not required during option parsing.

(Note: While lazytime is normally handled via mount flag in the vfs,
some f2fs users do expect to be able to use it as an explicit mount
option string via the mount syscall, so this option must remain.)

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/super.c

index 0978fbb7f8854880f8277626f0213b1320708555..f1576dc6ec67973fc07ac0368a628cebc2640770 100644 (file)
@@ -117,6 +117,11 @@ extern const char *f2fs_fault_name[FAULT_MAX];
 #define F2FS_MOUNT_AGE_EXTENT_CACHE    0x08000000
 #define F2FS_MOUNT_NAT_BITS            0x10000000
 #define F2FS_MOUNT_INLINECRYPT         0x20000000
+/*
+ * Some f2fs environments expect to be able to pass the "lazytime" option
+ * string rather than using the MS_LAZYTIME flag, so this must remain.
+ */
+#define F2FS_MOUNT_LAZYTIME            0x40000000
 
 #define F2FS_OPTION(sbi)       ((sbi)->mount_opt)
 #define clear_opt(sbi, option) (F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option)
index 55ccb7a35f02e9479084fcf8225492c95450995c..500244eb94b0f01f278e98b3b374297a2c8d1363 100644 (file)
@@ -920,10 +920,10 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
                        break;
 #endif
                case Opt_lazytime:
-                       sb->s_flags |= SB_LAZYTIME;
+                       set_opt(sbi, LAZYTIME);
                        break;
                case Opt_nolazytime:
-                       sb->s_flags &= ~SB_LAZYTIME;
+                       clear_opt(sbi, LAZYTIME);
                        break;
 #ifdef CONFIG_QUOTA
                case Opt_quota:
@@ -2186,8 +2186,8 @@ static void default_options(struct f2fs_sb_info *sbi, bool remount)
        set_opt(sbi, INLINE_DATA);
        set_opt(sbi, INLINE_DENTRY);
        set_opt(sbi, MERGE_CHECKPOINT);
+       set_opt(sbi, LAZYTIME);
        F2FS_OPTION(sbi).unusable_cap = 0;
-       sbi->sb->s_flags |= SB_LAZYTIME;
        if (!f2fs_is_readonly(sbi))
                set_opt(sbi, FLUSH_MERGE);
        if (f2fs_sb_has_blkzoned(sbi))
@@ -4588,6 +4588,11 @@ try_onemore:
        if (test_opt(sbi, INLINECRYPT))
                sb->s_flags |= SB_INLINECRYPT;
 
+       if (test_opt(sbi, LAZYTIME))
+               sb->s_flags |= SB_LAZYTIME;
+       else
+               sb->s_flags &= ~SB_LAZYTIME;
+
        super_set_uuid(sb, (void *) raw_super->uuid, sizeof(raw_super->uuid));
        super_set_sysfs_name_bdev(sb);
        sb->s_iflags |= SB_I_CGROUPWB;