forked from Minki/linux
[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>
This commit is contained in:
parent
4d97cc5342
commit
ff454b01b4
@ -1757,6 +1757,8 @@ check_scsi_status:
|
||||
case CS_INCOMPLETE:
|
||||
case CS_PORT_UNAVAILABLE:
|
||||
case CS_TIMEOUT:
|
||||
case CS_RESET:
|
||||
|
||||
/*
|
||||
* We are going to have the fc class block the rport
|
||||
* while we try to recover so instruct the mid layer
|
||||
@ -1781,10 +1783,6 @@ check_scsi_status:
|
||||
qla2x00_mark_device_lost(fcport->vha, fcport, 1, 1);
|
||||
break;
|
||||
|
||||
case CS_RESET:
|
||||
cp->result = DID_TRANSPORT_DISRUPTED << 16;
|
||||
break;
|
||||
|
||||
case CS_ABORTED:
|
||||
cp->result = DID_RESET << 16;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user