]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: scsi_debug: Reduce code duplication
authorBart Van Assche <bvanassche@acm.org>
Tue, 30 Jan 2024 21:48:38 +0000 (13:48 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 27 Feb 2024 02:37:26 +0000 (21:37 -0500)
All VPD pages have the page code in byte one. Reduce code duplication by
storing the VPD page code once.

Reviewed-by: Avri Altman <avri.altman@wdc.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: Douglas Gilbert <dgilbert@interlog.com>
Tested-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20240130214911.1863909-13-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_debug.c

index d03d66f11493012815d7c5bb5fbdfd35c9f6dd67..994a2b829b944d3d62333438c715ad6c1f57dd92 100644 (file)
@@ -1903,7 +1903,8 @@ static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip)
                u32 len;
                char lu_id_str[6];
                int host_no = devip->sdbg_host->shost->host_no;
-               
+
+               arr[1] = cmd[2];
                port_group_id = (((host_no + 1) & 0x7f) << 8) +
                    (devip->channel & 0x7f);
                if (sdebug_vpd_use_hostno == 0)
@@ -1914,7 +1915,6 @@ static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip)
                                 (devip->target * 1000) - 3;
                len = scnprintf(lu_id_str, 6, "%d", lu_id_num);
                if (0 == cmd[2]) { /* supported vital product data pages */
-                       arr[1] = cmd[2];        /*sanity */
                        n = 4;
                        arr[n++] = 0x0;   /* this page */
                        arr[n++] = 0x80;  /* unit serial number */
@@ -1935,23 +1935,18 @@ static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip)
                        }
                        arr[3] = n - 4;   /* number of supported VPD pages */
                } else if (0x80 == cmd[2]) { /* unit serial number */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = len;
                        memcpy(&arr[4], lu_id_str, len);
                } else if (0x83 == cmd[2]) { /* device identification */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_83(&arr[4], port_group_id,
                                                target_dev_id, lu_id_num,
                                                lu_id_str, len,
                                                &devip->lu_name);
                } else if (0x84 == cmd[2]) { /* Software interface ident. */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_84(&arr[4]);
                } else if (0x85 == cmd[2]) { /* Management network addresses */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_85(&arr[4]);
                } else if (0x86 == cmd[2]) { /* extended inquiry */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = 0x3c;  /* number of following entries */
                        if (sdebug_dif == T10_PI_TYPE3_PROTECTION)
                                arr[4] = 0x4;   /* SPT: GRD_CHK:1 */
@@ -1961,30 +1956,23 @@ static int resp_inquiry(struct scsi_cmnd *scp, struct sdebug_dev_info *devip)
                                arr[4] = 0x0;   /* no protection stuff */
                        arr[5] = 0x7;   /* head of q, ordered + simple q's */
                } else if (0x87 == cmd[2]) { /* mode page policy */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = 0x8;   /* number of following entries */
                        arr[4] = 0x2;   /* disconnect-reconnect mp */
                        arr[6] = 0x80;  /* mlus, shared */
                        arr[8] = 0x18;   /* protocol specific lu */
                        arr[10] = 0x82;  /* mlus, per initiator port */
                } else if (0x88 == cmd[2]) { /* SCSI Ports */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_88(&arr[4], target_dev_id);
                } else if (is_disk_zbc && 0x89 == cmd[2]) { /* ATA info */
-                       arr[1] = cmd[2];        /*sanity */
                        n = inquiry_vpd_89(&arr[4]);
                        put_unaligned_be16(n, arr + 2);
                } else if (is_disk_zbc && 0xb0 == cmd[2]) { /* Block limits */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_b0(&arr[4]);
                } else if (is_disk_zbc && 0xb1 == cmd[2]) { /* Block char. */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_b1(devip, &arr[4]);
                } else if (is_disk && 0xb2 == cmd[2]) { /* LB Prov. */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_b2(&arr[4]);
                } else if (is_zbc && cmd[2] == 0xb6) { /* ZB dev. charact. */
-                       arr[1] = cmd[2];        /*sanity */
                        arr[3] = inquiry_vpd_b6(devip, &arr[4]);
                } else {
                        mk_sense_invalid_fld(scp, SDEB_IN_CDB, 2, -1);