scsi: mpt3sas: Prevent error handler escalation when device removed
If SCSI error handling is taking place for timed out I/Os on a drive and the corresponding drive is removed, then stop escalating to higher level of reset by returning the TUR with "I_T NEXUS LOSS OCCURRED" sense key. Link: https://lore.kernel.org/r/20220816080801.13929-1-sreekanth.reddy@broadcom.com Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
4865821320
commit
e75c8ea0d7
1 changed files with 13 additions and 0 deletions
|
@ -5156,6 +5156,19 @@ scsih_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *scmd)
|
||||||
|
|
||||||
/* invalid device handle */
|
/* invalid device handle */
|
||||||
handle = sas_target_priv_data->handle;
|
handle = sas_target_priv_data->handle;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Avoid error handling escallation when device is disconnected
|
||||||
|
*/
|
||||||
|
if (handle == MPT3SAS_INVALID_DEVICE_HANDLE || sas_device_priv_data->block) {
|
||||||
|
if (scmd->device->host->shost_state == SHOST_RECOVERY &&
|
||||||
|
scmd->cmnd[0] == TEST_UNIT_READY) {
|
||||||
|
scsi_build_sense(scmd, 0, UNIT_ATTENTION, 0x29, 0x07);
|
||||||
|
scsi_done(scmd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (handle == MPT3SAS_INVALID_DEVICE_HANDLE) {
|
if (handle == MPT3SAS_INVALID_DEVICE_HANDLE) {
|
||||||
scmd->result = DID_NO_CONNECT << 16;
|
scmd->result = DID_NO_CONNECT << 16;
|
||||||
scsi_done(scmd);
|
scsi_done(scmd);
|
||||||
|
|
Loading…
Add table
Reference in a new issue