> On Apr 21, 2022, at 11:30 AM, Bart Van Assche <bvanassche@xxxxxxx> 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@xxxxxxxxxxxxxxxxxx> > [ bvanassche: extracted this change from a larger patch ] > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > 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@xxxxxxxxxx> -- Himanshu Madhani Oracle Linux Engineering