[SCSI] qla2xxx: Correct EH bus-reset handling.
Target-level resets are unlikely to complete if done after the bus (LIP/OLS/NOS) has been reset. Perform target-level resets, if necessary, prior to hitting the bus. Cc: stable@kernel.org Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
db3ad7f885
commit
55e5ed273d
|
@ -1095,6 +1095,20 @@ qla2x00_loop_reset(scsi_qla_host_t *vha)
|
||||||
struct fc_port *fcport;
|
struct fc_port *fcport;
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
|
|
||||||
|
if (ha->flags.enable_target_reset) {
|
||||||
|
list_for_each_entry(fcport, &vha->vp_fcports, list) {
|
||||||
|
if (fcport->port_type != FCT_TARGET)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ret = ha->isp_ops->target_reset(fcport, 0, 0);
|
||||||
|
if (ret != QLA_SUCCESS) {
|
||||||
|
DEBUG2_3(printk("%s(%ld): bus_reset failed: "
|
||||||
|
"target_reset=%d d_id=%x.\n", __func__,
|
||||||
|
vha->host_no, ret, fcport->d_id.b24));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (ha->flags.enable_lip_full_login && !IS_QLA81XX(ha)) {
|
if (ha->flags.enable_lip_full_login && !IS_QLA81XX(ha)) {
|
||||||
ret = qla2x00_full_login_lip(vha);
|
ret = qla2x00_full_login_lip(vha);
|
||||||
if (ret != QLA_SUCCESS) {
|
if (ret != QLA_SUCCESS) {
|
||||||
|
@ -1117,19 +1131,6 @@ qla2x00_loop_reset(scsi_qla_host_t *vha)
|
||||||
qla2x00_wait_for_loop_ready(vha);
|
qla2x00_wait_for_loop_ready(vha);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ha->flags.enable_target_reset) {
|
|
||||||
list_for_each_entry(fcport, &vha->vp_fcports, list) {
|
|
||||||
if (fcport->port_type != FCT_TARGET)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
ret = ha->isp_ops->target_reset(fcport, 0, 0);
|
|
||||||
if (ret != QLA_SUCCESS) {
|
|
||||||
DEBUG2_3(printk("%s(%ld): bus_reset failed: "
|
|
||||||
"target_reset=%d d_id=%x.\n", __func__,
|
|
||||||
vha->host_no, ret, fcport->d_id.b24));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Issue marker command only when we are going to start the I/O */
|
/* Issue marker command only when we are going to start the I/O */
|
||||||
vha->marker_needed = 1;
|
vha->marker_needed = 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue