aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-06-03 12:55:18 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-06-08 15:46:43 -0400
commit94b3aa47ac1ea0aa31b3f59ad121cdf55e038594 (patch)
tree308dd3f096153b0217f8accc8de6e1746fc7d1d2 /drivers
parentcbc8eb67da11a4972834f61fe4729f4c037a17c9 (diff)
[SCSI] qla2xxx: Use 'proper' DID_* status code for dropped-frame scenarios.
The SCSI-midlayer's fast-fail codes consider an DID_ERROR status as a driver-error and the failed I/O would then be retried in the midlayer without being fast-failed to dm-multipath. DID_BUS_BUSY status returns would induce unneeded path-failures events being propagated to the DM/MD. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/qla2xxx/qla_isr.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index eb35d2050f7a..c8d0a176fea4 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -1211,7 +1211,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1211 /* 1211 /*
1212 * If RISC reports underrun and target does not report 1212 * If RISC reports underrun and target does not report
1213 * it then we must have a lost frame, so tell upper 1213 * it then we must have a lost frame, so tell upper
1214 * layer to retry it by reporting a bus busy. 1214 * layer to retry it by reporting an error.
1215 */ 1215 */
1216 if (!(scsi_status & SS_RESIDUAL_UNDER)) { 1216 if (!(scsi_status & SS_RESIDUAL_UNDER)) {
1217 DEBUG2(printk("scsi(%ld:%d:%d:%d) Dropped " 1217 DEBUG2(printk("scsi(%ld:%d:%d:%d) Dropped "
@@ -1221,7 +1221,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
1221 cp->device->id, cp->device->lun, resid, 1221 cp->device->id, cp->device->lun, resid,
1222 scsi_bufflen(cp))); 1222 scsi_bufflen(cp)));
1223 1223
1224 cp->result = DID_BUS_BUSY << 16; 1224 cp->result = DID_ERROR << 16;
1225 break; 1225 break;
1226 } 1226 }
1227 1227