All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] iSER cleanups and fixes for 5.18
@ 2022-03-08 14:55 Max Gurtovoy
  2022-03-08 14:55 ` [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function Max Gurtovoy
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-08 14:55 UTC (permalink / raw)
  To: linux-rdma, jgg, sagi; +Cc: oren, sergeygo, israelr, leonro, Max Gurtovoy

Hi Jason/Sagi,
This series adds one small fix in error flow in case of registration
failures and 3 patches for improving code readability that will ease
on maintaining the ib_iser driver.

Please consider merging this series to kernel 5.18 merge window.

---

changes from v1:
 - remove redundant if check in patch 1/4 (from Leon)

---

Max Gurtovoy (4):
  IB/iser: remove iser_reg_data_sg helper function
  IB/iser: use iser_fr_desc as registration context
  IB/iser: generalize map/unmap dma tasks
  IB/iser: fix error flow in case of registration failure

 drivers/infiniband/ulp/iser/iscsi_iser.h     | 13 ++--
 drivers/infiniband/ulp/iser/iser_initiator.c | 58 +++++------------
 drivers/infiniband/ulp/iser/iser_memory.c    | 68 +++++++++++---------
 drivers/infiniband/ulp/iser/iser_verbs.c     |  2 +-
 4 files changed, 61 insertions(+), 80 deletions(-)

-- 
2.18.1


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

* [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function
  2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
@ 2022-03-08 14:55 ` Max Gurtovoy
  2022-03-16 15:06   ` Sagi Grimberg
  2022-03-08 14:55 ` [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context Max Gurtovoy
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-08 14:55 UTC (permalink / raw)
  To: linux-rdma, jgg, sagi; +Cc: oren, sergeygo, israelr, leonro, Max Gurtovoy

Open coding it makes the code more readable and simple.

Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iser_memory.c | 31 +++++++----------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index 660982625488..4292c57856dd 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -327,40 +327,26 @@ static int iser_fast_reg_mr(struct iscsi_iser_task *iser_task,
 	return 0;
 }
 
-static int iser_reg_data_sg(struct iscsi_iser_task *task,
-			    struct iser_data_buf *mem,
-			    struct iser_fr_desc *desc, bool use_dma_key,
-			    struct iser_mem_reg *reg)
-{
-	struct iser_device *device = task->iser_conn->ib_conn.device;
-
-	if (use_dma_key)
-		return iser_reg_dma(device, mem, reg);
-
-	return iser_fast_reg_mr(task, mem, &desc->rsc, reg);
-}
-
 int iser_reg_mem_fastreg(struct iscsi_iser_task *task,
 			 enum iser_data_dir dir,
 			 bool all_imm)
 {
 	struct ib_conn *ib_conn = &task->iser_conn->ib_conn;
+	struct iser_device *device = ib_conn->device;
 	struct iser_data_buf *mem = &task->data[dir];
 	struct iser_mem_reg *reg = &task->rdma_reg[dir];
-	struct iser_fr_desc *desc = NULL;
+	struct iser_fr_desc *desc;
 	bool use_dma_key;
 	int err;
 
 	use_dma_key = mem->dma_nents == 1 && (all_imm || !iser_always_reg) &&
 		      scsi_get_prot_op(task->sc) == SCSI_PROT_NORMAL;
+	if (use_dma_key)
+		return iser_reg_dma(device, mem, reg);
 
-	if (!use_dma_key) {
-		desc = iser_reg_desc_get_fr(ib_conn);
-		reg->mem_h = desc;
-	}
-
+	desc = iser_reg_desc_get_fr(ib_conn);
 	if (scsi_get_prot_op(task->sc) == SCSI_PROT_NORMAL) {
-		err = iser_reg_data_sg(task, mem, desc, use_dma_key, reg);
+		err = iser_fast_reg_mr(task, mem, &desc->rsc, reg);
 		if (unlikely(err))
 			goto err_reg;
 	} else {
@@ -372,11 +358,12 @@ int iser_reg_mem_fastreg(struct iscsi_iser_task *task,
 		desc->sig_protected = true;
 	}
 
+	reg->mem_h = desc;
+
 	return 0;
 
 err_reg:
-	if (desc)
-		iser_reg_desc_put_fr(ib_conn, desc);
+	iser_reg_desc_put_fr(ib_conn, desc);
 
 	return err;
 }
-- 
2.18.1


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

* [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context
  2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
  2022-03-08 14:55 ` [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function Max Gurtovoy
@ 2022-03-08 14:55 ` Max Gurtovoy
  2022-03-16 15:09   ` Sagi Grimberg
  2022-03-08 14:55 ` [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks Max Gurtovoy
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-08 14:55 UTC (permalink / raw)
  To: linux-rdma, jgg, sagi; +Cc: oren, sergeygo, israelr, leonro, Max Gurtovoy

After removing the FMR support in iSER, there is only one type of
registration context. Replace the void pointer with the explicit
structure for registration (struct iser_fr_desc).

Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iscsi_iser.h     | 8 ++++----
 drivers/infiniband/ulp/iser/iser_initiator.c | 4 ++--
 drivers/infiniband/ulp/iser/iser_memory.c    | 8 ++++----
 drivers/infiniband/ulp/iser/iser_verbs.c     | 2 +-
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h
index 20af46c4e954..23b922233006 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
@@ -203,12 +203,12 @@ struct iser_reg_resources;
  *
  * @sge:          memory region sg element
  * @rkey:         memory region remote key
- * @mem_h:        pointer to registration context (FMR/Fastreg)
+ * @desc:         pointer to fast registration context
  */
 struct iser_mem_reg {
-	struct ib_sge	 sge;
-	u32		 rkey;
-	void		*mem_h;
+	struct ib_sge sge;
+	u32 rkey;
+	struct iser_fr_desc *desc;
 };
 
 enum iser_desc_type {
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index 2490150d3085..012decf6905a 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -619,13 +619,13 @@ static int iser_check_remote_inv(struct iser_conn *iser_conn, struct ib_wc *wc,
 			struct iser_fr_desc *desc;
 
 			if (iser_task->dir[ISER_DIR_IN]) {
-				desc = iser_task->rdma_reg[ISER_DIR_IN].mem_h;
+				desc = iser_task->rdma_reg[ISER_DIR_IN].desc;
 				if (unlikely(iser_inv_desc(desc, rkey)))
 					return -EINVAL;
 			}
 
 			if (iser_task->dir[ISER_DIR_OUT]) {
-				desc = iser_task->rdma_reg[ISER_DIR_OUT].mem_h;
+				desc = iser_task->rdma_reg[ISER_DIR_OUT].desc;
 				if (unlikely(iser_inv_desc(desc, rkey)))
 					return -EINVAL;
 			}
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index 4292c57856dd..01708df8cb0c 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -130,7 +130,7 @@ void iser_unreg_mem_fastreg(struct iscsi_iser_task *iser_task,
 	struct iser_fr_desc *desc;
 	struct ib_mr_status mr_status;
 
-	desc = reg->mem_h;
+	desc = reg->desc;
 	if (!desc)
 		return;
 
@@ -147,8 +147,8 @@ void iser_unreg_mem_fastreg(struct iscsi_iser_task *iser_task,
 		ib_check_mr_status(desc->rsc.sig_mr, IB_MR_CHECK_SIG_STATUS,
 				   &mr_status);
 	}
-	iser_reg_desc_put_fr(&iser_task->iser_conn->ib_conn, reg->mem_h);
-	reg->mem_h = NULL;
+	iser_reg_desc_put_fr(&iser_task->iser_conn->ib_conn, reg->desc);
+	reg->desc = NULL;
 }
 
 static void iser_set_dif_domain(struct scsi_cmnd *sc,
@@ -358,7 +358,7 @@ int iser_reg_mem_fastreg(struct iscsi_iser_task *task,
 		desc->sig_protected = true;
 	}
 
-	reg->mem_h = desc;
+	reg->desc = desc;
 
 	return 0;
 
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index 8bf87b073d9b..c7607b22a396 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -905,7 +905,7 @@ u8 iser_check_task_pi_status(struct iscsi_iser_task *iser_task,
 			     enum iser_data_dir cmd_dir, sector_t *sector)
 {
 	struct iser_mem_reg *reg = &iser_task->rdma_reg[cmd_dir];
-	struct iser_fr_desc *desc = reg->mem_h;
+	struct iser_fr_desc *desc = reg->desc;
 	unsigned long sector_size = iser_task->sc->device->sector_size;
 	struct ib_mr_status mr_status;
 	int ret;
-- 
2.18.1


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

* [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks
  2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
  2022-03-08 14:55 ` [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function Max Gurtovoy
  2022-03-08 14:55 ` [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context Max Gurtovoy
@ 2022-03-08 14:55 ` Max Gurtovoy
  2022-03-16 15:13   ` Sagi Grimberg
  2022-03-08 14:55 ` [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure Max Gurtovoy
  2022-03-18 18:19 ` [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Jason Gunthorpe
  4 siblings, 1 reply; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-08 14:55 UTC (permalink / raw)
  To: linux-rdma, jgg, sagi; +Cc: oren, sergeygo, israelr, leonro, Max Gurtovoy

Avoid code duplication and add the mapping/unmapping of the protection
buffers to the iser_dma_map_task_data/iser_dma_unmap_task_data
functions.

Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iscsi_iser.h     |  5 +--
 drivers/infiniband/ulp/iser/iser_initiator.c | 40 +-------------------
 drivers/infiniband/ulp/iser/iser_memory.c    | 31 +++++++++++++--
 3 files changed, 31 insertions(+), 45 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h
index 23b922233006..7e4faf9c5e9e 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
@@ -531,13 +531,12 @@ int  iser_post_recvm(struct iser_conn *iser_conn,
 int  iser_post_send(struct ib_conn *ib_conn, struct iser_tx_desc *tx_desc);
 
 int iser_dma_map_task_data(struct iscsi_iser_task *iser_task,
-			   struct iser_data_buf *data,
 			   enum iser_data_dir iser_dir,
 			   enum dma_data_direction dma_dir);
 
 void iser_dma_unmap_task_data(struct iscsi_iser_task *iser_task,
-			      struct iser_data_buf *data,
-			      enum dma_data_direction dir);
+			      enum iser_data_dir iser_dir,
+			      enum dma_data_direction dma_dir);
 
 int  iser_initialize_task_headers(struct iscsi_task *task,
 			struct iser_tx_desc *tx_desc);
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index 012decf6905a..dbc2c268bc0e 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -52,26 +52,13 @@ static int iser_prepare_read_cmd(struct iscsi_task *task)
 	struct iser_mem_reg *mem_reg;
 	int err;
 	struct iser_ctrl *hdr = &iser_task->desc.iser_header;
-	struct iser_data_buf *buf_in = &iser_task->data[ISER_DIR_IN];
 
 	err = iser_dma_map_task_data(iser_task,
-				     buf_in,
 				     ISER_DIR_IN,
 				     DMA_FROM_DEVICE);
 	if (err)
 		return err;
 
-	if (scsi_prot_sg_count(iser_task->sc)) {
-		struct iser_data_buf *pbuf_in = &iser_task->prot[ISER_DIR_IN];
-
-		err = iser_dma_map_task_data(iser_task,
-					     pbuf_in,
-					     ISER_DIR_IN,
-					     DMA_FROM_DEVICE);
-		if (err)
-			return err;
-	}
-
 	err = iser_reg_mem_fastreg(iser_task, ISER_DIR_IN, false);
 	if (err) {
 		iser_err("Failed to set up Data-IN RDMA\n");
@@ -106,23 +93,11 @@ static int iser_prepare_write_cmd(struct iscsi_task *task, unsigned int imm_sz,
 	struct ib_sge *tx_dsg = &iser_task->desc.tx_sg[1];
 
 	err = iser_dma_map_task_data(iser_task,
-				     buf_out,
 				     ISER_DIR_OUT,
 				     DMA_TO_DEVICE);
 	if (err)
 		return err;
 
-	if (scsi_prot_sg_count(iser_task->sc)) {
-		struct iser_data_buf *pbuf_out = &iser_task->prot[ISER_DIR_OUT];
-
-		err = iser_dma_map_task_data(iser_task,
-					     pbuf_out,
-					     ISER_DIR_OUT,
-					     DMA_TO_DEVICE);
-		if (err)
-			return err;
-	}
-
 	err = iser_reg_mem_fastreg(iser_task, ISER_DIR_OUT,
 				   buf_out->data_len == imm_sz);
 	if (err != 0) {
@@ -740,27 +715,16 @@ void iser_task_rdma_init(struct iscsi_iser_task *iser_task)
 
 void iser_task_rdma_finalize(struct iscsi_iser_task *iser_task)
 {
-	int prot_count = scsi_prot_sg_count(iser_task->sc);
 
 	if (iser_task->dir[ISER_DIR_IN]) {
 		iser_unreg_mem_fastreg(iser_task, ISER_DIR_IN);
-		iser_dma_unmap_task_data(iser_task,
-					 &iser_task->data[ISER_DIR_IN],
+		iser_dma_unmap_task_data(iser_task, ISER_DIR_IN,
 					 DMA_FROM_DEVICE);
-		if (prot_count)
-			iser_dma_unmap_task_data(iser_task,
-						 &iser_task->prot[ISER_DIR_IN],
-						 DMA_FROM_DEVICE);
 	}
 
 	if (iser_task->dir[ISER_DIR_OUT]) {
 		iser_unreg_mem_fastreg(iser_task, ISER_DIR_OUT);
-		iser_dma_unmap_task_data(iser_task,
-					 &iser_task->data[ISER_DIR_OUT],
+		iser_dma_unmap_task_data(iser_task, ISER_DIR_OUT,
 					 DMA_TO_DEVICE);
-		if (prot_count)
-			iser_dma_unmap_task_data(iser_task,
-						 &iser_task->prot[ISER_DIR_OUT],
-						 DMA_TO_DEVICE);
 	}
 }
diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index 01708df8cb0c..7046e7ca9523 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -71,10 +71,10 @@ static void iser_reg_desc_put_fr(struct ib_conn *ib_conn,
 }
 
 int iser_dma_map_task_data(struct iscsi_iser_task *iser_task,
-			   struct iser_data_buf *data,
 			   enum iser_data_dir iser_dir,
 			   enum dma_data_direction dma_dir)
 {
+	struct iser_data_buf *data = &iser_task->data[iser_dir];
 	struct ib_device *dev;
 
 	iser_task->dir[iser_dir] = 1;
@@ -85,17 +85,40 @@ int iser_dma_map_task_data(struct iscsi_iser_task *iser_task,
 		iser_err("dma_map_sg failed!!!\n");
 		return -EINVAL;
 	}
+
+	if (scsi_prot_sg_count(iser_task->sc)) {
+		struct iser_data_buf *pdata = &iser_task->prot[iser_dir];
+
+		pdata->dma_nents = ib_dma_map_sg(dev, pdata->sg, pdata->size, dma_dir);
+		if (unlikely(pdata->dma_nents == 0)) {
+			iser_err("protection dma_map_sg failed!!!\n");
+			goto out_unmap;
+		}
+	}
+
 	return 0;
+
+out_unmap:
+	ib_dma_unmap_sg(dev, data->sg, data->size, dma_dir);
+	return -EINVAL;
 }
 
+
 void iser_dma_unmap_task_data(struct iscsi_iser_task *iser_task,
-			      struct iser_data_buf *data,
-			      enum dma_data_direction dir)
+			      enum iser_data_dir iser_dir,
+			      enum dma_data_direction dma_dir)
 {
+	struct iser_data_buf *data = &iser_task->data[iser_dir];
 	struct ib_device *dev;
 
 	dev = iser_task->iser_conn->ib_conn.device->ib_device;
-	ib_dma_unmap_sg(dev, data->sg, data->size, dir);
+	ib_dma_unmap_sg(dev, data->sg, data->size, dma_dir);
+
+	if (scsi_prot_sg_count(iser_task->sc)) {
+		struct iser_data_buf *pdata = &iser_task->prot[iser_dir];
+
+		ib_dma_unmap_sg(dev, pdata->sg, pdata->size, dma_dir);
+	}
 }
 
 static int iser_reg_dma(struct iser_device *device, struct iser_data_buf *mem,
-- 
2.18.1


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

* [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure
  2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
                   ` (2 preceding siblings ...)
  2022-03-08 14:55 ` [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks Max Gurtovoy
@ 2022-03-08 14:55 ` Max Gurtovoy
  2022-03-16 15:14   ` Sagi Grimberg
  2022-03-18 18:19 ` [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Jason Gunthorpe
  4 siblings, 1 reply; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-08 14:55 UTC (permalink / raw)
  To: linux-rdma, jgg, sagi; +Cc: oren, sergeygo, israelr, leonro, Max Gurtovoy

During READ/WRITE preparation, in case of failure in memory registration
using iser_reg_mem_fastreg we must unmap previously mapped iser task.

Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iser_initiator.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index dbc2c268bc0e..bd5f3b5e1727 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -62,7 +62,7 @@ static int iser_prepare_read_cmd(struct iscsi_task *task)
 	err = iser_reg_mem_fastreg(iser_task, ISER_DIR_IN, false);
 	if (err) {
 		iser_err("Failed to set up Data-IN RDMA\n");
-		return err;
+		goto out_err;
 	}
 	mem_reg = &iser_task->rdma_reg[ISER_DIR_IN];
 
@@ -75,6 +75,10 @@ static int iser_prepare_read_cmd(struct iscsi_task *task)
 		 (unsigned long long)mem_reg->sge.addr);
 
 	return 0;
+
+out_err:
+	iser_dma_unmap_task_data(iser_task, ISER_DIR_IN, DMA_FROM_DEVICE);
+	return err;
 }
 
 /* Register user buffer memory and initialize passive rdma
@@ -100,9 +104,9 @@ static int iser_prepare_write_cmd(struct iscsi_task *task, unsigned int imm_sz,
 
 	err = iser_reg_mem_fastreg(iser_task, ISER_DIR_OUT,
 				   buf_out->data_len == imm_sz);
-	if (err != 0) {
+	if (err) {
 		iser_err("Failed to register write cmd RDMA mem\n");
-		return err;
+		goto out_err;
 	}
 
 	mem_reg = &iser_task->rdma_reg[ISER_DIR_OUT];
@@ -129,6 +133,10 @@ static int iser_prepare_write_cmd(struct iscsi_task *task, unsigned int imm_sz,
 	}
 
 	return 0;
+
+out_err:
+	iser_dma_unmap_task_data(iser_task, ISER_DIR_OUT, DMA_TO_DEVICE);
+	return err;
 }
 
 /* creates a new tx descriptor and adds header regd buffer */
-- 
2.18.1


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

* Re: [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function
  2022-03-08 14:55 ` [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function Max Gurtovoy
@ 2022-03-16 15:06   ` Sagi Grimberg
  0 siblings, 0 replies; 12+ messages in thread
From: Sagi Grimberg @ 2022-03-16 15:06 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro

Acked-by: Sagi Grimberg <sagi@grimberg.me>

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

* Re: [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context
  2022-03-08 14:55 ` [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context Max Gurtovoy
@ 2022-03-16 15:09   ` Sagi Grimberg
  0 siblings, 0 replies; 12+ messages in thread
From: Sagi Grimberg @ 2022-03-16 15:09 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro

Acked-by: Sagi Grimberg <sagi@grimberg.me>

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

* Re: [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks
  2022-03-08 14:55 ` [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks Max Gurtovoy
@ 2022-03-16 15:13   ` Sagi Grimberg
  0 siblings, 0 replies; 12+ messages in thread
From: Sagi Grimberg @ 2022-03-16 15:13 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro

Acked-by: Sagi Grimberg <sagi@grimberg.me>

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

* Re: [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure
  2022-03-08 14:55 ` [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure Max Gurtovoy
@ 2022-03-16 15:14   ` Sagi Grimberg
  2022-03-16 16:02     ` Max Gurtovoy
  0 siblings, 1 reply; 12+ messages in thread
From: Sagi Grimberg @ 2022-03-16 15:14 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro


> During READ/WRITE preparation, in case of failure in memory registration
> using iser_reg_mem_fastreg we must unmap previously mapped iser task.
> 
> Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
> Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>

Looks good,
Acked-by: Sagi Grimberg <sagi@grimberg.me>

Doesn't this need a fixes tag?

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

* Re: [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure
  2022-03-16 15:14   ` Sagi Grimberg
@ 2022-03-16 16:02     ` Max Gurtovoy
  2022-03-17  7:31       ` Sagi Grimberg
  0 siblings, 1 reply; 12+ messages in thread
From: Max Gurtovoy @ 2022-03-16 16:02 UTC (permalink / raw)
  To: Sagi Grimberg, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro


On 3/16/2022 5:14 PM, Sagi Grimberg wrote:
>
>> During READ/WRITE preparation, in case of failure in memory registration
>> using iser_reg_mem_fastreg we must unmap previously mapped iser task.
>>
>> Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
>> Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
>
> Looks good,
> Acked-by: Sagi Grimberg <sagi@grimberg.me>
>
> Doesn't this need a fixes tag?

I'm not sure.

I see this issue from iSER in 2006 (commit e85b24b5e7de9 - IB/iser: iSER 
initiator iSCSI PDU and TX/RX).



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

* Re: [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure
  2022-03-16 16:02     ` Max Gurtovoy
@ 2022-03-17  7:31       ` Sagi Grimberg
  0 siblings, 0 replies; 12+ messages in thread
From: Sagi Grimberg @ 2022-03-17  7:31 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, jgg; +Cc: oren, sergeygo, israelr, leonro


>>> During READ/WRITE preparation, in case of failure in memory registration
>>> using iser_reg_mem_fastreg we must unmap previously mapped iser task.
>>>
>>> Reviewed-by: Sergey Gorenko <sergeygo@nvidia.com>
>>> Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
>>
>> Looks good,
>> Acked-by: Sagi Grimberg <sagi@grimberg.me>
>>
>> Doesn't this need a fixes tag?
> 
> I'm not sure.
> 
> I see this issue from iSER in 2006 (commit e85b24b5e7de9 - IB/iser: iSER 
> initiator iSCSI PDU and TX/RX).

Hmm... ok

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

* Re: [PATCH v2 0/4] iSER cleanups and fixes for 5.18
  2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
                   ` (3 preceding siblings ...)
  2022-03-08 14:55 ` [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure Max Gurtovoy
@ 2022-03-18 18:19 ` Jason Gunthorpe
  4 siblings, 0 replies; 12+ messages in thread
From: Jason Gunthorpe @ 2022-03-18 18:19 UTC (permalink / raw)
  To: Max Gurtovoy; +Cc: linux-rdma, sagi, oren, sergeygo, israelr, leonro

On Tue, Mar 08, 2022 at 04:55:42PM +0200, Max Gurtovoy wrote:
> Max Gurtovoy (4):
>   IB/iser: remove iser_reg_data_sg helper function
>   IB/iser: use iser_fr_desc as registration context
>   IB/iser: generalize map/unmap dma tasks
>   IB/iser: fix error flow in case of registration failure

Applied to for-next, thanks

Jason

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

end of thread, other threads:[~2022-03-18 18:20 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-08 14:55 [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Max Gurtovoy
2022-03-08 14:55 ` [PATCH v2 1/4] IB/iser: remove iser_reg_data_sg helper function Max Gurtovoy
2022-03-16 15:06   ` Sagi Grimberg
2022-03-08 14:55 ` [PATCH v2 2/4] IB/iser: use iser_fr_desc as registration context Max Gurtovoy
2022-03-16 15:09   ` Sagi Grimberg
2022-03-08 14:55 ` [PATCH v2 3/4] IB/iser: generalize map/unmap dma tasks Max Gurtovoy
2022-03-16 15:13   ` Sagi Grimberg
2022-03-08 14:55 ` [PATCH v2 4/4] IB/iser: fix error flow in case of registration failure Max Gurtovoy
2022-03-16 15:14   ` Sagi Grimberg
2022-03-16 16:02     ` Max Gurtovoy
2022-03-17  7:31       ` Sagi Grimberg
2022-03-18 18:19 ` [PATCH v2 0/4] iSER cleanups and fixes for 5.18 Jason Gunthorpe

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.