Patch "nvme-rdma: handle cpu unplug when re-establishing the controller" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
nvme-rdma: handle cpu unplug when re-establishing the controller
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
nvme-rdma-handle-cpu-unplug-when-re-establishing-the-controller.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Oct 5 10:28:31 CEST 2017
From: Sagi Grimberg <[email protected]>
Date: Thu, 9 Mar 2017 13:26:07 +0200
Subject: nvme-rdma: handle cpu unplug when re-establishing the controller
From: Sagi Grimberg <[email protected]>
[ Upstream commit c248c64387fac5a6b31b343d9acb78f478e8619c ]
If a cpu unplug event has occured, we need to take the minimum of the provided nr_io_queues and the number of online cpus, otherwise we won't be able to connect them as blk-mq mapping won't dispatch to those queues.
--- drivers/nvme/host/rdma.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-)
drivers/nvme/host/rdma.c +14 -14
@@ -337,8 +337,6 @@ static int __nvme_rdma_init_request(strustruct ib_device *ibdev = dev->dev;int ret; -BUG_ON (queue_idx >= ctrl->queue_count); - ret =nvme_rdma_alloc_qe (ibdev, &req->sqe,sizeof (struct nvme_command ),DMA_TO_DEVICE );if (ret)
@@ -643,8 +641,22 @@ out_free_queues:static int nvme_rdma_init_io_queues (struct nvme_rdma_ctrl *ctrl) { +struct nvmf_ctrl_options *opts = ctrl->ctrl.opts; +unsigned int nr_io_queues;int i, ret; + nr_io_queues =min (opts->nr_io_queues,num_online_cpus ()); + ret =nvme_set_queue_count (&ctrl->ctrl, &nr_io_queues); +if (ret) +return ret; + + ctrl->queue_count = nr_io_queues +1 ; +if (ctrl->queue_count <2 ) +return 0 ; + +dev_info (ctrl->ctrl.device, +"creating %d I/O queues.\n" , nr_io_queues); +for (i =1 ; i < ctrl->queue_count; i++) { ret =nvme_rdma_init_queue (ctrl, i, ctrl->ctrl.opts->queue_size);
@@ -1795,20 +1807,8 @@ static const struct nvme_ctrl_ops nvme_rstatic int nvme_rdma_create_io_queues (struct nvme_rdma_ctrl *ctrl) { -struct nvmf_ctrl_options *opts = ctrl->ctrl.opts;int ret; - ret =nvme_set_queue_count (&ctrl->ctrl, &opts->nr_io_queues); -if (ret) -return ret; - - ctrl->queue_count = opts->nr_io_queues +1 ; -if (ctrl->queue_count <2 ) -return 0 ; - -dev_info (ctrl->ctrl.device, -"creating %d I/O queues.\n" , opts->nr_io_queues); - ret =nvme_rdma_init_io_queues (ctrl);if (ret)return ret;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/nvme-rdma-handle-cpu-unplug-when-re-establishing-the-controller.patch