diff options
-rw-r--r-- | fs/xfs/xfs_buf_item.c | 11 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_buf.c | 2 |
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 | */ |
611 | STATIC void | 615 | STATIC void |
612 | xfs_buf_item_push( | 616 | xfs_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 | /* |