diff options
-rw-r--r-- | fs/dquot.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/dquot.c b/fs/dquot.c index dfba1623cccb..5ac77da19959 100644 --- a/fs/dquot.c +++ b/fs/dquot.c | |||
@@ -1491,6 +1491,16 @@ int vfs_quota_off(struct super_block *sb, int type, int remount) | |||
1491 | 1491 | ||
1492 | /* We need to serialize quota_off() for device */ | 1492 | /* We need to serialize quota_off() for device */ |
1493 | mutex_lock(&dqopt->dqonoff_mutex); | 1493 | mutex_lock(&dqopt->dqonoff_mutex); |
1494 | |||
1495 | /* | ||
1496 | * Skip everything if there's nothing to do. We have to do this because | ||
1497 | * sometimes we are called when fill_super() failed and calling | ||
1498 | * sync_fs() in such cases does no good. | ||
1499 | */ | ||
1500 | if (!sb_any_quota_enabled(sb) && !sb_any_quota_suspended(sb)) { | ||
1501 | mutex_unlock(&dqopt->dqonoff_mutex); | ||
1502 | return 0; | ||
1503 | } | ||
1494 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { | 1504 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
1495 | toputinode[cnt] = NULL; | 1505 | toputinode[cnt] = NULL; |
1496 | if (type != -1 && cnt != type) | 1506 | if (type != -1 && cnt != type) |