|
@@ -186,7 +186,7 @@ static void quota_sync_sb(struct super_block *sb, int type)
|
|
|
|
|
|
void sync_dquots(struct super_block *sb, int type)
|
|
|
{
|
|
|
- int cnt, dirty;
|
|
|
+ int cnt;
|
|
|
|
|
|
if (sb) {
|
|
|
if (sb->s_qcop->quota_sync)
|
|
@@ -198,11 +198,17 @@ void sync_dquots(struct super_block *sb, int type)
|
|
|
restart:
|
|
|
list_for_each_entry(sb, &super_blocks, s_list) {
|
|
|
/* This test just improves performance so it needn't be reliable... */
|
|
|
- for (cnt = 0, dirty = 0; cnt < MAXQUOTAS; cnt++)
|
|
|
- if ((type == cnt || type == -1) && sb_has_quota_enabled(sb, cnt)
|
|
|
- && info_any_dirty(&sb_dqopt(sb)->info[cnt]))
|
|
|
- dirty = 1;
|
|
|
- if (!dirty)
|
|
|
+ for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
|
|
|
+ if (type != -1 && type != cnt)
|
|
|
+ continue;
|
|
|
+ if (!sb_has_quota_enabled(sb, cnt))
|
|
|
+ continue;
|
|
|
+ if (!info_dirty(&sb_dqopt(sb)->info[cnt]) &&
|
|
|
+ list_empty(&sb_dqopt(sb)->info[cnt].dqi_dirty_list))
|
|
|
+ continue;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (cnt == MAXQUOTAS)
|
|
|
continue;
|
|
|
sb->s_count++;
|
|
|
spin_unlock(&sb_lock);
|