|
@@ -842,7 +842,7 @@ static int parse_options (char *options, struct super_block *sb,
|
|
|
int data_opt = 0;
|
|
|
int option;
|
|
|
#ifdef CONFIG_QUOTA
|
|
|
- int qtype;
|
|
|
+ int qtype, qfmt;
|
|
|
char *qname;
|
|
|
#endif
|
|
|
|
|
@@ -1018,7 +1018,9 @@ static int parse_options (char *options, struct super_block *sb,
|
|
|
case Opt_grpjquota:
|
|
|
qtype = GRPQUOTA;
|
|
|
set_qf_name:
|
|
|
- if (sb_any_quota_enabled(sb)) {
|
|
|
+ if ((sb_any_quota_enabled(sb) ||
|
|
|
+ sb_any_quota_suspended(sb)) &&
|
|
|
+ !sbi->s_qf_names[qtype]) {
|
|
|
printk(KERN_ERR
|
|
|
"EXT3-fs: Cannot change journaled "
|
|
|
"quota options when quota turned on.\n");
|
|
@@ -1056,7 +1058,9 @@ set_qf_name:
|
|
|
case Opt_offgrpjquota:
|
|
|
qtype = GRPQUOTA;
|
|
|
clear_qf_name:
|
|
|
- if (sb_any_quota_enabled(sb)) {
|
|
|
+ if ((sb_any_quota_enabled(sb) ||
|
|
|
+ sb_any_quota_suspended(sb)) &&
|
|
|
+ sbi->s_qf_names[qtype]) {
|
|
|
printk(KERN_ERR "EXT3-fs: Cannot change "
|
|
|
"journaled quota options when "
|
|
|
"quota turned on.\n");
|
|
@@ -1069,10 +1073,20 @@ clear_qf_name:
|
|
|
sbi->s_qf_names[qtype] = NULL;
|
|
|
break;
|
|
|
case Opt_jqfmt_vfsold:
|
|
|
- sbi->s_jquota_fmt = QFMT_VFS_OLD;
|
|
|
- break;
|
|
|
+ qfmt = QFMT_VFS_OLD;
|
|
|
+ goto set_qf_format;
|
|
|
case Opt_jqfmt_vfsv0:
|
|
|
- sbi->s_jquota_fmt = QFMT_VFS_V0;
|
|
|
+ qfmt = QFMT_VFS_V0;
|
|
|
+set_qf_format:
|
|
|
+ if ((sb_any_quota_enabled(sb) ||
|
|
|
+ sb_any_quota_suspended(sb)) &&
|
|
|
+ sbi->s_jquota_fmt != qfmt) {
|
|
|
+ printk(KERN_ERR "EXT3-fs: Cannot change "
|
|
|
+ "journaled quota options when "
|
|
|
+ "quota turned on.\n");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ sbi->s_jquota_fmt = qfmt;
|
|
|
break;
|
|
|
case Opt_quota:
|
|
|
case Opt_usrquota:
|
|
@@ -1084,7 +1098,8 @@ clear_qf_name:
|
|
|
set_opt(sbi->s_mount_opt, GRPQUOTA);
|
|
|
break;
|
|
|
case Opt_noquota:
|
|
|
- if (sb_any_quota_enabled(sb)) {
|
|
|
+ if (sb_any_quota_enabled(sb) ||
|
|
|
+ sb_any_quota_suspended(sb)) {
|
|
|
printk(KERN_ERR "EXT3-fs: Cannot change quota "
|
|
|
"options when quota turned on.\n");
|
|
|
return 0;
|