linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: Jens Axboe <axboe@kernel.dk>, Sagi Grimberg <sagig@mellanox.com>,
	Sebastian Parschauer <sebastian.riemer@profitbricks.com>,
	Robert Elliott <Elliott@hp.com>,
	Ming Lei <ming.lei@canonical.com>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	linux-rdma <linux-rdma@vger.kernel.org>
Subject: [PATCH v2 08/12] IB/srp: Introduce two new srp_target_port member variables
Date: Tue, 07 Oct 2014 15:05:31 +0200	[thread overview]
Message-ID: <5433E51B.20705@acm.org> (raw)
In-Reply-To: <5433E43D.3010107@acm.org>

Introduce the srp_target_port member variables 'sgid' and 'pkey'.
Change the type of 'orig_dgid' from __be16[8] into union ib_gid.
This patch does not change any functionality but makes the
"Separate target and channel variables" patch easier to verify.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: Sebastian Parschauer <sebastian.riemer@profitbricks.com>
---
 drivers/infiniband/ulp/srp/ib_srp.c | 39 ++++++++++++++++++++++---------------
 drivers/infiniband/ulp/srp/ib_srp.h |  4 +++-
 2 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index a662c29..5685062 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -262,7 +262,7 @@ static int srp_init_qp(struct srp_target_port *target,
 
 	ret = ib_find_pkey(target->srp_host->srp_dev->dev,
 			   target->srp_host->port,
-			   be16_to_cpu(target->path.pkey),
+			   be16_to_cpu(target->pkey),
 			   &attr->pkey_index);
 	if (ret)
 		goto out;
@@ -295,6 +295,10 @@ static int srp_new_cm_id(struct srp_target_port *target)
 	if (target->cm_id)
 		ib_destroy_cm_id(target->cm_id);
 	target->cm_id = new_cm_id;
+	target->path.sgid = target->sgid;
+	target->path.dgid = target->orig_dgid;
+	target->path.pkey = target->pkey;
+	target->path.service_id = target->service_id;
 
 	return 0;
 }
@@ -689,7 +693,7 @@ static int srp_send_req(struct srp_target_port *target)
 	 */
 	if (target->io_class == SRP_REV10_IB_IO_CLASS) {
 		memcpy(req->priv.initiator_port_id,
-		       &target->path.sgid.global.interface_id, 8);
+		       &target->sgid.global.interface_id, 8);
 		memcpy(req->priv.initiator_port_id + 8,
 		       &target->initiator_ext, 8);
 		memcpy(req->priv.target_port_id,     &target->ioc_guid, 8);
@@ -698,7 +702,7 @@ static int srp_send_req(struct srp_target_port *target)
 		memcpy(req->priv.initiator_port_id,
 		       &target->initiator_ext, 8);
 		memcpy(req->priv.initiator_port_id + 8,
-		       &target->path.sgid.global.interface_id, 8);
+		       &target->sgid.global.interface_id, 8);
 		memcpy(req->priv.target_port_id,     &target->id_ext, 8);
 		memcpy(req->priv.target_port_id + 8, &target->ioc_guid, 8);
 	}
