mirror of
https://github.com/torvalds/linux.git
synced 2026-05-21 13:27:57 +02:00
xfs: fix a double completion for buffers on in-memory targets
__xfs_buf_submit calls xfs_buf_ioend when b_io_remaining hits zero. For
in-memory buftargs b_io_remaining is never incremented from it's initial
value of 1, so this always happens. Thus the extra call to xfs_buf_ioend
in _xfs_buf_ioapply causes a double completion. Fortunately
__xfs_buf_submit is only used for synchronous reads on in-memory buftargs
due to the peculiarities of how they work, so this is mostly harmless and
just causes a little extra work to be done.
Fixes: 5076a6040c ("xfs: support in-memory buffer cache targets")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Acked-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
9d9b724726
commit
cbd6883ed8
|
|
@ -1657,10 +1657,8 @@ _xfs_buf_ioapply(
|
|||
op |= REQ_META;
|
||||
|
||||
/* in-memory targets are directly mapped, no IO required. */
|
||||
if (xfs_buftarg_is_mem(bp->b_target)) {
|
||||
xfs_buf_ioend(bp);
|
||||
if (xfs_buftarg_is_mem(bp->b_target))
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Walk all the vectors issuing IO on them. Set up the initial offset
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user