On 3/4/25 01:12, Eric Sandeen wrote:
> From: Eric Sandeen <sand...@sandeen.net>
> 
> 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 <sand...@redhat.com>
> ---
>  fs/f2fs/super.c | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 29b3aa1ee99c..7cfd5e4e806e 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -687,7 +687,7 @@ static int parse_options(struct super_block *sb, char 
> *options, bool is_remount)
>       int ret;
>  
>       if (!options)
> -             goto default_check;

Eric, do you know in which condition options can be NULL, mount w/o any
specified options?

If so, maybe we'd keep this in order to chech whether default options
generated from default_options() is conflicted or not? What do you think?

Thanks,

> +             return 0;
>  
>       while ((p = strsep(&options, ",")) != NULL) {
>               int token;
> @@ -1318,7 +1318,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;
> @@ -2364,6 +2368,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);
>  
> @@ -4489,6 +4497,10 @@ static int f2fs_fill_super(struct super_block *sb, 
> void *data, int silent)
>       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;



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to