mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 05:40:55 +07:00
xfs: clear the read/write flags later in xfs_buf_ioend
Clear the flags at the end of xfs_buf_ioend so that they can be used during the completion. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
b840e2ada8
commit
55b7d7115f
@ -1283,12 +1283,13 @@ xfs_buf_ioend_handle_error(
|
||||
|
||||
resubmit:
|
||||
xfs_buf_ioerror(bp, 0);
|
||||
bp->b_flags |= (XBF_WRITE | XBF_DONE | XBF_WRITE_FAIL);
|
||||
bp->b_flags |= (XBF_DONE | XBF_WRITE_FAIL);
|
||||
xfs_buf_submit(bp);
|
||||
return true;
|
||||
out_stale:
|
||||
xfs_buf_stale(bp);
|
||||
bp->b_flags |= XBF_DONE;
|
||||
bp->b_flags &= ~XBF_WRITE;
|
||||
trace_xfs_buf_error_relse(bp, _RET_IP_);
|
||||
return false;
|
||||
}
|
||||
@ -1297,12 +1298,8 @@ static void
|
||||
xfs_buf_ioend(
|
||||
struct xfs_buf *bp)
|
||||
{
|
||||
bool read = bp->b_flags & XBF_READ;
|
||||
|
||||
trace_xfs_buf_iodone(bp, _RET_IP_);
|
||||
|
||||
bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD);
|
||||
|
||||
/*
|
||||
* Pull in IO completion errors now. We are guaranteed to be running
|
||||
* single threaded, so we don't need the lock to read b_io_error.
|
||||
@ -1310,7 +1307,7 @@ xfs_buf_ioend(
|
||||
if (!bp->b_error && bp->b_io_error)
|
||||
xfs_buf_ioerror(bp, bp->b_io_error);
|
||||
|
||||
if (read) {
|
||||
if (bp->b_flags & XBF_READ) {
|
||||
if (!bp->b_error && bp->b_ops)
|
||||
bp->b_ops->verify_read(bp);
|
||||
if (!bp->b_error)
|
||||
@ -1350,6 +1347,8 @@ xfs_buf_ioend(
|
||||
xfs_buf_dquot_iodone(bp);
|
||||
}
|
||||
|
||||
bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_READ_AHEAD);
|
||||
|
||||
if (bp->b_flags & XBF_ASYNC)
|
||||
xfs_buf_relse(bp);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user