[SCSI] fc class: Add support for new transport errors
authorMike Christie <michaelc@cs.wisc.edu>
Tue, 19 Aug 2008 23:45:27 +0000 (18:45 -0500)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 13 Oct 2008 13:28:49 +0000 (09:28 -0400)
If the target is blocked and fast io fail tmo has not fired
then we requeue with DID_TRANSPORT_DISRUPTED. Once that
tmo fires we fail with DID_TRANSPORT_FAILFAST.

v2
- seperate from
"fc class: unblock target after calling terminate callback"
to make it easier to review.
- Add JamesS's ack from list.
v2
- initial patch

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Acked-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
include/scsi/scsi_transport_fc.h

index fb8d013..49d8913 100644 (file)
@@ -679,15 +679,15 @@ fc_remote_port_chkready(struct fc_rport *rport)
                if (rport->roles & FC_PORT_ROLE_FCP_TARGET)
                        result = 0;
                else if (rport->flags & FC_RPORT_DEVLOSS_PENDING)
-                       result = DID_IMM_RETRY << 16;
+                       result = DID_TRANSPORT_DISRUPTED << 16;
                else
                        result = DID_NO_CONNECT << 16;
                break;
        case FC_PORTSTATE_BLOCKED:
                if (rport->flags & FC_RPORT_FAST_FAIL_TIMEDOUT)
-                       result = DID_NO_CONNECT << 16;
+                       result = DID_TRANSPORT_FAILFAST << 16;
                else
-                       result = DID_IMM_RETRY << 16;
+                       result = DID_TRANSPORT_DISRUPTED << 16;
                break;
        default:
                result = DID_NO_CONNECT << 16;