xfs: kill xfs_bdstrat_cb
Only has two callers, and is just a shutdown check and error handler around xfs_buf_iorequest. However, the error handling is a mess of read and write semantics, and both internal callers only call it for writes. Hence kill the wrapper, and follow up with a patch to sanitise the error handling. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
61be9c529a
commit
8dac392198
|
@ -1146,27 +1146,6 @@ xfs_bioerror_relse(
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC int
|
|
||||||
xfs_bdstrat_cb(
|
|
||||||
struct xfs_buf *bp)
|
|
||||||
{
|
|
||||||
if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
|
|
||||||
trace_xfs_bdstrat_shut(bp, _RET_IP_);
|
|
||||||
/*
|
|
||||||
* Metadata write that didn't get logged but
|
|
||||||
* written delayed anyway. These aren't associated
|
|
||||||
* with a transaction, and can be ignored.
|
|
||||||
*/
|
|
||||||
if (!bp->b_iodone && !XFS_BUF_ISREAD(bp))
|
|
||||||
return xfs_bioerror_relse(bp);
|
|
||||||
else
|
|
||||||
return xfs_bioerror(bp);
|
|
||||||
}
|
|
||||||
|
|
||||||
xfs_buf_iorequest(bp);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
xfs_bwrite(
|
xfs_bwrite(
|
||||||
struct xfs_buf *bp)
|
struct xfs_buf *bp)
|
||||||
|
@ -1178,7 +1157,20 @@ xfs_bwrite(
|
||||||
bp->b_flags |= XBF_WRITE;
|
bp->b_flags |= XBF_WRITE;
|
||||||
bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q | XBF_WRITE_FAIL);
|
bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q | XBF_WRITE_FAIL);
|
||||||
|
|
||||||
xfs_bdstrat_cb(bp);
|
if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
|
||||||
|
trace_xfs_bdstrat_shut(bp, _RET_IP_);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Metadata write that didn't get logged but written anyway.
|
||||||
|
* These aren't associated with a transaction, and can be
|
||||||
|
* ignored.
|
||||||
|
*/
|
||||||
|
if (!bp->b_iodone)
|
||||||
|
return xfs_bioerror_relse(bp);
|
||||||
|
return xfs_bioerror(bp);
|
||||||
|
}
|
||||||
|
|
||||||
|
xfs_buf_iorequest(bp);
|
||||||
|
|
||||||
error = xfs_buf_iowait(bp);
|
error = xfs_buf_iowait(bp);
|
||||||
if (error) {
|
if (error) {
|
||||||
|
@ -1861,7 +1853,17 @@ __xfs_buf_delwri_submit(
|
||||||
xfs_buf_hold(bp);
|
xfs_buf_hold(bp);
|
||||||
else
|
else
|
||||||
list_del_init(&bp->b_list);
|
list_del_init(&bp->b_list);
|
||||||
xfs_bdstrat_cb(bp);
|
|
||||||
|
if (XFS_FORCED_SHUTDOWN(bp->b_target->bt_mount)) {
|
||||||
|
trace_xfs_bdstrat_shut(bp, _RET_IP_);
|
||||||
|
|
||||||
|
if (!bp->b_iodone)
|
||||||
|
xfs_bioerror_relse(bp);
|
||||||
|
else
|
||||||
|
xfs_bioerror(bp);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
xfs_buf_iorequest(bp);
|
||||||
}
|
}
|
||||||
blk_finish_plug(&plug);
|
blk_finish_plug(&plug);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue