Message ID | 20230712173344.2994513-1-bvanassche@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/mq-deadline: Fix a bug in deadline_from_pos() | expand |
On Jul 12, 2023 / 10:33, Bart Van Assche wrote: > A bug was introduced in deadline_from_pos() while implementing the > suggestion to use round_down() in the following code: > > pos -= bdev_offset_from_zone_start(rq->q->disk->part0, pos); > > This patch makes deadline_from_pos() use round_down() such that 'pos' is > rounded down. > > Reported-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> > Closes: https://lore.kernel.org/all/5zthzi3lppvcdp4nemum6qck4gpqbdhvgy4k3qwguhgzxc4quj@amulvgycq67h/ > Cc: Christoph Hellwig <hch@lst.de> > Cc: Damien Le Moal <dlemoal@kernel.org> > Fixes: 0effb390c4ba ("block: mq-deadline: Handle requeued requests correctly") > Signed-off-by: Bart Van Assche <bvanassche@acm.org> Thanks for the fix. I confirmed that it avoids the I/O error using a zoned null_blk device, a QEMU ZNS emulation device and a real ZNS drive. Tested-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
On Wed, 12 Jul 2023 10:33:43 -0700, Bart Van Assche wrote: > A bug was introduced in deadline_from_pos() while implementing the > suggestion to use round_down() in the following code: > > pos -= bdev_offset_from_zone_start(rq->q->disk->part0, pos); > > This patch makes deadline_from_pos() use round_down() such that 'pos' is > rounded down. > > [...] Applied, thanks! [1/1] block/mq-deadline: Fix a bug in deadline_from_pos() (no commit info) Best regards,
diff --git a/block/mq-deadline.c b/block/mq-deadline.c index 0bed2bdeed89..f783ed71ae19 100644 --- a/block/mq-deadline.c +++ b/block/mq-deadline.c @@ -176,7 +176,7 @@ static inline struct request *deadline_from_pos(struct dd_per_prio *per_prio, * zoned writes, start searching from the start of a zone. */ if (blk_rq_is_seq_zoned_write(rq)) - pos -= round_down(pos, rq->q->limits.chunk_sectors); + pos = round_down(pos, rq->q->limits.chunk_sectors); while (node) { rq = rb_entry_rq(node);
A bug was introduced in deadline_from_pos() while implementing the suggestion to use round_down() in the following code: pos -= bdev_offset_from_zone_start(rq->q->disk->part0, pos); This patch makes deadline_from_pos() use round_down() such that 'pos' is rounded down. Reported-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> Closes: https://lore.kernel.org/all/5zthzi3lppvcdp4nemum6qck4gpqbdhvgy4k3qwguhgzxc4quj@amulvgycq67h/ Cc: Christoph Hellwig <hch@lst.de> Cc: Damien Le Moal <dlemoal@kernel.org> Fixes: 0effb390c4ba ("block: mq-deadline: Handle requeued requests correctly") Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- block/mq-deadline.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)