All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] NVMe/RDMA patches for 5.8
@ 2020-06-23 14:55 Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 1/3] nvme-rdma: use new shared CQ mechanism Max Gurtovoy
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-23 14:55 UTC (permalink / raw)
  To: sagi, linux-nvme, kbusch, hch
  Cc: yaminf, idanb, israelr, shlomin, jgg, Max Gurtovoy, ogerlitz

This series include 2 patches from Yamin that were removed from the
merge window since it caused conflicts between RDMA and Block trees.
It uses a shared CQ API that was merged to RDMA core layer to improve
performance and reduce resource allocation.

The last patch is a fix for the RDMA host.

The series applies cleanly on top of Linus master, since I couldn't fetch
nvme-5.8 branch.

Tests were run on top of Linus master + my fix to mlx5 driver:
"RDMA/mlx5: Fix integrity enabled QP creation".

Max Gurtovoy (1):
  nvme-rdma: assign completion vector correctly

Yamin Friedman (2):
  nvme-rdma: use new shared CQ mechanism
  nvmet-rdma: use new shared CQ mechanism

 drivers/nvme/host/rdma.c   | 77 ++++++++++++++++++++++++++++++----------------
 drivers/nvme/target/rdma.c | 14 ++++-----
 2 files changed, 58 insertions(+), 33 deletions(-)

-- 
1.8.3.1


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/3] nvme-rdma: use new shared CQ mechanism
  2020-06-23 14:55 [PATCH 0/3] NVMe/RDMA patches for 5.8 Max Gurtovoy
