Re: [PATCH v2 3/9] scsi: sd_zbc: Use logical blocks as unit when querying zones

Himanshu Madhani
2022-04-21T20:10:18Z

> On Apr 21, 2022, at 11:30 AM, Bart Van Assche <bvanassche@acm.org> wrote:
>
> When querying zones, track the position in logical blocks instead of in
> sectors. This change slightly simplifies sd_zbc_report_zones().
>
> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> [ bvanassche: extracted this change from a larger patch ]
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
> ---
> drivers/scsi/sd_zbc.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c
> index 9ef5ad345185..e76bcbfd0d1c 100644
> --- a/drivers/scsi/sd_zbc.c
> +++ b/drivers/scsi/sd_zbc.c
> @@ -224,7 +224,7 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
> unsigned int nr_zones, report_zones_cb cb, void *data)
> {
> struct scsi_disk *sdkp = scsi_disk(disk);
> - sector_t capacity = logical_to_sectors(sdkp->device, sdkp->capacity);
> + sector_t lba = sectors_to_logical(sdkp->device, sector);
> unsigned int nr, i;
> unsigned char *buf;
> size_t offset, buflen = 0;
> @@ -235,7 +235,7 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
> /* Not a zoned device */
> return -EOPNOTSUPP;
>
> - if (!capacity)
> + if (!sdkp->capacity)
> /* Device gone or invalid */
> return -ENODEV;
>
> @@ -243,9 +243,8 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
> if (!buf)
> return -ENOMEM;
>
> - while (zone_idx < nr_zones && sector < capacity) {
> - ret = sd_zbc_do_report_zones(sdkp, buf, buflen,
> - sectors_to_logical(sdkp->device, sector), true);
> + while (zone_idx < nr_zones && lba < sdkp->capacity) {
> + ret = sd_zbc_do_report_zones(sdkp, buf, buflen, lba, true);
> if (ret)
> goto out;
>
> @@ -263,7 +262,7 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector,
> zone_idx++;
> }
>
> - sector += sd_zbc_zone_sectors(sdkp) * i;
> + lba += sdkp->zone_blocks * i;
> }
>
> ret = zone_idx;

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>

--
Himanshu Madhani Oracle Linux Engineering