[SCSI] qla2xxx: Correct fcport state-management during loss.
All fcport->state management should be done within qla2x00_mark_device_lost(), the assignment of state within qla2x00_mark_vp_devices_dead() caused associated rports to not be removed. Signed-off-by: Seokmann Ju <seokmann.ju@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
246de42cfc
commit
8f0d6436d2
|
@ -105,7 +105,6 @@ qla2x00_mark_vp_devices_dead(scsi_qla_host_t *vha)
|
||||||
"loop_id=0x%04x :%x\n",
|
"loop_id=0x%04x :%x\n",
|
||||||
vha->host_no, fcport->loop_id, fcport->vp_idx));
|
vha->host_no, fcport->loop_id, fcport->vp_idx));
|
||||||
|
|
||||||
atomic_set(&fcport->state, FCS_DEVICE_DEAD);
|
|
||||||
qla2x00_mark_device_lost(vha, fcport, 0, 0);
|
qla2x00_mark_device_lost(vha, fcport, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1931,7 +1931,7 @@ qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha, int defer)
|
||||||
scsi_qla_host_t *pha = to_qla_parent(ha);
|
scsi_qla_host_t *pha = to_qla_parent(ha);
|
||||||
|
|
||||||
list_for_each_entry(fcport, &pha->fcports, list) {
|
list_for_each_entry(fcport, &pha->fcports, list) {
|
||||||
if (ha->vp_idx != 0 && ha->vp_idx != fcport->vp_idx)
|
if (ha->vp_idx != fcport->vp_idx)
|
||||||
continue;
|
continue;
|
||||||
/*
|
/*
|
||||||
* No point in marking the device as lost, if the device is
|
* No point in marking the device as lost, if the device is
|
||||||
|
@ -1939,17 +1939,10 @@ qla2x00_mark_all_devices_lost(scsi_qla_host_t *ha, int defer)
|
||||||
*/
|
*/
|
||||||
if (atomic_read(&fcport->state) == FCS_DEVICE_DEAD)
|
if (atomic_read(&fcport->state) == FCS_DEVICE_DEAD)
|
||||||
continue;
|
continue;
|
||||||
if (atomic_read(&fcport->state) == FCS_ONLINE) {
|
if (atomic_read(&fcport->state) == FCS_ONLINE)
|
||||||
if (defer)
|
qla2x00_schedule_rport_del(ha, fcport, defer);
|
||||||
qla2x00_schedule_rport_del(ha, fcport, defer);
|
|
||||||
else if (ha->vp_idx == fcport->vp_idx)
|
|
||||||
qla2x00_schedule_rport_del(ha, fcport, defer);
|
|
||||||
}
|
|
||||||
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defer)
|
|
||||||
qla2xxx_wake_dpc(ha);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue