[SCSI] qla4xxx: Fix Driver Fault Recovery Completion
Fixed driver bug where adapter recovery did not complete if there were outstanding commands detected on that host adapter. Signed-off-by: Karen Higgins <karen.higgins@qlogic.com> Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
5c656af7e4
commit
dca05c4c07
1 changed files with 9 additions and 10 deletions
|
@ -921,18 +921,17 @@ static int qla4xxx_recover_adapter(struct scsi_qla_host *ha,
|
||||||
/* Flush any pending ddb changed AENs */
|
/* Flush any pending ddb changed AENs */
|
||||||
qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
|
qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
|
||||||
|
|
||||||
|
qla4xxx_flush_active_srbs(ha);
|
||||||
|
|
||||||
/* Reset the firmware. If successful, function
|
/* Reset the firmware. If successful, function
|
||||||
* returns with ISP interrupts enabled.
|
* returns with ISP interrupts enabled.
|
||||||
*/
|
*/
|
||||||
if (status == QLA_SUCCESS) {
|
DEBUG2(printk("scsi%ld: %s - Performing soft reset..\n",
|
||||||
DEBUG2(printk("scsi%ld: %s - Performing soft reset..\n",
|
ha->host_no, __func__));
|
||||||
ha->host_no, __func__));
|
if (ql4xxx_lock_drvr_wait(ha) == QLA_SUCCESS)
|
||||||
qla4xxx_flush_active_srbs(ha);
|
status = qla4xxx_soft_reset(ha);
|
||||||
if (ql4xxx_lock_drvr_wait(ha) == QLA_SUCCESS)
|
else
|
||||||
status = qla4xxx_soft_reset(ha);
|
status = QLA_ERROR;
|
||||||
else
|
|
||||||
status = QLA_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Flush any pending ddb changed AENs */
|
/* Flush any pending ddb changed AENs */
|
||||||
qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
|
qla4xxx_process_aen(ha, FLUSH_DDB_CHANGED_AENS);
|
||||||
|
@ -1661,7 +1660,7 @@ static int qla4xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
||||||
ha = (struct scsi_qla_host *) cmd->device->host->hostdata;
|
ha = (struct scsi_qla_host *) cmd->device->host->hostdata;
|
||||||
|
|
||||||
dev_info(&ha->pdev->dev,
|
dev_info(&ha->pdev->dev,
|
||||||
"scsi(%ld:%d:%d:%d): ADAPTER RESET ISSUED.\n", ha->host_no,
|
"scsi(%ld:%d:%d:%d): HOST RESET ISSUED.\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
if (qla4xxx_wait_for_hba_online(ha) != QLA_SUCCESS) {
|
if (qla4xxx_wait_for_hba_online(ha) != QLA_SUCCESS) {
|
||||||
|
|
Reference in a new issue