aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_buf_item.c11
-rw-r--r--fs/xfs/xfs_trans_buf.c2
2 files changed, 8 insertions, 5 deletions
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
index eac97ef81e2a..3a0bc38f1859 100644
--- a/fs/xfs/xfs_buf_item.c
+++ b/fs/xfs/xfs_buf_item.c
@@ -460,6 +460,12 @@ xfs_buf_item_unpin(
460 ASSERT(bp->b_fspriv == NULL); 460 ASSERT(bp->b_fspriv == NULL);
461 } 461 }
462 xfs_buf_relse(bp); 462 xfs_buf_relse(bp);
463 } else if (freed && remove) {
464 xfs_buf_lock(bp);
465 xfs_buf_ioerror(bp, EIO);
466 XFS_BUF_UNDONE(bp);
467 xfs_buf_stale(bp);
468 xfs_buf_ioend(bp, 0);
463 } 469 }
464} 470}
465 471
@@ -604,9 +610,7 @@ xfs_buf_item_committed(
604} 610}
605 611
606/* 612/*
607 * The buffer is locked, but is not a delayed write buffer. This happens 613 * The buffer is locked, but is not a delayed write buffer.
608 * if we race with IO completion and hence we don't want to try to write it
609 * again. Just release the buffer.
610 */ 614 */
611STATIC void 615STATIC void
612xfs_buf_item_push( 616xfs_buf_item_push(
@@ -620,6 +624,7 @@ xfs_buf_item_push(
620 624
621 trace_xfs_buf_item_push(bip); 625 trace_xfs_buf_item_push(bip);
622 626
627 xfs_buf_delwri_queue(bp);
623 xfs_buf_relse(bp); 628 xfs_buf_relse(bp);
624} 629}
625 630
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c
index 1302d1d95a58..296a7995a007 100644
--- a/fs/xfs/xfs_trans_buf.c
+++ b/fs/xfs/xfs_trans_buf.c
@@ -626,8 +626,6 @@ xfs_trans_log_buf(xfs_trans_t *tp,
626 bp->b_iodone = xfs_buf_iodone_callbacks; 626 bp->b_iodone = xfs_buf_iodone_callbacks;
627 bip->bli_item.li_cb = xfs_buf_iodone; 627 bip->bli_item.li_cb = xfs_buf_iodone;
628 628
629 xfs_buf_delwri_queue(bp);
630
631 trace_xfs_trans_log_buf(bip); 629 trace_xfs_trans_log_buf(bip);
632 630
633 /* 631 /*