From: Pavel Begunkov Date: Fri, 22 Oct 2021 15:01:44 +0000 (+0100) Subject: block: fix req_bio_endio append error handling X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=297db731847e7808881ec2123c7564067d594d39;p=linux.git block: fix req_bio_endio append error handling Shinichiro Kawasaki reports that there is a bug in a recent req_bio_endio() patch causing problems with zonefs. As Shinichiro suggested, inverse the condition in zone append path to resemble how it was before: fail when it's not fully completed. Fixes: 478eb72b815f3 ("block: optimise req_bio_endio()") Reported-by: Shinichiro Kawasaki Signed-off-by: Pavel Begunkov Link: https://lore.kernel.org/r/344ea4e334aace9148b41af5f2426da38c8aa65a.1634914228.git.asml.silence@gmail.com Signed-off-by: Jens Axboe --- diff --git a/block/blk-mq.c b/block/blk-mq.c index d04ee72ba1255..c19dfa8ea65e1 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -640,7 +640,7 @@ static void req_bio_endio(struct request *rq, struct bio *bio, * Partial zone append completions cannot be supported as the * BIO fragments may end up not being written sequentially. */ - if (bio->bi_iter.bi_size == nbytes) + if (bio->bi_iter.bi_size != nbytes) bio->bi_status = BLK_STS_IOERR; else bio->bi_iter.bi_sector = rq->__sector;