From: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
David Dillow <dillowda-1Heg1YXhbW8@public.gmane.org>
Cc: Roland Dreier <roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org>
Subject: [PATCH 03/14] ib_srp: Disallow duplicate logins
Date: Thu, 1 Dec 2011 19:58:17 +0100 [thread overview]
Message-ID: <201112011958.17339.bvanassche@acm.org> (raw)
In-Reply-To: <201112011954.25811.bvanassche-HInyCGIudOg@public.gmane.org>
Currently the ib_srp driver allows to log in multiple times to the
same target via its sysfs interface. This leads to each target LUN
being imported multiple times at the initiator side, something that
should not be allowed.
Signed-off-by: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
Cc: David Dillow <dillowda-1Heg1YXhbW8@public.gmane.org>
Cc: Roland Dreier <roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org>
---
drivers/infiniband/ulp/srp/ib_srp.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 868e7f8..2e0169b 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -2095,6 +2095,34 @@ out:
return ret;
}
+/**
+ * srp_target_exists() - Check whether a given target already exists.
+ *
+ * Returns -EEXIST if the target already exists and 0 if not.
+ */
+static int srp_target_exists(struct srp_host *host,
+ struct srp_target_port *target)
+{
+ struct srp_target_port *t;
+ int ret = 0;
+
+ spin_lock(&host->target_lock);
+ list_for_each_entry(t, &host->target_list, list) {
+ WARN_ON(t == target);
+ if (target->id_ext == t->id_ext &&
+ target->ioc_guid == t->ioc_guid &&
+ memcmp(target->orig_dgid, t->orig_dgid, 16) == 0 &&
+ target->path.pkey == t->path.pkey &&
+ target->service_id == t->service_id) {
+ ret = -EEXIST;
+ break;
+ }
+ }
+ spin_unlock(&host->target_lock);
+
+ return ret;
+}
+
static ssize_t srp_create_target(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
@@ -2133,6 +2161,10 @@ static ssize_t srp_create_target(struct device *dev,
if (ret)
goto err;
+ ret = srp_target_exists(host, target);
+ if (ret)
+ goto err;
+
if (!host->srp_dev->fmr_pool && !target->allow_ext_sg &&
target->cmd_sg_cnt < target->sg_tablesize) {
pr_warn("No FMR pool and no external indirect descriptors, limiting sg_tablesize to cmd_sg_cnt\n");
--
1.7.3.4
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2011-12-01 18:58 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-01 18:54 [PATCH 00/14] Make ib_srp better suited for H.A. purposes Bart Van Assche
[not found] ` <201112011954.25811.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-01 18:55 ` [PATCH 01/14] ib_srp: Introduce pr_fmt() Bart Van Assche
[not found] ` <201112011955.47198.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-01 23:40 ` David Dillow
2011-12-01 18:57 ` [PATCH 02/14] ib_srp: Consolidate repetitive sysfs code Bart Van Assche
[not found] ` <201112011957.19892.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 18:26 ` David Dillow
2011-12-01 18:58 ` Bart Van Assche [this message]
[not found] ` <201112011958.17339.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 19:08 ` [PATCH 03/14] ib_srp: Disallow duplicate logins David Dillow
[not found] ` <1323976101.16703.42.camel-FqX9LgGZnHWDB2HL1qBt2PIbXMQ5te18@public.gmane.org>
2011-12-18 19:20 ` Bart Van Assche
[not found] ` <CAO+b5-r6dHt-vmbNjeD4zvcAaRVqhiEm5eZF7hgF6ei35kqjdQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-18 21:40 ` David Dillow
[not found] ` <1324244446.17849.39.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-19 10:31 ` Bart Van Assche
2011-12-01 18:59 ` [PATCH 04/14] ib_srp: Set block layer timeout Bart Van Assche
[not found] ` <201112011959.11956.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 19:37 ` David Dillow
[not found] ` <1323977841.16703.57.camel-FqX9LgGZnHWDB2HL1qBt2PIbXMQ5te18@public.gmane.org>
2011-12-17 17:50 ` Bart Van Assche
[not found] ` <CAO+b5-p9FQVvdVZtUvRJgMW6qhcnUKrp4RhCch1Hnt8JsjS5qQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-17 22:39 ` David Dillow
2011-12-17 22:03 ` Or Gerlitz
[not found] ` <CAJZOPZKQ4rg6D=ZDt2q+aJbsNAQbgqgh19FmGC5Vi6_EQ4ROFQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-17 22:39 ` David Dillow
2011-12-18 11:53 ` Bart Van Assche
2011-12-01 19:00 ` [PATCH 05/14] ib_srp: Avoid that late SRP replies cause trouble Bart Van Assche
[not found] ` <201112012000.04427.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 20:03 ` David Dillow
2011-12-01 19:02 ` [PATCH 06/14] ib_srp: Micro-optimize completion handlers Bart Van Assche
[not found] ` <201112012002.17829.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-01 21:35 ` chas williams - CONTRACTOR
[not found] ` <20111201163539.572ca669-KCdNrDJlFBBhNwqIksvPR6qiWZVw4kCD+aIohriVLy8@public.gmane.org>
2011-12-01 23:32 ` David Dillow
[not found] ` <1322782369.11664.5.camel-FqX9LgGZnHWDB2HL1qBt2PIbXMQ5te18@public.gmane.org>
2011-12-12 11:41 ` Bart Van Assche
[not found] ` <CAO+b5-pFBEQybN+01heAzr=_dNCb7Sr7ri_o_hF1MnOeX4_idQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-12 23:12 ` David Dillow
2011-12-01 19:02 ` [PATCH 07/14] ib_srp: Introduce srp_handle_qp_err() Bart Van Assche
[not found] ` <201112012002.56307.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-18 23:55 ` David Dillow
2011-12-01 19:08 ` [PATCH 10/14] srp_transport: Simplify attribute initialization code Bart Van Assche
[not found] ` <201112012008.00502.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-19 0:07 ` David Dillow
[not found] ` <1324253243.17849.45.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-20 10:21 ` Bart Van Assche
2011-12-21 3:23 ` David Dillow
2011-12-01 19:09 ` [PATCH 11/14] ib_srp: Document sysfs attributes Bart Van Assche
[not found] ` <201112012009.12815.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-19 0:33 ` David Dillow
[not found] ` <1324254811.17849.65.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-19 8:46 ` Bart Van Assche
[not found] ` <CAO+b5-rb=Gtch0UCZPwTSCHhOdsUBecSpgYjaLvj5pbo9_1AeQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-19 21:27 ` David Dillow
2011-12-01 19:11 ` [PATCH 13/14] ib_srp: Implement transport layer ping Bart Van Assche
2011-12-19 0:50 ` David Dillow
2011-12-19 10:16 ` Bart Van Assche
2011-12-19 22:32 ` David Dillow
[not found] ` <1324333931.7043.52.camel-FqX9LgGZnHWDB2HL1qBt2PIbXMQ5te18@public.gmane.org>
2011-12-20 10:13 ` Bart Van Assche
[not found] ` <CAO+b5-qLxmcXCCxA8+bPYsinjr1eqCDO2JUJbjgVr59N55CU1Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-21 2:32 ` David Dillow
2011-12-20 10:27 ` Bart Van Assche
2011-12-21 3:05 ` David Dillow
[not found] ` <1324436736.7621.38.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-21 14:07 ` Bart Van Assche
2011-12-23 22:34 ` David Dillow
[not found] ` <1324679698.3004.12.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-23 22:56 ` Mike Christie
2011-12-24 20:07 ` David Dillow
2011-12-26 19:39 ` Bart Van Assche
2011-12-28 23:53 ` David Dillow
2011-12-26 20:01 ` Bart Van Assche
2011-12-01 19:05 ` [PATCH 08/14] srp_transport: Document sysfs attributes Bart Van Assche
2011-12-01 19:06 ` [PATCH 09/14] srp_transport: Fix attribute registration Bart Van Assche
[not found] ` <201112012006.50445.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 20:09 ` David Dillow
2011-12-01 19:10 ` [PATCH 12/14] ib_srp: Rework error handling Bart Van Assche
[not found] ` <201112012010.37276.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 20:20 ` David Dillow
2011-12-19 3:36 ` David Dillow
2011-12-19 10:38 ` Bart Van Assche
2011-12-19 22:51 ` David Dillow
[not found] ` <1324335083.7043.66.camel-FqX9LgGZnHWDB2HL1qBt2PIbXMQ5te18@public.gmane.org>
2011-12-20 9:01 ` Bart Van Assche
[not found] ` <CAO+b5-qF2taG0B4n9SBwqnuh0wajH5fXFLTb-VAaDrfT9TZ6aQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-21 3:33 ` David Dillow
[not found] ` <1324438387.7621.53.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-21 13:26 ` Bart Van Assche
[not found] ` <1324265791.17849.92.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-26 19:13 ` Bart Van Assche
2011-12-01 19:13 ` [PATCH 14/14] ib_srp: Allow SRP disconnect through sysfs Bart Van Assche
2011-12-19 4:03 ` David Dillow
[not found] ` <1324267414.17849.98.camel-1q1vX8mYZiGLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2011-12-19 9:04 ` Bart Van Assche
2011-12-01 23:26 ` [PATCH 00/14] Make ib_srp better suited for H.A. purposes David Dillow
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=201112011958.17339.bvanassche@acm.org \
--to=bvanassche-hinycgiudog@public.gmane.org \
--cc=dillowda-1Heg1YXhbW8@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org \
/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