From: David Dillow <dillowda-1Heg1YXhbW8@public.gmane.org>
To: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Roland Dreier <roland-BHEL68pLQRGGvPXPguhicg@public.gmane.org>
Subject: Re: [PATCH 04/14] ib_srp: Set block layer timeout
Date: Thu, 15 Dec 2011 14:37:21 -0500 [thread overview]
Message-ID: <1323977841.16703.57.camel@lap75545.ornl.gov> (raw)
In-Reply-To: <201112011959.11956.bvanassche-HInyCGIudOg@public.gmane.org>
On Thu, 2011-12-01 at 19:59 +0100, Bart Van Assche wrote:
> Make sure that the default block layer timeout is above the
> InfiniBand transport layer timeout. The default block layer
> timeout is 30 seconds. Typical values for the QP local ack
> timeout and retry count are 19 and 7 respectively, which means
> that it can take up to 60.1 seconds before a HCA submits an
> error completion. The block layer timeout must be larger than
> the transport layer timeout because otherwise it can happen
> that an SRP response is received after the SCSI layer has
> already killed a command.
Good idea, but a few nits:
> +static int srp_slave_alloc(struct scsi_device *sdev)
> +{
> + struct Scsi_Host *shost = sdev->host;
> + struct srp_target_port *target = host_to_target(shost);
> +
> + if (!WARN_ON(target->rq_tmo_jiffies == 0))
> + blk_queue_rq_timeout(sdev->request_queue,
> + target->rq_tmo_jiffies);
What does having a WARN_ON here buy us? We should just set
target->rq_tmo_jiffies to a default value in srp_create_target(), and
adjust it as needed based on the CM response.
Also, since this is a call-back routine, please put it after
srp_reset_host() rather than in the middle of the target setup and CM
handling.
> static void srp_cm_rep_handler(struct ib_cm_id *cm_id,
> struct srp_login_rsp *lrsp,
> struct srp_target_port *target)
> @@ -1431,6 +1442,24 @@ static void srp_cm_rep_handler(struct ib_cm_id *cm_id,
> if (ret)
> goto error_free;
>
> + if (!WARN_ON((attr_mask & (IB_QP_TIMEOUT | IB_QP_RETRY_CNT)) == 0)) {
Mentally unpacking that to realize the body gets executed if either of
those is set took a bit of thought... I think you will be better served
setting a default and reducing line that to
if (attr_mask & (IP_QP_TIMEOUT | IB_QP_RETRY_CNT)) {
Also, you need to handle the case where only one of those is set, and
provide defaults when they aren't -- unless the spec says they both must
always be set (I haven't looked), in which case you can modify the
attr_mask test.
> + uint64_t T_tr_ns, max_compl_time_ms;
> +
> + /*
> + * Set target->rq_tmo_jiffies to one second more than the
> + * largest time it can take before an error completion is
> + * generated.
> + */
The calculations have a fair number of magic numbers in them; may be
useful to explain.
You should be able to use nsecs_to_jiffies() instead of doing the math
yourself, but I see that's not exported. Bummer, but we can leave fixing
that for later, I think.
> + T_tr_ns = 1ULL << (12 + qp_attr->timeout);
> + max_compl_time_ms = qp_attr->retry_cnt * 4 * T_tr_ns;
> + do_div(max_compl_time_ms, 1000 * 1000);
> + target->rq_tmo_jiffies =
> + msecs_to_jiffies(max_compl_time_ms + 1000);
> + pr_debug("max. IB completion time = %lld ms; block layer"
> + " timeout = %d jiffies\n", max_compl_time_ms,
> + target->rq_tmo_jiffies);
Is the debug statement really needed? Though I suppose it isn't really
hurting anything...
> diff --git a/drivers/infiniband/ulp/srp/ib_srp.h b/drivers/infiniband/ulp/srp/ib_srp.h
> index 020caf0..f010bd9 100644
> --- a/drivers/infiniband/ulp/srp/ib_srp.h
> +++ b/drivers/infiniband/ulp/srp/ib_srp.h
> @@ -138,6 +138,7 @@ struct srp_target_port {
> u32 lkey;
> u32 rkey;
> enum srp_target_state state;
> + u32 rq_tmo_jiffies;
> unsigned int max_iu_len;
Please don't put that in the middle of the options used in the hot path;
it should go further down in the struct, somewhere after the comment
/* Everything above this point is used in the hot path of
* command processing. Try to keep them packed into cachelines.
*/
Bonus points if you can shove into a hole caused by packing rules.
--
Dave Dillow
National Center for Computational Science
Oak Ridge National Laboratory
(865) 241-6602 office
--
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-15 19:37 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
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
[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 ` [PATCH 03/14] ib_srp: Disallow duplicate logins Bart Van Assche
[not found] ` <201112011958.17339.bvanassche-HInyCGIudOg@public.gmane.org>
2011-12-15 19:08 ` 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 [this message]
[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: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=1323977841.16703.57.camel@lap75545.ornl.gov \
--to=dillowda-1heg1yxhbw8@public.gmane.org \
--cc=bvanassche-HInyCGIudOg@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