@@ -2175,8 +2179,8 @@ static void srp_cm_rej_handler(struct ib_cm_id *cm_id,
 			else
 				shost_printk(KERN_WARNING, shost, PFX
 					     "SRP LOGIN from %pI6 to %pI6 REJECTED, reason 0x%08x\n",
-					     target->path.sgid.raw,
-					     target->orig_dgid, reason);
+					     target->sgid.raw,
+					     target->orig_dgid.raw, reason);
 		} else
 			shost_printk(KERN_WARNING, shost,
 				     "  REJ reason: IB_CM_REJ_CONSUMER_DEFINED,"
@@ -2464,7 +2468,7 @@ static ssize_t show_pkey(struct device *dev, struct device_attribute *attr,
 {
 	struct srp_target_port *target = host_to_target(class_to_shost(dev));
 
-	return sprintf(buf, "0x%04x\n", be16_to_cpu(target->path.pkey));
+	return sprintf(buf, "0x%04x\n", be16_to_cpu(target->pkey));
 }
 
 static ssize_t show_sgid(struct device *dev, struct device_attribute *attr,
@@ -2472,7 +2476,7 @@ static ssize_t show_sgid(struct device *dev, struct device_attribute *attr,
 {
 	struct srp_target_port *target = host_to_target(class_to_shost(dev));
 
-	return sprintf(buf, "%pI6\n", target->path.sgid.raw);
+	return sprintf(buf, "%pI6\n", target->sgid.raw);
 }
 
 static ssize_t show_dgid(struct device *dev, struct device_attribute *attr,
@@ -2488,7 +2492,7 @@ static ssize_t show_orig_dgid(struct device *dev,
 {
 	struct srp_target_port *target = host_to_target(class_to_shost(dev));
 
-	return sprintf(buf, "%pI6\n", target->orig_dgid);
+	return sprintf(buf, "%pI6\n", target->orig_dgid.raw);
 }
 
 static ssize_t show_req_lim(struct device *dev,
@@ -2826,11 +2830,15 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
 			}
 
 			for (i = 0; i < 16; ++i) {
-				strlcpy(dgid, p + i * 2, 3);
-				target->path.dgid.raw[i] = simple_strtoul(dgid, NULL, 16);
+				strlcpy(dgid, p + i * 2, sizeof(dgid));
+				if (sscanf(dgid, "%hhx",
+					   &target->orig_dgid.raw[i]) < 1) {
+					ret = -EINVAL;
+					kfree(p);
+					goto out;
+				}
 			}
 			kfree(p);
-			memcpy(target->orig_dgid, target->path.dgid.raw, 16);
 			break;
 
 		case SRP_OPT_PKEY:
@@ -2838,7 +2846,7 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
 				pr_warn("bad P_Key parameter '%s'\n", p);
 				goto out;
 			}
-			target->path.pkey = cpu_to_be16(token);
+			target->pkey = cpu_to_be16(token);
 			break;
 
 		case SRP_OPT_SERVICE_ID:
@@ -2848,7 +2856,6 @@ static int srp_parse_options(const char *buf, struct srp_target_port *target)
 				goto out;
 			}
 			target->service_id = cpu_to_be64(simple_strtoull(p, NULL, 16));
-			target->path.service_id = target->service_id;
 			kfree(p);
 			break;
 
@@ -3058,7 +3065,7 @@ static ssize_t srp_create_target(struct device *dev,
 	if (ret)
 		goto err_free_mem;
 
-	ret = ib_query_gid(ibdev, host->port, 0, &target->path.sgid);
+	ret = ib_query_gid(ibdev, host->port, 0, &target->sgid);
 	if (ret)
 		goto err_free_mem;
 
@@ -3086,9 +3093,9 @@ static ssize_t srp_create_target(struct device *dev,
 			     "new target: id_ext %016llx ioc_guid %016llx pkey %04x service_id %016llx sgid %pI6 dgid %pI6\n",
 			     be64_to_cpu(target->id_ext),
 			     be64_to_cpu(target->ioc_guid),
-			     be16_to_cpu(target->path.pkey),
+			     be16_to_cpu(target->pkey),
 			     be64_to_cpu(target->service_id),
-			     target->path.sgid.raw, target->orig_dgid);
+			     target->sgid.raw, target->orig_dgid.raw);
 	}
 
 	ret = count;
diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
index 00c7c48..8635ab6 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.h
+++ b/drivers/infiniband/ulp/srp/ib_srp.h
@@ -157,6 +157,7 @@ struct srp_target_port {
 	 * command processing. Try to keep them packed into cachelines.
 	 */
 
+	union ib_gid		sgid;
 	__be64			id_ext;
 	__be64			ioc_guid;
 	__be64			service_id;
@@ -173,8 +174,9 @@ struct srp_target_port {
 	int			comp_vector;
 	int			tl_retry_count;
 
+	union ib_gid		orig_dgid;
+	__be16			pkey;
 	struct ib_sa_path_rec	path;
-	__be16			orig_dgid[8];
 	struct ib_sa_query     *path_query;
 	int			path_query_id;
 
-- 
1.8.4.5


  parent reply	other threads:[~2014-10-07 13:05 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-07 13:01 [PATCH v2 0/12] IB/srp: Add multichannel support Bart Van Assche
2014-10-07 13:03 ` [PATCH v2 02/12] blk-mq: Add blk_mq_unique_tag() Bart Van Assche
2014-10-11 11:08   ` Christoph Hellwig
2014-10-13  9:21     ` Bart Van Assche
     [not found]       ` <543B99B2.1010307-HInyCGIudOg@public.gmane.org>
2014-10-13 10:15         ` Christoph Hellwig
2014-10-19 16:14           ` Sagi Grimberg
     [not found]   ` <5433E493.9030304-HInyCGIudOg@public.gmane.org>
2014-10-28  1:55     ` Martin K. Petersen
2014-10-07 13:04 ` [PATCH v2 04/12] scsi_tcq.h: Add support for multiple hardware queues Bart Van Assche
2014-10-19 16:12   ` Sagi Grimberg
     [not found]     ` <5443E2DF.1040605-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-10-20 12:01       ` Bart Van Assche
     [not found]         ` <5444F995.5080407-HInyCGIudOg@public.gmane.org>
2014-10-21  8:49           ` Christoph Hellwig
2014-10-21  8:59             ` Sagi Grimberg
2014-10-28  2:06   ` Martin K. Petersen
2014-10-07 13:05 ` [PATCH v2 07/12] IB/srp: Avoid that I/O hangs due to a cable pull during LUN scanning Bart Van Assche
2014-10-19 16:27   ` Sagi Grimberg
     [not found]     ` <5443E66F.7050901-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-10-20 12:15       ` Bart Van Assche
2014-10-21  8:50         ` Christoph Hellwig
2014-10-07 13:05 ` Bart Van Assche [this message]
2014-10-19 16:30   ` [PATCH v2 08/12] IB/srp: Introduce two new srp_target_port member variables Sagi Grimberg
2014-10-07 13:06 ` [PATCH v2 10/12] IB/srp: Use block layer tags Bart Van Assche
     [not found]   ` <5433E557.3010505-HInyCGIudOg@public.gmane.org>
2014-10-17 10:58     ` Christoph Hellwig
     [not found]       ` <20141017105858.GA7819-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-20 11:44         ` Bart Van Assche
2014-10-22 22:03     ` Elliott, Robert (Server Storage)
     [not found]       ` <94D0CD8314A33A4D9D801C0FE68B4029593212E0-wwDBVnaDRpYSZAcGdq5asR6epYMZPwEe5NbjCUgZEJk@public.gmane.org>
2014-10-23  7:16         ` Bart Van Assche
2014-10-23 17:43           ` Webb Scales
     [not found]             ` <54493E5A.7050803-VXdhtT5mjnY@public.gmane.org>
2014-10-24  6:45               ` Bart Van Assche
     [not found]                 ` <5449F571.7080308-HInyCGIudOg@public.gmane.org>
2014-10-24 15:40                   ` Webb Scales
2014-10-23  8:47       ` Christoph Hellwig
2014-10-24  4:43         ` Elliott, Robert (Server Storage)
2014-10-24  6:45           ` Christoph Hellwig
     [not found]             ` <20141024064514.GA15654-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-31 17:34               ` Hannes Reinecke
2014-11-03  7:52             ` Kashyap Desai
2014-11-03  8:25               ` Christoph Hellwig
     [not found] ` <5433E43D.3010107-HInyCGIudOg@public.gmane.org>
2014-10-07 13:02   ` [PATCH v2 01/12] blk-mq: Use all available hardware queues Bart Van Assche
2014-10-07 14:37     ` Jens Axboe
     [not found]       ` <5433FA8F.3050100-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2014-10-08 13:21         ` Bart Van Assche
     [not found]           ` <54353A74.7040406-HInyCGIudOg@public.gmane.org>
2014-10-11 11:11             ` Christoph Hellwig
     [not found]               ` <20141011111114.GB9593-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-13  9:45                 ` Bart Van Assche
     [not found]                   ` <543B9F47.2090204-HInyCGIudOg@public.gmane.org>
2014-10-17 13:20                     ` Christoph Hellwig
     [not found]                       ` <20141017132053.GF16538-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-17 14:11                         ` Sagi Grimberg
2014-10-07 13:03   ` [PATCH v2 03/12] scsi-mq: Add support for multiple " Bart Van Assche
     [not found]     ` <5433E4AB.8030306-HInyCGIudOg@public.gmane.org>
2014-10-19 15:54       ` Sagi Grimberg
2014-10-28  2:01       ` Martin K. Petersen
2014-10-29 12:22         ` Bart Van Assche
2014-10-29 12:27           ` Bart Van Assche
     [not found]             ` <5450DD49.6090108-HInyCGIudOg@public.gmane.org>
2014-10-30  0:53               ` Martin K. Petersen
2014-10-07 13:04   ` [PATCH v2 05/12] IB/srp: Move ib_destroy_cm_id() call into srp_free_ch_ib() Bart Van Assche
2014-10-07 13:04   ` [PATCH v2 06/12] IB/srp: Remove stale connection retry mechanism Bart Van Assche
2014-10-07 13:05   ` [PATCH v2 09/12] IB/srp: Separate target and channel variables Bart Van Assche
2014-10-19 16:48     ` Sagi Grimberg
2014-10-07 13:06   ` [PATCH v2 11/12] IB/srp: Eliminate free_reqs list Bart Van Assche
     [not found]     ` <5433E56E.6010600-HInyCGIudOg@public.gmane.org>
2014-10-17 10:59       ` Christoph Hellwig
     [not found]         ` <20141017105939.GB7819-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-19 16:59           ` Sagi Grimberg
2014-10-20 11:47           ` Bart Van Assche
2014-10-21  8:49             ` Christoph Hellwig
2014-10-07 13:07 ` [PATCH v2 12/12] IB/srp: Add multichannel support Bart Van Assche
2014-10-17 11:01   ` EH action after scsi_remove_host, was: " Christoph Hellwig
2014-10-20 13:53     ` Bart Van Assche
2014-10-21  8:51       ` Christoph Hellwig
2014-10-17 11:06   ` Christoph Hellwig
     [not found]     ` <20141017110627.GD7819-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2014-10-20 11:57       ` Bart Van Assche
2014-10-21  8:49         ` Christoph Hellwig
     [not found]   ` <5433E585.607-HInyCGIudOg@public.gmane.org>
2014-10-19 17:36     ` Sagi Grimberg
2014-10-20 12:56       ` Bart Van Assche
     [not found]         ` <54450690.709-HInyCGIudOg@public.gmane.org>
2014-10-21  9:10           ` Sagi Grimberg
     [not found]             ` <544622FE.5040906-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-10-28 18:32               ` Sagi Grimberg
     [not found]                 ` <544FE13A.60807-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-10-29 10:52                   ` Bart Van Assche
2014-10-30 14:19                     ` Sagi Grimberg
2014-10-30 14:36                       ` Bart Van Assche
     [not found]                         ` <54524D08.4040203-HInyCGIudOg@public.gmane.org>
2014-10-30 15:06                           ` Sagi Grimberg
     [not found]                             ` <545253E3.7000009-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-10-30 15:19                               ` Bart Van Assche
     [not found]                                 ` <545256E5.9010501-HInyCGIudOg@public.gmane.org>
2014-10-30 17:33                                   ` Sagi Grimberg
2014-10-31  9:19                                     ` Bart Van Assche
     [not found]                                       ` <5453541D.7040206-HInyCGIudOg@public.gmane.org>
2014-11-02 13:03                                         ` Sagi Grimberg
2014-11-03  1:46                                           ` Elliott, Robert (Server Storage)
2014-11-04 11:46                                             ` Bart Van Assche
     [not found]                                               ` <5458BC8B.40202-HInyCGIudOg@public.gmane.org>
2014-11-04 12:15                                                 ` Sagi Grimberg
     [not found]                                                   ` <5458C344.2040109-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-11-05  4:57                                                     ` Elliott, Robert (Server Storage)
     [not found]                                                       ` <94D0CD8314A33A4D9D801C0FE68B40295937104F-2m9nI20wMFwSZAcGdq5asR6epYMZPwEe5NbjCUgZEJk@public.gmane.org>
2014-11-05 11:22                                                         ` Sagi Grimberg
2014-10-21  9:14     ` Sagi Grimberg
2014-10-29 12:36       ` Bart Van Assche
2014-10-30 14:22         ` Sagi Grimberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5433E51B.20705@acm.org \
    --to=bvanassche@acm.org \
    --cc=Elliott@hp.com \
    --cc=axboe@kernel.dk \
    --cc=hch@infradead.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ming.lei@canonical.com \
    --cc=sagig@mellanox.com \
    --cc=sebastian.riemer@profitbricks.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).