mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
npiv: Expose fabric_name outside
This patch is to expose the fabric_name of fc_host class, which might be useful for users who wants to known which fabric the (v)HBA connects to. The patch also adds the missed capabilities' XML schema of scsi_host, (of course, with fabric_wwn added), and update the documents (docs/formatnode.html.in)
This commit is contained in:
parent
9ec14bcabb
commit
cc17f09246
@ -126,6 +126,7 @@
|
||||
<dd>A network protocol exposed by the device, where the
|
||||
attribute <code>type</code> can be "80203" for IEEE
|
||||
802.3, or "80211" for various flavors of IEEE 802.11.
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><code>scsi_host</code></dt>
|
||||
@ -133,6 +134,12 @@
|
||||
<dl>
|
||||
<dt><code>host</code></dt>
|
||||
<dd>The SCSI host number.</dd>
|
||||
<dt><code>capability</code></dt>
|
||||
<dd>Current capabilities include "vports_ops" (indicates
|
||||
vport operations are supported) and "fc_host", the later
|
||||
implies following sub-elements: <code>wwnn</code>,
|
||||
<code>wwpn</code>, <code>fabric_wwn</code>.
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
<dt><code>scsi</code></dt>
|
||||
|
@ -216,6 +216,35 @@
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='wwn'>
|
||||
<data type='string'>
|
||||
<param name='pattern'>(0-9a-fA-F){16}</param>
|
||||
</data>
|
||||
</define>
|
||||
|
||||
<define name='capsfchost'>
|
||||
<attribute name='type'>
|
||||
<value>fc_host</value>
|
||||
</attribute>
|
||||
|
||||
<element name='wwnn'>
|
||||
<ref name='wwn'/>
|
||||
</element>
|
||||
|
||||
<element name='wwpn'>
|
||||
<ref name='wwn'/>
|
||||
</element>
|
||||
|
||||
<element name='fabric_wwn'>
|
||||
<ref name='wwn'/>
|
||||
</element>
|
||||
</define>
|
||||
|
||||
<define name='capsvports'>
|
||||
<attribute name='type'>
|
||||
<value>vports_ops</value>
|
||||
</attribute>
|
||||
</define>
|
||||
|
||||
<define name='capscsihost'>
|
||||
<attribute name='type'>
|
||||
@ -225,6 +254,17 @@
|
||||
<element name='host'>
|
||||
<ref name='uint'/>
|
||||
</element>
|
||||
|
||||
<optional>
|
||||
<zeroOrMore>
|
||||
<element name='capability'>
|
||||
<choice>
|
||||
<ref name='capsfchost'/>
|
||||
<ref name='capsvports'/>
|
||||
</choice>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</optional>
|
||||
</define>
|
||||
|
||||
<define name='capscsi'>
|
||||
|
@ -396,6 +396,8 @@ char *virNodeDeviceDefFormat(const virNodeDeviceDefPtr def)
|
||||
data->scsi_host.wwnn);
|
||||
virBufferEscapeString(&buf, " <wwpn>%s</wwpn>\n",
|
||||
data->scsi_host.wwpn);
|
||||
virBufferEscapeString(&buf, " <fabric_wwn>%s</fabric_wwn>\n",
|
||||
data->scsi_host.fabric_wwn);
|
||||
virBufferAddLit(&buf, " </capability>\n");
|
||||
}
|
||||
if (data->scsi_host.flags & VIR_NODE_DEV_CAP_FLAG_HBA_VPORT_OPS) {
|
||||
@ -1378,6 +1380,7 @@ void virNodeDevCapsDefFree(virNodeDevCapsDefPtr caps)
|
||||
case VIR_NODE_DEV_CAP_SCSI_HOST:
|
||||
VIR_FREE(data->scsi_host.wwnn);
|
||||
VIR_FREE(data->scsi_host.wwpn);
|
||||
VIR_FREE(data->scsi_host.fabric_wwn);
|
||||
break;
|
||||
case VIR_NODE_DEV_CAP_SCSI_TARGET:
|
||||
VIR_FREE(data->scsi_target.name);
|
||||
|
@ -141,6 +141,7 @@ struct _virNodeDevCapsDef {
|
||||
unsigned int host;
|
||||
char *wwnn;
|
||||
char *wwpn;
|
||||
char *fabric_wwn;
|
||||
unsigned int flags;
|
||||
} scsi_host;
|
||||
struct {
|
||||
|
@ -149,10 +149,20 @@ int check_fc_host_linux(union _virNodeDevCapData *d)
|
||||
retval = -1;
|
||||
}
|
||||
|
||||
if (read_wwn(d->scsi_host.host,
|
||||
"fabric_name",
|
||||
&d->scsi_host.fabric_wwn) == -1) {
|
||||
VIR_ERROR(_("Failed to read fabric WWN for host%d"),
|
||||
d->scsi_host.host);
|
||||
retval = -1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
if (retval == -1) {
|
||||
VIR_FREE(d->scsi_host.wwnn);
|
||||
VIR_FREE(d->scsi_host.wwpn);
|
||||
VIR_FREE(d->scsi_host.fabric_wwn);
|
||||
}
|
||||
VIR_FREE(sysfs_path);
|
||||
return retval;
|
||||
|
Loading…
Reference in New Issue
Block a user