|
@@ -1229,6 +1229,11 @@ static int parse_options(char *options, struct super_block *sb,
|
|
|
if (!*p)
|
|
|
continue;
|
|
|
|
|
|
+ /*
|
|
|
+ * Initialize args struct so we know whether arg was
|
|
|
+ * found; some options take optional arguments.
|
|
|
+ */
|
|
|
+ args[0].to = args[0].from = 0;
|
|
|
token = match_token(p, tokens, args);
|
|
|
switch (token) {
|
|
|
case Opt_bsd_df:
|
|
@@ -1518,10 +1523,11 @@ set_qf_format:
|
|
|
clear_opt(sbi->s_mount_opt, BARRIER);
|
|
|
break;
|
|
|
case Opt_barrier:
|
|
|
- if (match_int(&args[0], &option)) {
|
|
|
- set_opt(sbi->s_mount_opt, BARRIER);
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (args[0].from) {
|
|
|
+ if (match_int(&args[0], &option))
|
|
|
+ return 0;
|
|
|
+ } else
|
|
|
+ option = 1; /* No argument, default to 1 */
|
|
|
if (option)
|
|
|
set_opt(sbi->s_mount_opt, BARRIER);
|
|
|
else
|
|
@@ -1594,10 +1600,11 @@ set_qf_format:
|
|
|
set_opt(sbi->s_mount_opt,NO_AUTO_DA_ALLOC);
|
|
|
break;
|
|
|
case Opt_auto_da_alloc:
|
|
|
- if (match_int(&args[0], &option)) {
|
|
|
- clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC);
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (args[0].from) {
|
|
|
+ if (match_int(&args[0], &option))
|
|
|
+ return 0;
|
|
|
+ } else
|
|
|
+ option = 1; /* No argument, default to 1 */
|
|
|
if (option)
|
|
|
clear_opt(sbi->s_mount_opt, NO_AUTO_DA_ALLOC);
|
|
|
else
|