Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f9d35d2 authored by Damien Le Moal's avatar Damien Le Moal Committed by Jens Axboe
Browse files

scsi: sd_zbc: Rearrange code



Move the urswrz check out of sd_zbc_read_zones() and into
sd_zbc_read_zoned_characteristics() where that value is obtained (read
from the disk zoned characteristics VPD page). Since this function now
does more than simply reading the VPD page, rename it to
sd_zbc_check_zoned_characteristics().
Also fix the error message displayed when reading that VPD page fails.

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarDamien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent cdffab7a
Loading
Loading
Loading
Loading
+19 −20
Original line number Original line Diff line number Diff line
@@ -305,19 +305,19 @@ void sd_zbc_complete(struct scsi_cmnd *cmd, unsigned int good_bytes,
}
}


/**
/**
 * sd_zbc_read_zoned_characteristics - Read zoned block device characteristics
 * sd_zbc_check_zoned_characteristics - Check zoned block device characteristics
 * @sdkp: Target disk
 * @sdkp: Target disk
 * @buf: Buffer where to store the VPD page data
 * @buf: Buffer where to store the VPD page data
 *
 *
 * Read VPD page B6.
 * Read VPD page B6, get information and check that reads are unconstrained.
 */
 */
static int sd_zbc_read_zoned_characteristics(struct scsi_disk *sdkp,
static int sd_zbc_check_zoned_characteristics(struct scsi_disk *sdkp,
					      unsigned char *buf)
					      unsigned char *buf)
{
{


	if (scsi_get_vpd_page(sdkp->device, 0xb6, buf, 64)) {
	if (scsi_get_vpd_page(sdkp->device, 0xb6, buf, 64)) {
		sd_printk(KERN_NOTICE, sdkp,
		sd_printk(KERN_NOTICE, sdkp,
			  "Unconstrained-read check failed\n");
			  "Read zoned characteristics VPD page failed\n");
		return -ENODEV;
		return -ENODEV;
	}
	}


@@ -335,6 +335,18 @@ static int sd_zbc_read_zoned_characteristics(struct scsi_disk *sdkp,
		sdkp->zones_max_open = get_unaligned_be32(&buf[16]);
		sdkp->zones_max_open = get_unaligned_be32(&buf[16]);
	}
	}


	/*
	 * Check for unconstrained reads: host-managed devices with
	 * constrained reads (drives failing read after write pointer)
	 * are not supported.
	 */
	if (!sdkp->urswrz) {
		if (sdkp->first_scan)
			sd_printk(KERN_NOTICE, sdkp,
			  "constrained reads devices are not supported\n");
		return -ENODEV;
	}

	return 0;
	return 0;
}
}


@@ -675,24 +687,11 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned char *buf)
		 */
		 */
		return 0;
		return 0;


	/* Get zoned block device characteristics */
	/* Check zoned block device characteristics (unconstrained reads) */
	ret = sd_zbc_read_zoned_characteristics(sdkp, buf);
	ret = sd_zbc_check_zoned_characteristics(sdkp, buf);
	if (ret)
	if (ret)
		goto err;
		goto err;


	/*
	 * Check for unconstrained reads: host-managed devices with
	 * constrained reads (drives failing read after write pointer)
	 * are not supported.
	 */
	if (!sdkp->urswrz) {
		if (sdkp->first_scan)
			sd_printk(KERN_NOTICE, sdkp,
			  "constrained reads devices are not supported\n");
		ret = -ENODEV;
		goto err;
	}

	/* Check capacity */
	/* Check capacity */
	ret = sd_zbc_check_capacity(sdkp, buf);
	ret = sd_zbc_check_capacity(sdkp, buf);
	if (ret)
	if (ret)