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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux