diff options
author | Chad Dupuis <chad.dupuis@qlogic.com> | 2010-10-15 14:27:42 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-10-25 17:00:22 -0400 |
commit | ff454b01b4ebe60b14092943978000928bf8c551 (patch) | |
tree | 7652f7b9e6fd5577938b52952615ad3ca76618aa /drivers/scsi | |
parent | 4d97cc5342ebb1bef83477fafe18490dd8c59464 (diff) |
[SCSI] qla2xxx: Group CS_RESET return status with other link level event statuses.
Currently when we receive a CS_RESET as a response for a SCSI command the
driver will return DID_TRANSPORT_DISRUPTED back to the SCSI mid-layer. There
are certain circumstances where this could cause the mid-layer to exhaust all of
its retries if the FC port goes away for a short time. This will result in
commands being prematurly failed. Moving the CS_RESET return code to be
grouped with other link level events will cause the FC transport layer to block
that target's queue thus preventing the premature exhaustion of retries.
Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_isr.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index e0e43d9e7ed1..55870a36ec6a 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c | |||
@@ -1757,6 +1757,8 @@ check_scsi_status: | |||
1757 | case CS_INCOMPLETE: | 1757 | case CS_INCOMPLETE: |
1758 | case CS_PORT_UNAVAILABLE: | 1758 | case CS_PORT_UNAVAILABLE: |
1759 | case CS_TIMEOUT: | 1759 | case CS_TIMEOUT: |
1760 | case CS_RESET: | ||
1761 | |||
1760 | /* | 1762 | /* |
1761 | * We are going to have the fc class block the rport | 1763 | * We are going to have the fc class block the rport |
1762 | * while we try to recover so instruct the mid layer | 1764 | * while we try to recover so instruct the mid layer |
@@ -1781,10 +1783,6 @@ check_scsi_status: | |||
1781 | qla2x00_mark_device_lost(fcport->vha, fcport, 1, 1); | 1783 | qla2x00_mark_device_lost(fcport->vha, fcport, 1, 1); |
1782 | break; | 1784 | break; |
1783 | 1785 | ||
1784 | case CS_RESET: | ||
1785 | cp->result = DID_TRANSPORT_DISRUPTED << 16; | ||
1786 | break; | ||
1787 | |||
1788 | case CS_ABORTED: | 1786 | case CS_ABORTED: |
1789 | cp->result = DID_RESET << 16; | 1787 | cp->result = DID_RESET << 16; |
1790 | break; | 1788 | break; |