mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 13:34:10 +08:00
[SCSI] zfcp: Add port_state attribute to sysfs
The sysfs attribute /sys/class/fc_host/hostX/port_state was not set by zfcp so far. Now, the appropriate members of the fc_function_template struct are set during its initialziation. The first is a boolean to show the port state. The second is a function pointer to the function zfcp_get_host_port_state, which reads the port state from our adapter status bits and calls fc_host_port_state with the approriate port state afterwards. Signed-off-by: Sven Schuetz <sven@linux.vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
553448f6c4
commit
85a82392fe
@ -704,6 +704,23 @@ zfcp_reset_fc_host_stats(struct Scsi_Host *shost)
|
||||
}
|
||||
}
|
||||
|
||||
static void zfcp_get_host_port_state(struct Scsi_Host *shost)
|
||||
{
|
||||
struct zfcp_adapter *adapter =
|
||||
(struct zfcp_adapter *)shost->hostdata[0];
|
||||
int status = atomic_read(&adapter->status);
|
||||
|
||||
if ((status & ZFCP_STATUS_COMMON_RUNNING) &&
|
||||
!(status & ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED))
|
||||
fc_host_port_state(shost) = FC_PORTSTATE_ONLINE;
|
||||
else if (status & ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED)
|
||||
fc_host_port_state(shost) = FC_PORTSTATE_LINKDOWN;
|
||||
else if (status & ZFCP_STATUS_COMMON_ERP_FAILED)
|
||||
fc_host_port_state(shost) = FC_PORTSTATE_ERROR;
|
||||
else
|
||||
fc_host_port_state(shost) = FC_PORTSTATE_UNKNOWN;
|
||||
}
|
||||
|
||||
static void zfcp_set_rport_dev_loss_tmo(struct fc_rport *rport, u32 timeout)
|
||||
{
|
||||
rport->dev_loss_tmo = timeout;
|
||||
@ -726,6 +743,8 @@ struct fc_function_template zfcp_transport_functions = {
|
||||
.get_fc_host_stats = zfcp_get_fc_host_stats,
|
||||
.reset_fc_host_stats = zfcp_reset_fc_host_stats,
|
||||
.set_rport_dev_loss_tmo = zfcp_set_rport_dev_loss_tmo,
|
||||
.get_host_port_state = zfcp_get_host_port_state,
|
||||
.show_host_port_state = 1,
|
||||
/* no functions registered for following dynamic attributes but
|
||||
directly set by LLDD */
|
||||
.show_host_port_type = 1,
|
||||
|
Loading…
Reference in New Issue
Block a user