mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
scsi: core: Have midlayer retry scsi_mode_sense() UAs
This has scsi_mode_sense() have the SCSI midlayer retry UAs instead of driving them itself. Signed-off-by: Mike Christie <michael.christie@oracle.com> Link: https://lore.kernel.org/r/20240123002220.129141-13-michael.christie@oracle.com Acked-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
e11f35c46e
commit
21bdff48e1
@ -2262,11 +2262,25 @@ scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, int subpage,
|
||||
unsigned char cmd[12];
|
||||
int use_10_for_ms;
|
||||
int header_length;
|
||||
int result, retry_count = retries;
|
||||
int result;
|
||||
struct scsi_sense_hdr my_sshdr;
|
||||
struct scsi_failure failure_defs[] = {
|
||||
{
|
||||
.sense = UNIT_ATTENTION,
|
||||
.asc = SCMD_FAILURE_ASC_ANY,
|
||||
.ascq = SCMD_FAILURE_ASCQ_ANY,
|
||||
.allowed = retries,
|
||||
.result = SAM_STAT_CHECK_CONDITION,
|
||||
},
|
||||
{}
|
||||
};
|
||||
struct scsi_failures failures = {
|
||||
.failure_definitions = failure_defs,
|
||||
};
|
||||
const struct scsi_exec_args exec_args = {
|
||||
/* caller might not be interested in sense, but we need it */
|
||||
.sshdr = sshdr ? : &my_sshdr,
|
||||
.failures = &failures,
|
||||
};
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
@ -2328,12 +2342,6 @@ scsi_mode_sense(struct scsi_device *sdev, int dbd, int modepage, int subpage,
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
if (scsi_status_is_check_condition(result) &&
|
||||
sshdr->sense_key == UNIT_ATTENTION &&
|
||||
retry_count) {
|
||||
retry_count--;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
return -EIO;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user