forked from luck/tmp_suning_uos_patched
[SCSI] qla2xxx: Log fcport state transitions when debug messages are enabled.
Add the inline function qla2x00_set_port_state() so that when a fcport state transition happens we can log the state transition if debug messages are enabled. Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
a4f92a32a0
commit
ec426e106c
@ -1568,7 +1568,7 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
|
||||
|
||||
/* Now that the rport has been deleted, set the fcport state to
|
||||
FCS_DEVICE_DEAD */
|
||||
atomic_set(&fcport->state, FCS_DEVICE_DEAD);
|
||||
qla2x00_set_fcport_state(fcport, FCS_DEVICE_DEAD);
|
||||
|
||||
/*
|
||||
* Transport has effectively 'deleted' the rport, clear
|
||||
|
@ -1717,6 +1717,14 @@ typedef struct fc_port {
|
||||
#define FCS_DEVICE_LOST 3
|
||||
#define FCS_ONLINE 4
|
||||
|
||||
static const char * const port_state_str[] = {
|
||||
"Unknown",
|
||||
"UNCONFIGURED",
|
||||
"DEAD",
|
||||
"LOST",
|
||||
"ONLINE"
|
||||
};
|
||||
|
||||
/*
|
||||
* FC port flags.
|
||||
*/
|
||||
|
@ -2544,7 +2544,7 @@ qla2x00_alloc_fcport(scsi_qla_host_t *vha, gfp_t flags)
|
||||
fcport->vp_idx = vha->vp_idx;
|
||||
fcport->port_type = FCT_UNKNOWN;
|
||||
fcport->loop_id = FC_NO_LOOP_ID;
|
||||
atomic_set(&fcport->state, FCS_UNCONFIGURED);
|
||||
qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED);
|
||||
fcport->supported_classes = FC_COS_UNSPECIFIED;
|
||||
|
||||
return fcport;
|
||||
@ -2730,7 +2730,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *vha)
|
||||
"loop_id=0x%04x\n",
|
||||
vha->host_no, fcport->loop_id));
|
||||
|
||||
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
||||
qla2x00_set_fcport_state(fcport, FCS_DEVICE_LOST);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2942,7 +2942,7 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
|
||||
qla2x00_iidma_fcport(vha, fcport);
|
||||
qla24xx_update_fcport_fcp_prio(vha, fcport);
|
||||
qla2x00_reg_remote_port(vha, fcport);
|
||||
atomic_set(&fcport->state, FCS_ONLINE);
|
||||
qla2x00_set_fcport_state(fcport, FCS_ONLINE);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -83,3 +83,22 @@ qla2x00_clean_dsd_pool(struct qla_hw_data *ha, srb_t *sp)
|
||||
}
|
||||
INIT_LIST_HEAD(&((struct crc_context *)sp->ctx)->dsd_list);
|
||||
}
|
||||
|
||||
static inline void
|
||||
qla2x00_set_fcport_state(fc_port_t *fcport, int state)
|
||||
{
|
||||
int old_state;
|
||||
|
||||
old_state = atomic_read(&fcport->state);
|
||||
atomic_set(&fcport->state, state);
|
||||
|
||||
/* Don't print state transitions during initial allocation of fcport */
|
||||
if (old_state && old_state != state) {
|
||||
DEBUG(qla_printk(KERN_WARNING, fcport->vha->hw,
|
||||
"scsi(%ld): FCPort state transitioned from %s to %s - "
|
||||
"portid=%02x%02x%02x.\n", fcport->vha->host_no,
|
||||
port_state_str[old_state], port_state_str[state],
|
||||
fcport->d_id.b.domain, fcport->d_id.b.area,
|
||||
fcport->d_id.b.al_pa));
|
||||
}
|
||||
}
|
||||
|
@ -136,7 +136,7 @@ qla2x00_mark_vp_devices_dead(scsi_qla_host_t *vha)
|
||||
vha->host_no, fcport->loop_id, fcport->vp_idx));
|
||||
|
||||
qla2x00_mark_device_lost(vha, fcport, 0, 0);
|
||||
atomic_set(&fcport->state, FCS_UNCONFIGURED);
|
||||
qla2x00_set_fcport_state(fcport, FCS_UNCONFIGURED);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2552,7 +2552,7 @@ void qla2x00_mark_device_lost(scsi_qla_host_t *vha, fc_port_t *fcport,
|
||||
{
|
||||
if (atomic_read(&fcport->state) == FCS_ONLINE &&
|
||||
vha->vp_idx == fcport->vp_idx) {
|
||||
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
||||
qla2x00_set_fcport_state(fcport, FCS_DEVICE_LOST);
|
||||
qla2x00_schedule_rport_del(vha, fcport, defer);
|
||||
}
|
||||
/*
|
||||
@ -2560,7 +2560,7 @@ void qla2x00_mark_device_lost(scsi_qla_host_t *vha, fc_port_t *fcport,
|
||||
* port but do the retries.
|
||||
*/
|
||||
if (atomic_read(&fcport->state) != FCS_DEVICE_DEAD)
|
||||
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
||||
qla2x00_set_fcport_state(fcport, FCS_DEVICE_LOST);
|
||||
|
||||
if (!do_login)
|
||||
return;
|
||||
@ -2615,7 +2615,7 @@ qla2x00_mark_all_devices_lost(scsi_qla_host_t *vha, int defer)
|
||||
if (atomic_read(&fcport->state) == FCS_DEVICE_DEAD)
|
||||
continue;
|
||||
if (atomic_read(&fcport->state) == FCS_ONLINE) {
|
||||
atomic_set(&fcport->state, FCS_DEVICE_LOST);
|
||||
qla2x00_set_fcport_state(fcport, FCS_DEVICE_LOST);
|
||||
if (defer)
|
||||
qla2x00_schedule_rport_del(vha, fcport, defer);
|
||||
else if (vha->vp_idx == fcport->vp_idx)
|
||||
|
Loading…
Reference in New Issue
Block a user