Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: d18535132523 ("f2fs: separate the options parsing and options checking")
Reviewed-by: Daeho Jeong <daehojeong@google.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

+15 -12
+15 -12
fs/f2fs/super.c
··· 336 336 fsparam_flag("usrquota", Opt_usrquota), 337 337 fsparam_flag("grpquota", Opt_grpquota), 338 338 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), 342 345 fsparam_flag("nat_bits", Opt_nat_bits), 343 346 fsparam_enum("jqfmt", Opt_jqfmt, f2fs_param_jqfmt), 344 347 fsparam_enum("alloc_mode", Opt_alloc, f2fs_param_alloc_mode), ··· 982 979 ctx_set_opt(ctx, F2FS_MOUNT_PRJQUOTA); 983 980 break; 984 981 case Opt_usrjquota: 985 - if (!*param->string) 986 - ret = f2fs_unnote_qf_name(fc, USRQUOTA); 987 - else 982 + if (param->type == fs_value_is_string && *param->string) 988 983 ret = f2fs_note_qf_name(fc, USRQUOTA, param); 984 + else 985 + ret = f2fs_unnote_qf_name(fc, USRQUOTA); 989 986 if (ret) 990 987 return ret; 991 988 break; 992 989 case Opt_grpjquota: 993 - if (!*param->string) 994 - ret = f2fs_unnote_qf_name(fc, GRPQUOTA); 995 - else 990 + if (param->type == fs_value_is_string && *param->string) 996 991 ret = f2fs_note_qf_name(fc, GRPQUOTA, param); 992 + else 993 + ret = f2fs_unnote_qf_name(fc, GRPQUOTA); 997 994 if (ret) 998 995 return ret; 999 996 break; 1000 997 case Opt_prjjquota: 1001 - if (!*param->string) 1002 - ret = f2fs_unnote_qf_name(fc, PRJQUOTA); 1003 - else 998 + if (param->type == fs_value_is_string && *param->string) 1004 999 ret = f2fs_note_qf_name(fc, PRJQUOTA, param); 1000 + else 1001 + ret = f2fs_unnote_qf_name(fc, PRJQUOTA); 1005 1002 if (ret) 1006 1003 return ret; 1007 1004 break;