diff options
-rw-r--r-- | fs/xfs/quota/xfs_dquot.c | 13 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_dquot_item.c | 2 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm.c | 14 | ||||
-rw-r--r-- | fs/xfs/xfs_quota.h | 8 |
4 files changed, 14 insertions, 23 deletions
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 1620a56b067e..5f79dd78626b 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -1187,7 +1187,7 @@ xfs_qm_dqflush( | |||
1187 | * block, nada. | 1187 | * block, nada. |
1188 | */ | 1188 | */ |
1189 | if (!XFS_DQ_IS_DIRTY(dqp) || | 1189 | if (!XFS_DQ_IS_DIRTY(dqp) || |
1190 | (!(flags & XFS_QMOPT_SYNC) && atomic_read(&dqp->q_pincount) > 0)) { | 1190 | (!(flags & SYNC_WAIT) && atomic_read(&dqp->q_pincount) > 0)) { |
1191 | xfs_dqfunlock(dqp); | 1191 | xfs_dqfunlock(dqp); |
1192 | return 0; | 1192 | return 0; |
1193 | } | 1193 | } |
@@ -1251,18 +1251,17 @@ xfs_qm_dqflush( | |||
1251 | xfs_log_force(mp, 0); | 1251 | xfs_log_force(mp, 0); |
1252 | } | 1252 | } |
1253 | 1253 | ||
1254 | if (flags & XFS_QMOPT_DELWRI) { | 1254 | if (flags & SYNC_WAIT) |
1255 | xfs_bdwrite(mp, bp); | ||
1256 | } else { | ||
1257 | error = xfs_bwrite(mp, bp); | 1255 | error = xfs_bwrite(mp, bp); |
1258 | } | 1256 | else |
1257 | xfs_bdwrite(mp, bp); | ||
1259 | 1258 | ||
1260 | trace_xfs_dqflush_done(dqp); | 1259 | trace_xfs_dqflush_done(dqp); |
1261 | 1260 | ||
1262 | /* | 1261 | /* |
1263 | * dqp is still locked, but caller is free to unlock it now. | 1262 | * dqp is still locked, but caller is free to unlock it now. |
1264 | */ | 1263 | */ |
1265 | return (error); | 1264 | return error; |
1266 | 1265 | ||
1267 | } | 1266 | } |
1268 | 1267 | ||
@@ -1443,7 +1442,7 @@ xfs_qm_dqpurge( | |||
1443 | * We don't care about getting disk errors here. We need | 1442 | * We don't care about getting disk errors here. We need |
1444 | * to purge this dquot anyway, so we go ahead regardless. | 1443 | * to purge this dquot anyway, so we go ahead regardless. |
1445 | */ | 1444 | */ |
1446 | error = xfs_qm_dqflush(dqp, XFS_QMOPT_SYNC); | 1445 | error = xfs_qm_dqflush(dqp, SYNC_WAIT); |
1447 | if (error) | 1446 | if (error) |
1448 | xfs_fs_cmn_err(CE_WARN, mp, | 1447 | xfs_fs_cmn_err(CE_WARN, mp, |
1449 | "xfs_qm_dqpurge: dquot %p flush failed", dqp); | 1448 | "xfs_qm_dqpurge: dquot %p flush failed", dqp); |
diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index dda0fb045c8a..4e4ee9a57194 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c | |||
@@ -153,7 +153,7 @@ xfs_qm_dquot_logitem_push( | |||
153 | * lock without sleeping, then there must not have been | 153 | * lock without sleeping, then there must not have been |
154 | * anyone in the process of flushing the dquot. | 154 | * anyone in the process of flushing the dquot. |
155 | */ | 155 | */ |
156 | error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); | 156 | error = xfs_qm_dqflush(dqp, 0); |
157 | if (error) | 157 | if (error) |
158 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, | 158 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, |
159 | "xfs_qm_dquot_logitem_push: push error %d on dqp %p", | 159 | "xfs_qm_dquot_logitem_push: push error %d on dqp %p", |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 11cfd8245c7c..8699e51cb45e 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -450,7 +450,7 @@ xfs_qm_unmount_quotas( | |||
450 | STATIC int | 450 | STATIC int |
451 | xfs_qm_dqflush_all( | 451 | xfs_qm_dqflush_all( |
452 | xfs_mount_t *mp, | 452 | xfs_mount_t *mp, |
453 | int flags) | 453 | int sync_mode) |
454 | { | 454 | { |
455 | int recl; | 455 | int recl; |
456 | xfs_dquot_t *dqp; | 456 | xfs_dquot_t *dqp; |
@@ -486,7 +486,7 @@ again: | |||
486 | * across a disk write. | 486 | * across a disk write. |
487 | */ | 487 | */ |
488 | xfs_qm_mplist_unlock(mp); | 488 | xfs_qm_mplist_unlock(mp); |
489 | error = xfs_qm_dqflush(dqp, flags); | 489 | error = xfs_qm_dqflush(dqp, sync_mode); |
490 | xfs_dqunlock(dqp); | 490 | xfs_dqunlock(dqp); |
491 | if (error) | 491 | if (error) |
492 | return error; | 492 | return error; |
@@ -926,13 +926,11 @@ xfs_qm_sync( | |||
926 | { | 926 | { |
927 | int recl, restarts; | 927 | int recl, restarts; |
928 | xfs_dquot_t *dqp; | 928 | xfs_dquot_t *dqp; |
929 | uint flush_flags; | ||
930 | int error; | 929 | int error; |
931 | 930 | ||
932 | if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) | 931 | if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) |
933 | return 0; | 932 | return 0; |
934 | 933 | ||
935 | flush_flags = (flags & SYNC_WAIT) ? XFS_QMOPT_SYNC : XFS_QMOPT_DELWRI; | ||
936 | restarts = 0; | 934 | restarts = 0; |
937 | 935 | ||
938 | again: | 936 | again: |
@@ -992,7 +990,7 @@ xfs_qm_sync( | |||
992 | * across a disk write | 990 | * across a disk write |
993 | */ | 991 | */ |
994 | xfs_qm_mplist_unlock(mp); | 992 | xfs_qm_mplist_unlock(mp); |
995 | error = xfs_qm_dqflush(dqp, flush_flags); | 993 | error = xfs_qm_dqflush(dqp, flags); |
996 | xfs_dqunlock(dqp); | 994 | xfs_dqunlock(dqp); |
997 | if (error && XFS_FORCED_SHUTDOWN(mp)) | 995 | if (error && XFS_FORCED_SHUTDOWN(mp)) |
998 | return 0; /* Need to prevent umount failure */ | 996 | return 0; /* Need to prevent umount failure */ |
@@ -1796,7 +1794,7 @@ xfs_qm_quotacheck( | |||
1796 | * successfully. | 1794 | * successfully. |
1797 | */ | 1795 | */ |
1798 | if (!error) | 1796 | if (!error) |
1799 | error = xfs_qm_dqflush_all(mp, XFS_QMOPT_DELWRI); | 1797 | error = xfs_qm_dqflush_all(mp, 0); |
1800 | 1798 | ||
1801 | /* | 1799 | /* |
1802 | * We can get this error if we couldn't do a dquot allocation inside | 1800 | * We can get this error if we couldn't do a dquot allocation inside |
@@ -2018,7 +2016,7 @@ xfs_qm_shake_freelist( | |||
2018 | * We flush it delayed write, so don't bother | 2016 | * We flush it delayed write, so don't bother |
2019 | * releasing the mplock. | 2017 | * releasing the mplock. |
2020 | */ | 2018 | */ |
2021 | error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); | 2019 | error = xfs_qm_dqflush(dqp, 0); |
2022 | if (error) { | 2020 | if (error) { |
2023 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, | 2021 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, |
2024 | "xfs_qm_dqflush_all: dquot %p flush failed", dqp); | 2022 | "xfs_qm_dqflush_all: dquot %p flush failed", dqp); |
@@ -2201,7 +2199,7 @@ xfs_qm_dqreclaim_one(void) | |||
2201 | * We flush it delayed write, so don't bother | 2199 | * We flush it delayed write, so don't bother |
2202 | * releasing the freelist lock. | 2200 | * releasing the freelist lock. |
2203 | */ | 2201 | */ |
2204 | error = xfs_qm_dqflush(dqp, XFS_QMOPT_DELWRI); | 2202 | error = xfs_qm_dqflush(dqp, 0); |
2205 | if (error) { | 2203 | if (error) { |
2206 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, | 2204 | xfs_fs_cmn_err(CE_WARN, dqp->q_mount, |
2207 | "xfs_qm_dqreclaim: dquot %p flush failed", dqp); | 2205 | "xfs_qm_dqreclaim: dquot %p flush failed", dqp); |
diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h index 21d11d9f48f2..fdcab3f81dde 100644 --- a/fs/xfs/xfs_quota.h +++ b/fs/xfs/xfs_quota.h | |||
@@ -223,15 +223,9 @@ typedef struct xfs_qoff_logformat { | |||
223 | #define XFS_QMOPT_RES_INOS 0x0800000 | 223 | #define XFS_QMOPT_RES_INOS 0x0800000 |
224 | 224 | ||
225 | /* | 225 | /* |
226 | * flags for dqflush and dqflush_all. | ||
227 | */ | ||
228 | #define XFS_QMOPT_SYNC 0x1000000 | ||
229 | #define XFS_QMOPT_DELWRI 0x4000000 | ||
230 | |||
231 | /* | ||
232 | * flags for dqalloc. | 226 | * flags for dqalloc. |
233 | */ | 227 | */ |
234 | #define XFS_QMOPT_INHERIT 0x8000000 | 228 | #define XFS_QMOPT_INHERIT 0x1000000 |
235 | 229 | ||
236 | /* | 230 | /* |
237 | * flags to xfs_trans_mod_dquot. | 231 | * flags to xfs_trans_mod_dquot. |