scsi: sd_zbc: Rearrange code
authorDamien Le Moal <damien.lemoal@wdc.com>
Fri, 12 Oct 2018 10:08:40 +0000 (19:08 +0900)
committerJens Axboe <axboe@kernel.dk>
Thu, 25 Oct 2018 17:17:39 +0000 (11:17 -0600)
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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/scsi/sd_zbc.c

index 412c1787dcd98f1fdf0d61a723c797907f848792..0b7d8787f7851cf749a37d22d406c19e502da0cd 100644 (file)
@@ -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
  * @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,
-                                            unsigned char *buf)
+static int sd_zbc_check_zoned_characteristics(struct scsi_disk *sdkp,
+                                             unsigned char *buf)
 {
 
        if (scsi_get_vpd_page(sdkp->device, 0xb6, buf, 64)) {
                sd_printk(KERN_NOTICE, sdkp,
-                         "Unconstrained-read check failed\n");
+                         "Read zoned characteristics VPD page failed\n");
                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]);
        }
 
+       /*
+        * 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;
 }
 
@@ -675,24 +687,11 @@ int sd_zbc_read_zones(struct scsi_disk *sdkp, unsigned char *buf)
                 */
                return 0;
 
-       /* Get zoned block device characteristics */
-       ret = sd_zbc_read_zoned_characteristics(sdkp, buf);
+       /* Check zoned block device characteristics (unconstrained reads) */
+       ret = sd_zbc_check_zoned_characteristics(sdkp, buf);
        if (ret)
                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 */
        ret = sd_zbc_check_capacity(sdkp, buf);
        if (ret)