xfs: fix handling of synchronous errors in xfs_buf_submit

Synchronous readers and writers already run __xfs_buf_ioend from
xfs_buf_iowait after being woken through bp->b_iowait, so we
should not call it here, which can lead to double completions.

Fixes: 4b90de5bc0 ("xfs: reduce context switches for synchronous buffered I/O")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
Christoph Hellwig 2026-06-25 15:58:35 +02:00 committed by Carlos Maiolino
parent b53177d418
commit 93e21ef2a8

View File

@ -1404,12 +1404,12 @@ xfs_buf_submit(
bp->b_flags &= ~XBF_DONE;
xfs_buf_stale(bp);
end_io:
if (!__xfs_buf_ioend(bp))
return;
if (bp->b_flags & XBF_ASYNC)
xfs_buf_relse(bp);
else
if (bp->b_flags & XBF_ASYNC) {
if (__xfs_buf_ioend(bp))
xfs_buf_relse(bp);
} else {
complete(&bp->b_iowait);
}
}
/*