@ 2020-06-23 14:55 ` Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 2/3] nvmet-rdma: " Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 3/3] nvme-rdma: assign completion vector correctly Max Gurtovoy
  2 siblings, 0 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-23 14:55 UTC (permalink / raw)
  To: sagi, linux-nvme, kbusch, hch
  Cc: yaminf, idanb, israelr, shlomin, jgg, Max Gurtovoy, ogerlitz

From: Yamin Friedman <yaminf@mellanox.com>

Has the driver use shared CQs providing ~10%-20% improvement as seen in
the patch introducing shared CQs. Instead of opening a CQ for each QP
per controller connected, a CQ for each QP will be provided by the RDMA
core driver that will be shared between the QPs on that core reducing
interrupt overhead.

Signed-off-by: Yamin Friedman <yaminf@mellanox.com>
Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
---
 drivers/nvme/host/rdma.c | 77 ++++++++++++++++++++++++++++++++----------------
 1 file changed, 51 insertions(+), 26 deletions(-)

diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index f8f856d..f5d6a57 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -96,6 +96,7 @@ struct nvme_rdma_queue {
 	int			cm_error;
 	struct completion	cm_done;
 	bool			pi_support;
+	int			cq_size;
 };
 
 struct nvme_rdma_ctrl {
@@ -274,6 +275,7 @@ static int nvme_rdma_create_qp(struct nvme_rdma_queue *queue, const int factor)
 	init_attr.recv_cq = queue->ib_cq;
 	if (queue->pi_support)
 		init_attr.create_flags |= IB_QP_CREATE_INTEGRITY_EN;
+	init_attr.qp_context = queue;
 
 	ret = rdma_create_qp(queue->cm_id, dev->pd, &init_attr);
 
@@ -408,6 +410,14 @@ static int nvme_rdma_dev_get(struct nvme_rdma_device *dev)
 	return NULL;
 }
 
+static void nvme_rdma_free_cq(struct nvme_rdma_queue *queue)
+{
+	if (nvme_rdma_poll_queue(queue))
+		ib_free_cq(queue->ib_cq);
+	else
+		ib_cq_pool_put(queue->ib_cq, queue->cq_size);
+}
+
 static void nvme_rdma_destroy_queue_ib(struct nvme_rdma_queue *queue)
 {
 	struct nvme_rdma_device *dev;
@@ -429,7 +439,7 @@ static void nvme_rdma_destroy_queue_ib(struct nvme_rdma_queue *queue)
 	 * the destruction of the QP shouldn't use rdma_cm API.
 	 */
 	ib_destroy_qp(queue->qp);
-	ib_free_cq(queue->ib_cq);
+	nvme_rdma_free_cq(queue);
 
 	nvme_rdma_free_ring(ibdev, queue->rsp_ring, queue->queue_size,
 			sizeof(struct nvme_completion), DMA_FROM_DEVICE);
@@ -449,13 +459,42 @@ static int nvme_rdma_get_max_fr_pages(struct ib_device *ibdev, bool pi_support)
 	return min_t(u32, NVME_RDMA_MAX_SEGMENTS, max_page_list_len - 1);
 }
 
+static int nvme_rdma_create_cq(struct ib_device *ibdev,
+				struct nvme_rdma_queue *queue)
+{
+	int ret, comp_vector, idx = nvme_rdma_queue_idx(queue);
+	enum ib_poll_context poll_ctx;
+
+	/*
+	 * Spread I/O queues completion vectors according their queue index.
+	 * Admin queues can always go on completion vector 0.
+	 */
+	comp_vector = idx == 0 ? idx : idx - 1;
+
+	/* Polling queues need direct cq polling context */
+	if (nvme_rdma_poll_queue(queue)) {
+		poll_ctx = IB_POLL_DIRECT;
+		queue->ib_cq = ib_alloc_cq(ibdev, queue, queue->cq_size,
+					   comp_vector, poll_ctx);
+	} else {
+		poll_ctx = IB_POLL_SOFTIRQ;
+		queue->ib_cq = ib_cq_pool_get(ibdev, queue->cq_size,
+					      comp_vector, poll_ctx);
+	}
+
+	if (IS_ERR(queue->ib_cq)) {
+		ret = PTR_ERR(queue->ib_cq);
+		return ret;
+	}
+
+	return 0;
+}
+
 static int nvme_rdma_create_queue_ib(struct nvme_rdma_queue *queue)
 {
 	struct ib_device *ibdev;
 	const int send_wr_factor = 3;			/* MR, SEND, INV */
 	const int cq_factor = send_wr_factor + 1;	/* + RECV */
-	int comp_vector, idx = nvme_rdma_queue_idx(queue);
-	enum ib_poll_context poll_ctx;
 	int ret, pages_per_mr;
 
 	queue->device = nvme_rdma_find_get_device(queue->cm_id);
@@ -466,26 +505,12 @@ static int nvme_rdma_create_queue_ib(struct nvme_rdma_queue *queue)
 	}
 	ibdev = queue->device->dev;
 
-	/*
-	 * Spread I/O queues completion vectors according their queue index.
-	 * Admin queues can always go on completion vector 0.
-	 */
-	comp_vector = idx == 0 ? idx : idx - 1;
-
-	/* Polling queues need direct cq polling context */
-	if (nvme_rdma_poll_queue(queue))
-		poll_ctx = IB_POLL_DIRECT;
-	else
-		poll_ctx = IB_POLL_SOFTIRQ;
-
 	/* +1 for ib_stop_cq */
-	queue->ib_cq = ib_alloc_cq(ibdev, queue,
-				cq_factor * queue->queue_size + 1,
-				comp_vector, poll_ctx);
-	if (IS_ERR(queue->ib_cq)) {
-		ret = PTR_ERR(queue->ib_cq);
+	queue->cq_size = cq_factor * queue->queue_size + 1;
+
+	ret = nvme_rdma_create_cq(ibdev, queue);
+	if (ret)
 		goto out_put_dev;
-	}
 
 	ret = nvme_rdma_create_qp(queue, send_wr_factor);
 	if (ret)
@@ -511,7 +536,7 @@ static int nvme_rdma_create_queue_ib(struct nvme_rdma_queue *queue)
 	if (ret) {
 		dev_err(queue->ctrl->ctrl.device,
 			"failed to initialize MR pool sized %d for QID %d\n",
-			queue->queue_size, idx);
+			queue->queue_size, nvme_rdma_queue_idx(queue));
 		goto out_destroy_ring;
 	}
 
@@ -522,7 +547,7 @@ static int nvme_rdma_create_queue_ib(struct nvme_rdma_queue *queue)
 		if (ret) {
 			dev_err(queue->ctrl->ctrl.device,
 				"failed to initialize PI MR pool sized %d for QID %d\n",
-				queue->queue_size, idx);
+				queue->queue_size, nvme_rdma_queue_idx(queue));
 			goto out_destroy_mr_pool;
 		}
 	}
@@ -539,7 +564,7 @@ static int nvme_rdma_create_queue_ib(struct nvme_rdma_queue *queue)
 out_destroy_qp:
 	rdma_destroy_qp(queue->cm_id);
 out_destroy_ib_cq:
-	ib_free_cq(queue->ib_cq);
+	nvme_rdma_free_cq(queue);
 out_put_dev:
 	nvme_rdma_dev_put(queue->device);
 	return ret;
@@ -1152,7 +1177,7 @@ static void nvme_rdma_error_recovery(struct nvme_rdma_ctrl *ctrl)
 static void nvme_rdma_wr_error(struct ib_cq *cq, struct ib_wc *wc,
 		const char *op)
 {
-	struct nvme_rdma_queue *queue = cq->cq_context;
+	struct nvme_rdma_queue *queue = wc->qp->qp_context;
 	struct nvme_rdma_ctrl *ctrl = queue->ctrl;
 
 	if (ctrl->ctrl.state == NVME_CTRL_LIVE)
@@ -1705,7 +1730,7 @@ static void nvme_rdma_recv_done(struct ib_cq *cq, struct ib_wc *wc)
 {
 	struct nvme_rdma_qe *qe =
 		container_of(wc->wr_cqe, struct nvme_rdma_qe, cqe);
-	struct nvme_rdma_queue *queue = cq->cq_context;
+	struct nvme_rdma_queue *queue = wc->qp->qp_context;
 	struct ib_device *ibdev = queue->device->dev;
 	struct nvme_completion *cqe = qe->data;
 	const size_t len = sizeof(struct nvme_completion);
-- 
1.8.3.1


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/3] nvmet-rdma: use new shared CQ mechanism
  2020-06-23 14:55 [PATCH 0/3] NVMe/RDMA patches for 5.8 Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 1/3] nvme-rdma: use new shared CQ mechanism Max Gurtovoy
@ 2020-06-23 14:55 ` Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 3/3] nvme-rdma: assign completion vector correctly Max Gurtovoy
  2 siblings, 0 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-23 14:55 UTC (permalink / raw)
  To: sagi, linux-nvme, kbusch, hch
  Cc: yaminf, idanb, israelr, shlomin, jgg, Max Gurtovoy, ogerlitz

From: Yamin Friedman <yaminf@mellanox.com>

Has the driver use shared CQs providing ~10%-20% improvement when
multiple disks are used. Instead of opening a CQ for each QP per
controller, a CQ for each core will be provided by the RDMA core driver
that will be shared between the QPs on that core reducing interrupt
overhead.

Signed-off-by: Yamin Friedman <yaminf@mellanox.com>
Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
---
 drivers/nvme/target/rdma.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c
index 76ea23a..898f6fd 100644
--- a/drivers/nvme/target/rdma.c
+++ b/drivers/nvme/target/rdma.c
@@ -752,7 +752,7 @@ static void nvmet_rdma_read_data_done(struct ib_cq *cq, struct ib_wc *wc)
 {
 	struct nvmet_rdma_rsp *rsp =
 		container_of(wc->wr_cqe, struct nvmet_rdma_rsp, read_cqe);
-	struct nvmet_rdma_queue *queue = cq->cq_context;
+	struct nvmet_rdma_queue *queue = wc->qp->qp_context;
 	u16 status = 0;
 
 	WARN_ON(rsp->n_rdma <= 0);
@@ -1008,7 +1008,7 @@ static void nvmet_rdma_recv_done(struct ib_cq *cq, struct ib_wc *wc)
 {
 	struct nvmet_rdma_cmd *cmd =
 		container_of(wc->wr_cqe, struct nvmet_rdma_cmd, cqe);
-	struct nvmet_rdma_queue *queue = cq->cq_context;
+	struct nvmet_rdma_queue *queue = wc->qp->qp_context;
 	struct nvmet_rdma_rsp *rsp;
 
 	if (unlikely(wc->status != IB_WC_SUCCESS)) {
@@ -1258,9 +1258,8 @@ static int nvmet_rdma_create_queue_ib(struct nvmet_rdma_queue *queue)
 	 */
 	nr_cqe = queue->recv_queue_size + 2 * queue->send_queue_size;
 
-	queue->cq = ib_alloc_cq(ndev->device, queue,
-			nr_cqe + 1, queue->comp_vector,
-			IB_POLL_WORKQUEUE);
+	queue->cq = ib_cq_pool_get(ndev->device, nr_cqe + 1,
+				   queue->comp_vector, IB_POLL_WORKQUEUE);
 	if (IS_ERR(queue->cq)) {
 		ret = PTR_ERR(queue->cq);
 		pr_err("failed to create CQ cqe= %d ret= %d\n",
@@ -1322,7 +1321,7 @@ static int nvmet_rdma_create_queue_ib(struct nvmet_rdma_queue *queue)
 err_destroy_qp:
 	rdma_destroy_qp(queue->cm_id);
 err_destroy_cq:
-	ib_free_cq(queue->cq);
+	ib_cq_pool_put(queue->cq, nr_cqe + 1);
 	goto out;
 }
 
@@ -1332,7 +1331,8 @@ static void nvmet_rdma_destroy_queue_ib(struct nvmet_rdma_queue *queue)
 	if (queue->cm_id)
 		rdma_destroy_id(queue->cm_id);
 	ib_destroy_qp(queue->qp);
-	ib_free_cq(queue->cq);
+	ib_cq_pool_put(queue->cq, queue->recv_queue_size + 2 *
+		       queue->send_queue_size + 1);
 }
 
 static void nvmet_rdma_free_queue(struct nvmet_rdma_queue *queue)
-- 
1.8.3.1


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-23 14:55 [PATCH 0/3] NVMe/RDMA patches for 5.8 Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 1/3] nvme-rdma: use new shared CQ mechanism Max Gurtovoy
  2020-06-23 14:55 ` [PATCH 2/3] nvmet-rdma: " Max Gurtovoy
@ 2020-06-23 14:55 ` Max Gurtovoy
  2020-06-23 15:22   ` Jason Gunthorpe
  2020-06-24 16:41   ` Christoph Hellwig
  2 siblings, 2 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-23 14:55 UTC (permalink / raw)
  To: sagi, linux-nvme, kbusch, hch
  Cc: yaminf, idanb, israelr, shlomin, jgg, Max Gurtovoy, ogerlitz

The completion vector index that is given during CQ creation can't
exceed the number of support vectors by the underlying RDMA device. This
violation currently can accure, for example, in case one will try to
connect with N regular read/write queues and M poll queues and the sum
of N + M > num_supported_vectors. This will lead to failure in establish
a connection to remote target. Instead, in that case, share a completion
vector between queues.

Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
---
 drivers/nvme/host/rdma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index f5d6a57..981adbd 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -469,7 +469,7 @@ static int nvme_rdma_create_cq(struct ib_device *ibdev,
 	 * Spread I/O queues completion vectors according their queue index.
 	 * Admin queues can always go on completion vector 0.
 	 */
-	comp_vector = idx == 0 ? idx : idx - 1;
+	comp_vector = (idx == 0 ? idx : idx - 1) % ibdev->num_comp_vectors;
 
 	/* Polling queues need direct cq polling context */
 	if (nvme_rdma_poll_queue(queue)) {
-- 
1.8.3.1


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-23 14:55 ` [PATCH 3/3] nvme-rdma: assign completion vector correctly Max Gurtovoy
@ 2020-06-23 15:22   ` Jason Gunthorpe
  2020-06-23 17:34     ` Sagi Grimberg
  2020-06-24 16:41   ` Christoph Hellwig
  1 sibling, 1 reply; 14+ messages in thread
From: Jason Gunthorpe @ 2020-06-23 15:22 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: yaminf, sagi, shlomin, israelr, linux-nvme, idanb, kbusch, ogerlitz, hch

On Tue, Jun 23, 2020 at 05:55:25PM +0300, Max Gurtovoy wrote:
> The completion vector index that is given during CQ creation can't
> exceed the number of support vectors by the underlying RDMA device. This
> violation currently can accure, for example, in case one will try to
> connect with N regular read/write queues and M poll queues and the sum
> of N + M > num_supported_vectors. This will lead to failure in establish
> a connection to remote target. Instead, in that case, share a completion
> vector between queues.

That sounds like a RC patch? Where is the fixes line? Why is it in
this series?

Jason

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-23 15:22   ` Jason Gunthorpe
@ 2020-06-23 17:34     ` Sagi Grimberg
  2020-06-24  8:34       ` Max Gurtovoy
  0 siblings, 1 reply; 14+ messages in thread
From: Sagi Grimberg @ 2020-06-23 17:34 UTC (permalink / raw)
  To: Jason Gunthorpe, Max Gurtovoy
  Cc: yaminf, idanb, israelr, linux-nvme, shlomin, kbusch, ogerlitz, hch


>> The completion vector index that is given during CQ creation can't
>> exceed the number of support vectors by the underlying RDMA device. This
>> violation currently can accure, for example, in case one will try to
>> connect with N regular read/write queues and M poll queues and the sum
>> of N + M > num_supported_vectors. This will lead to failure in establish
>> a connection to remote target. Instead, in that case, share a completion
>> vector between queues.
> 
> That sounds like a RC patch? Where is the fixes line? Why is it in
> this series?

Agree, this should be sent as a separate patch.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-23 17:34     ` Sagi Grimberg
@ 2020-06-24  8:34       ` Max Gurtovoy
  2020-06-24  8:37         ` Christoph Hellwig
  0 siblings, 1 reply; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-24  8:34 UTC (permalink / raw)
  To: Sagi Grimberg, Jason Gunthorpe
  Cc: yaminf, idanb, israelr, linux-nvme, shlomin, kbusch, ogerlitz, hch


On 6/23/2020 8:34 PM, Sagi Grimberg wrote:
>
>>> The completion vector index that is given during CQ creation can't
>>> exceed the number of support vectors by the underlying RDMA device. 
>>> This
>>> violation currently can accure, for example, in case one will try to
>>> connect with N regular read/write queues and M poll queues and the sum
>>> of N + M > num_supported_vectors. This will lead to failure in 
>>> establish
>>> a connection to remote target. Instead, in that case, share a 
>>> completion
>>> vector between queues.
>>
>> That sounds like a RC patch? Where is the fixes line? Why is it in
>> this series?
>
> Agree, this should be sent as a separate patch.

The reason I sent it in 1 series is to avoid conflicts. Since all the 
patches can go to nvme-5.8, I tried to make life easier.

We can do it separately of course.

Christoph,

would you like to merge patches 1+2 from this series or should I send 
them again as well ?



_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24  8:34       ` Max Gurtovoy
@ 2020-06-24  8:37         ` Christoph Hellwig
  2020-06-24  8:44           ` Max Gurtovoy
  0 siblings, 1 reply; 14+ messages in thread
From: Christoph Hellwig @ 2020-06-24  8:37 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: yaminf, Sagi Grimberg, idanb, israelr, linux-nvme, shlomin,
	Jason Gunthorpe, kbusch, ogerlitz, hch

On Wed, Jun 24, 2020 at 11:34:22AM +0300, Max Gurtovoy wrote:
>
> On 6/23/2020 8:34 PM, Sagi Grimberg wrote:
>>
>>>> The completion vector index that is given during CQ creation can't
>>>> exceed the number of support vectors by the underlying RDMA device. This
>>>> violation currently can accure, for example, in case one will try to
>>>> connect with N regular read/write queues and M poll queues and the sum
>>>> of N + M > num_supported_vectors. This will lead to failure in establish
>>>> a connection to remote target. Instead, in that case, share a completion
>>>> vector between queues.
>>>
>>> That sounds like a RC patch? Where is the fixes line? Why is it in
>>> this series?
>>
>> Agree, this should be sent as a separate patch.
>
> The reason I sent it in 1 series is to avoid conflicts. Since all the 
> patches can go to nvme-5.8, I tried to make life easier.
>
> We can do it separately of course.
>
> Christoph,
>
> would you like to merge patches 1+2 from this series or should I send them 
> again as well ?

I don't think 1+2 are 5.8 material, so please just resend 3 standalone
for now, and then resend 1+2 once I've merged it and rebased nvme-5.9
on top of nvme-5.8.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24  8:37         ` Christoph Hellwig
@ 2020-06-24  8:44           ` Max Gurtovoy
  2020-06-24  8:46             ` Christoph Hellwig
  2020-06-24 14:22             ` Jason Gunthorpe
  0 siblings, 2 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-24  8:44 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: yaminf, Sagi Grimberg, idanb, israelr, linux-nvme, shlomin,
	Jason Gunthorpe, kbusch, ogerlitz


On 6/24/2020 11:37 AM, Christoph Hellwig wrote:
> On Wed, Jun 24, 2020 at 11:34:22AM +0300, Max Gurtovoy wrote:
>> On 6/23/2020 8:34 PM, Sagi Grimberg wrote:
>>>>> The completion vector index that is given during CQ creation can't
>>>>> exceed the number of support vectors by the underlying RDMA device. This
>>>>> violation currently can accure, for example, in case one will try to
>>>>> connect with N regular read/write queues and M poll queues and the sum
>>>>> of N + M > num_supported_vectors. This will lead to failure in establish
>>>>> a connection to remote target. Instead, in that case, share a completion
>>>>> vector between queues.
>>>> That sounds like a RC patch? Where is the fixes line? Why is it in
>>>> this series?
>>> Agree, this should be sent as a separate patch.
>> The reason I sent it in 1 series is to avoid conflicts. Since all the
>> patches can go to nvme-5.8, I tried to make life easier.
>>
>> We can do it separately of course.
>>
>> Christoph,
>>
>> would you like to merge patches 1+2 from this series or should I send them
>> again as well ?
> I don't think 1+2 are 5.8 material, so please just resend 3 standalone
> for now, and then resend 1+2 once I've merged it and rebased nvme-5.9
> on top of nvme-5.8.

Ok. Actually 1+2 were aimed to be merged to 5.8 but created a conflict 
between Jason's and Jens's trees.

If we go this way it means we can't push new features to RDMA and use it 
in NVMf in the same cycle.

Jason,

can we push iSER CQ sharing to kernel-5.8 ?



_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24  8:44           ` Max Gurtovoy
@ 2020-06-24  8:46             ` Christoph Hellwig
  2020-06-24 14:22             ` Jason Gunthorpe
  1 sibling, 0 replies; 14+ messages in thread
From: Christoph Hellwig @ 2020-06-24  8:46 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: yaminf, Sagi Grimberg, idanb, israelr, linux-nvme, shlomin,
	Jason Gunthorpe, kbusch, ogerlitz, Christoph Hellwig

On Wed, Jun 24, 2020 at 11:44:06AM +0300, Max Gurtovoy wrote:
>> I don't think 1+2 are 5.8 material, so please just resend 3 standalone
>> for now, and then resend 1+2 once I've merged it and rebased nvme-5.9
>> on top of nvme-5.8.
>
> Ok. Actually 1+2 were aimed to be merged to 5.8 but created a conflict 
> between Jason's and Jens's trees.
>
> If we go this way it means we can't push new features to RDMA and use it in 
> NVMf in the same cycle.
>
> Jason,
>
> can we push iSER CQ sharing to kernel-5.8 ?

We're not going to merge new features in nvme after -rc2.  For cross
subsystem coordination either everything needs to go in through one
tree if possible, or we'll need shared branches.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24  8:44           ` Max Gurtovoy
  2020-06-24  8:46             ` Christoph Hellwig
@ 2020-06-24 14:22             ` Jason Gunthorpe
  2020-06-24 15:14               ` Max Gurtovoy
  1 sibling, 1 reply; 14+ messages in thread
From: Jason Gunthorpe @ 2020-06-24 14:22 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: yaminf, Sagi Grimberg, idanb, israelr, linux-nvme, shlomin,
	kbusch, ogerlitz, Christoph Hellwig

On Wed, Jun 24, 2020 at 11:44:06AM +0300, Max Gurtovoy wrote:
> 
> On 6/24/2020 11:37 AM, Christoph Hellwig wrote:
> > On Wed, Jun 24, 2020 at 11:34:22AM +0300, Max Gurtovoy wrote:
> > > On 6/23/2020 8:34 PM, Sagi Grimberg wrote:
> > > > > > The completion vector index that is given during CQ creation can't
> > > > > > exceed the number of support vectors by the underlying RDMA device. This
> > > > > > violation currently can accure, for example, in case one will try to
> > > > > > connect with N regular read/write queues and M poll queues and the sum
> > > > > > of N + M > num_supported_vectors. This will lead to failure in establish
> > > > > > a connection to remote target. Instead, in that case, share a completion
> > > > > > vector between queues.
> > > > > That sounds like a RC patch? Where is the fixes line? Why is it in
> > > > > this series?
> > > > Agree, this should be sent as a separate patch.
> > > The reason I sent it in 1 series is to avoid conflicts. Since all the
> > > patches can go to nvme-5.8, I tried to make life easier.
> > > 
> > > We can do it separately of course.
> > > 
> > > Christoph,
> > > 
> > > would you like to merge patches 1+2 from this series or should I send them
> > > again as well ?
> > I don't think 1+2 are 5.8 material, so please just resend 3 standalone
> > for now, and then resend 1+2 once I've merged it and rebased nvme-5.9
> > on top of nvme-5.8.
> 
> Ok. Actually 1+2 were aimed to be merged to 5.8 but created a conflict
> between Jason's and Jens's trees.
> 
> If we go this way it means we can't push new features to RDMA and use it in
> NVMf in the same cycle.
> 
> Jason,
> 
> can we push iSER CQ sharing to kernel-5.8 ?

I don't think so..

Where are these patches anyhow? I don't see any iser stuff in rdma
patchworks?

If you need a branch for something you should plan it out now.. I can
help organize the branch process for you, but you have to plan it
out :)

Jason

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24 14:22             ` Jason Gunthorpe
@ 2020-06-24 15:14               ` Max Gurtovoy
  0 siblings, 0 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-24 15:14 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: yaminf, Sagi Grimberg, idanb, israelr, linux-nvme, shlomin,
	kbusch, ogerlitz, Christoph Hellwig


On 6/24/2020 5:22 PM, Jason Gunthorpe wrote:
> On Wed, Jun 24, 2020 at 11:44:06AM +0300, Max Gurtovoy wrote:
>> On 6/24/2020 11:37 AM, Christoph Hellwig wrote:
>>> On Wed, Jun 24, 2020 at 11:34:22AM +0300, Max Gurtovoy wrote:
>>>> On 6/23/2020 8:34 PM, Sagi Grimberg wrote:
>>>>>>> The completion vector index that is given during CQ creation can't
>>>>>>> exceed the number of support vectors by the underlying RDMA device. This
>>>>>>> violation currently can accure, for example, in case one will try to
>>>>>>> connect with N regular read/write queues and M poll queues and the sum
>>>>>>> of N + M > num_supported_vectors. This will lead to failure in establish
>>>>>>> a connection to remote target. Instead, in that case, share a completion
>>>>>>> vector between queues.
>>>>>> That sounds like a RC patch? Where is the fixes line? Why is it in
>>>>>> this series?
>>>>> Agree, this should be sent as a separate patch.
>>>> The reason I sent it in 1 series is to avoid conflicts. Since all the
>>>> patches can go to nvme-5.8, I tried to make life easier.
>>>>
>>>> We can do it separately of course.
>>>>
>>>> Christoph,
>>>>
>>>> would you like to merge patches 1+2 from this series or should I send them
>>>> again as well ?
>>> I don't think 1+2 are 5.8 material, so please just resend 3 standalone
>>> for now, and then resend 1+2 once I've merged it and rebased nvme-5.9
>>> on top of nvme-5.8.
>> Ok. Actually 1+2 were aimed to be merged to 5.8 but created a conflict
>> between Jason's and Jens's trees.
>>
>> If we go this way it means we can't push new features to RDMA and use it in
>> NVMf in the same cycle.
>>
>> Jason,
>>
>> can we push iSER CQ sharing to kernel-5.8 ?
> I don't think so..
>
> Where are these patches anyhow? I don't see any iser stuff in rdma
> patchworks?

These patches were developed by Yamin and reviewed by me internally 
after the merge window of 5.8.

>
> If you need a branch for something you should plan it out now.. I can
> help organize the branch process for you, but you have to plan it
> out :)

I don't think it's necessary for now.

I'll just send iSER patches for review and you can fetch them to 
for-next (5.9 merge window).


>
> Jason

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-23 14:55 ` [PATCH 3/3] nvme-rdma: assign completion vector correctly Max Gurtovoy
  2020-06-23 15:22   ` Jason Gunthorpe
@ 2020-06-24 16:41   ` Christoph Hellwig
  2020-06-25  8:11     ` Max Gurtovoy
  1 sibling, 1 reply; 14+ messages in thread
From: Christoph Hellwig @ 2020-06-24 16:41 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: yaminf, sagi, shlomin, israelr, linux-nvme, idanb, jgg, kbusch,
	ogerlitz, hch

Applied patch 3 to nvme-5.8.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] nvme-rdma: assign completion vector correctly
  2020-06-24 16:41   ` Christoph Hellwig
@ 2020-06-25  8:11     ` Max Gurtovoy
  0 siblings, 0 replies; 14+ messages in thread
From: Max Gurtovoy @ 2020-06-25  8:11 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: yaminf, sagi, shlomin, israelr, linux-nvme, idanb, jgg, kbusch, ogerlitz

Can you add fixes line manually please ?

Fixes: b65bb777ef223 ("nvme-rdma: support separate queue maps for read 
and write")

On 6/24/2020 7:41 PM, Christoph Hellwig wrote:
> Applied patch 3 to nvme-5.8.

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-06-25  8:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-23 14:55 [PATCH 0/3] NVMe/RDMA patches for 5.8 Max Gurtovoy
2020-06-23 14:55 ` [PATCH 1/3] nvme-rdma: use new shared CQ mechanism Max Gurtovoy
2020-06-23 14:55 ` [PATCH 2/3] nvmet-rdma: " Max Gurtovoy
2020-06-23 14:55 ` [PATCH 3/3] nvme-rdma: assign completion vector correctly Max Gurtovoy
2020-06-23 15:22   ` Jason Gunthorpe
2020-06-23 17:34     ` Sagi Grimberg
2020-06-24  8:34       ` Max Gurtovoy
2020-06-24  8:37         ` Christoph Hellwig
2020-06-24  8:44           ` Max Gurtovoy
2020-06-24  8:46             ` Christoph Hellwig
2020-06-24 14:22             ` Jason Gunthorpe
2020-06-24 15:14               ` Max Gurtovoy
2020-06-24 16:41   ` Christoph Hellwig
2020-06-25  8:11     ` Max Gurtovoy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.