From: Don Brace <don.brace@microchip.com>
To: <don.brace@microchip.com>, <scott.teel@microchip.com>,
<Justin.Lindley@microchip.com>, <scott.benesh@microchip.com>,
<gerry.morong@microchip.com>, <mahesh.rajashekhara@microchip.com>,
<mike.mcgowen@microchip.com>, <murthy.bhat@microchip.com>,
<kumar.meiyappan@microchip.com>, <jeremy.reeves@microchip.com>,
<david.strahan@microchip.com>, <hch@infradead.org>,
James Bottomley <James.Bottomley@HansenPartnership.com>,
Martin Petersen <martin.petersen@oracle.com>,
<joseph.szczypek@hpe.com>, <POSWALD@suse.com>
Cc: <linux-scsi@vger.kernel.org>
Subject: [PATCH 5/7] smartpqi: fix rare system hang during LUN reset
Date: Tue, 27 Aug 2024 13:54:59 -0500 [thread overview]
Message-ID: <20240827185501.692804-6-don.brace@microchip.com> (raw)
In-Reply-To: <20240827185501.692804-1-don.brace@microchip.com>
From: Murthy Bhat <Murthy.Bhat@microchip.com>
Correct a rare case where in a LUN reset occurs on a device
and I/O requests for other devices persist in the driver's internal
request queue.
Part of a LUN reset involves waiting for our internal request queue
to empty before proceeding. The internal request queue contains requests
not yet sent down to the controller.
We were clearing the requests queued for the LUN undergoing a reset, but
not all of the queued requests. Causing a hang.
For all requests in our internal request queue:
Complete requests with DID_RESET for queued requests for the device
undergoing a reset.
Complete requests with DID_REQUEUE for all other queued requests.
Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
Reviewed-by: Scott Teel <scott.teel@microchip.com>
Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com>
Signed-off-by: Murthy Bhat <Murthy.Bhat@microchip.com>
Signed-off-by: Don Brace <don.brace@microchip.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 46bef2cf95c4..d1d117d5d08d 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -6200,14 +6200,12 @@ static void pqi_fail_io_queued_for_device(struct pqi_ctrl_info *ctrl_info,
continue;
scsi_device = scmd->device->hostdata;
- if (scsi_device != device)
- continue;
-
- if ((u8)scmd->device->lun != lun)
- continue;
list_del(&io_request->request_list_entry);
- set_host_byte(scmd, DID_RESET);
+ if (scsi_device == device && (u8)scmd->device->lun == lun)
+ set_host_byte(scmd, DID_RESET);
+ else
+ set_host_byte(scmd, DID_REQUEUE);
pqi_free_io_request(io_request);
scsi_dma_unmap(scmd);
pqi_scsi_done(scmd);
--
2.46.0.421.g159f2d50e7
next prev parent reply other threads:[~2024-08-27 18:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-27 18:54 [PATCH 0/7] smartpqi updates Don Brace
2024-08-27 18:54 ` [PATCH 1/7] smartpqi: Add fw log to kdump Don Brace
2024-08-27 18:54 ` [PATCH 2/7] smartpqi: correct stream detection Don Brace
2024-08-27 18:54 ` [PATCH 3/7] smartpqi: add counter for parity write stream requests Don Brace
2024-08-27 18:54 ` [PATCH 4/7] smartpqi: add new controller PCI IDs Don Brace
2024-08-27 18:54 ` Don Brace [this message]
2024-08-27 18:55 ` [PATCH 6/7] smartpqi: fix volume size updates Don Brace
2024-08-27 18:55 ` [PATCH 7/7] smartpqi: update driver version to 2.1.30-031 Don Brace
2024-08-29 2:18 ` [PATCH 0/7] smartpqi updates Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240827185501.692804-6-don.brace@microchip.com \
--to=don.brace@microchip.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=Justin.Lindley@microchip.com \
--cc=POSWALD@suse.com \
--cc=david.strahan@microchip.com \
--cc=gerry.morong@microchip.com \
--cc=hch@infradead.org \
--cc=jeremy.reeves@microchip.com \
--cc=joseph.szczypek@hpe.com \
--cc=kumar.meiyappan@microchip.com \
--cc=linux-scsi@vger.kernel.org \
--cc=mahesh.rajashekhara@microchip.com \
--cc=martin.petersen@oracle.com \
--cc=mike.mcgowen@microchip.com \
--cc=murthy.bhat@microchip.com \
--cc=scott.benesh@microchip.com \
--cc=scott.teel@microchip.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox