提交 ec7f612a 编写于 作者: M Michal Privoznik

qemuBuildInterfaceCommandLine: Move hostdev handling a bit further

The idea is to have function that does some checking of the
arguments at its beginning and then have one big switch for all
the interface types it supports. Each one of them generating the
corresponding part of the command line.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 507032d9
...@@ -7881,13 +7881,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd, ...@@ -7881,13 +7881,6 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER) if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)
return qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex); return qemuBuildVhostuserCommandLine(cmd, def, net, qemuCaps, bootindex);
if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
/* NET_TYPE_HOSTDEV devices are really hostdev devices, so
* their commandlines are constructed with other hostdevs.
*/
return 0;
}
/* Currently nothing besides TAP devices supports multiqueue. */ /* Currently nothing besides TAP devices supports multiqueue. */
if (net->driver.virtio.queues > 0 && if (net->driver.virtio.queues > 0 &&
!(actualType == VIR_DOMAIN_NET_TYPE_NETWORK || !(actualType == VIR_DOMAIN_NET_TYPE_NETWORK ||
...@@ -7967,6 +7960,12 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd, ...@@ -7967,6 +7960,12 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
if (qemuInterfaceEthernetConnect(def, driver, net, if (qemuInterfaceEthernetConnect(def, driver, net,
tapfd, tapfdSize) < 0) tapfd, tapfdSize) < 0)
goto cleanup; goto cleanup;
} else if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
/* NET_TYPE_HOSTDEV devices are really hostdev devices, so
* their commandlines are constructed with other hostdevs.
*/
ret = 0;
goto cleanup;
} }
/* For types whose implementations use a netdev on the host, add /* For types whose implementations use a netdev on the host, add
......
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory unit='KiB'>219136</memory>
<currentMemory unit='KiB'>219136</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='i686' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu</emulator>
<disk type='block' device='disk'>
<source dev='/dev/HostVG/QEMUGuest1'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'/>
<controller type='ide' index='0'/>
<controller type='pci' index='0' model='pci-root'/>
<interface type='hostdev' managed='yes'>
<mac address='00:11:22:33:44:55'/>
<source>
<address type='pci' domain='0x0000' bus='0x03' slot='0x07' function='0x1'/>
</source>
<model type='virtio'/>
<filterref filter='myfilter'/>
<backend tap='/dev/mytap'/>
<driver queues='4'/>
</interface>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='virtio'/>
</devices>
</domain>
...@@ -1109,6 +1109,10 @@ mymain(void) ...@@ -1109,6 +1109,10 @@ mymain(void)
QEMU_CAPS_DEVICE_VFIO_PCI, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); QEMU_CAPS_DEVICE_VFIO_PCI, QEMU_CAPS_HOST_PCI_MULTIDOMAIN);
DO_TEST_FAILURE("net-hostdev-vfio-multidomain", DO_TEST_FAILURE("net-hostdev-vfio-multidomain",
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DEVICE_VFIO_PCI); QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DEVICE_VFIO_PCI);
DO_TEST_FAILURE("net-hostdev-fail",
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_DEVICE_VFIO_PCI);
DO_TEST("serial-vc", NONE); DO_TEST("serial-vc", NONE);
DO_TEST("serial-pty", NONE); DO_TEST("serial-pty", NONE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册