]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
f2fs: factor out an f2fs_default_check function
authorEric Sandeen <sandeen@sandeen.net>
Mon, 3 Mar 2025 17:12:13 +0000 (11:12 -0600)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 13 Mar 2025 18:16:06 +0000 (18:16 +0000)
The current options parsing function both parses options and validates
them - factor the validation out to reduce the size of the function and
make transition to the new mount API possible, because under the new mount
API, options are parsed one at a time, and cannot all be tested at the end
of the parsing function.

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/super.c

index 1d48900d8cd3bc5680e9031542bc3a2b2866e787..bdce7940fe205248896828748965039e472405bf 100644 (file)
@@ -690,7 +690,7 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
        int ret;
 
        if (!options)
-               goto default_check;
+               return 0;
 
        while ((p = strsep(&options, ",")) != NULL) {
                int token;
@@ -1324,7 +1324,11 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
                        return -EINVAL;
                }
        }
-default_check:
+       return 0;
+}
+
+static int f2fs_default_check(struct f2fs_sb_info *sbi)
+{
 #ifdef CONFIG_QUOTA
        if (f2fs_check_quota_options(sbi))
                return -EINVAL;
@@ -2384,6 +2388,10 @@ static int f2fs_remount(struct super_block *sb, int *flags, char *data)
        }
 #endif
 
+       err = f2fs_default_check(sbi);
+       if (err)
+               goto restore_opts;
+
        /* flush outstanding errors before changing fs state */
        flush_work(&sbi->s_error_work);
 
@@ -4539,6 +4547,10 @@ try_onemore:
        if (err)
                goto free_options;
 
+       err = f2fs_default_check(sbi);
+       if (err)
+               goto free_options;
+
        sb->s_maxbytes = max_file_blocks(NULL) <<
                                le32_to_cpu(raw_super->log_blocksize);
        sb->s_max_links = F2FS_LINK_MAX;