aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_init.c
diff options
context:
space:
mode:
authorLalit Chandivade <lalit.chandivade@qlogic.com>2010-09-03 18:20:53 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-09-05 14:35:00 -0400
commitbddd2d65a48c492d3e585e65df0be89c58b4acda (patch)
treee606ba12087245ba05f62047811305edb108003e /drivers/scsi/qla2xxx/qla_init.c
parent77e334d240aa0a771f861656d639ea13e9fc6569 (diff)
[SCSI] qla2xxx: Update to AER support, do early abort commands.
Currently the IOs are returned back in slot reset, this could be late and can cause error handler to invoke. If error handler invokes, eh_abort fails and escalate to device/bus/host resets causing issues. The commands need to be returned back to upper layer in io_error_detected. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_init.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 9f71226e0a3e..f2da5c5dacdd 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -3835,17 +3835,19 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha)
3835 LOOP_DOWN_TIME); 3835 LOOP_DOWN_TIME);
3836 } 3836 }
3837 3837
3838 /* Make sure for ISP 82XX IO DMA is complete */ 3838 if (!ha->flags.eeh_busy) {
3839 if (IS_QLA82XX(ha)) { 3839 /* Make sure for ISP 82XX IO DMA is complete */
3840 if (qla2x00_eh_wait_for_pending_commands(vha, 0, 0, 3840 if (IS_QLA82XX(ha)) {
3841 WAIT_HOST) == QLA_SUCCESS) { 3841 if (qla2x00_eh_wait_for_pending_commands(vha, 0, 0,
3842 DEBUG2(qla_printk(KERN_INFO, ha, 3842 WAIT_HOST) == QLA_SUCCESS) {
3843 "Done wait for pending commands\n")); 3843 DEBUG2(qla_printk(KERN_INFO, ha,
3844 "Done wait for pending commands\n"));
3845 }
3844 } 3846 }
3845 }
3846 3847
3847 /* Requeue all commands in outstanding command list. */ 3848 /* Requeue all commands in outstanding command list. */
3848 qla2x00_abort_all_cmds(vha, DID_RESET << 16); 3849 qla2x00_abort_all_cmds(vha, DID_RESET << 16);
3850 }
3849} 3851}
3850 3852
3851/* 3853/*