From: Don Brace <don.brace@microchip.com>
To: <don.brace@microchip.com>, <scott.teel@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>, <hch@infradead.org>,
<James.Bottomley@HansenPartnership.com>,
<martin.petersen@oracle.com>, <joseph.szczypek@hpe.com>,
<POSWALD@suse.com>, <cameron.cumberland@suse.com>,
Yi Zhang <yi.zhang@redhat.com>
Cc: <linux-scsi@vger.kernel.org>
Subject: [PATCH 1/5] smartpqi: take drives offline when controller is offline
Date: Wed, 23 Apr 2025 13:32:25 -0500 [thread overview]
Message-ID: <20250423183229.538572-2-don.brace@microchip.com> (raw)
In-Reply-To: <20250423183229.538572-1-don.brace@microchip.com>
From: David Strahan <david.strahan@microchip.com>
When the controller is unexpectedly taken offline, show its drives
as offline.
During a controller lockup, the physical and logical drives under the
locked up controller are still listed at the OS level.
I.E.
The controller is offline but the status of each drive is 'running'.
Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com>
Signed-off-by: David Strahan <david.strahan@microchip.com>
Co-developed-by: Don Brace <don.brace@microchip.com>
Signed-off-by: Don Brace <don.brace@microchip.com>
---
drivers/scsi/smartpqi/smartpqi_init.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index 88135fdb8bd1..73f576ccf511 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -67,6 +67,7 @@ static struct pqi_cmd_priv *pqi_cmd_priv(struct scsi_cmnd *cmd)
static void pqi_verify_structures(void);
static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info,
enum pqi_ctrl_shutdown_reason ctrl_shutdown_reason);
+static void pqi_take_ctrl_devices_offline(struct pqi_ctrl_info *ctrl_info);
static void pqi_ctrl_offline_worker(struct work_struct *work);
static int pqi_scan_scsi_devices(struct pqi_ctrl_info *ctrl_info);
static void pqi_scan_start(struct Scsi_Host *shost);
@@ -9128,6 +9129,7 @@ static void pqi_take_ctrl_offline_deferred(struct pqi_ctrl_info *ctrl_info)
pqi_ctrl_wait_until_quiesced(ctrl_info);
pqi_fail_all_outstanding_requests(ctrl_info);
pqi_ctrl_unblock_requests(ctrl_info);
+ pqi_take_ctrl_devices_offline(ctrl_info);
}
static void pqi_ctrl_offline_worker(struct work_struct *work)
@@ -9202,6 +9204,27 @@ static void pqi_take_ctrl_offline(struct pqi_ctrl_info *ctrl_info,
schedule_work(&ctrl_info->ctrl_offline_work);
}
+static void pqi_take_ctrl_devices_offline(struct pqi_ctrl_info *ctrl_info)
+{
+ int rc;
+ unsigned long flags;
+ struct pqi_scsi_dev *device;
+
+ spin_lock_irqsave(&ctrl_info->scsi_device_list_lock, flags);
+ list_for_each_entry(device, &ctrl_info->scsi_device_list, scsi_device_list_entry) {
+ rc = list_is_last(&device->scsi_device_list_entry, &ctrl_info->scsi_device_list);
+ if (rc)
+ continue;
+
+ /*
+ * Is the sdev pointer NULL?
+ */
+ if (device->sdev)
+ scsi_device_set_state(device->sdev, SDEV_OFFLINE);
+ }
+ spin_unlock_irqrestore(&ctrl_info->scsi_device_list_lock, flags);
+}
+
static void pqi_print_ctrl_info(struct pci_dev *pci_dev,
const struct pci_device_id *id)
{
--
2.49.0.391.g4bbb303af6
next prev parent reply other threads:[~2025-04-23 18:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-23 18:32 [PATCH 0/5] smartpqi updates Don Brace
2025-04-23 18:32 ` Don Brace [this message]
2025-04-23 18:32 ` [PATCH 2/5] smartpqi: add new pci ids Don Brace
2025-04-23 18:32 ` [PATCH 3/5] Enhance WWID Logging Logic Don Brace
2025-04-23 18:32 ` [PATCH 4/5] smartpqi: fix smp_processor_id() call trace for preemptible kernels Don Brace
2025-04-23 18:32 ` [PATCH 5/5] smartpqi: update driver version to 2.1.34-035 Don Brace
2025-04-29 1:45 ` [PATCH 0/5] smartpqi updates Martin K. Petersen
2025-05-06 4:25 ` 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=20250423183229.538572-2-don.brace@microchip.com \
--to=don.brace@microchip.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=POSWALD@suse.com \
--cc=cameron.cumberland@suse.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 \
--cc=yi.zhang@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.