diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/quota/xfs_dquot.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index d3f4fbbe2480..1e6bf3925645 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -1221,16 +1221,14 @@ xfs_qm_dqflush( | |||
1221 | xfs_dqtrace_entry(dqp, "DQFLUSH"); | 1221 | xfs_dqtrace_entry(dqp, "DQFLUSH"); |
1222 | 1222 | ||
1223 | /* | 1223 | /* |
1224 | * If not dirty, nada. | 1224 | * If not dirty, or it's pinned and we are not supposed to |
1225 | * block, nada. | ||
1225 | */ | 1226 | */ |
1226 | if (!XFS_DQ_IS_DIRTY(dqp)) { | 1227 | if (!XFS_DQ_IS_DIRTY(dqp) || |
1228 | (!(flags & XFS_QMOPT_SYNC) && atomic_read(&dqp->q_pincount) > 0)) { | ||
1227 | xfs_dqfunlock(dqp); | 1229 | xfs_dqfunlock(dqp); |
1228 | return (0); | 1230 | return 0; |
1229 | } | 1231 | } |
1230 | |||
1231 | /* | ||
1232 | * Cant flush a pinned dquot. Wait for it. | ||
1233 | */ | ||
1234 | xfs_qm_dqunpin_wait(dqp); | 1232 | xfs_qm_dqunpin_wait(dqp); |
1235 | 1233 | ||
1236 | /* | 1234 | /* |