On 3/4/25 01:12, Eric Sandeen wrote:
> From: Eric Sandeen <[email protected]>
>
> 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 <[email protected]>
> ---
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel