Update to 1.2.16 release

This commit is contained in:
Daniel P. Berrange 2015-06-01 10:04:40 +01:00
parent 19dcb913e6
commit c81949046d
3 changed files with 21 additions and 232 deletions

View File

@ -1,225 +0,0 @@
From 31479ae566d887ce4b864ef84fee99305041aaf1 Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
Date: Wed, 6 May 2015 18:59:46 -0400
Subject: [PATCH] caps: Don't default to i686 of KVM on x86_64
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
(cherry picked from commit 67b3c04b139d697e4aab01c0f676e356bbef5c52)
---
src/conf/capabilities.c | 63 +++++++++++++++-------
.../qemuxml2argv-default-kvm-host-arch.args | 4 ++
.../qemuxml2argv-default-kvm-host-arch.xml | 11 ++++
tests/qemuxml2argvtest.c | 1 +
.../qemuxml2xmlout-default-kvm-host-arch.xml | 21 ++++++++
tests/qemuxml2xmltest.c | 1 +
tests/testutilsqemu.c | 12 +++++
7 files changed, 94 insertions(+), 19 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 922741f..c43bfb3 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -607,25 +607,13 @@ virCapsDomainDataCompare(virCapsGuestPtr guest,
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(virCapsPtr caps,
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,
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args b/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.args
new file mode 100644
index 0000000..102691f
--- /dev/null
+++ b/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
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml b/tests/qemuxml2argvdata/qemuxml2argv-default-kvm-host-arch.xml
new file mode 100644
index 0000000..66dead0
--- /dev/null
+++ b/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>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 4acaa11..df4c9f5 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -595,6 +595,7 @@ 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("boot-cdrom", NONE);
DO_TEST("boot-network", NONE);
DO_TEST("boot-floppy", NONE);
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-default-kvm-host-arch.xml
new file mode 100644
index 0000000..30fa66d
--- /dev/null
+++ b/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>
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index b611afd..a21a299 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -346,6 +346,7 @@ mymain(void)
DO_TEST("minimal");
DO_TEST("machine-core-on");
DO_TEST("machine-core-off");
+ DO_TEST_DIFFERENT("default-kvm-host-arch");
DO_TEST("boot-cdrom");
DO_TEST("boot-network");
DO_TEST("boot-floppy");
diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c
index 14743be..d067bca 100644
--- a/tests/testutilsqemu.c
+++ b/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;
--
2.3.1

View File

@ -377,8 +377,8 @@
Summary: Library providing a simple virtualization API Summary: Library providing a simple virtualization API
Name: libvirt Name: libvirt
Version: 1.2.15 Version: 1.2.16
Release: 2%{?dist}%{?extra_release} Release: 1%{?dist}%{?extra_release}
License: LGPLv2+ License: LGPLv2+
Group: Development/Libraries Group: Development/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@ -389,8 +389,6 @@ URL: http://libvirt.org/
%endif %endif
Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
Patch1: 0001-caps-Don-t-default-to-i686-of-KVM-on-x86_64.patch
%if %{with_libvirtd} %if %{with_libvirtd}
Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon = %{version}-%{release}
%if %{with_network} %if %{with_network}
@ -1603,6 +1601,7 @@ rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc
%endif %endif
%if ! %{with_libxl} %if ! %{with_libxl}
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug
rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug
%endif %endif
@ -1647,9 +1646,9 @@ then
fi fi
%if %{with_libvirtd} %if %{with_libvirtd}
%pre daemon
%if ! %{with_driver_modules} %if ! %{with_driver_modules}
%if %{with_qemu} %if %{with_qemu}
%pre daemon
%if 0%{?fedora} || 0%{?rhel} >= 6 %if 0%{?fedora} || 0%{?rhel} >= 6
# We want soft static allocation of well-known ids, as disk images # We want soft static allocation of well-known ids, as disk images
# are commonly shared across NFS mounts by id rather than name; see # are commonly shared across NFS mounts by id rather than name; see
@ -1663,11 +1662,21 @@ if ! getent passwd qemu >/dev/null; then
useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu
fi fi
fi fi
exit 0
%endif %endif
%endif %endif
%endif %endif
%if %{with_polkit}
%if 0%{?fedora} || 0%{?rhel} >= 6
# 'libvirt' group is just to allow password-less polkit access to
# libvirtd. The uid number is irrelevant, so we use dynamic allocation
# described at the above link.
getent group libvirt >/dev/null || groupadd -r libvirt
%endif
%endif
exit 0
%post daemon %post daemon
%if %{with_systemd} %if %{with_systemd}
@ -1941,6 +1950,7 @@ exit 0
%if 0%{?fedora} || 0%{?rhel} >= 6 %if 0%{?fedora} || 0%{?rhel} >= 6
%{_datadir}/polkit-1/actions/org.libvirt.unix.policy %{_datadir}/polkit-1/actions/org.libvirt.unix.policy
%{_datadir}/polkit-1/actions/org.libvirt.api.policy %{_datadir}/polkit-1/actions/org.libvirt.api.policy
%{_datadir}/polkit-1/rules.d/50-libvirt.rules
%else %else
%{_datadir}/PolicyKit/policy/org.libvirt.unix.policy %{_datadir}/PolicyKit/policy/org.libvirt.unix.policy
%endif %endif
@ -2009,6 +2019,7 @@ exit 0
%endif %endif
%if %{with_libxl} %if %{with_libxl}
%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf %config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ %dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/
%ghost %dir %{_localstatedir}/run/libvirt/libxl/ %ghost %dir %{_localstatedir}/run/libvirt/libxl/
%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/
@ -2131,6 +2142,7 @@ exit 0
%files daemon-driver-libxl %files daemon-driver-libxl
%defattr(-, root, root) %defattr(-, root, root)
%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf %config(noreplace) %{_sysconfdir}/libvirt/libxl.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl
%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf %config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf
%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf %config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf
%{_datadir}/augeas/lenses/libvirtd_libxl.aug %{_datadir}/augeas/lenses/libvirtd_libxl.aug
@ -2307,6 +2319,9 @@ exit 0
%doc examples/systemtap %doc examples/systemtap
%changelog %changelog
* Mon Jun 01 2015 Daniel P. Berrange <berrange@redhat.com> - 1.2.16-1
- Update to 1.2.16 release
* Thu May 07 2015 Richard W.M. Jones <rjones@redhat.com> - 1.2.15-2 * Thu May 07 2015 Richard W.M. Jones <rjones@redhat.com> - 1.2.15-2
- Add Cole Robinson's patch to fix arch selection (bz# 1219198, bz#1219191) - Add Cole Robinson's patch to fix arch selection (bz# 1219198, bz#1219191)

View File

@ -1,2 +1 @@
08c2ea825d076ee67b1bbc600c220b97 libvirt-1.2.15.tar.gz
015b0aa29c7868916f7b32c9ee70ef60 libvirt-1.2.16.tar.gz 015b0aa29c7868916f7b32c9ee70ef60 libvirt-1.2.16.tar.gz