From: "Li,Rongqing" <lirongqing@baidu.com>
To: Ming Lei <tom.leiming@gmail.com>
Cc: Jens Axboe <axboe@kernel.dk>,
Andreas Hindborg <a.hindborg@kernel.org>,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: 答复: [????] Re: [PATCH] ublk: use global index for reported zones
Date: Tue, 29 Sep 2026 09:51:51 +0000 [thread overview]
Message-ID: <899fc8e55bbf4622a4a75b8d367d8cd0@baidu.com> (raw)
In-Reply-To: <aruBzOsvpYoWAO51@fedora-laptop>
nes() may split a zone report into multiple requests
> > when the number of zones exceeds the temporary buffer capacity. The
> > index passed to disk_report_zone() must refer to the zone position in
> > the whole report, rather than the position within the current request.
> >
> > Currently, the per-request loop index is used as the callback index,
> > causing each chunk after the first one to restart from zero. This can
> > make userspace callbacks receive duplicate zone indices and may result
> > in blk_revalidate_disk_zones() updating incorrect entries in its zone
> > state array.
> >
> > Use the number of zones already reported as the base index for each
> > request so that zone indices remain continuous across all chunks.
> >
> > Fixes: 29802d7ca33b ("ublk: enable zoned storage support")
> > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > ---
> > drivers/block/ublk_drv.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index
> > 66eb55e..007e703 100644
> > --- a/drivers/block/ublk_drv.c
> > +++ b/drivers/block/ublk_drv.c
> > @@ -649,6 +649,7 @@ static int ublk_report_zones(struct gendisk *disk,
> sector_t sector,
> > unsigned int remaining_zones = nr_zones - done_zones;
> > unsigned int zones_in_request =
> > min_t(unsigned int, remaining_zones, max_zones_per_request);
> > + unsigned int batch_start = done_zones;
> > struct request *req;
> > struct ublk_zoned_report_desc desc;
> > blk_status_t status;
> > @@ -687,7 +688,7 @@ static int ublk_report_zones(struct gendisk *disk,
> sector_t sector,
> > if (!zone->len)
> > break;
> >
> > - ret = disk_report_zone(disk, zone, i, args);
> > + ret = disk_report_zone(disk, zone, batch_start + i, args);
>
> `done_zones` can be passed directly, then we can save one local variable,
> otherwise, this patch looks fine:
>
Thanks, I will send v2
[Li,Rongqing]
> Reviewed-by: Ming Lei <tom.leiming@gmail.com>
>
>
> Thanks,
> Ming
prev parent reply other threads:[~2026-09-29 9:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-29 7:00 [PATCH] ublk: use global index for reported zones lirongqing
2026-09-29 9:15 ` Ming Lei
2026-09-29 9:51 ` Li,Rongqing [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=899fc8e55bbf4622a4a75b8d367d8cd0@baidu.com \
--to=lirongqing@baidu.com \
--cc=a.hindborg@kernel.org \
--cc=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tom.leiming@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.