On Thu, Jul 09, 2020 at 05:04:51PM +0200, Christoph Hellwig wrote: > 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@xxxxxx> Seems fairly straightforward... Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > fs/xfs/xfs_buf.c | 11 +++++------ > 1 file changed, 5 insertions(+), 6 deletions(-) > > diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c > index 4a9034a9175504..8bbd28f39a927b 100644 > --- a/fs/xfs/xfs_buf.c > +++ b/fs/xfs/xfs_buf.c > @@ -1281,12 +1281,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; > } > @@ -1295,12 +1296,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. > @@ -1308,7 +1305,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) > @@ -1348,6 +1345,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 > -- > 2.26.2 >