[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>

authored by

Seokmann Ju and committed by
James Bottomley
8f0d6436 246de42c

+3 -11
-1
drivers/scsi/qla2xxx/qla_mid.c
··· 105 105 "loop_id=0x%04x :%x\n", 106 106 vha->host_no, fcport->loop_id, fcport->vp_idx)); 107 107 108 - atomic_set(&fcport->state, FCS_DEVICE_DEAD); 109 108 qla2x00_mark_device_lost(vha, fcport, 0, 0); 110 109 } 111 110 }
+3 -10
drivers/scsi/qla2xxx/qla_os.c
··· 1931 1931 scsi_qla_host_t *pha = to_qla_parent(ha); 1932 1932 1933 1933 list_for_each_entry(fcport, &pha->fcports, list) { 1934 - if (ha->vp_idx != 0 && ha->vp_idx != fcport->vp_idx) 1934 + if (ha->vp_idx != fcport->vp_idx) 1935 1935 continue; 1936 1936 /* 1937 1937 * No point in marking the device as lost, if the device is ··· 1939 1939 */ 1940 1940 if (atomic_read(&fcport->state) == FCS_DEVICE_DEAD) 1941 1941 continue; 1942 - if (atomic_read(&fcport->state) == FCS_ONLINE) { 1943 - if (defer) 1944 - qla2x00_schedule_rport_del(ha, fcport, defer); 1945 - else if (ha->vp_idx == fcport->vp_idx) 1946 - qla2x00_schedule_rport_del(ha, fcport, defer); 1947 - } 1942 + if (atomic_read(&fcport->state) == FCS_ONLINE) 1943 + qla2x00_schedule_rport_del(ha, fcport, defer); 1948 1944 atomic_set(&fcport->state, FCS_DEVICE_LOST); 1949 1945 } 1950 - 1951 - if (defer) 1952 - qla2xxx_wake_dpc(ha); 1953 1946 } 1954 1947 1955 1948 /*