Skip to content

Commit 2a3db1e

Browse files
author
Jaegeuk Kim
committed
f2fs: allow empty mount string for Opt_usr|grp|projjquota
The fsparam_string_empty() gives an error when mounting without string, since its type is set to fsparam_flag in VFS. So, let's allow the flag as well. This addresses xfstests/f2fs/015 and f2fs/021. Fixes: d185351 ("f2fs: separate the options parsing and options checking") Reviewed-by: Daeho Jeong <[email protected]> Reviewed-by: Chao Yu <[email protected]> Signed-off-by: Jaegeuk Kim <[email protected]>
1 parent 0196816 commit 2a3db1e

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

fs/f2fs/super.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -336,9 +336,12 @@ static const struct fs_parameter_spec f2fs_param_specs[] = {
336336
fsparam_flag("usrquota", Opt_usrquota),
337337
fsparam_flag("grpquota", Opt_grpquota),
338338
fsparam_flag("prjquota", Opt_prjquota),
339-
fsparam_string_empty("usrjquota", Opt_usrjquota),
340-
fsparam_string_empty("grpjquota", Opt_grpjquota),
341-
fsparam_string_empty("prjjquota", Opt_prjjquota),
339+
fsparam_string("usrjquota", Opt_usrjquota),
340+
fsparam_flag("usrjquota", Opt_usrjquota),
341+
fsparam_string("grpjquota", Opt_grpjquota),
342+
fsparam_flag("grpjquota", Opt_grpjquota),
343+
fsparam_string("prjjquota", Opt_prjjquota),
344+
fsparam_flag("prjjquota", Opt_prjjquota),
342345
fsparam_flag("nat_bits", Opt_nat_bits),
343346
fsparam_enum("jqfmt", Opt_jqfmt, f2fs_param_jqfmt),
344347
fsparam_enum("alloc_mode", Opt_alloc, f2fs_param_alloc_mode),
@@ -979,26 +982,26 @@ static int f2fs_parse_param(struct fs_context *fc, struct fs_parameter *param)
979982
ctx_set_opt(ctx, F2FS_MOUNT_PRJQUOTA);
980983
break;
981984
case Opt_usrjquota:
982-
if (!*param->string)
983-
ret = f2fs_unnote_qf_name(fc, USRQUOTA);
984-
else
985+
if (param->type == fs_value_is_string && *param->string)
985986
ret = f2fs_note_qf_name(fc, USRQUOTA, param);
987+
else
988+
ret = f2fs_unnote_qf_name(fc, USRQUOTA);
986989
if (ret)
987990
return ret;
988991
break;
989992
case Opt_grpjquota:
990-
if (!*param->string)
991-
ret = f2fs_unnote_qf_name(fc, GRPQUOTA);
992-
else
993+
if (param->type == fs_value_is_string && *param->string)
993994
ret = f2fs_note_qf_name(fc, GRPQUOTA, param);
995+
else
996+
ret = f2fs_unnote_qf_name(fc, GRPQUOTA);
994997
if (ret)
995998
return ret;
996999
break;
9971000
case Opt_prjjquota:
998-
if (!*param->string)
999-
ret = f2fs_unnote_qf_name(fc, PRJQUOTA);
1000-
else
1001+
if (param->type == fs_value_is_string && *param->string)
10011002
ret = f2fs_note_qf_name(fc, PRJQUOTA, param);
1003+
else
1004+
ret = f2fs_unnote_qf_name(fc, PRJQUOTA);
10021005
if (ret)
10031006
return ret;
10041007
break;

0 commit comments

Comments
 (0)