mirror of
https://github.com/torvalds/linux.git
synced 2026-11-08 21:24:02 +01:00
scsi: device_handlers: hp_sw: Use combined sense codes
Refactor the HP sw device handler driver to use the 16-bit sense_code field of struct scsi_sense_hdr and struct scsi_failure and replace all hard-coded additional sense codes and additional sense code qualifiers with the enum values defined in include/scsi/scsi_sense.h. This helps with code clarity as the sense codes being processed are easier to test and self-documented. No functional change intended. Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: Hannes Reinecke <hare@kernel.org> Link: https://patch.msgid.link/20260908090308.1085097-14-dlemoal@kernel.org Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
This commit is contained in:
parent
9a21d5e121
commit
700ab5e279
|
|
@ -47,7 +47,8 @@ static int tur_done(struct scsi_device *sdev, struct hp_sw_dh_data *h,
|
|||
|
||||
switch (sshdr->sense_key) {
|
||||
case NOT_READY:
|
||||
if (sshdr->asc == 0x04 && sshdr->ascq == 2) {
|
||||
if (sshdr->sense_code ==
|
||||
LU_NOT_READY_INITIALIZING_COMMAND_REQUIRED) {
|
||||
/*
|
||||
* LUN not ready - Initialization command required
|
||||
*
|
||||
|
|
@ -61,8 +62,8 @@ static int tur_done(struct scsi_device *sdev, struct hp_sw_dh_data *h,
|
|||
default:
|
||||
sdev_printk(KERN_WARNING, sdev,
|
||||
"%s: sending tur failed, sense %x/%x/%x\n",
|
||||
HP_SW_NAME, sshdr->sense_key, sshdr->asc,
|
||||
sshdr->ascq);
|
||||
HP_SW_NAME, sshdr->sense_key,
|
||||
scsi_sense_asc(sshdr), scsi_sense_ascq(sshdr));
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
|
|
@ -85,8 +86,7 @@ static int hp_sw_tur(struct scsi_device *sdev, struct hp_sw_dh_data *h)
|
|||
struct scsi_failure failure_defs[] = {
|
||||
{
|
||||
.sense_key = UNIT_ATTENTION,
|
||||
.asc = SCMD_FAILURE_ASC_ANY,
|
||||
.ascq = SCMD_FAILURE_ASCQ_ANY,
|
||||
.sense_code = SCMD_FAILURE_SENSE_CODE_ANY,
|
||||
.allowed = SCMD_FAILURE_NO_LIMIT,
|
||||
.result = SAM_STAT_CHECK_CONDITION,
|
||||
},
|
||||
|
|
@ -133,14 +133,9 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
|
|||
REQ_FAILFAST_TRANSPORT | REQ_FAILFAST_DRIVER;
|
||||
struct scsi_failure failure_defs[] = {
|
||||
{
|
||||
/*
|
||||
* LUN not ready - manual intervention required
|
||||
*
|
||||
* Switch-over in progress, retry.
|
||||
*/
|
||||
/* Switch-over in progress, retry. */
|
||||
.sense_key = NOT_READY,
|
||||
.asc = 0x04,
|
||||
.ascq = 0x03,
|
||||
.sense_code = LU_NOT_READY_MANUAL_INTERVENTION_REQUIRED,
|
||||
.allowed = HP_SW_RETRIES,
|
||||
.result = SAM_STAT_CHECK_CONDITION,
|
||||
},
|
||||
|
|
@ -167,7 +162,8 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
|
|||
|
||||
switch (sshdr.sense_key) {
|
||||
case NOT_READY:
|
||||
if (sshdr.asc == 0x04 && sshdr.ascq == 3) {
|
||||
if (sshdr.sense_code ==
|
||||
LU_NOT_READY_MANUAL_INTERVENTION_REQUIRED) {
|
||||
rc = SCSI_DH_RETRY;
|
||||
break;
|
||||
}
|
||||
|
|
@ -176,7 +172,8 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
|
|||
sdev_printk(KERN_WARNING, sdev,
|
||||
"%s: sending start_stop_unit failed, "
|
||||
"sense %x/%x/%x\n", HP_SW_NAME,
|
||||
sshdr.sense_key, sshdr.asc, sshdr.ascq);
|
||||
sshdr.sense_key, scsi_sense_asc(&sshdr),
|
||||
scsi_sense_ascq(&sshdr));
|
||||
rc = SCSI_DH_IO;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user