All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] IB/iser cleanups and fixes for 5.11
@ 2021-01-11 14:57 Max Gurtovoy
  2021-01-11 14:57 ` [PATCH 1/4] IB/iser: remove unneeded semicolons Max Gurtovoy
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Max Gurtovoy @ 2021-01-11 14:57 UTC (permalink / raw)
  To: linux-rdma, dledford, jgg, leonro, sagi
  Cc: oren, nitzanc, sergeygo, ngottlieb, Max Gurtovoy

Hi Jason/Leon/Sagi,
This series introduce some minor code conventions cleanups and 1 module
param fix that can cause the driver to fail in connection establishment
(if one will set max_sectors = 0).

Please consider this for the next 5.11 PR or for 5.12 merge window.

Max Gurtovoy (4):
  IB/iser: remove unneeded semicolons
  IB/iser: protect iscsi_max_lun module param using callback
  IB/iser: enforce iser_max_sectors to be greater than 0
  IB/iser: simplify prot_caps setting

 drivers/infiniband/ulp/iser/iscsi_iser.c  | 53 ++++++++++++++++-------
 drivers/infiniband/ulp/iser/iser_memory.c |  3 +-
 drivers/infiniband/ulp/iser/iser_verbs.c  |  2 +-
 3 files changed, 39 insertions(+), 19 deletions(-)

-- 
2.25.4


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

* [PATCH 1/4] IB/iser: remove unneeded semicolons
  2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
@ 2021-01-11 14:57 ` Max Gurtovoy
  2021-01-14  0:00   ` Sagi Grimberg
  2021-01-11 14:57 ` [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback Max Gurtovoy
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Max Gurtovoy @ 2021-01-11 14:57 UTC (permalink / raw)
  To: linux-rdma, dledford, jgg, leonro, sagi
  Cc: oren, nitzanc, sergeygo, ngottlieb, Max Gurtovoy, Israel Rukshin

No need to add semicolon after closing bracket.

Reviewed-by: Israel Rukshin <israelr@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iser_memory.c | 3 +--
 drivers/infiniband/ulp/iser/iser_verbs.c  | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c
index d4e057fac219..afec40da9b58 100644
--- a/drivers/infiniband/ulp/iser/iser_memory.c
+++ b/drivers/infiniband/ulp/iser/iser_memory.c
@@ -169,7 +169,7 @@ iser_set_dif_domain(struct scsi_cmnd *sc, struct ib_sig_domain *domain)
 	domain->sig.dif.ref_escape = true;
 	if (sc->prot_flags & SCSI_PROT_REF_INCREMENT)
 		domain->sig.dif.ref_remap = true;
-};
+}
 
 static int
 iser_set_sig_attrs(struct scsi_cmnd *sc, struct ib_sig_attrs *sig_attrs)
@@ -390,4 +390,3 @@ int iser_reg_mem_fastreg(struct iscsi_iser_task *task,
 
 	return err;
 }
