| From 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be Mon Sep 17 00:00:00 2001 |
| From: Mike Christie <michaelc@cs.wisc.edu> |
| Date: Thu, 5 Nov 2009 11:18:09 -0600 |
| Subject: [SCSI] fc class: fail fast bsg requests |
| |
| From: Mike Christie <michaelc@cs.wisc.edu> |
| |
| commit 2bc1c59dbdefdb6f9767e06efb86bbdb2923a8be upstream. |
| |
| If the port state is blocked and the fast io fail tmo has |
| fired then this patch will fail bsg requests immediately. |
| This is needed if userspace is sending IOs to test the transport |
| like with fcping, so it will not have to wait for the dev loss tmo. |
| With this patch he bsg req fast io fail code behaves like the normal |
| and sg io/passthrough fast io fail. |
| |
| Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> |
| Acked-By: James Smart <james.smart@emulex.com> |
| Signed-off-by: James Bottomley <James.Bottomley@suse.de> |
| Cc: maximilian attems <max@stro.at> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/scsi/scsi_transport_fc.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/scsi/scsi_transport_fc.c |
| +++ b/drivers/scsi/scsi_transport_fc.c |
| @@ -3796,8 +3796,9 @@ fc_bsg_request_handler(struct request_qu |
| return; |
| |
| while (!blk_queue_plugged(q)) { |
| - if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED)) |
| - break; |
| + if (rport && (rport->port_state == FC_PORTSTATE_BLOCKED) && |
| + !(rport->flags & FC_RPORT_FAST_FAIL_TIMEDOUT)) |
| + break; |
| |
| req = blk_fetch_request(q); |
| if (!req) |