|
@@ -158,6 +158,7 @@ static int finish_unfinished(struct super_block *s)
|
|
|
#ifdef CONFIG_QUOTA
|
|
|
int i;
|
|
|
int ms_active_set;
|
|
|
+ int quota_enabled[MAXQUOTAS];
|
|
|
#endif
|
|
|
|
|
|
/* compose key to look for "save" links */
|
|
@@ -179,8 +180,15 @@ static int finish_unfinished(struct super_block *s)
|
|
|
}
|
|
|
/* Turn on quotas so that they are updated correctly */
|
|
|
for (i = 0; i < MAXQUOTAS; i++) {
|
|
|
+ quota_enabled[i] = 1;
|
|
|
if (REISERFS_SB(s)->s_qf_names[i]) {
|
|
|
- int ret = reiserfs_quota_on_mount(s, i);
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ if (sb_has_quota_active(s, i)) {
|
|
|
+ quota_enabled[i] = 0;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ret = reiserfs_quota_on_mount(s, i);
|
|
|
if (ret < 0)
|
|
|
reiserfs_warning(s, "reiserfs-2500",
|
|
|
"cannot turn on journaled "
|
|
@@ -304,7 +312,7 @@ static int finish_unfinished(struct super_block *s)
|
|
|
#ifdef CONFIG_QUOTA
|
|
|
/* Turn quotas off */
|
|
|
for (i = 0; i < MAXQUOTAS; i++) {
|
|
|
- if (sb_dqopt(s)->files[i])
|
|
|
+ if (sb_dqopt(s)->files[i] && quota_enabled[i])
|
|
|
dquot_quota_off(s, i);
|
|
|
}
|
|
|
if (ms_active_set)
|