Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nvme-fc: restart admin queue if the caller needs to restart queue

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.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: James Smart <jsmart2021@gmail.com>
Tested-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>

authored by

Ming Lei and committed by
Christoph Hellwig
6fb271f1 fa9db655

+2
+2
drivers/nvme/host/fc.c
··· 2533 2533 blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, 2534 2534 nvme_fc_terminate_exchange, &ctrl->ctrl); 2535 2535 blk_mq_tagset_wait_completed_request(&ctrl->admin_tag_set); 2536 + if (start_queues) 2537 + nvme_start_admin_queue(&ctrl->ctrl); 2536 2538 } 2537 2539 2538 2540 static void