Commit 3cc49884 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

xfs: remove xfs_buf_ioerror_retry

Merge xfs_buf_ioerror_retry into its only caller to make the resubmission
flow a little easier to follow.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent f58d0ea9
...@@ -1185,23 +1185,6 @@ xfs_buf_ioerror_alert_ratelimited( ...@@ -1185,23 +1185,6 @@ xfs_buf_ioerror_alert_ratelimited(
lasttarg = bp->b_target; lasttarg = bp->b_target;
} }
static bool
xfs_buf_ioerror_retry(
struct xfs_buf *bp,
struct xfs_error_cfg *cfg)
{
if ((bp->b_flags & (XBF_STALE | XBF_WRITE_FAIL)) &&
bp->b_last_error == bp->b_error)
return false;
bp->b_flags |= (XBF_WRITE | XBF_DONE | XBF_WRITE_FAIL);
bp->b_last_error = bp->b_error;
if (cfg->retry_timeout != XFS_ERR_RETRY_FOREVER &&
!bp->b_first_retry_time)
bp->b_first_retry_time = jiffies;
return true;
}
/* /*
* Account for this latest trip around the retry handler, and decide if * Account for this latest trip around the retry handler, and decide if
* we've failed enough times to constitute a permanent failure. * we've failed enough times to constitute a permanent failure.
...@@ -1281,10 +1264,13 @@ xfs_buf_ioend_disposition( ...@@ -1281,10 +1264,13 @@ xfs_buf_ioend_disposition(
trace_xfs_buf_iodone_async(bp, _RET_IP_); trace_xfs_buf_iodone_async(bp, _RET_IP_);
cfg = xfs_error_get_cfg(mp, XFS_ERR_METADATA, bp->b_error); cfg = xfs_error_get_cfg(mp, XFS_ERR_METADATA, bp->b_error);
if (xfs_buf_ioerror_retry(bp, cfg)) { if (bp->b_last_error != bp->b_error ||
xfs_buf_ioerror(bp, 0); !(bp->b_flags & (XBF_STALE | XBF_WRITE_FAIL))) {
xfs_buf_submit(bp); bp->b_last_error = bp->b_error;
return XBF_IOEND_DONE; if (cfg->retry_timeout != XFS_ERR_RETRY_FOREVER &&
!bp->b_first_retry_time)
bp->b_first_retry_time = jiffies;
goto resubmit;
} }
/* /*
...@@ -1299,6 +1285,11 @@ xfs_buf_ioend_disposition( ...@@ -1299,6 +1285,11 @@ xfs_buf_ioend_disposition(
/* Still considered a transient error. Caller will schedule retries. */ /* Still considered a transient error. Caller will schedule retries. */
return XBF_IOEND_FAIL; return XBF_IOEND_FAIL;
resubmit:
xfs_buf_ioerror(bp, 0);
bp->b_flags |= (XBF_WRITE | XBF_DONE | XBF_WRITE_FAIL);
xfs_buf_submit(bp);
return XBF_IOEND_DONE;
out_stale: out_stale:
xfs_buf_stale(bp); xfs_buf_stale(bp);
bp->b_flags |= XBF_DONE; bp->b_flags |= XBF_DONE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment