|
@@ -728,7 +728,6 @@ out:
|
|
|
static void nvme_rdma_destroy_admin_queue(struct nvme_rdma_ctrl *ctrl,
|
|
|
bool remove)
|
|
|
{
|
|
|
- nvme_rdma_stop_queue(&ctrl->queues[0]);
|
|
|
if (remove) {
|
|
|
blk_cleanup_queue(ctrl->ctrl.admin_q);
|
|
|
nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.admin_tagset);
|
|
@@ -817,7 +816,6 @@ out_free_queue:
|
|
|
static void nvme_rdma_destroy_io_queues(struct nvme_rdma_ctrl *ctrl,
|
|
|
bool remove)
|
|
|
{
|
|
|
- nvme_rdma_stop_io_queues(ctrl);
|
|
|
if (remove) {
|
|
|
blk_cleanup_queue(ctrl->ctrl.connect_q);
|
|
|
nvme_rdma_free_tagset(&ctrl->ctrl, ctrl->ctrl.tagset);
|
|
@@ -947,6 +945,7 @@ static void nvme_rdma_reconnect_ctrl_work(struct work_struct *work)
|
|
|
return;
|
|
|
|
|
|
destroy_admin:
|
|
|
+ nvme_rdma_stop_queue(&ctrl->queues[0]);
|
|
|
nvme_rdma_destroy_admin_queue(ctrl, false);
|
|
|
requeue:
|
|
|
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)
|
|
|
|
|
|
if (ctrl->ctrl.queue_count > 1) {
|
|
|
nvme_stop_queues(&ctrl->ctrl);
|
|
|
+ nvme_rdma_stop_io_queues(ctrl);
|
|
|
blk_mq_tagset_busy_iter(&ctrl->tag_set,
|
|
|
nvme_cancel_request, &ctrl->ctrl);
|
|
|
nvme_rdma_destroy_io_queues(ctrl, false);
|
|
|
}
|
|
|
|
|
|
blk_mq_quiesce_queue(ctrl->ctrl.admin_q);
|
|
|
+ nvme_rdma_stop_queue(&ctrl->queues[0]);
|
|
|
blk_mq_tagset_busy_iter(&ctrl->admin_tag_set,
|
|
|
nvme_cancel_request, &ctrl->ctrl);
|
|
|
nvme_rdma_destroy_admin_queue(ctrl, false);
|
|
@@ -1734,6 +1735,7 @@ static void nvme_rdma_shutdown_ctrl(struct nvme_rdma_ctrl *ctrl, bool shutdown)
|
|
|
{
|
|
|
if (ctrl->ctrl.queue_count > 1) {
|
|
|
nvme_stop_queues(&ctrl->ctrl);
|
|
|
+ nvme_rdma_stop_io_queues(ctrl);
|
|
|
blk_mq_tagset_busy_iter(&ctrl->tag_set,
|
|
|
nvme_cancel_request, &ctrl->ctrl);
|
|
|
nvme_rdma_destroy_io_queues(ctrl, shutdown);
|
|
@@ -1745,6 +1747,7 @@ static void nvme_rdma_shutdown_ctrl(struct nvme_rdma_ctrl *ctrl, bool shutdown)
|
|
|
nvme_disable_ctrl(&ctrl->ctrl, ctrl->ctrl.cap);
|
|
|
|
|
|
blk_mq_quiesce_queue(ctrl->ctrl.admin_q);
|
|
|
+ nvme_rdma_stop_queue(&ctrl->queues[0]);
|
|
|
blk_mq_tagset_busy_iter(&ctrl->admin_tag_set,
|
|
|
nvme_cancel_request, &ctrl->ctrl);
|
|
|
blk_mq_unquiesce_queue(ctrl->ctrl.admin_q);
|
|
@@ -2011,6 +2014,7 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev,
|
|
|
return &ctrl->ctrl;
|
|
|
|
|
|
out_remove_admin_queue:
|
|
|
+ nvme_rdma_stop_queue(&ctrl->queues[0]);
|
|
|
nvme_rdma_destroy_admin_queue(ctrl, true);
|
|
|
out_uninit_ctrl:
|
|
|
nvme_uninit_ctrl(&ctrl->ctrl);
|