* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).