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: Scott Teel <scott.t...@pmcs.com>
Reviewed-by: Justin Lindley <justin.lind...@pmcs.com>
Signed-off-by: Don Brace <don.br...@pmcs.com>
---
 drivers/scsi/hpsa.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 834ac78..a02ea7f 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -4343,6 +4343,10 @@ static int hpsa_eh_device_reset_handler(struct scsi_cmnd 
*scsicmd)
        h = sdev_to_hba(scsicmd->device);
        if (h == NULL) /* paranoia */
                return FAILED;
+
+       if (lockup_detected(h))
+               return FAILED;
+
        dev = scsicmd->device->hostdata;
        if (!dev) {
                dev_err(&h->pdev->dev, "hpsa_eh_device_reset_handler: "
@@ -4566,6 +4570,9 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc)
                        "ABORT REQUEST FAILED, Controller lookup failed.\n"))
                return FAILED;
 
+       if (lockup_detected(h))
+               return FAILED;
+
        /* Check that controller supports some kind of task abort */
        if (!(HPSATMF_PHYS_TASK_ABORT & h->TMFSupportFlags) &&
                !(HPSATMF_LOG_TASK_ABORT & h->TMFSupportFlags))

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to