mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
scsi: scsi_debug: Reduce code duplication
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>
This commit is contained in:
parent
4f53138fff
commit
a5fe98eb8f
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user