Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec426e10 authored by Chad Dupuis's avatar Chad Dupuis Committed by James Bottomley
Browse files

[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: default avatarChad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: default avatarMadhuranath Iyengar <Madhu.Iyengar@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent a4f92a32
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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.
 */
+3 −3
Original line number Diff line number Diff line
@@ -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);
}

/*
+19 −0
Original line number Diff line number Diff line
@@ -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));
	}
}
+1 −1
Original line number Diff line number Diff line
@@ -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);
	}
}

Loading