public inbox for linux-nvme@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] nvme: don't call blk_mq_{,un}quiesce_tagset when ctrl->tagset is NULL
@ 2022-11-16  7:27 Christoph Hellwig
  2022-11-16  7:52 ` Chao Leng
  2022-11-16 13:20 ` Sagi Grimberg
  0 siblings, 2 replies; 13+ messages in thread
From: Christoph Hellwig @ 2022-11-16  7:27 UTC (permalink / raw)
  To: kbusch, sagi; +Cc: lengchao, linux-nvme, Gerd Bayer

The NVMe drivers support a mode where no tagset is allocated for the I/O
queues and only the admin queue is usable.  In that case ctrl->tagset is
NULL and we must not call the block per-tagset quiesce helpers that
dereference it.

Fixes: 98d81f0df70c ("nvme: use blk_mq_[un]quiesce_tagset")
Reported-by: Gerd Bayer <gbayer@linux.ibm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
---

It turns out we have a bunch of other quiesce calls that can happen when
only the admin queue is live.  So bring back the original quick fix to
check for the tagset pointer in the quiesce helpers.

 drivers/nvme/host/core.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 3195ae17df309..fd2e26cb7a688 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -5215,6 +5215,8 @@ EXPORT_SYMBOL_GPL(nvme_start_freeze);
 
 void nvme_quiesce_io_queues(struct nvme_ctrl *ctrl)
 {
+	if (!ctrl->tagset)
+		return;
 	if (!test_and_set_bit(NVME_CTRL_STOPPED, &ctrl->flags))
 		blk_mq_quiesce_tagset(ctrl->tagset);
 	else
@@ -5224,6 +5226,8 @@ EXPORT_SYMBOL_GPL(nvme_quiesce_io_queues);
 
 void nvme_unquiesce_io_queues(struct nvme_ctrl *ctrl)
 {
+	if (!ctrl->tagset)
+		return;
 	if (test_and_clear_bit(NVME_CTRL_STOPPED, &ctrl->flags))
 		blk_mq_unquiesce_tagset(ctrl->tagset);
 }
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-11-30  8:28 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-16  7:27 [PATCH] nvme: don't call blk_mq_{,un}quiesce_tagset when ctrl->tagset is NULL Christoph Hellwig
2022-11-16  7:52 ` Chao Leng
2022-11-16 18:38   ` Chaitanya Kulkarni
2022-11-16 13:20 ` Sagi Grimberg
2022-11-16 13:22   ` Christoph Hellwig
2022-11-16 13:23     ` Sagi Grimberg
2022-11-16 13:28       ` Christoph Hellwig
2022-11-20 11:38         ` Sagi Grimberg
2022-11-21  7:04           ` Christoph Hellwig
2022-11-22 12:31           ` Christoph Hellwig
2022-11-22 12:34             ` Christoph Hellwig
2022-11-29  9:04             ` Christoph Hellwig
2022-11-30  8:27               ` Sagi Grimberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox