Commit e345893b authored by Don Brace's avatar Don Brace Committed by James Bottomley

hpsa: return failed from device reset/abort handlers

Returning failed from the device reset handler will get the device
kicked offline, which is fine if the controller is locked up anyhow.

Cannot abort a command from a failed controller.
Reviewed-by: default avatarScott Teel <scott.teel@pmcs.com>
Reviewed-by: default avatarJustin Lindley <justin.lindley@pmcs.com>
Signed-off-by: default avatarDon Brace <don.brace@pmcs.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 407863cb
...@@ -4343,6 +4343,10 @@ static int hpsa_eh_device_reset_handler(struct scsi_cmnd *scsicmd) ...@@ -4343,6 +4343,10 @@ static int hpsa_eh_device_reset_handler(struct scsi_cmnd *scsicmd)
h = sdev_to_hba(scsicmd->device); h = sdev_to_hba(scsicmd->device);
if (h == NULL) /* paranoia */ if (h == NULL) /* paranoia */
return FAILED; return FAILED;
if (lockup_detected(h))
return FAILED;
dev = scsicmd->device->hostdata; dev = scsicmd->device->hostdata;
if (!dev) { if (!dev) {
dev_err(&h->pdev->dev, "hpsa_eh_device_reset_handler: " dev_err(&h->pdev->dev, "hpsa_eh_device_reset_handler: "
...@@ -4566,6 +4570,9 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc) ...@@ -4566,6 +4570,9 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc)
"ABORT REQUEST FAILED, Controller lookup failed.\n")) "ABORT REQUEST FAILED, Controller lookup failed.\n"))
return FAILED; return FAILED;
if (lockup_detected(h))
return FAILED;
/* Check that controller supports some kind of task abort */ /* Check that controller supports some kind of task abort */
if (!(HPSATMF_PHYS_TASK_ABORT & h->TMFSupportFlags) && if (!(HPSATMF_PHYS_TASK_ABORT & h->TMFSupportFlags) &&
!(HPSATMF_LOG_TASK_ABORT & h->TMFSupportFlags)) !(HPSATMF_LOG_TASK_ABORT & h->TMFSupportFlags))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment