Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 276807
b: refs/heads/master
c: ad53768
h: refs/heads/master
i:
  276805: fa8b757
  276803: 22436fa
  276799: c0aa65c
v: v3
  • Loading branch information
Saurav Kashyap authored and James Bottomley committed Dec 12, 2011
1 parent 528f44f commit 4680338
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 67 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f6a290b419a2675c4b77a6b0731cd2a64332365e
refs/heads/master: ad537689c30d8e35300dcc93a109a966b8a89478
70 changes: 4 additions & 66 deletions trunk/drivers/scsi/qla2xxx/qla_os.c
Original file line number Diff line number Diff line change
Expand Up @@ -814,49 +814,6 @@ qla2x00_wait_for_chip_reset(scsi_qla_host_t *vha)
return return_status;
}

/*
* qla2x00_wait_for_loop_ready
* Wait for MAX_LOOP_TIMEOUT(5 min) value for loop
* to be in LOOP_READY state.
* Input:
* ha - pointer to host adapter structure
*
* Note:
* Does context switching-Release SPIN_LOCK
* (if any) before calling this routine.
*
*
* Return:
* Success (LOOP_READY) : 0
* Failed (LOOP_NOT_READY) : 1
*/
static inline int
qla2x00_wait_for_loop_ready(scsi_qla_host_t *vha)
{
int return_status = QLA_SUCCESS;
unsigned long loop_timeout ;
struct qla_hw_data *ha = vha->hw;
scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);

/* wait for 5 min at the max for loop to be ready */
loop_timeout = jiffies + (MAX_LOOP_TIMEOUT * HZ);

while ((!atomic_read(&base_vha->loop_down_timer) &&
atomic_read(&base_vha->loop_state) == LOOP_DOWN) ||
atomic_read(&base_vha->loop_state) != LOOP_READY) {
if (atomic_read(&base_vha->loop_state) == LOOP_DEAD) {
return_status = QLA_FUNCTION_FAILED;
break;
}
msleep(1000);
if (time_after_eq(jiffies, loop_timeout)) {
return_status = QLA_FUNCTION_FAILED;
break;
}
}
return (return_status);
}

static void
sp_get(struct srb *sp)
{
Expand Down Expand Up @@ -1035,12 +992,6 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
"Wait for hba online failed for cmd=%p.\n", cmd);
goto eh_reset_failed;
}
err = 1;
if (qla2x00_wait_for_loop_ready(vha) != QLA_SUCCESS) {
ql_log(ql_log_warn, vha, 0x800b,
"Wait for loop ready failed for cmd=%p.\n", cmd);
goto eh_reset_failed;
}
err = 2;
if (do_reset(fcport, cmd->device->lun, cmd->request->cpu + 1)
!= QLA_SUCCESS) {
Expand Down Expand Up @@ -1137,10 +1088,9 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
goto eh_bus_reset_done;
}

if (qla2x00_wait_for_loop_ready(vha) == QLA_SUCCESS) {
if (qla2x00_loop_reset(vha) == QLA_SUCCESS)
ret = SUCCESS;
}
if (qla2x00_loop_reset(vha) == QLA_SUCCESS)
ret = SUCCESS;

if (ret == FAILED)
goto eh_bus_reset_done;

Expand Down Expand Up @@ -1206,15 +1156,6 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
if (qla2x00_wait_for_reset_ready(vha) != QLA_SUCCESS)
goto eh_host_reset_lock;

/*
* Fixme-may be dpc thread is active and processing
* loop_resync,so wait a while for it to
* be completed and then issue big hammer.Otherwise
* it may cause I/O failure as big hammer marks the
* devices as lost kicking of the port_down_timer
* while dpc is stuck for the mailbox to complete.
*/
qla2x00_wait_for_loop_ready(vha);
if (vha != base_vha) {
if (qla2x00_vp_abort_isp(vha))
goto eh_host_reset_lock;
Expand Down Expand Up @@ -1297,16 +1238,13 @@ qla2x00_loop_reset(scsi_qla_host_t *vha)
atomic_set(&vha->loop_state, LOOP_DOWN);
atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
qla2x00_mark_all_devices_lost(vha, 0);
qla2x00_wait_for_loop_ready(vha);
}

if (ha->flags.enable_lip_reset) {
ret = qla2x00_lip_reset(vha);
if (ret != QLA_SUCCESS) {
if (ret != QLA_SUCCESS)
ql_dbg(ql_dbg_taskm, vha, 0x802e,
"lip_reset failed (%d).\n", ret);
} else
qla2x00_wait_for_loop_ready(vha);
}

/* Issue marker command only when we are going to start the I/O */
Expand Down

0 comments on commit 4680338

Please sign in to comment.