This is a note to let you know that I've just added the patch titled block: Do not force full zone append completion in req_bio_endio() to the 6.8-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: block-do-not-force-full-zone-append-completion-in-req_bio_endio.patch and it can be found in the queue-6.8 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 55251fbdf0146c252ceff146a1bb145546f3e034 Mon Sep 17 00:00:00 2001 From: Damien Le Moal <dlemoal@xxxxxxxxxx> Date: Thu, 28 Mar 2024 09:43:40 +0900 Subject: block: Do not force full zone append completion in req_bio_endio() From: Damien Le Moal <dlemoal@xxxxxxxxxx> commit 55251fbdf0146c252ceff146a1bb145546f3e034 upstream. This reverts commit 748dc0b65ec2b4b7b3dbd7befcc4a54fdcac7988. Partial zone append completions cannot be supported as there is no guarantees that the fragmented data will be written sequentially in the same manner as with a full command. Commit 748dc0b65ec2 ("block: fix partial zone append completion handling in req_bio_endio()") changed req_bio_endio() to always advance a partially failed BIO by its full length, but this can lead to incorrect accounting. So revert this change and let low level device drivers handle this case by always failing completely zone append operations. With this revert, users will still see an IO error for a partially completed zone append BIO. Fixes: 748dc0b65ec2 ("block: fix partial zone append completion handling in req_bio_endio()") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Link: https://lore.kernel.org/r/20240328004409.594888-2-dlemoal@xxxxxxxxxx Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- block/blk-mq.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -771,16 +771,11 @@ static void req_bio_endio(struct request /* * Partial zone append completions cannot be supported as the * BIO fragments may end up not being written sequentially. - * For such case, force the completed nbytes to be equal to - * the BIO size so that bio_advance() sets the BIO remaining - * size to 0 and we end up calling bio_endio() before returning. */ - if (bio->bi_iter.bi_size != nbytes) { + if (bio->bi_iter.bi_size != nbytes) bio->bi_status = BLK_STS_IOERR; - nbytes = bio->bi_iter.bi_size; - } else { + else bio->bi_iter.bi_sector = rq->__sector; - } } bio_advance(bio, nbytes); Patches currently in stable-queue which might be from dlemoal@xxxxxxxxxx are queue-6.8/block-do-not-force-full-zone-append-completion-in-req_bio_endio.patch queue-6.8/block-clear-zone-limits-for-a-non-zoned-stacked-queu.patch queue-6.8/revert-block-mq-deadline-use-correct-way-to-throttli.patch