diff options
| -rw-r--r-- | drivers/nvme/host/rdma.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index f9affb71ac85..2815749f4dfb 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c | |||
| @@ -728,7 +728,6 @@ out: | |||
| 728 | static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl, | 728 | static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl, |
| 729 | bool remove) | 729 | bool remove) |
| 730 | { | 730 | { |
| 731 | nvme_rdma_stop_queue(&ctrl->queues[0]); | ||
| 732 | if (remove) { | 731 | if (remove) { |
| 733 | blk_cleanup_queue(ctrl->ctrl.admin_q); | 732 | blk_cleanup_queue(ctrl->ctrl.admin_q); |
| 734 | nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.admin_tagset); | 733 | nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.admin_tagset); |
| @@ -817,7 +816,6 @@ out_free_queue: | |||
| 817 | static void nvme_rdma_destroy_io_queues(struct nvme_rdma_ctrl *ctrl, | 816 | static void nvme_rdma_destroy_io_queues(struct nvme_rdma_ctrl *ctrl, |
| 818 | bool remove) | 817 | bool remove) |
| 819 | { | 818 | { |
| 820 | nvme_rdma_stop_io_queues(ctrl); | ||
| 821 | if (remove) { | 819 | if (remove) { |
| 822 | blk_cleanup_queue(ctrl->ctrl.connect_q); | 820 | blk_cleanup_queue(ctrl->ctrl.connect_q); |
| 823 | nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.tagset); | 821 | nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.tagset); |
| @@ -947,6 +945,7 @@ static void nvme_rdma_reconnect_ctrl_work(struct work_struct *work) | |||
| 947 | return; | 945 | return; |
| 948 | 946 | ||
| 949 | destroy_admin: | 947 | destroy_admin: |
| 948 | nvme_rdma_stop_queue(&ctrl->queues[0]); | ||
| 950 | nvme_rdma_destroy_admin_queue(ctrl, false); | 949 | nvme_rdma_destroy_admin_queue(ctrl, false); |
| 951 | requeue: | 950 | requeue: |
| 952 | dev_info(ctrl->ctrl.device, "Failed reconnect attempt %d\n", | 951 | dev_info(ctrl->ctrl.device, "Failed reconnect attempt %d\n", |
| @@ -963,12 +962,14 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work) | |||
| 963 | 962 | ||
| 964 | if (ctrl->ctrl.queue_count > 1) { | 963 | if (ctrl->ctrl.queue_count > 1) { |
| 965 | nvme_stop_queues(&ctrl->ctrl); | 964 | nvme_stop_queues(&ctrl->ctrl); |
| 965 | nvme_rdma_stop_io_queues(ctrl); | ||
| 966 | blk_mq_tagset_busy_iter(&ctrl->tag_set, | 966 | blk_mq_tagset_busy_iter(&ctrl->tag_set, |
| 967 | nvme_cancel_request, &ctrl->ctrl); | 967 | nvme_cancel_request, &ctrl->ctrl); |
| 968 | nvme_rdma_destroy_io_queues(ctrl, false); | 968 | nvme_rdma_destroy_io_queues(ctrl, false); |
| 969 | } | 969 | } |
| 970 | 970 | ||
| 971 | blk_mq_quiesce_queue(ctrl->ctrl.admin_q); | 971 | blk_mq_quiesce_queue(ctrl->ctrl.admin_q); |
| 972 | nvme_rdma_stop_queue(&ctrl->queues[0]); | ||
| 972 | blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, | 973 | blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, |
| 973 | nvme_cancel_request, &ctrl->ctrl); | 974 | nvme_cancel_request, &ctrl->ctrl); |
| 974 | nvme_rdma_destroy_admin_queue(ctrl, false); | 975 | nvme_rdma_destroy_admin_queue(ctrl, false); |
| @@ -1734,6 +1735,7 @@ static void nvme_rdma_shutdown_ctrl(struct nvme_rdma_ctrl *ctrl, bool shutdown) | |||
| 1734 | { | 1735 | { |
| 1735 | if (ctrl->ctrl.queue_count > 1) { | 1736 | if (ctrl->ctrl.queue_count > 1) { |
| 1736 | nvme_stop_queues(&ctrl->ctrl); | 1737 | nvme_stop_queues(&ctrl->ctrl); |
| 1738 | nvme_rdma_stop_io_queues(ctrl); | ||
| 1737 | blk_mq_tagset_busy_iter(&ctrl->tag_set, | 1739 | blk_mq_tagset_busy_iter(&ctrl->tag_set, |
| 1738 | nvme_cancel_request, &ctrl->ctrl); | 1740 | nvme_cancel_request, &ctrl->ctrl); |
| 1739 | nvme_rdma_destroy_io_queues(ctrl, shutdown); | 1741 | nvme_rdma_destroy_io_queues(ctrl, shutdown); |
| @@ -1745,6 +1747,7 @@ static void nvme_rdma_shutdown_ctrl(struct nvme_rdma_ctrl *ctrl, bool shutdown) | |||
| 1745 | nvme_disable_ctrl(&ctrl->ctrl, ctrl->ctrl.cap); | 1747 | nvme_disable_ctrl(&ctrl->ctrl, ctrl->ctrl.cap); |
| 1746 | 1748 | ||
| 1747 | blk_mq_quiesce_queue(ctrl->ctrl.admin_q); | 1749 | blk_mq_quiesce_queue(ctrl->ctrl.admin_q); |
| 1750 | nvme_rdma_stop_queue(&ctrl->queues[0]); | ||
| 1748 | blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, | 1751 | blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, |
| 1749 | nvme_cancel_request, &ctrl->ctrl); | 1752 | nvme_cancel_request, &ctrl->ctrl); |
| 1750 | blk_mq_unquiesce_queue(ctrl->ctrl.admin_q); | 1753 | blk_mq_unquiesce_queue(ctrl->ctrl.admin_q); |
| @@ -2011,6 +2014,7 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, | |||
| 2011 | return &ctrl->ctrl; | 2014 | return &ctrl->ctrl; |
| 2012 | 2015 | ||
| 2013 | out_remove_admin_queue: | 2016 | out_remove_admin_queue: |
| 2017 | nvme_rdma_stop_queue(&ctrl->queues[0]); | ||
| 2014 | nvme_rdma_destroy_admin_queue(ctrl, true); | 2018 | nvme_rdma_destroy_admin_queue(ctrl, true); |
| 2015 | out_uninit_ctrl: | 2019 | out_uninit_ctrl: |
| 2016 | nvme_uninit_ctrl(&ctrl->ctrl); | 2020 | nvme_uninit_ctrl(&ctrl->ctrl); |
