conf: Generic XMLs for scsi hostdev

An example of the scsi hostdev XML:

    <hostdev mode='subsystem' type='scsi'>
      <source>
        <adapter name='scsi_host0'/>
        <address bus='0' target='0' unit='0'/>
      </source>
      <address type='drive' controller='0' bus='0' target='4' unit='8'/>
    </hostdev>

Controller is implicitly added for scsi hostdev, though the scsi
controller's model defaults to "lsilogic", which might be not what
the user wants (same problem exists for virtio-scsi disk). It's
the existing problem, will be addressed later.

The device address must be specified manually. Later patch will let
libvirt generate it automatically.

This only introduces the generic XMLs for scsi hostdev, later patches
will add other elements, e.g. <readonly>, <shareable>.

Signed-off-by: Han Cheng <hanc.fnst@cn.fujitsu.com>
Signed-off-by: Osier Yang <jyang@redhat.com>
This commit is contained in:
Han Cheng
2013-05-04 02:07:20 +08:00
committed by Osier Yang
parent 9706d85fe9
commit 5c811dcec5
7 changed files with 266 additions and 9 deletions

View File

@@ -2257,13 +2257,13 @@
<h4><a name="elementsHostDev">Host device assignment</a></h4>
<h5><a href="elementsHostDevSubsys">USB / PCI devices</a></h5>
<h5><a href="elementsHostDevSubsys">USB / PCI / SCSI devices</a></h5>
<p>
USB and PCI devices attached to the host can be passed through
USB, PCI and SCSI devices attached to the host can be passed through
to the guest using the <code>hostdev</code> element.
<span class="since">since after 0.4.4 for USB and 0.6.0 for PCI
(KVM only)</span>:
<span class="since">since after 0.4.4 for USB, 0.6.0 for PCI(KVM only)
and 1.0.6 for SCSI(KVM only)</span>:
</p>
<pre>
@@ -2292,14 +2292,31 @@
&lt;rom bar='on' file='/etc/fake/boot.bin'/&gt;
&lt;/hostdev&gt;
&lt;/devices&gt;
...</pre>
<p>or:</p>
<pre>
...
&lt;devices&gt;
&lt;hostdev mode='subsystem' type='scsi'&gt;
&lt;source&gt;
&lt;adapter name='scsi_host0'/&gt;
&lt;address type='scsi' bus='0' target='0' unit='0'/&gt;
&lt;/source&gt;
&lt;readonly/&gt;
&lt;address type='drive' controller='0' bus='0' target='0' unit='0'/&gt;
&lt;/hostdev&gt;
&lt;/devices&gt;
...</pre>
<dl>
<dt><code>hostdev</code></dt>
<dd>The <code>hostdev</code> element is the main container for describing
host devices. For usb device passthrough <code>mode</code> is always
"subsystem" and <code>type</code> is "usb" for a USB device and "pci"
for a PCI device. When <code>managed</code> is "yes" for a PCI
"subsystem" and <code>type</code> is "usb" for a USB device, "pci"
for a PCI device and "scsi" for a SCSI device. When
<code>managed</code> is "yes" for a PCI
device, it is detached from the host before being passed on to
the guest, and reattached to the host after the guest exits.
If <code>managed</code> is omitted or "no", and for USB
@@ -2309,13 +2326,16 @@
hot-plugging the device,
and <code>virNodeDeviceReAttach</code> (or <code>virsh
nodedev-reattach</code>) after hot-unplug or stopping the
guest.</dd>
guest. For SCSI device, user is responsible to make sure the device
is not used by host.</dd>
<dt><code>source</code></dt>
<dd>The source element describes the device as seen from the host.
The USB device can either be addressed by vendor / product id using the
<code>vendor</code> and <code>product</code> elements or by the device's
address on the hosts using the <code>address</code> element. PCI devices
on the other hand can only be described by their <code>address</code>.
SCSI devices are described by both the <code>adapter</code> and
<code>address</code> elements.
<span class="since">Since 1.0.0</span>, the <code>source</code> element
of USB devices may contain <code>startupPolicy</code> attribute which can

View File

@@ -3094,6 +3094,7 @@
<choice>
<ref name="hostdevsubsyspci"/>
<ref name="hostdevsubsysusb"/>
<ref name="hostdevsubsysscsi"/>
</choice>
</define>
@@ -3162,6 +3163,20 @@
</element>
</define>
<define name="hostdevsubsysscsi">
<attribute name="type">
<value>scsi</value>
</attribute>
<element name="source">
<interleave>
<ref name="sourceinfoadapter"/>
<element name="address">
<ref name="scsiaddress"/>
</element>
</interleave>
</element>
</define>
<define name="hostdevcapsstorage">
<attribute name="type">
<value>storage</value>
@@ -3217,6 +3232,17 @@
</attribute>
</element>
</define>
<define name="scsiaddress">
<attribute name="bus">
<ref name="driveBus"/>
</attribute>
<attribute name="target">
<ref name="driveTarget"/>
</attribute>
<attribute name="unit">
<ref name="driveUnit"/>
</attribute>
</define>
<define name="usbportaddress">
<attribute name="bus">
<ref name="usbAddr"/>