Blob Blame History Raw
From: Don Brace <don.brace@microsemi.com>
Date: Mon, 20 Jul 2020 16:53:03 -0500
Subject: scsi: hpsa: Increase controller error handling timeout
Patch-mainline: v5.9-rc1
Git-commit: 30bda7848a23980c7eecda4a1148e093d3e98de0
References: jsc#SLE-15150

The controller can become slow to respond to SCSI INQUIRY requests
resulting in the SCSI midlayer offlining the controller device.

Increase the timeout value for commands sent to the controller device.

Link: https://lore.kernel.org/r/159528198335.24772.7963614374905470122.stgit@brunhilda
Reviewed-by: Scott Teel <scott.teel@microsemi.com>
Reviewed-by: Scott Benesh <scott.benesh@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>
Acked-by: Martin Wilck <mwilck@suse.com>
---
 drivers/scsi/hpsa.c |    4 ++++
 1 file changed, 4 insertions(+)

--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -2135,6 +2135,7 @@ static int hpsa_slave_alloc(struct scsi_
 }
 
 /* configure scsi device based on internal per-device structure */
+#define CTLR_TIMEOUT (120 * HZ)
 static int hpsa_slave_configure(struct scsi_device *sdev)
 {
 	struct hpsa_scsi_dev_t *sd;
@@ -2150,6 +2151,9 @@ static int hpsa_slave_configure(struct s
 			sdev->eh_timeout = HPSA_EH_PTRAID_TIMEOUT;
 			blk_queue_rq_timeout(sdev->request_queue,
 						HPSA_EH_PTRAID_TIMEOUT);
+		} else if (is_hba_lunid(sd->scsi3addr)) {
+			sdev->eh_timeout = CTLR_TIMEOUT;
+			blk_queue_rq_timeout(sdev->request_queue, CTLR_TIMEOUT);
 		} else {
 			queue_depth = sd->queue_depth != 0 ?
 					sd->queue_depth : sdev->host->can_queue;