Accepting request 308950 from Virtualization

Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/308950
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libvirt?expand=0&rev=179
This commit is contained in:
Dominique Leuenberger 2015-05-28 07:57:22 +00:00 committed by Git OBS Bridge
commit 32dcb2f8e8
3 changed files with 269 additions and 0 deletions

260
8910e063-arch-caps.patch Normal file
View File

@ -0,0 +1,260 @@
commit 8910e063dbafc09695b2100c80213be569abb7ef
Author: Cole Robinson <crobinso@redhat.com>
Date: Wed May 6 18:32:05 2015 -0400
caps: Fix regression defaulting to host arch
My commit 747761a79 (v1.2.15 only) dropped this bit of logic when filling
in a default arch in the XML:
- /* First try to find one matching host arch */
- for (i = 0; i < caps->nguests; i++) {
- if (caps->guests[i]->ostype == ostype) {
- for (j = 0; j < caps->guests[i]->arch.ndomains; j++) {
- if (caps->guests[i]->arch.domains[j]->type == domain &&
- caps->guests[i]->arch.id == caps->host.arch)
- return caps->guests[i]->arch.id;
- }
- }
- }
That attempt to match host.arch is important, otherwise we end up
defaulting to i686 on x86_64 host for KVM, which is not intended.
Duplicate it in the centralized CapsLookup function.
Additionally add some testcases that would have caught this.
https://bugzilla.redhat.com/show_bug.cgi?id=1219191
Index: libvirt-1.2.15/src/conf/capabilities.c
===================================================================
--- libvirt-1.2.15.orig/src/conf/capabilities.c
+++ libvirt-1.2.15/src/conf/capabilities.c
@@ -607,25 +607,13 @@ virCapsDomainDataCompare(virCapsGuestPtr
return true;
}
-/**
- * virCapabilitiesDomainDataLookup:
- * @caps: capabilities to query
- * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE
- * @arch: Architecture to search for
- * @domaintype: domain type to search for, of enum VIR_DOMAIN_VIRT
- * @emulator: Emulator path to search for
- * @machinetype: Machine type to search for
- *
- * Search capabilities for the passed values, and if found return
- * virCapabilitiesDomainDataLookup filled in with the default values
- */
-virCapsDomainDataPtr
-virCapabilitiesDomainDataLookup(virCapsPtr caps,
- int ostype,
- virArch arch,
- int domaintype,
- const char *emulator,
- const char *machinetype)
+static virCapsDomainDataPtr
+virCapabilitiesDomainDataLookupInternal(virCapsPtr caps,
+ int ostype,
+ virArch arch,
+ int domaintype,
+ const char *emulator,
+ const char *machinetype)
{
virCapsGuestPtr foundguest = NULL;
virCapsGuestDomainPtr founddomain = NULL;
@@ -730,6 +718,43 @@ virCapabilitiesDomainDataLookup(virCapsP
return ret;
}
+/**
+ * virCapabilitiesDomainDataLookup:
+ * @caps: capabilities to query
+ * @ostype: guest operating system type, of enum VIR_DOMAIN_OSTYPE
+ * @arch: Architecture to search for
+ * @domaintype: domain type to search for, of enum VIR_DOMAIN_VIRT
+ * @emulator: Emulator path to search for
+ * @machinetype: Machine type to search for
+ *
+ * Search capabilities for the passed values, and if found return
+ * virCapabilitiesDomainDataLookup filled in with the default values
+ */
+virCapsDomainDataPtr
+virCapabilitiesDomainDataLookup(virCapsPtr caps,
+ int ostype,
+ virArch arch,
+ int domaintype,
+ const char *emulator,
+ const char *machinetype)
+{
+ virCapsDomainDataPtr ret;
+
+ if (arch == VIR_ARCH_NONE) {
+ /* Prefer host arch if its available */
+ ret = virCapabilitiesDomainDataLookupInternal(caps, ostype,
+ caps->host.arch,
+ domaintype,
+ emulator, machinetype);
+ if (ret)
+ return ret;
+ }
+
+ return virCapabilitiesDomainDataLookupInternal(caps, ostype,
+ arch, domaintype,
+ emulator, machinetype);
+}
+
static int
virCapabilitiesFormatNUMATopology(virBufferPtr buf,
size_t ncells,
Index: libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
@@ -0,0 +1,4 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/kvm -S -machine pc,accel=kvm -m 4096 -smp 4 -nographic \
+-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb -net none \
+-serial none -parallel none
Index: libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
@@ -0,0 +1,11 @@
+<domain type='kvm'>
+ <name>kvm</name>
+ <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <os>
+ <type>hvm</type>
+ <boot dev='hd'/>
+ </os>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.args
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.args
@@ -0,0 +1,4 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-x86_64 -S -machine pc-0.11,accel=tcg -m 4096 -smp 4 \
+-nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c \
+-usb -net none -serial none -parallel none
Index: libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.xml
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2argvdata/qemuxml2argv-default-qemu-host-arch.xml
@@ -0,0 +1,11 @@
+<domain type='qemu'>
+ <name>qemu-host</name>
+ <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <os>
+ <type>hvm</type>
+ <boot dev='hd'/>
+ </os>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2argvtest.c
===================================================================
--- libvirt-1.2.15.orig/tests/qemuxml2argvtest.c
+++ libvirt-1.2.15/tests/qemuxml2argvtest.c
@@ -595,6 +595,8 @@ mymain(void)
DO_TEST("machine-usb-opt", QEMU_CAPS_MACHINE_OPT,
QEMU_CAPS_MACHINE_USB_OPT);
DO_TEST("kvm", QEMU_CAPS_MACHINE_OPT);
+ DO_TEST("default-kvm-host-arch", QEMU_CAPS_MACHINE_OPT);
+ DO_TEST("default-qemu-host-arch", QEMU_CAPS_MACHINE_OPT);
DO_TEST("boot-cdrom", NONE);
DO_TEST("boot-network", NONE);
DO_TEST("boot-floppy", NONE);
Index: libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
@@ -0,0 +1,21 @@
+<domain type='kvm'>
+ <name>kvm</name>
+ <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <os>
+ <type arch='x86_64' 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/kvm</emulator>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-qemu-host-arch.xml
===================================================================
--- /dev/null
+++ libvirt-1.2.15/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-qemu-host-arch.xml
@@ -0,0 +1,21 @@
+<domain type='qemu'>
+ <name>qemu-host</name>
+ <uuid>d091ea82-29e6-2e34-3005-f02617b36e87</uuid>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <vcpu placement='static'>4</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc-0.11'>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-system-x86_64</emulator>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <memballoon model='virtio'/>
+ </devices>
+</domain>
Index: libvirt-1.2.15/tests/qemuxml2xmltest.c
===================================================================
--- libvirt-1.2.15.orig/tests/qemuxml2xmltest.c
+++ libvirt-1.2.15/tests/qemuxml2xmltest.c
@@ -346,6 +346,8 @@ mymain(void)
DO_TEST("minimal");
DO_TEST("machine-core-on");
DO_TEST("machine-core-off");
+ DO_TEST_DIFFERENT("default-kvm-host-arch");
+ DO_TEST_DIFFERENT("default-qemu-host-arch");
DO_TEST("boot-cdrom");
DO_TEST("boot-network");
DO_TEST("boot-floppy");
Index: libvirt-1.2.15/tests/testutilsqemu.c
===================================================================
--- libvirt-1.2.15.orig/tests/testutilsqemu.c
+++ libvirt-1.2.15/tests/testutilsqemu.c
@@ -354,6 +354,18 @@ virCapsPtr testQemuCapsInit(void)
NULL) == NULL)
goto cleanup;
+ if ((machines = testQemuAllocMachines(&nmachines)) == NULL)
+ goto cleanup;
+
+ if (virCapabilitiesAddGuestDomain(guest,
+ VIR_DOMAIN_VIRT_KVM,
+ "/usr/bin/qemu-kvm",
+ NULL,
+ nmachines,
+ machines) == NULL)
+ goto cleanup;
+ machines = NULL;
+
if ((machines = testQemuAllocNewerMachines(&nmachines)) == NULL)
goto cleanup;

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Wed May 20 08:29:00 UTC 2015 - dmacvicar@suse.de
- qemu: fix regression defaulting to host arch
8910e063-arch-caps.patch
rhb#1219191
-------------------------------------------------------------------
Wed May 6 09:51:21 MDT 2015 - jfehlig@suse.com

View File

@ -445,6 +445,7 @@ Source5: polkit-10-virt.rules
Source99: baselibs.conf
# Upstream patches
Patch0: c0d3f608-libxl-soundhw.patch
Patch1: 8910e063-arch-caps.patch
# Patches pending upstream review
# Need to go upstream
Patch150: xen-pv-cdrom.patch
@ -975,6 +976,7 @@ Provides a dissector for the libvirt RPC protocol to help debugging it.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch150 -p1
%patch151 -p1
%patch152 -p1