diff --git a/[refs] b/[refs] index e73abaa15782..14f2456041fd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb45d64224e5cafe8c8e0d18a20da998e5a7dc93 +refs/heads/master: 9377abd026bf9bde7db90dac09170034bf6d1cbf diff --git a/trunk/fs/dquot.c b/trunk/fs/dquot.c index dfba1623cccb..5ac77da19959 100644 --- a/trunk/fs/dquot.c +++ b/trunk/fs/dquot.c @@ -1491,6 +1491,16 @@ int vfs_quota_off(struct super_block *sb, int type, int remount) /* We need to serialize quota_off() for device */ mutex_lock(&dqopt->dqonoff_mutex); + + /* + * Skip everything if there's nothing to do. We have to do this because + * sometimes we are called when fill_super() failed and calling + * sync_fs() in such cases does no good. + */ + if (!sb_any_quota_enabled(sb) && !sb_any_quota_suspended(sb)) { + mutex_unlock(&dqopt->dqonoff_mutex); + return 0; + } for (cnt = 0; cnt < MAXQUOTAS; cnt++) { toputinode[cnt] = NULL; if (type != -1 && cnt != type)