-
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index 2bd18b006893..136f6c4492e0 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -685,7 +685,7 @@ static void iser_cleanup_handler(struct rdma_cm_id *cma_id,
 	iser_disconnected_handler(cma_id);
 	iser_free_ib_conn_res(iser_conn, destroy);
 	complete(&iser_conn->ib_completion);
-};
+}
 
 static int iser_cma_handler(struct rdma_cm_id *cma_id, struct rdma_cm_event *event)
 {
-- 
2.25.4


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

* [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback
  2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
  2021-01-11 14:57 ` [PATCH 1/4] IB/iser: remove unneeded semicolons Max Gurtovoy
@ 2021-01-11 14:57 ` Max Gurtovoy
  2021-01-14  0:00   ` Sagi Grimberg
  2021-01-11 14:57 ` [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0 Max Gurtovoy
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Max Gurtovoy @ 2021-01-11 14:57 UTC (permalink / raw)
  To: linux-rdma, dledford, jgg, leonro, sagi
  Cc: oren, nitzanc, sergeygo, ngottlieb, Max Gurtovoy, Israel Rukshin

Remove the check from the module_init function.

Reviewed-by: Israel Rukshin <israelr@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iscsi_iser.c | 27 ++++++++++++++++++------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 4792b9bf400f..906f52873d63 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -89,9 +89,15 @@ int iser_debug_level = 0;
 module_param_named(debug_level, iser_debug_level, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(debug_level, "Enable debug tracing if > 0 (default:disabled)");
 
+static int iscsi_iser_set(const char *val, const struct kernel_param *kp);
+static const struct kernel_param_ops iscsi_iser_size_ops = {
+	.set = iscsi_iser_set,
+	.get = param_get_uint,
+};
+
 static unsigned int iscsi_max_lun = 512;
-module_param_named(max_lun, iscsi_max_lun, uint, S_IRUGO);
-MODULE_PARM_DESC(max_lun, "Max LUNs to allow per session (default:512");
+module_param_cb(max_lun, &iscsi_iser_size_ops, &iscsi_max_lun, S_IRUGO);
+MODULE_PARM_DESC(max_lun, "Max LUNs to allow per session, should > 0 (default:512)");
 
 unsigned int iser_max_sectors = ISER_DEF_MAX_SECTORS;
 module_param_named(max_sectors, iser_max_sectors, uint, S_IRUGO | S_IWUSR);
@@ -110,6 +116,18 @@ int iser_pi_guard;
 module_param_named(pi_guard, iser_pi_guard, int, S_IRUGO);
 MODULE_PARM_DESC(pi_guard, "T10-PI guard_type [deprecated]");
 
+static int iscsi_iser_set(const char *val, const struct kernel_param *kp)
+{
+	int ret;
+	unsigned int n = 0;
+
+	ret = kstrtouint(val, 10, &n);
+	if (ret != 0 || n == 0)
+		return -EINVAL;
+
+	return param_set_uint(val, kp);
+}
+
 /*
  * iscsi_iser_recv() - Process a successful recv completion
  * @conn:         iscsi connection
@@ -1009,11 +1027,6 @@ static int __init iser_init(void)
 
 	iser_dbg("Starting iSER datamover...\n");
 
-	if (iscsi_max_lun < 1) {
-		iser_err("Invalid max_lun value of %u\n", iscsi_max_lun);
-		return -EINVAL;
-	}
-
 	memset(&ig, 0, sizeof(struct iser_global));
 
 	ig.desc_cache = kmem_cache_create("iser_descriptors",
-- 
2.25.4


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

* [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0
  2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
  2021-01-11 14:57 ` [PATCH 1/4] IB/iser: remove unneeded semicolons Max Gurtovoy
  2021-01-11 14:57 ` [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback Max Gurtovoy
@ 2021-01-11 14:57 ` Max Gurtovoy
  2021-01-14  0:02   ` Sagi Grimberg
  2021-01-11 14:57 ` [PATCH 4/4] IB/iser: simplify prot_caps setting Max Gurtovoy
  2021-01-20  0:10 ` [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Jason Gunthorpe
  4 siblings, 1 reply; 10+ messages in thread
From: Max Gurtovoy @ 2021-01-11 14:57 UTC (permalink / raw)
  To: linux-rdma, dledford, jgg, leonro, sagi
  Cc: oren, nitzanc, sergeygo, ngottlieb, Max Gurtovoy, Israel Rukshin

A value of 0 will casue the driver to fail establishing a valid
connection to remote target.

The following can be seen in the log in this case:
"
iser: iser_connect: connecting to: 1.1.1.88:3260
iser: iser_cma_handler: address resolved (0): status 0 conn 00000000090aa4de id 00000000167d3b5a
iser: iser_cma_handler: route resolved  (2): status 0 conn 00000000090aa4de id 00000000167d3b5a
iser: iscsi_iser_ep_poll: iser conn 00000000090aa4de rc = 0
iser: iser_create_ib_conn_res: setting conn 00000000090aa4de cma_id 00000000167d3b5a qp 00000000efa80660 max_send_wr 4619
iser_cma_handler: established (9): status 0 conn 00000000090aa4de id 00000000167d3b5a
iser: iser_connected_handler: remote qpn:1c7 my qpn:1c6
iser: iser_connected_handler: conn 00000000090aa4de: negotiated remote invalidation
iser: iscsi_iser_ep_poll: iser conn 00000000090aa4de rc = 1
scsi host10: iSCSI Initiator over iSER
mlx5_core 0000:07:00.0: mlx5_cmd_check:769:(pid 616473): CREATE_MKEY(0x200) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x3bf6f)
iser: iser_create_fastreg_desc: Failed to allocate ib_fast_reg_mr err=-22
iser: iser_alloc_rx_descriptors: failed allocating rx descriptors / data buffers
iser: iscsi_iser_ep_disconnect: ep 00000000d2040785 iser conn 00000000090aa4de
iser: iser_conn_terminate: iser_conn 00000000090aa4de state 3
iser: iser_free_ib_conn_res: freeing conn 00000000090aa4de cma_id 00000000167d3b5a qp 00000000efa80660
iser: iser_device_try_release: device 00000000dc871b1b refcount 0
"

Reviewed-by: Israel Rukshin <israelr@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iscsi_iser.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 906f52873d63..fcfdeb5dea42 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -100,8 +100,9 @@ module_param_cb(max_lun, &iscsi_iser_size_ops, &iscsi_max_lun, S_IRUGO);
 MODULE_PARM_DESC(max_lun, "Max LUNs to allow per session, should > 0 (default:512)");
 
 unsigned int iser_max_sectors = ISER_DEF_MAX_SECTORS;
-module_param_named(max_sectors, iser_max_sectors, uint, S_IRUGO | S_IWUSR);
-MODULE_PARM_DESC(max_sectors, "Max number of sectors in a single scsi command (default:1024");
+module_param_cb(max_sectors, &iscsi_iser_size_ops, &iser_max_sectors,
+		S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(max_sectors, "Max number of sectors in a single scsi command, should > 0 (default:1024)");
 
 bool iser_always_reg = true;
 module_param_named(always_register, iser_always_reg, bool, S_IRUGO);
-- 
2.25.4


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

* [PATCH 4/4] IB/iser: simplify prot_caps setting
  2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
                   ` (2 preceding siblings ...)
  2021-01-11 14:57 ` [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0 Max Gurtovoy
@ 2021-01-11 14:57 ` Max Gurtovoy
  2021-01-14  0:03   ` Sagi Grimberg
  2021-01-20  0:10 ` [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Jason Gunthorpe
  4 siblings, 1 reply; 10+ messages in thread
From: Max Gurtovoy @ 2021-01-11 14:57 UTC (permalink / raw)
  To: linux-rdma, dledford, jgg, leonro, sagi
  Cc: oren, nitzanc, sergeygo, ngottlieb, Max Gurtovoy, Israel Rukshin

Reduce the number of instructions made for setting protection caps. No
need to do bitwise OR with 0 since we can zero the return value in the
beginning of the function.

Reviewed-by: Israel Rukshin <israelr@nvidia.com>
Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
---
 drivers/infiniband/ulp/iser/iscsi_iser.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index fcfdeb5dea42..8fcaa1136f2c 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -590,13 +590,20 @@ iscsi_iser_session_destroy(struct iscsi_cls_session *cls_session)
 static inline unsigned int
 iser_dif_prot_caps(int prot_caps)
 {
-	return ((prot_caps & IB_PROT_T10DIF_TYPE_1) ?
-		SHOST_DIF_TYPE1_PROTECTION | SHOST_DIX_TYPE0_PROTECTION |
-		SHOST_DIX_TYPE1_PROTECTION : 0) |
-	       ((prot_caps & IB_PROT_T10DIF_TYPE_2) ?
-		SHOST_DIF_TYPE2_PROTECTION | SHOST_DIX_TYPE2_PROTECTION : 0) |
-	       ((prot_caps & IB_PROT_T10DIF_TYPE_3) ?
-		SHOST_DIF_TYPE3_PROTECTION | SHOST_DIX_TYPE3_PROTECTION : 0);
+	int ret = 0;
+
+	if (prot_caps & IB_PROT_T10DIF_TYPE_1)
+		ret |= SHOST_DIF_TYPE1_PROTECTION |
+		       SHOST_DIX_TYPE0_PROTECTION |
+		       SHOST_DIX_TYPE1_PROTECTION;
+	if (prot_caps & IB_PROT_T10DIF_TYPE_2)
+		ret |= SHOST_DIF_TYPE2_PROTECTION |
+		       SHOST_DIX_TYPE2_PROTECTION;
+	if (prot_caps & IB_PROT_T10DIF_TYPE_3)
+		ret |= SHOST_DIF_TYPE3_PROTECTION |
+		       SHOST_DIX_TYPE3_PROTECTION;
+
+	return ret;
 }
 
 /**
-- 
2.25.4


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

* Re: [PATCH 1/4] IB/iser: remove unneeded semicolons
  2021-01-11 14:57 ` [PATCH 1/4] IB/iser: remove unneeded semicolons Max Gurtovoy
@ 2021-01-14  0:00   ` Sagi Grimberg
  0 siblings, 0 replies; 10+ messages in thread
From: Sagi Grimberg @ 2021-01-14  0:00 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, dledford, jgg, leonro
  Cc: oren, nitzanc, sergeygo, ngottlieb, Israel Rukshin

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

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

* Re: [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback
  2021-01-11 14:57 ` [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback Max Gurtovoy
@ 2021-01-14  0:00   ` Sagi Grimberg
  0 siblings, 0 replies; 10+ messages in thread
From: Sagi Grimberg @ 2021-01-14  0:00 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, dledford, jgg, leonro
  Cc: oren, nitzanc, sergeygo, ngottlieb, Israel Rukshin

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

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

* Re: [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0
  2021-01-11 14:57 ` [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0 Max Gurtovoy
@ 2021-01-14  0:02   ` Sagi Grimberg
  0 siblings, 0 replies; 10+ messages in thread
From: Sagi Grimberg @ 2021-01-14  0:02 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, dledford, jgg, leonro
  Cc: oren, nitzanc, sergeygo, ngottlieb, Israel Rukshin

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

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

* Re: [PATCH 4/4] IB/iser: simplify prot_caps setting
  2021-01-11 14:57 ` [PATCH 4/4] IB/iser: simplify prot_caps setting Max Gurtovoy
@ 2021-01-14  0:03   ` Sagi Grimberg
  0 siblings, 0 replies; 10+ messages in thread
From: Sagi Grimberg @ 2021-01-14  0:03 UTC (permalink / raw)
  To: Max Gurtovoy, linux-rdma, dledford, jgg, leonro
  Cc: oren, nitzanc, sergeygo, ngottlieb, Israel Rukshin

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

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

* Re: [PATCH 0/4] IB/iser cleanups and fixes for 5.11
  2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
                   ` (3 preceding siblings ...)
  2021-01-11 14:57 ` [PATCH 4/4] IB/iser: simplify prot_caps setting Max Gurtovoy
@ 2021-01-20  0:10 ` Jason Gunthorpe
  4 siblings, 0 replies; 10+ messages in thread
From: Jason Gunthorpe @ 2021-01-20  0:10 UTC (permalink / raw)
  To: Max Gurtovoy
  Cc: linux-rdma, dledford, leonro, sagi, oren, nitzanc, sergeygo, ngottlieb

On Mon, Jan 11, 2021 at 02:57:50PM +0000, Max Gurtovoy wrote:
> Hi Jason/Leon/Sagi,
> This series introduce some minor code conventions cleanups and 1 module
> param fix that can cause the driver to fail in connection establishment
> (if one will set max_sectors = 0).
> 
> Please consider this for the next 5.11 PR or for 5.12 merge window.
> 
> Max Gurtovoy (4):
>   IB/iser: remove unneeded semicolons
>   IB/iser: protect iscsi_max_lun module param using callback
>   IB/iser: enforce iser_max_sectors to be greater than 0
>   IB/iser: simplify prot_caps setting

Applied to for-next, thanks

Jason

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

end of thread, other threads:[~2021-01-20  0:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-11 14:57 [PATCH 0/4] IB/iser cleanups and fixes for 5.11 Max Gurtovoy
2021-01-11 14:57 ` [PATCH 1/4] IB/iser: remove unneeded semicolons Max Gurtovoy
2021-01-14  0:00   ` Sagi Grimberg
2021-01-11 14:57 ` [PATCH 2/4] IB/iser: protect iscsi_max_lun module param using callback Max Gurtovoy
2021-01-14  0:00   ` Sagi Grimberg
2021-01-11 14:57 ` [PATCH 3/4] IB/iser: enforce iser_max_sectors to be greater than 0 Max Gurtovoy
2021-01-14  0:02   ` Sagi Grimberg
2021-01-11 14:57 ` [PATCH 4/4] IB/iser: simplify prot_caps setting Max Gurtovoy
2021-01-14  0:03   ` Sagi Grimberg
2021-01-20  0:10 ` [PATCH 0/4] IB/iser cleanups and fixes for 5.11 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.