linux-rdma.vger.kernel.org archive mirror
 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 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).