From: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
To: Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: David Dillow <dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org>,
Vu Pham <vuhuong-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Sebastian Riemer
<sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>,
linux-rdma <linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: [PATCH v2 09/15] IB/srp: Add srp_terminate_io()
Date: Fri, 28 Jun 2013 14:54:22 +0200 [thread overview]
Message-ID: <51CD877E.80606@acm.org> (raw)
In-Reply-To: <51CD856A.3010102-HInyCGIudOg@public.gmane.org>
Finish all outstanding I/O requests after fast_io_fail_tmo expired,
which speeds up failover in a multipath setup. This patch is a
reworked version of a patch from Sebastian Riemer.
Reported-by: Sebastian Riemer <sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
Signed-off-by: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
Cc: Roland Dreier <roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: David Dillow <dillowda-1Heg1YXhbW8@public.gmane.org>
Cc: Vu Pham <vu-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: Sebastian Riemer <sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
---
drivers/infiniband/ulp/srp/ib_srp.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index cb86be5..16c3612 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -686,17 +686,29 @@ static void srp_free_req(struct srp_target_port *target,
spin_unlock_irqrestore(&target->lock, flags);
}
-static void srp_reset_req(struct srp_target_port *target, struct srp_request *req)
+static void srp_finish_req(struct srp_target_port *target,
+ struct srp_request *req, int result)
{
struct scsi_cmnd *scmnd = srp_claim_req(target, req, NULL);
if (scmnd) {
srp_free_req(target, req, scmnd, 0);
- scmnd->result = DID_RESET << 16;
+ scmnd->result = result;
scmnd->scsi_done(scmnd);
}
}
+static void srp_terminate_io(struct srp_rport *rport)
+{
+ struct srp_target_port *target = rport->lld_data;
+ int i;
+
+ for (i = 0; i < SRP_CMD_SQ_SIZE; ++i) {
+ struct srp_request *req = &target->req_ring[i];
+ srp_finish_req(target, req, DID_TRANSPORT_FAILFAST << 16);
+ }
+}
+
static int srp_reconnect_target(struct srp_target_port *target)
{
struct Scsi_Host *shost = target->scsi_host;
@@ -723,8 +735,7 @@ static int srp_reconnect_target(struct srp_target_port *target)
for (i = 0; i < SRP_CMD_SQ_SIZE; ++i) {
struct srp_request *req = &target->req_ring[i];
- if (req->scmnd)
- srp_reset_req(target, req);
+ srp_finish_req(target, req, DID_RESET << 16);
}
INIT_LIST_HEAD(&target->free_tx);
@@ -1784,7 +1795,7 @@ static int srp_reset_device(struct scsi_cmnd *scmnd)
for (i = 0; i < SRP_CMD_SQ_SIZE; ++i) {
struct srp_request *req = &target->req_ring[i];
if (req->scmnd && req->scmnd->device == scmnd->device)
- srp_reset_req(target, req);
+ srp_finish_req(target, req, DID_RESET << 16);
}
return SUCCESS;
@@ -2596,6 +2607,7 @@ static void srp_remove_one(struct ib_device *device)
static struct srp_function_template ib_srp_transport_functions = {
.rport_delete = srp_rport_delete,
+ .terminate_rport_io = srp_terminate_io,
};
static int __init srp_init_module(void)
--
1.7.10.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:[~2013-06-28 12:54 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-28 12:45 [PATCH v2 0/15] IB SRP initiator patches for kernel 3.11 Bart Van Assche
[not found] ` <51CD856A.3010102-HInyCGIudOg@public.gmane.org>
2013-06-28 12:46 ` [PATCH v2 01/15] IB/srp: Fix remove_one crash due to resource exhaustion Bart Van Assche
2013-06-28 12:48 ` [PATCH v2 02/15] IB/srp: Fix race between srp_queuecommand() and srp_claim_req() Bart Van Assche
[not found] ` <51CD8604.5010801-HInyCGIudOg@public.gmane.org>
2013-06-28 14:42 ` Sebastian Riemer
[not found] ` <51CDA0CD.6060504-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-06-28 14:51 ` Bart Van Assche
[not found] ` <51CDA2E5.2010704-HInyCGIudOg@public.gmane.org>
2013-06-28 15:08 ` Sebastian Riemer
2013-06-30 19:59 ` David Dillow
[not found] ` <1372622347.12468.9.camel-a7a0dvSY7KqLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2013-07-01 7:10 ` Bart Van Assche
2013-06-28 12:49 ` [PATCH v2 03/15] IB/srp: Avoid that srp_reset_host() is skipped after a TL error Bart Van Assche
[not found] ` <51CD8644.5080600-HInyCGIudOg@public.gmane.org>
2013-06-30 20:00 ` David Dillow
2013-06-28 12:49 ` [PATCH v2 04/15] IB/srp: Fail I/O fast if target offline Bart Van Assche
[not found] ` <51CD8676.6080205-HInyCGIudOg@public.gmane.org>
2013-06-30 20:02 ` David Dillow
2013-07-01 9:07 ` Sebastian Riemer
[not found] ` <51D146EE.6010209-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-07-01 11:33 ` Bart Van Assche
[not found] ` <51D16918.60600-HInyCGIudOg@public.gmane.org>
2013-07-01 11:53 ` Sebastian Riemer
2013-07-01 9:25 ` Sebastian Riemer
[not found] ` <51D14AF1.4000803-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-07-01 11:38 ` Bart Van Assche
[not found] ` <51D16A39.4050709-HInyCGIudOg@public.gmane.org>
2013-07-01 12:31 ` Sebastian Riemer
[not found] ` <51D176B5.90609-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-07-01 12:57 ` Bart Van Assche
2013-07-02 8:30 ` Sebastian Riemer
2013-06-28 12:50 ` [PATCH v2 05/15] IB/srp: Skip host settle delay Bart Van Assche
2013-06-28 12:51 ` [PATCH v2 06/15] IB/srp: Maintain a single connection per I_T nexus Bart Van Assche
[not found] ` <51CD86CE.8080804-HInyCGIudOg@public.gmane.org>
2013-06-30 20:10 ` David Dillow
2013-06-28 12:52 ` [PATCH v2 07/15] IB/srp: Keep rport as long as the IB transport layer Bart Van Assche
2013-06-30 21:06 ` David Dillow
2013-06-28 12:54 ` Bart Van Assche [this message]
[not found] ` <51CD877E.80606-HInyCGIudOg@public.gmane.org>
2013-06-30 21:10 ` [PATCH v2 09/15] IB/srp: Add srp_terminate_io() David Dillow
2013-06-28 12:55 ` [PATCH v2 10/15] IB/srp: Use SRP transport layer error recovery Bart Van Assche
[not found] ` <51CD87A9.2090702-HInyCGIudOg@public.gmane.org>
2013-06-30 21:20 ` David Dillow
2013-06-28 12:55 ` [PATCH v2 11/15] IB/srp: Start timers if a transport layer error occurs Bart Van Assche
[not found] ` <51CD87D7.3050300-HInyCGIudOg@public.gmane.org>
2013-06-30 21:21 ` David Dillow
2013-06-28 12:57 ` [PATCH v2 13/15] IB/srp: Make HCA completion vector configurable Bart Van Assche
[not found] ` <51CD8846.4070400-HInyCGIudOg@public.gmane.org>
2013-06-30 21:26 ` David Dillow
2013-06-28 12:58 ` [PATCH v2 14/15] IB/srp: Make transport layer retry count configurable Bart Van Assche
[not found] ` <51CD8876.9020307-HInyCGIudOg@public.gmane.org>
2013-06-30 21:48 ` David Dillow
[not found] ` <1372628891.12468.52.camel-a7a0dvSY7KqLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2013-07-01 8:18 ` Bart Van Assche
[not found] ` <51D13B52.5060803-HInyCGIudOg@public.gmane.org>
2013-07-01 11:26 ` David Dillow
[not found] ` <1372677965.12468.57.camel-a7a0dvSY7KqLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2013-07-01 11:44 ` Bart Van Assche
2013-07-02 19:18 ` Jason Gunthorpe
[not found] ` <20130702191842.GD14625-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2013-07-03 14:26 ` David Dillow
2013-06-28 12:59 ` [PATCH v2 15/15] IB/srp: Bump driver version and release date Bart Van Assche
2013-06-28 12:53 ` [PATCH v2 08/15] scsi_transport_srp: Add transport layer error handling Bart Van Assche
2013-06-30 21:05 ` David Dillow
[not found] ` <1372626334.12468.34.camel-a7a0dvSY7KqLUyTwlgNVppKKF0rrzTr+@public.gmane.org>
2013-07-01 7:01 ` Bart Van Assche
[not found] ` <51D12941.3050105-HInyCGIudOg@public.gmane.org>
2013-07-01 11:19 ` David Dillow
2013-06-28 12:56 ` [PATCH v2 12/15] IB/srp: Fail SCSI commands silently Bart Van Assche
[not found] ` <51CD8812.20107-HInyCGIudOg@public.gmane.org>
2013-06-30 21:25 ` 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=51CD877E.80606@acm.org \
--to=bvanassche-hinycgiudog@public.gmane.org \
--cc=dave-i1Mk8JYDVaaSihdK6806/g@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org \
--cc=vuhuong-VPRAkNaXOzVWk0Htik3J/w@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