public inbox for linux-nvme@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] nvme-fc: restart admin queue if the caller needs to restart queue
@ 2022-07-21  0:33 Ming Lei
  2022-07-25 11:48 ` Ming Lei
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Ming Lei @ 2022-07-21  0:33 UTC (permalink / raw)
  To: Christoph Hellwig, linux-nvme, Chaitanya Kulkarni
  Cc: Sagi Grimberg, Keith Busch, James Smart, Ming Lei, Ewan D . Milne

Without restarting admin queue in __nvme_fc_abort_outstanding_ios(),
it leaves controller not capable of handling admin pt request, and
causes io hang.

Fixes it by restarting admin queue if the caller of __nvme_fc_abort_outstanding_ios
requires to restart queue.

Tested-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
 drivers/nvme/host/fc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 9987797620b6..8d14df8eeab8 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2533,6 +2533,8 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues)
 	blk_mq_tagset_busy_iter(&ctrl->admin_tag_set,
 				nvme_fc_terminate_exchange, &ctrl->ctrl);
 	blk_mq_tagset_wait_completed_request(&ctrl->admin_tag_set);
+	if (start_queues)
+		nvme_start_admin_queue(&ctrl->ctrl);
 }
 
 static void
-- 
2.31.1



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

end of thread, other threads:[~2022-08-02 13:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-21  0:33 [PATCH] nvme-fc: restart admin queue if the caller needs to restart queue Ming Lei
2022-07-25 11:48 ` Ming Lei
2022-07-26 11:13   ` Christoph Hellwig
2022-07-26 20:42     ` Ewan Milne
2022-07-25 11:52 ` Sagi Grimberg
2022-07-27 17:00 ` James Smart
2022-07-28 16:06 ` Christoph Hellwig
2022-08-02  2:04   ` Ming Lei
2022-08-02 13:34     ` Christoph Hellwig

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