On Sun, Dec 21, 2025 at 3:52 AM Andreas Gruenbacher <[email protected]> wrote: > Function xfs_zone_alloc_and_submit() sets bio->bi_status and then it > calls bio_io_error(), which overwrites that value again. Fix that by > completing the bio separately after setting bio->bi_status.
By the way, this bug makes me wonder if we shouldn't just get rid of bio_io_error() in favour of bio_endio_status(bio, BLK_STS_IOERR). The latter would be a lot more obvious. Andreas > Signed-off-by: Andreas Gruenbacher <[email protected]> > --- > fs/xfs/xfs_zone_alloc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/xfs/xfs_zone_alloc.c b/fs/xfs/xfs_zone_alloc.c > index ef7a931ebde5..bd6f3ef095cb 100644 > --- a/fs/xfs/xfs_zone_alloc.c > +++ b/fs/xfs/xfs_zone_alloc.c > @@ -897,6 +897,9 @@ xfs_zone_alloc_and_submit( > > out_split_error: > ioend->io_bio.bi_status = errno_to_blk_status(PTR_ERR(split)); > + bio_endio(&ioend->io_bio); > + return; > + > out_error: > bio_io_error(&ioend->io_bio); > } > -- > 2.52.0 >
