Skip to content

Commit cbd6883

Browse files
Christoph Hellwigcmaiolino
authored andcommitted
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: 5076a60 ("xfs: support in-memory buffer cache targets") Signed-off-by: Christoph Hellwig <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> Acked-by: Dave Chinner <[email protected]> Signed-off-by: Carlos Maiolino <[email protected]>
1 parent 9d9b724 commit cbd6883

File tree

1 file changed

+1
-3
lines changed

1 file changed

+1
-3
lines changed

fs/xfs/xfs_buf.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,10 +1657,8 @@ _xfs_buf_ioapply(
16571657
op |= REQ_META;
16581658

16591659
/* in-memory targets are directly mapped, no IO required. */
1660-
if (xfs_buftarg_is_mem(bp->b_target)) {
1661-
xfs_buf_ioend(bp);
1660+
if (xfs_buftarg_is_mem(bp->b_target))
16621661
return;
1663-
}
16641662

16651663
/*
16661664
* Walk all the vectors issuing IO on them. Set up the initial offset

0 commit comments

Comments
 (0)