提交 6b7281d0 编写于 作者: A Andreas Herrmann 提交者: James Bottomley

[SCSI] fc transport: add permanent_port_name fc_host attribute

Add fc_host attribute permanent_port_name which is
used to show the port name of the primary port -
the port that initially logged into the fabric.

For a virtual port (registered via the primary port with
FDISC command) it is useful to know not only its (virtual)
port name but also the permanent port name.
Signed-off-by: NAndreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 a09c6311
...@@ -295,6 +295,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev, ...@@ -295,6 +295,7 @@ static int fc_host_setup(struct transport_container *tc, struct device *dev,
*/ */
fc_host_node_name(shost) = -1; fc_host_node_name(shost) = -1;
fc_host_port_name(shost) = -1; fc_host_port_name(shost) = -1;
fc_host_permanent_port_name(shost) = -1;
fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED; fc_host_supported_classes(shost) = FC_COS_UNSPECIFIED;
memset(fc_host_supported_fc4s(shost), 0, memset(fc_host_supported_fc4s(shost), 0,
sizeof(fc_host_supported_fc4s(shost))); sizeof(fc_host_supported_fc4s(shost)));
...@@ -795,6 +796,8 @@ static FC_CLASS_DEVICE_ATTR(host, supported_speeds, S_IRUGO, ...@@ -795,6 +796,8 @@ static FC_CLASS_DEVICE_ATTR(host, supported_speeds, S_IRUGO,
fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long); fc_private_host_rd_attr_cast(node_name, "0x%llx\n", 20, unsigned long long);
fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long); fc_private_host_rd_attr_cast(port_name, "0x%llx\n", 20, unsigned long long);
fc_private_host_rd_attr_cast(permanent_port_name, "0x%llx\n", 20,
unsigned long long);
fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1)); fc_private_host_rd_attr(symbolic_name, "%s\n", (FC_SYMBOLIC_NAME_SIZE +1));
fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20); fc_private_host_rd_attr(maxframe_size, "%u bytes\n", 20);
fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1)); fc_private_host_rd_attr(serial_number, "%s\n", (FC_SERIAL_NUMBER_SIZE +1));
...@@ -1160,6 +1163,7 @@ fc_attach_transport(struct fc_function_template *ft) ...@@ -1160,6 +1163,7 @@ fc_attach_transport(struct fc_function_template *ft)
count=0; count=0;
SETUP_HOST_ATTRIBUTE_RD(node_name); SETUP_HOST_ATTRIBUTE_RD(node_name);
SETUP_HOST_ATTRIBUTE_RD(port_name); SETUP_HOST_ATTRIBUTE_RD(port_name);
SETUP_HOST_ATTRIBUTE_RD(permanent_port_name);
SETUP_HOST_ATTRIBUTE_RD(supported_classes); SETUP_HOST_ATTRIBUTE_RD(supported_classes);
SETUP_HOST_ATTRIBUTE_RD(supported_fc4s); SETUP_HOST_ATTRIBUTE_RD(supported_fc4s);
SETUP_HOST_ATTRIBUTE_RD(symbolic_name); SETUP_HOST_ATTRIBUTE_RD(symbolic_name);
......
...@@ -303,6 +303,7 @@ struct fc_host_attrs { ...@@ -303,6 +303,7 @@ struct fc_host_attrs {
/* Fixed Attributes */ /* Fixed Attributes */
u64 node_name; u64 node_name;
u64 port_name; u64 port_name;
u64 permanent_port_name;
u32 supported_classes; u32 supported_classes;
u8 supported_fc4s[FC_FC4_LIST_SIZE]; u8 supported_fc4s[FC_FC4_LIST_SIZE];
char symbolic_name[FC_SYMBOLIC_NAME_SIZE]; char symbolic_name[FC_SYMBOLIC_NAME_SIZE];
...@@ -338,6 +339,8 @@ struct fc_host_attrs { ...@@ -338,6 +339,8 @@ struct fc_host_attrs {
(((struct fc_host_attrs *)(x)->shost_data)->node_name) (((struct fc_host_attrs *)(x)->shost_data)->node_name)
#define fc_host_port_name(x) \ #define fc_host_port_name(x) \
(((struct fc_host_attrs *)(x)->shost_data)->port_name) (((struct fc_host_attrs *)(x)->shost_data)->port_name)
#define fc_host_permanent_port_name(x) \
(((struct fc_host_attrs *)(x)->shost_data)->permanent_port_name)
#define fc_host_supported_classes(x) \ #define fc_host_supported_classes(x) \
(((struct fc_host_attrs *)(x)->shost_data)->supported_classes) (((struct fc_host_attrs *)(x)->shost_data)->supported_classes)
#define fc_host_supported_fc4s(x) \ #define fc_host_supported_fc4s(x) \
...@@ -426,6 +429,7 @@ struct fc_function_template { ...@@ -426,6 +429,7 @@ struct fc_function_template {
/* host fixed attributes */ /* host fixed attributes */
unsigned long show_host_node_name:1; unsigned long show_host_node_name:1;
unsigned long show_host_port_name:1; unsigned long show_host_port_name:1;
unsigned long show_host_permanent_port_name:1;
unsigned long show_host_supported_classes:1; unsigned long show_host_supported_classes:1;
unsigned long show_host_supported_fc4s:1; unsigned long show_host_supported_fc4s:1;
unsigned long show_host_symbolic_name:1; unsigned long show_host_symbolic_name:1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册