diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/quota.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/fs/quota.c b/fs/quota.c index db1cc9f3c7aa..7f4386ebc23a 100644 --- a/fs/quota.c +++ b/fs/quota.c | |||
@@ -186,7 +186,7 @@ static void quota_sync_sb(struct super_block *sb, int type) | |||
186 | 186 | ||
187 | void sync_dquots(struct super_block *sb, int type) | 187 | void sync_dquots(struct super_block *sb, int type) |
188 | { | 188 | { |
189 | int cnt, dirty; | 189 | int cnt; |
190 | 190 | ||
191 | if (sb) { | 191 | if (sb) { |
192 | if (sb->s_qcop->quota_sync) | 192 | if (sb->s_qcop->quota_sync) |
@@ -198,11 +198,17 @@ void sync_dquots(struct super_block *sb, int type) | |||
198 | restart: | 198 | restart: |
199 | list_for_each_entry(sb, &super_blocks, s_list) { | 199 | list_for_each_entry(sb, &super_blocks, s_list) { |
200 | /* This test just improves performance so it needn't be reliable... */ | 200 | /* This test just improves performance so it needn't be reliable... */ |
201 | for (cnt = 0, dirty = 0; cnt < MAXQUOTAS; cnt++) | 201 | for (cnt = 0; cnt < MAXQUOTAS; cnt++) { |
202 | if ((type == cnt || type == -1) && sb_has_quota_enabled(sb, cnt) | 202 | if (type != -1 && type != cnt) |
203 | && info_any_dirty(&sb_dqopt(sb)->info[cnt])) | 203 | continue; |
204 | dirty = 1; | 204 | if (!sb_has_quota_enabled(sb, cnt)) |
205 | if (!dirty) | 205 | continue; |
206 | if (!info_dirty(&sb_dqopt(sb)->info[cnt]) && | ||
207 | list_empty(&sb_dqopt(sb)->info[cnt].dqi_dirty_list)) | ||
208 | continue; | ||
209 | break; | ||
210 | } | ||
211 | if (cnt == MAXQUOTAS) | ||
206 | continue; | 212 | continue; |
207 | sb->s_count++; | 213 | sb->s_count++; |
208 | spin_unlock(&sb_lock); | 214 | spin_unlock(&sb_lock); |