aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/quota/xfs_dquot.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c
index f9baeedbfdfe..1620a56b067e 100644
--- a/fs/xfs/quota/xfs_dquot.c
+++ b/fs/xfs/quota/xfs_dquot.c
@@ -1528,21 +1528,16 @@ xfs_qm_dqflock_pushbuf_wait(
1528 */ 1528 */
1529 bp = xfs_incore(dqp->q_mount->m_ddev_targp, dqp->q_blkno, 1529 bp = xfs_incore(dqp->q_mount->m_ddev_targp, dqp->q_blkno,
1530 XFS_QI_DQCHUNKLEN(dqp->q_mount), XBF_TRYLOCK); 1530 XFS_QI_DQCHUNKLEN(dqp->q_mount), XBF_TRYLOCK);
1531 if (bp != NULL) { 1531 if (!bp)
1532 if (XFS_BUF_ISDELAYWRITE(bp)) { 1532 goto out_lock;
1533 int error; 1533
1534 1534 if (XFS_BUF_ISDELAYWRITE(bp)) {
1535 if (XFS_BUF_ISPINNED(bp)) 1535 if (XFS_BUF_ISPINNED(bp))
1536 xfs_log_force(dqp->q_mount, 0); 1536 xfs_log_force(dqp->q_mount, 0);
1537 error = xfs_bawrite(dqp->q_mount, bp); 1537 xfs_buf_delwri_promote(bp);
1538 if (error) 1538 wake_up_process(bp->b_target->bt_task);
1539 xfs_fs_cmn_err(CE_WARN, dqp->q_mount,
1540 "xfs_qm_dqflock_pushbuf_wait: "
1541 "pushbuf error %d on dqp %p, bp %p",
1542 error, dqp, bp);
1543 } else {
1544 xfs_buf_relse(bp);
1545 }
1546 } 1539 }
1540 xfs_buf_relse(bp);
1541out_lock:
1547 xfs_dqflock(dqp); 1542 xfs_dqflock(dqp);
1548} 1543}