mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 15:20:58 +07:00
scsi: hpsa: check for lv removal
Multipath failures are normally detected at the frequency of the event thread. Detect LUN failures earlier by checking request completion status. Reviewed-by: Bader Ali-saleh <bader.ali-saleh@microsemi.com> Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> Reviewed-by: Scott Teel <scott.teel@microsemi.com> Reviewed-by: Prasad Munirathnam <Prasad.Munirathnam@microsemi.com> Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
9e98c678c2
commit
49ea45cb1d
@ -2647,9 +2647,20 @@ static void complete_scsi_command(struct CommandList *cp)
|
||||
decode_sense_data(ei->SenseInfo, sense_data_size,
|
||||
&sense_key, &asc, &ascq);
|
||||
if (ei->ScsiStatus == SAM_STAT_CHECK_CONDITION) {
|
||||
if (sense_key == ABORTED_COMMAND) {
|
||||
switch (sense_key) {
|
||||
case ABORTED_COMMAND:
|
||||
cmd->result |= DID_SOFT_ERROR << 16;
|
||||
break;
|
||||
case UNIT_ATTENTION:
|
||||
if (asc == 0x3F && ascq == 0x0E)
|
||||
h->drv_req_rescan = 1;
|
||||
break;
|
||||
case ILLEGAL_REQUEST:
|
||||
if (asc == 0x25 && ascq == 0x00) {
|
||||
dev->removed = 1;
|
||||
cmd->result = DID_NO_CONNECT << 16;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user