diff options
author | Ming Lei <ming.lei@redhat.com> | 2022-07-21 08:33:58 +0800 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2022-08-10 16:05:07 +0200 |
commit | 6fb271f1bc4ebc59bac0ff835c2e5197eac4b075 (patch) | |
tree | 7292927d78275d3830d4cf07adba3e8221f52cda /drivers/nvme/host/fc.c | |
parent | fa9db655d0e112c108fe838809608caf759bdf5e (diff) | |
download | lwn-6fb271f1bc4ebc59bac0ff835c2e5197eac4b075.tar.gz lwn-6fb271f1bc4ebc59bac0ff835c2e5197eac4b075.zip |
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>
Diffstat (limited to 'drivers/nvme/host/fc.c')
-rw-r--r-- | drivers/nvme/host/fc.c | 2 |
1 files changed, 2 insertions, 0 deletions
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 |