Hello community,
here is the log from the commit of package libvirt for openSUSE:12.1:Update:Test checked in at 2012-01-19 18:05:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1:Update:Test/libvirt (Old)
and /work/SRC/openSUSE:12.1:Update:Test/.libvirt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt", Maintainer is "JFEHLIG@suse.com"
Changes:
--------
--- /work/SRC/openSUSE:12.1:Update:Test/libvirt/libvirt.changes 2012-01-19 18:05:49.000000000 +0100
+++ /work/SRC/openSUSE:12.1:Update:Test/.libvirt.new/libvirt.changes 2012-01-19 18:05:49.000000000 +0100
@@ -1,0 +2,69 @@
+Wed Jan 4 10:04:04 MST 2012 - jfehlig@suse.com
+
+- Use %fdupes for duplicate file checking instead of hand-rolled
+ function
+
+-------------------------------------------------------------------
+Tue Dec 20 15:46:29 MST 2011 - jfehlig@suse.com
+
+- Fix authorization workflow with PolicyKit.
+ polkit.patch
+ bnc#735403
+
+-------------------------------------------------------------------
+Thu Dec 15 14:00:57 MST 2011 - jfehlig@suse.com
+
+- Fix qemu default migration speed. It should not be 33554432Mb!
+ 61f2b6ba-no-unlimited-mig2file-speed.patch
+ d8916dc8-def-qemu-migspeed.patch
+
+-------------------------------------------------------------------
+Mon Dec 12 16:50:59 MST 2011 - jfehlig@suse.com
+
+- CVE-2011-4600: unintended firewall port exposure after restarting
+ libvirtd when defining a bridged forward-mode network
+ ae1232b2-CVE-2011-4600.patch
+ bnc#736082
+
+-------------------------------------------------------------------
+Thu Dec 8 10:30:32 MST 2011 - jfehlig@suse.com
+
+- Fix default console type setting
+ 209c2880-multiple-consoles-7.patch
+- Fix 'virsh console' with Xen HVM
+ xen-hvm-virsh-console.patch
+ bnc#731974
+
+-------------------------------------------------------------------
+Wed Dec 7 11:47:15 MST 2011 - jfehlig@suse.com
+
+- Prevent libvirtd crash on 'virsh qemu-attach' when
+ security_driver is "none" in /etc/libvirt/qemu.conf
+ 28423019-qemu-attach-crash.patch
+ bnc#735023
+
+-------------------------------------------------------------------
+Wed Nov 30 09:53:25 MST 2011 - jfehlig@suse.com
+
+- Allow qemu driver (and hence libvirtd) to load when qemu
+ user:group does not exist. The kvm or qemu package, which may
+ not exist on a xen host, creates qemu user:group.
+ relax-qemu-usergroup-check.patch
+ bnc#711096
+
+-------------------------------------------------------------------
+Mon Nov 28 15:19:42 MST 2011 - jfehlig@suse.com
+- Accommodate Xen domctl version 8
+ xen-domctl-ver8.patch
+- Handle empty strings in s-expression returned by xend
+ a495365d-sexpr-empty-str.patch
+ bnc#731344
+- Allow libvirtd to access libvirt_{io,part}helper when confined
+ by apparmor
+ Update install-apparmor-profiles.patch
+ bnc#730435
+- Fixed to return success when there are no errors while parsing
+ bonding interface miimon xml node parameters.
+ bonding-miimon-xml-parsing.patch
+
+-------------------------------------------------------------------
New:
----
209c2880-multiple-consoles-7.patch
28423019-qemu-attach-crash.patch
49d8c8bc-xen-domctl-ver8.patch
61f2b6ba-no-unlimited-mig2file-speed.patch
9ae4ac7a-PolicyKit.patch
a495365d-sexpr-empty-str.patch
ae1232b2-CVE-2011-4600.patch
beeea90a-xen-hvm-console.patch
bonding-miimon-xml-parsing.patch
d8916dc8-def-qemu-migspeed.patch
relax-qemu-usergroup-check.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libvirt.spec ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libvirt
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -378,15 +378,26 @@
# the openSUSE kvm package is patched with qemu 'no-shutdown' fix
Patch0: f84aedad-revert.patch
Patch1: c1bc3d89-qemu-add-ahci.patch
+Patch2: a495365d-sexpr-empty-str.patch
+Patch3: 28423019-qemu-attach-crash.patch
+Patch4: 209c2880-multiple-consoles-7.patch
+Patch5: ae1232b2-CVE-2011-4600.patch
+Patch6: 61f2b6ba-no-unlimited-mig2file-speed.patch
+Patch7: d8916dc8-def-qemu-migspeed.patch
+Patch8: 49d8c8bc-xen-domctl-ver8.patch
+Patch9: beeea90a-xen-hvm-console.patch
+Patch10: 9ae4ac7a-PolicyKit.patch
# Need to go upstream
Patch100: xen-name-for-devid.patch
Patch101: clone.patch
Patch102: xen-pv-cdrom.patch
Patch103: xend-disk-order.patch
+Patch104: bonding-miimon-xml-parsing.patch
# Our patches
Patch200: libvirtd-defaults.patch
Patch201: use-init-script-redhat.patch
-Patch202: suse-qemu-conf.patch
+Patch202: relax-qemu-usergroup-check.patch
+Patch203: suse-qemu-conf.patch
%if %{with_apparmor}
Patch250: install-apparmor-profiles.patch
%endif
@@ -503,13 +514,24 @@
%setup -q
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
%patch100 -p1
%patch101
%patch102 -p1
%patch103 -p1
+%patch104 -p1
%patch200 -p1
%patch201 -p1
%patch202 -p1
+%patch203 -p1
%if %{with_apparmor}
%patch250 -p1
%endif
@@ -712,22 +734,6 @@
rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter
%endif
-ln_dupes()
-{
- target=""
- fdupes -r "$1" | while read file; do
- if [ -z "$file" ] || [ -z "$target" ]; then
- target="$file"
- continue
- fi
- ln -sf "${target#.}" "$file"
- done
-}
-(
- cd $RPM_BUILD_ROOT
- ln_dupes .%{_docdir}/%{name}
- ln_dupes ./usr/share/locale
-)
# init scripts
mkdir -p $RPM_BUILD_ROOT/etc/init.d
%if %{with_libvirtd}
@@ -739,6 +745,7 @@
#/usr/share/SuSEfirewall2/services/TEMPLATE
mkdir -p $RPM_BUILD_ROOT/%{_fwdefdir}
install -m 644 %{S:2} $RPM_BUILD_ROOT/%{_fwdefdir}/libvirtd-relocation-server
+%fdupes -s $RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
++++++ 209c2880-multiple-consoles-7.patch ++++++
++++ 601 lines (skipped)
++++++ 28423019-qemu-attach-crash.patch ++++++
commit 284230199af915a90322d6cc4a6210aaa2a33b28
Author: Jim Fehlig
Date: Wed Dec 7 11:23:03 2011 -0700
Prevent crash of libvirtd when attaching to existing qemu process
With security_driver set to "none" in /etc/libvirt/qemu.conf,
libvirtd would crash when attempted to attach to an existing
qemu process. Only copy the security model if it actually exists.
Index: libvirt-0.9.6/src/qemu/qemu_process.c
===================================================================
--- libvirt-0.9.6.orig/src/qemu/qemu_process.c
+++ libvirt-0.9.6/src/qemu/qemu_process.c
@@ -3509,7 +3509,8 @@ int qemuProcessAttach(virConnectPtr conn
if (virSecurityManagerGetProcessLabel(driver->securityManager,
vm, seclabel) < 0)
goto cleanup;
- if (!(vm->def->seclabel.model = strdup(driver->caps->host.secModel.model)))
+ if (driver->caps->host.secModel.model &&
+ !(vm->def->seclabel.model = strdup(driver->caps->host.secModel.model)))
goto no_memory;
if (!(vm->def->seclabel.label = strdup(seclabel->label)))
goto no_memory;
++++++ 49d8c8bc-xen-domctl-ver8.patch ++++++
Index: libvirt-0.9.6/src/xen/xen_hypervisor.c
===================================================================
--- libvirt-0.9.6.orig/src/xen/xen_hypervisor.c
+++ libvirt-0.9.6/src/xen/xen_hypervisor.c
@@ -239,12 +239,30 @@ struct xen_v2d7_getdomaininfo {
};
typedef struct xen_v2d7_getdomaininfo xen_v2d7_getdomaininfo;
+struct xen_v2d8_getdomaininfo {
+ domid_t domain; /* the domain number */
+ uint32_t flags; /* flags, see before */
+ uint64_t tot_pages ALIGN_64; /* total number of pages used */
+ uint64_t max_pages ALIGN_64; /* maximum number of pages allowed */
+ uint64_t shr_pages ALIGN_64; /* number of shared pages */
+ uint64_t paged_pages ALIGN_64; /* number of paged pages */
+ uint64_t shared_info_frame ALIGN_64; /* MFN of shared_info struct */
+ uint64_t cpu_time ALIGN_64; /* CPU time used */
+ uint32_t nr_online_vcpus; /* Number of VCPUs currently online. */
+ uint32_t max_vcpu_id; /* Maximum VCPUID in use by this domain. */
+ uint32_t ssidref;
+ xen_domain_handle_t handle;
+ uint32_t cpupool;
+};
+typedef struct xen_v2d8_getdomaininfo xen_v2d8_getdomaininfo;
+
union xen_getdomaininfo {
struct xen_v0_getdomaininfo v0;
struct xen_v2_getdomaininfo v2;
struct xen_v2d5_getdomaininfo v2d5;
struct xen_v2d6_getdomaininfo v2d6;
struct xen_v2d7_getdomaininfo v2d7;
+ struct xen_v2d8_getdomaininfo v2d8;
};
typedef union xen_getdomaininfo xen_getdomaininfo;
@@ -254,6 +272,7 @@ union xen_getdomaininfolist {
struct xen_v2d5_getdomaininfo *v2d5;
struct xen_v2d6_getdomaininfo *v2d6;
struct xen_v2d7_getdomaininfo *v2d7;
+ struct xen_v2d8_getdomaininfo *v2d8;
};
typedef union xen_getdomaininfolist xen_getdomaininfolist;
@@ -291,179 +310,211 @@ typedef struct xen_v2s5_availheap xen_v
#define XEN_GETDOMAININFOLIST_ALLOC(domlist, size) \
(hypervisor_version < 2 ? \
(VIR_ALLOC_N(domlist.v0, (size)) == 0) : \
+ (dom_interface_version >= 8 ? \
+ (VIR_ALLOC_N(domlist.v2d8, (size)) == 0) : \
(dom_interface_version >= 7 ? \
(VIR_ALLOC_N(domlist.v2d7, (size)) == 0) : \
(dom_interface_version == 6 ? \
(VIR_ALLOC_N(domlist.v2d6, (size)) == 0) : \
(dom_interface_version == 5 ? \
(VIR_ALLOC_N(domlist.v2d5, (size)) == 0) : \
- (VIR_ALLOC_N(domlist.v2, (size)) == 0)))))
+ (VIR_ALLOC_N(domlist.v2, (size)) == 0))))))
#define XEN_GETDOMAININFOLIST_FREE(domlist) \
(hypervisor_version < 2 ? \
VIR_FREE(domlist.v0) : \
+ (dom_interface_version >= 8 ? \
+ VIR_FREE(domlist.v2d8) : \
(dom_interface_version >= 7 ? \
VIR_FREE(domlist.v2d7) : \
(dom_interface_version == 6 ? \
VIR_FREE(domlist.v2d6) : \
(dom_interface_version == 5 ? \
VIR_FREE(domlist.v2d5) : \
- VIR_FREE(domlist.v2)))))
+ VIR_FREE(domlist.v2))))))
#define XEN_GETDOMAININFOLIST_CLEAR(domlist, size) \
(hypervisor_version < 2 ? \
memset(domlist.v0, 0, sizeof(*domlist.v0) * size) : \
+ (dom_interface_version >= 8 ? \
+ memset(domlist.v2d8, 0, sizeof(*domlist.v2d8) * size) : \
(dom_interface_version >= 7 ? \
memset(domlist.v2d7, 0, sizeof(*domlist.v2d7) * size) : \
(dom_interface_version == 6 ? \
memset(domlist.v2d6, 0, sizeof(*domlist.v2d6) * size) : \
(dom_interface_version == 5 ? \
memset(domlist.v2d5, 0, sizeof(*domlist.v2d5) * size) : \
- memset(domlist.v2, 0, sizeof(*domlist.v2) * size)))))
+ memset(domlist.v2, 0, sizeof(*domlist.v2) * size))))))
#define XEN_GETDOMAININFOLIST_DOMAIN(domlist, n) \
(hypervisor_version < 2 ? \
domlist.v0[n].domain : \
+ (dom_interface_version >= 8 ? \
+ domlist.v2d8[n].domain : \
(dom_interface_version >= 7 ? \
domlist.v2d7[n].domain : \
(dom_interface_version == 6 ? \
domlist.v2d6[n].domain : \
(dom_interface_version == 5 ? \
domlist.v2d5[n].domain : \
- domlist.v2[n].domain))))
+ domlist.v2[n].domain)))))
#define XEN_GETDOMAININFOLIST_UUID(domlist, n) \
(hypervisor_version < 2 ? \
domlist.v0[n].handle : \
+ (dom_interface_version >= 8 ? \
+ domlist.v2d8[n].handle : \
(dom_interface_version >= 7 ? \
domlist.v2d7[n].handle : \
(dom_interface_version == 6 ? \
domlist.v2d6[n].handle : \
(dom_interface_version == 5 ? \
domlist.v2d5[n].handle : \
- domlist.v2[n].handle))))
+ domlist.v2[n].handle)))))
#define XEN_GETDOMAININFOLIST_DATA(domlist) \
(hypervisor_version < 2 ? \
(void*)(domlist->v0) : \
+ (dom_interface_version >= 8 ? \
+ (void*)(domlist->v2d8) : \
(dom_interface_version >= 7 ? \
(void*)(domlist->v2d7) : \
(dom_interface_version == 6 ? \
(void*)(domlist->v2d6) : \
(dom_interface_version == 5 ? \
(void*)(domlist->v2d5) : \
- (void*)(domlist->v2)))))
+ (void*)(domlist->v2))))))
#define XEN_GETDOMAININFO_SIZE \
(hypervisor_version < 2 ? \
sizeof(xen_v0_getdomaininfo) : \
+ (dom_interface_version >= 8 ? \
+ sizeof(xen_v2d8_getdomaininfo) : \
(dom_interface_version >= 7 ? \
sizeof(xen_v2d7_getdomaininfo) : \
(dom_interface_version == 6 ? \
sizeof(xen_v2d6_getdomaininfo) : \
(dom_interface_version == 5 ? \
sizeof(xen_v2d5_getdomaininfo) : \
- sizeof(xen_v2_getdomaininfo)))))
+ sizeof(xen_v2_getdomaininfo))))))
#define XEN_GETDOMAININFO_CLEAR(dominfo) \
(hypervisor_version < 2 ? \
memset(&(dominfo.v0), 0, sizeof(xen_v0_getdomaininfo)) : \
+ (dom_interface_version >= 8 ? \
+ memset(&(dominfo.v2d8), 0, sizeof(xen_v2d8_getdomaininfo)) : \
(dom_interface_version >= 7 ? \
memset(&(dominfo.v2d7), 0, sizeof(xen_v2d7_getdomaininfo)) : \
(dom_interface_version == 6 ? \
memset(&(dominfo.v2d6), 0, sizeof(xen_v2d6_getdomaininfo)) : \
(dom_interface_version == 5 ? \
memset(&(dominfo.v2d5), 0, sizeof(xen_v2d5_getdomaininfo)) : \
- memset(&(dominfo.v2), 0, sizeof(xen_v2_getdomaininfo))))))
+ memset(&(dominfo.v2), 0, sizeof(xen_v2_getdomaininfo)))))))
#define XEN_GETDOMAININFO_DOMAIN(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.domain : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.domain : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.domain : \
(dom_interface_version == 6 ? \
dominfo.v2d6.domain : \
(dom_interface_version == 5 ? \
dominfo.v2d5.domain : \
- dominfo.v2.domain))))
+ dominfo.v2.domain)))))
#define XEN_GETDOMAININFO_CPUTIME(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.cpu_time : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.cpu_time : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.cpu_time : \
(dom_interface_version == 6 ? \
dominfo.v2d6.cpu_time : \
(dom_interface_version == 5 ? \
dominfo.v2d5.cpu_time : \
- dominfo.v2.cpu_time))))
+ dominfo.v2.cpu_time)))))
#define XEN_GETDOMAININFO_CPUCOUNT(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.nr_online_vcpus : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.nr_online_vcpus : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.nr_online_vcpus : \
(dom_interface_version == 6 ? \
dominfo.v2d6.nr_online_vcpus : \
(dom_interface_version == 5 ? \
dominfo.v2d5.nr_online_vcpus : \
- dominfo.v2.nr_online_vcpus))))
+ dominfo.v2.nr_online_vcpus)))))
#define XEN_GETDOMAININFO_MAXCPUID(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.max_vcpu_id : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.max_vcpu_id : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.max_vcpu_id : \
(dom_interface_version == 6 ? \
dominfo.v2d6.max_vcpu_id : \
(dom_interface_version == 5 ? \
dominfo.v2d5.max_vcpu_id : \
- dominfo.v2.max_vcpu_id))))
+ dominfo.v2.max_vcpu_id)))))
#define XEN_GETDOMAININFO_FLAGS(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.flags : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.flags : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.flags : \
(dom_interface_version == 6 ? \
dominfo.v2d6.flags : \
(dom_interface_version == 5 ? \
dominfo.v2d5.flags : \
- dominfo.v2.flags))))
+ dominfo.v2.flags)))))
#define XEN_GETDOMAININFO_TOT_PAGES(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.tot_pages : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.tot_pages : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.tot_pages : \
(dom_interface_version == 6 ? \
dominfo.v2d6.tot_pages : \
(dom_interface_version == 5 ? \
dominfo.v2d5.tot_pages : \
- dominfo.v2.tot_pages))))
+ dominfo.v2.tot_pages)))))
#define XEN_GETDOMAININFO_MAX_PAGES(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.max_pages : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.max_pages : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.max_pages : \
(dom_interface_version == 6 ? \
dominfo.v2d6.max_pages : \
(dom_interface_version == 5 ? \
dominfo.v2d5.max_pages : \
- dominfo.v2.max_pages))))
+ dominfo.v2.max_pages)))))
#define XEN_GETDOMAININFO_UUID(dominfo) \
(hypervisor_version < 2 ? \
dominfo.v0.handle : \
+ (dom_interface_version >= 8 ? \
+ dominfo.v2d8.handle : \
(dom_interface_version >= 7 ? \
dominfo.v2d7.handle : \
(dom_interface_version == 6 ? \
dominfo.v2d6.handle : \
(dom_interface_version == 5 ? \
dominfo.v2d5.handle : \
- dominfo.v2.handle))))
+ dominfo.v2.handle)))))
static int
@@ -2129,12 +2180,20 @@ xenHypervisorInit(void)
/* Xen 4.1
* sysctl version 8 -> xen-unstable c/s 21118:28e5409e3fb3
* domctl version 7 -> xen-unstable c/s 21212:de94884a669c
+ * domctl version 8 -> xen-unstable c/s 23874:651aed73b39c
*/
sys_interface_version = 8; /* XEN_SYSCTL_INTERFACE_VERSION */
if (virXen_getdomaininfo(fd, 0, &info) == 1) {
dom_interface_version = 7; /* XEN_DOMCTL_INTERFACE_VERSION */
- VIR_DEBUG("Using hypervisor call v2, sys ver8 dom ver7\n");
- goto done;
+ if (virXen_getvcpusinfo(fd, 0, 0, ipt, NULL, 0) == 0){
+ VIR_DEBUG("Using hypervisor call v2, sys ver8 dom ver7");
+ goto done;
+ }
+ dom_interface_version = 8; /* XEN_DOMCTL_INTERFACE_VERSION */
+ if (virXen_getvcpusinfo(fd, 0, 0, ipt, NULL, 0) == 0){
+ VIR_DEBUG("Using hypervisor call v2, sys ver8 dom ver8");
+ goto done;
+ }
}
hypervisor_version = 1;
++++++ 61f2b6ba-no-unlimited-mig2file-speed.patch ++++++
commit 61f2b6ba5fdef0613d6351b99913b5ef468144ce
Author: Eric Blake
Date: Tue Nov 8 12:01:48 2011 -0700
qemu: fix domjobabort regression
This reverts commit ef1065cf5ac; see also this bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=751900
In qemu 0.15.1 and earlier, during migration to file, the
qemu_savevm_state_begin and qemu_savevm_state_iterate methods
will both process as much migration data as possible until either
1. The file descriptor returns EAGAIN
2. The bandwidth rate limit is reached
If we set the rate limit to ULONG_MAX, test 2 never becomes true. We're
passing a plain file descriptor to QEMU and POSIX does not support EAGAIN on
regular files / block devices, so test 1 never becomes true either.
In the 'virsh save --bypass-cache' case, we pass a pipe instead of a
regular fd, but using a pipe adds I/O overhead, so always passing a
pipe just so qemu can see EAGAIN doesn't seem nice.
The ultimate fix needs to come from qemu - background migration must
respect asynchronous abort requests, or else periodically return
control to the main handling loop without an EAGAIN and without
waiting to hit an insanely large amount of data. But until a
version of qemu is fixed to support "unlimited" data rates while
still allowing cancellation, the best we can do is avoid the
automatic use of unlimited rates from within libvirt (users can
still explicitly change the migration rates, if they are aware that
they are giving up the ability to cancel a job).
Reverting the lone use of QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX is
the simplest patch; this slows migration back down to a default
32M/sec cap, but also ensures that the main qemu processing loop
will still be responsive to cancellation requests. Hopefully
upstream qemu will provide us a means of safely using unlimited
speed, including a runtime probe of that capability.
* src/qemu/qemu_migration.c (qemuMigrationToFile): Revert attempt
to use unlimited migration bandwidth when migrating to file.
Signed-off-by: Daniel Veillard
Signed-off-by: Eric Blake
Index: libvirt-0.9.6/src/qemu/qemu_migration.c
===================================================================
--- libvirt-0.9.6.orig/src/qemu/qemu_migration.c
+++ libvirt-0.9.6/src/qemu/qemu_migration.c
@@ -2718,16 +2718,6 @@ qemuMigrationToFile(struct qemud_driver
bool restoreLabel = false;
virCommandPtr cmd = NULL;
int pipeFD[2] = { -1, -1 };
- unsigned long saveMigBandwidth = priv->migMaxBandwidth;
-
- /* Increase migration bandwidth to unlimited since target is a file.
- * Failure to change migration speed is not fatal. */
- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
- qemuMonitorSetMigrationSpeed(priv->mon,
- QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX);
- priv->migMaxBandwidth = QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX;
- qemuDomainObjExitMonitorWithDriver(driver, vm);
- }
if (qemuCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
(!compressor || pipe(pipeFD) == 0)) {
@@ -2839,13 +2829,6 @@ qemuMigrationToFile(struct qemud_driver
ret = 0;
cleanup:
- /* Restore max migration bandwidth */
- if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) {
- qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth);
- priv->migMaxBandwidth = saveMigBandwidth;
- qemuDomainObjExitMonitorWithDriver(driver, vm);
- }
-
VIR_FORCE_CLOSE(pipeFD[0]);
VIR_FORCE_CLOSE(pipeFD[1]);
virCommandFree(cmd);
++++++ 9ae4ac7a-PolicyKit.patch ++++++
commit 9ae4ac7ac07d872cd32d0a3a1b1b44730b04bda7
Author: Jim Fehlig
Date: Tue Jan 3 11:35:06 2012 -0700
PolicyKit: Check auth before asking client to obtain it
I previously mentioned [1] a PolicyKit issue where libvirt would
proceed with authentication even though polkit-auth failed:
testusr xen134:~> virsh list --all
Attempting to obtain authorization for org.libvirt.unix.manage.
polkit-grant-helper: given auth type (8 -> yes) is bogus
Failed to obtain authorization for org.libvirt.unix.manage.
Id Name State
----------------------------------
0 Domain-0 running
- sles11sp1-pv shut off
AFAICT, libvirt attempts to obtain a privilege it already has,
causing polkit-auth to fail with above message. Instead of calling
obtain and then checking auth, IMO the workflow should be for the
server to check auth first, and if that fails ask the client to
obtain it and check again. This workflow also allows for checking
only successful exit of polkit-auth in virConnectAuthGainPolkit().
[1] https://www.redhat.com/archives/libvir-list/2011-December/msg00837.html
Index: libvirt-0.9.6/src/remote/remote_driver.c
===================================================================
--- libvirt-0.9.6.orig/src/remote/remote_driver.c
+++ libvirt-0.9.6/src/remote/remote_driver.c
@@ -2952,6 +2952,14 @@ remoteAuthPolkit (virConnectPtr conn, st
};
VIR_DEBUG("Client initialize PolicyKit-0 authentication");
+ /* Check auth first and if it succeeds we are done. */
+ memset (&ret, 0, sizeof ret);
+ if (call (conn, priv, 0, REMOTE_PROC_AUTH_POLKIT,
+ (xdrproc_t) xdr_void, (char *)NULL,
+ (xdrproc_t) xdr_remote_auth_polkit_ret, (char *) &ret) == 0)
+ goto out;
+
+ /* Auth failed. Ask client to obtain it and check again. */
if (auth && auth->cb) {
/* Check if the necessary credential type for PolicyKit is supported */
for (i = 0 ; i < auth->ncredtype ; i++) {
@@ -2969,9 +2977,11 @@ remoteAuthPolkit (virConnectPtr conn, st
}
} else {
VIR_DEBUG("Client auth callback does not support PolicyKit");
+ return -1;
}
} else {
VIR_DEBUG("No auth callback provided");
+ return -1;
}
memset (&ret, 0, sizeof ret);
@@ -2981,6 +2991,7 @@ remoteAuthPolkit (virConnectPtr conn, st
return -1; /* virError already set by call */
}
+out:
VIR_DEBUG("PolicyKit-0 authentication complete");
return 0;
}
Index: libvirt-0.9.6/src/libvirt.c
===================================================================
--- libvirt-0.9.6.orig/src/libvirt.c
+++ libvirt-0.9.6/src/libvirt.c
@@ -129,8 +129,7 @@ static int virConnectAuthGainPolkit(cons
return -1;
}
- if (!WIFEXITED(status) ||
- (WEXITSTATUS(status) != 0 && WEXITSTATUS(status) != 1)) {
+ if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
return -1;
}
++++++ a495365d-sexpr-empty-str.patch ++++++
commit a495365d09138bf0f07504cfe9b6ea2de858e18e
Author: Jim Fehlig
Date: Fri Nov 18 14:54:38 2011 -0700
Don't copy sexpr node value that is an empty string
Xen4.1 initializes some unspecified sexpr config items to an empty
string, unlike previous Xen versions that would leave the item unset.
E.g. the kernel item for an HVM guest (non-direct kernel boot):
Xen4.0 and earlier
...
(image
(hvm
(kernel )
...
Xen4.1
...
(image
(hvm
(kernel '')
...
The empty string for kernel causes some grief in subsequent parsing
where existence of specified kernel is checked, e.g.
if (!def->os.kernel)
...
This patch solves the problem in sexpr_node_copy() by not copying
a node containing an empty string.
diff --git a/src/util/sexpr.c b/src/util/sexpr.c
index 0e30087..3523d76 100644
--- a/src/util/sexpr.c
+++ b/src/util/sexpr.c
@@ -519,7 +519,7 @@ int sexpr_node_copy(const struct sexpr *sexpr, const char *node, char **dst)
{
const char *val = sexpr_node(sexpr, node);
- if (val) {
+ if (val && *val) {
*dst = strdup(val);
if (!(*dst))
return -1;
++++++ ae1232b2-CVE-2011-4600.patch ++++++
commit ae1232b298323dd7bef909426e2ebafa6bca9157
Author: Laine Stump
Date: Tue Dec 6 15:13:50 2011 -0500
network: don't add iptables rules for externally managed networks
This patch addresses https://bugzilla.redhat.com/show_bug.cgi?id=760442
When a network has any forward type other than route, nat or none, the
network configuration should be done completely external to libvirt -
libvirt only uses these types to allow configuring guests in a manner
that isn't tied to a specific host (all the host-specific information,
in particular interface names, port profile data, and bandwidth
configuration is in the network definition, and the guest
configuration only references it).
Due to a bug in the bridge network driver, libvirt was adding iptables
rules for networks with forward type='bridge' etc. any time libvirtd
was restarted while one of these networks was active.
This patch eliminates that error by only "reloading" iptables rules if
forward type is route, nat, or none.
Index: libvirt-0.9.6/src/network/bridge_driver.c
===================================================================
--- libvirt-0.9.6.orig/src/network/bridge_driver.c
+++ libvirt-0.9.6/src/network/bridge_driver.c
@@ -1480,14 +1480,22 @@ networkReloadIptablesRules(struct networ
VIR_INFO("Reloading iptables rules");
for (i = 0 ; i < driver->networks.count ; i++) {
- virNetworkObjLock(driver->networks.objs[i]);
- if (virNetworkObjIsActive(driver->networks.objs[i])) {
- networkRemoveIptablesRules(driver, driver->networks.objs[i]);
- if (networkAddIptablesRules(driver, driver->networks.objs[i]) < 0) {
+ virNetworkObjPtr network = driver->networks.objs[i];
+
+ virNetworkObjLock(network);
+ if (virNetworkObjIsActive(network) &&
+ ((network->def->forwardType == VIR_NETWORK_FORWARD_NONE) ||
+ (network->def->forwardType == VIR_NETWORK_FORWARD_NAT) ||
+ (network->def->forwardType == VIR_NETWORK_FORWARD_ROUTE))) {
+ /* Only the three L3 network types that are configured by libvirt
+ * need to have iptables rules reloaded.
+ */
+ networkRemoveIptablesRules(driver, network);
+ if (networkAddIptablesRules(driver, network) < 0) {
/* failed to add but already logged */
}
}
- virNetworkObjUnlock(driver->networks.objs[i]);
+ virNetworkObjUnlock(network);
}
}
++++++ beeea90a-xen-hvm-console.patch ++++++
Index: libvirt-0.9.6/src/xen/xend_internal.c
===================================================================
--- libvirt-0.9.6.orig/src/xen/xend_internal.c
+++ libvirt-0.9.6/src/xen/xend_internal.c
@@ -1761,7 +1761,10 @@ xenDaemonDomainFetch(virConnectPtr conn,
id = xenGetDomIdFromSxpr(root, priv->xendConfigVersion);
xenUnifiedLock(priv);
- tty = xenStoreDomainGetConsolePath(conn, id);
+ if (sexpr_lookup(root, "domain/image/hvm"))
+ tty = xenStoreDomainGetSerialConsolePath(conn, id);
+ else
+ tty = xenStoreDomainGetConsolePath(conn, id);
vncport = xenStoreDomainGetVNCPort(conn, id);
xenUnifiedUnlock(priv);
if (!(def = xenParseSxpr(root,
Index: libvirt-0.9.6/src/xen/xs_internal.h
===================================================================
--- libvirt-0.9.6.orig/src/xen/xs_internal.h
+++ libvirt-0.9.6/src/xen/xs_internal.h
@@ -45,6 +45,8 @@ int xenStoreDomainGetVNCPort
int domid);
char * xenStoreDomainGetConsolePath(virConnectPtr conn,
int domid);
+char * xenStoreDomainGetSerialConsolePath(virConnectPtr conn,
+ int domid);
char * xenStoreDomainGetNetworkID(virConnectPtr conn,
int id,
const char *mac);
Index: libvirt-0.9.6/src/xen/xs_internal.c
===================================================================
--- libvirt-0.9.6.orig/src/xen/xs_internal.c
+++ libvirt-0.9.6/src/xen/xs_internal.c
@@ -852,6 +852,25 @@ char * xenStoreDomainGetConsole
return virDomainDoStoreQuery(conn, domid, "console/tty");
}
+/**
+ * xenStoreDomainGetSerailConsolePath:
+ * @conn: the hypervisor connection
+ * @domid: id of the domain
+ *
+ * Return the path to the pseudo TTY on which the guest domain's
+ * serial console is attached.
+ *
+ * Returns the path to the serial console. It is the callers
+ * responsibilty to free() the return string. Returns NULL
+ * on error
+ *
+ * The caller must hold the lock on the privateData
+ * associated with the 'conn' parameter.
+ */
+char * xenStoreDomainGetSerialConsolePath(virConnectPtr conn, int domid) {
+ return virDomainDoStoreQuery(conn, domid, "serial/0/tty");
+}
+
/*
* xenStoreDomainGetNetworkID:
++++++ bonding-miimon-xml-parsing.patch ++++++
From 03f8b5ab87fba421614128fd620a67793d1aba79 Mon Sep 17 00:00:00 2001
From: Marius Tomaschewski
Date: Thu, 16 Jun 2011 16:47:53 +0200
Subject: [PATCH] bonding interface miimon parameter parsing success
Report success at the end of bonding interface miimon parameter
parsing, when some of the optional parameters were missed, but
no problems were found.
---
src/conf/interface_conf.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
Index: libvirt-0.9.6/src/conf/interface_conf.c
===================================================================
--- libvirt-0.9.6.orig/src/conf/interface_conf.c
+++ libvirt-0.9.6/src/conf/interface_conf.c
@@ -621,6 +621,7 @@ virInterfaceDefParseBond(virInterfaceDef
ret = -1;
goto error;
}
+ ret = 0; /* no problem found, report success */
} else if (virXPathNode("./arpmon[1]", ctxt) != NULL) {
++++++ d8916dc8-def-qemu-migspeed.patch ++++++
commit d8916dc8e2f612ab3ce46f32c4bfeb0bd73f6007
Author: Jim Fehlig
Date: Thu Dec 15 11:25:07 2011 -0700
Fix default migration speed in qemu driver
In commit 6f84e110 I mistakenly set default migration speed to
33554432 Mb! The units of migMaxBandwidth is Mb, with conversion
handled in qemuMonitor{JSON,Text}SetMigrationSpeed().
Also, remove definition of QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX since
it is no longer used after reverting commit ef1065cf.
Index: libvirt-0.9.6/src/qemu/qemu_domain.h
===================================================================
--- libvirt-0.9.6.orig/src/qemu/qemu_domain.h
+++ libvirt-0.9.6/src/qemu/qemu_domain.h
@@ -36,14 +36,7 @@
(1 << VIR_DOMAIN_VIRT_KVM) | \
(1 << VIR_DOMAIN_VIRT_XEN))
-# define QEMU_DOMAIN_DEFAULT_MIG_BANDWIDTH_MAX (32 << 20)
-# if ULONG_MAX == 4294967295
-/* Qemu has a 64-bit limit, but we are limited by our historical choice of
- * representing bandwidth in a long instead of a 64-bit int. */
-# define QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX ULONG_MAX
-# else
-# define QEMU_DOMAIN_FILE_MIG_BANDWIDTH_MAX (INT64_MAX / (1024 * 1024))
-# endif
+# define QEMU_DOMAIN_DEFAULT_MIG_BANDWIDTH_MAX 32
# define JOB_MASK(job) (1 << (job - 1))
# define DEFAULT_JOB_MASK \
++++++ install-apparmor-profiles.patch ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-0.9.4/examples/apparmor/Makefile.am
+Index: libvirt-0.9.6/examples/apparmor/Makefile.am
===================================================================
---- libvirt-0.9.4.orig/examples/apparmor/Makefile.am
-+++ libvirt-0.9.4/examples/apparmor/Makefile.am
+--- libvirt-0.9.6.orig/examples/apparmor/Makefile.am
++++ libvirt-0.9.6/examples/apparmor/Makefile.am
@@ -1,8 +1,39 @@
## Copyright (C) 2005-2011 Red Hat, Inc.
## See COPYING.LIB for the License of this software
@@ -47,10 +47,10 @@
+ rm -f $(DESTDIR)$(sysconfdir)/apparmor.d/libvirt/TEMPLATE
+
+endif
-Index: libvirt-0.9.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
+Index: libvirt-0.9.6/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
===================================================================
--- /dev/null
-+++ libvirt-0.9.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
++++ libvirt-0.9.6/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in
@@ -0,0 +1,40 @@
+# Last Modified: Fri Aug 19 11:21:48 2011
+#include
@@ -92,9 +92,9 @@
+ /var/lib/kvm/images/ r,
+ /var/lib/kvm/images/** r,
+}
-Index: libvirt-0.9.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper
+Index: libvirt-0.9.6/examples/apparmor/usr.lib.libvirt.virt-aa-helper
===================================================================
---- libvirt-0.9.4.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper
+--- libvirt-0.9.6.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper
+++ /dev/null
@@ -1,38 +0,0 @@
-# Last Modified: Mon Apr 5 15:10:27 2010
@@ -135,9 +135,9 @@
- /var/lib/libvirt/images/ r,
- /var/lib/libvirt/images/** r,
-}
-Index: libvirt-0.9.4/examples/apparmor/usr.sbin.libvirtd
+Index: libvirt-0.9.6/examples/apparmor/usr.sbin.libvirtd
===================================================================
---- libvirt-0.9.4.orig/examples/apparmor/usr.sbin.libvirtd
+--- libvirt-0.9.6.orig/examples/apparmor/usr.sbin.libvirtd
+++ /dev/null
@@ -1,52 +0,0 @@
-# Last Modified: Mon Apr 5 15:03:58 2010
@@ -192,11 +192,11 @@
- change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
-
-}
-Index: libvirt-0.9.4/examples/apparmor/usr.sbin.libvirtd.in
+Index: libvirt-0.9.6/examples/apparmor/usr.sbin.libvirtd.in
===================================================================
--- /dev/null
-+++ libvirt-0.9.4/examples/apparmor/usr.sbin.libvirtd.in
-@@ -0,0 +1,52 @@
++++ libvirt-0.9.6/examples/apparmor/usr.sbin.libvirtd.in
+@@ -0,0 +1,55 @@
+# Last Modified: Fri Aug 19 11:20:36 2011
+#include
+@{LIBVIRT}="libvirt"
@@ -235,6 +235,7 @@
+ /sbin/* Ux,
+ /usr/bin/* Ux,
+ /usr/sbin/* Ux,
++ /usr/lib/PolicyKit/polkit-read-auth-helper Px,
+
+ # force the use of virt-aa-helper
+ audit deny /sbin/apparmor_parser rwxl,
@@ -244,15 +245,17 @@
+ audit deny /sys/kernel/security/apparmor/.* rwxl,
+ /sys/kernel/security/apparmor/profiles r,
+ @libdir@/libvirt/* Pxr,
++ @libdir@/libvirt/libvirt_parthelper Ux,
++ @libdir@/libvirt/libvirt_iohelper Ux,
+
+ # allow changing to our UUID-based named profiles
+ change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
+
+}
-Index: libvirt-0.9.4/examples/apparmor/libvirt-qemu
+Index: libvirt-0.9.6/examples/apparmor/libvirt-qemu
===================================================================
---- libvirt-0.9.4.orig/examples/apparmor/libvirt-qemu
-+++ libvirt-0.9.4/examples/apparmor/libvirt-qemu
+--- libvirt-0.9.6.orig/examples/apparmor/libvirt-qemu
++++ libvirt-0.9.6/examples/apparmor/libvirt-qemu
@@ -52,6 +52,7 @@
# access to firmware's etc
/usr/share/kvm/** r,
++++++ relax-qemu-usergroup-check.patch ++++++
Allow qemu driver (and hence libvirtd) to load when qemu
user:group does not exist. The kvm package, which may not
exist on a xen host, creates qemu user:group.
A better (future) solution would be to build the libvirtd
drivers as loadable modules instead of built-in to the
daemon. Then the qemu driver would only be loaded when needed,
which would never be the case on a xen-only configuration.
Index: libvirt-0.9.6/src/qemu/qemu_conf.c
===================================================================
--- libvirt-0.9.6.orig/src/qemu/qemu_conf.c
+++ libvirt-0.9.6/src/qemu/qemu_conf.c
@@ -255,9 +255,7 @@ int qemudLoadDriverConfig(struct qemud_d
return -1;
}
if (virGetUserID(user, &driver->user) < 0) {
- VIR_FREE(user);
- virConfFree(conf);
- return -1;
+ VIR_WARN("User %s does not exist! Continuing...", user);
}
VIR_FREE(user);
@@ -270,9 +268,7 @@ int qemudLoadDriverConfig(struct qemud_d
return -1;
}
if (virGetGroupID(group, &driver->group) < 0) {
- VIR_FREE(group);
- virConfFree(conf);
- return -1;
+ VIR_WARN("Group %s does not exist! Continuing...", group);
}
VIR_FREE(group);
++++++ use-init-script-redhat.patch ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-0.9.4/tools/Makefile.am
+Index: libvirt-0.9.6/tools/Makefile.am
===================================================================
---- libvirt-0.9.4.orig/tools/Makefile.am
-+++ libvirt-0.9.4/tools/Makefile.am
+--- libvirt-0.9.6.orig/tools/Makefile.am
++++ libvirt-0.9.6/tools/Makefile.am
@@ -152,16 +152,17 @@ uninstall-local: uninstall-init
if LIBVIRT_INIT_SCRIPT_RED_HAT
@@ -26,10 +26,10 @@
BUILT_SOURCES += libvirt-guests.init
-Index: libvirt-0.9.4/tools/libvirt-guests.sysconf
+Index: libvirt-0.9.6/tools/libvirt-guests.sysconf
===================================================================
---- libvirt-0.9.4.orig/tools/libvirt-guests.sysconf
-+++ libvirt-0.9.4/tools/libvirt-guests.sysconf
+--- libvirt-0.9.6.orig/tools/libvirt-guests.sysconf
++++ libvirt-0.9.6/tools/libvirt-guests.sysconf
@@ -1,18 +1,28 @@
+## Path: System/Virtualization/libvirt
+
@@ -80,10 +80,10 @@
# If non-zero, try to bypass the file system cache when saving and
# restoring guests, even though this may give slower operation for
# some file systems.
-Index: libvirt-0.9.4/tools/libvirt-guests.init.sh
+Index: libvirt-0.9.6/tools/libvirt-guests.init.sh
===================================================================
---- libvirt-0.9.4.orig/tools/libvirt-guests.init.sh
-+++ libvirt-0.9.4/tools/libvirt-guests.init.sh
+--- libvirt-0.9.6.orig/tools/libvirt-guests.init.sh
++++ libvirt-0.9.6/tools/libvirt-guests.init.sh
@@ -4,10 +4,10 @@
#
### BEGIN INIT INFO
@@ -226,10 +226,10 @@
esac
-exit $RETVAL
+rc_exit
-Index: libvirt-0.9.4/daemon/Makefile.am
+Index: libvirt-0.9.6/daemon/Makefile.am
===================================================================
---- libvirt-0.9.4.orig/daemon/Makefile.am
-+++ libvirt-0.9.4/daemon/Makefile.am
+--- libvirt-0.9.6.orig/daemon/Makefile.am
++++ libvirt-0.9.6/daemon/Makefile.am
@@ -252,16 +252,12 @@ install-logrotate: $(LOGROTATE_CONFS)
if LIBVIRT_INIT_SCRIPT_RED_HAT
++++++ xen-name-for-devid.patch ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -25,7 +25,7 @@
virDomainDeviceDefPtr dev,
char *class,
char *ref,
-@@ -2749,7 +2750,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
+@@ -2752,7 +2753,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
sexpr = virBufferContentAndReset(&buf);
@@ -34,7 +34,7 @@
/* device doesn't exist, define it */
ret = xend_op(domain->conn, domain->name, "op", "device_create",
"config", sexpr, NULL);
-@@ -2870,7 +2871,7 @@ xenDaemonUpdateDeviceFlags(virDomainPtr
+@@ -2873,7 +2874,7 @@ xenDaemonUpdateDeviceFlags(virDomainPtr
sexpr = virBufferContentAndReset(&buf);
@@ -43,7 +43,7 @@
virXendError(VIR_ERR_OPERATION_INVALID, "%s",
_("requested device does not exist"));
goto cleanup;
-@@ -2965,7 +2966,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
+@@ -2968,7 +2969,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
def, xml, VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@@ -52,7 +52,7 @@
goto cleanup;
if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
-@@ -3915,6 +3916,7 @@ struct xenUnifiedDriver xenDaemonDriver
+@@ -3918,6 +3919,7 @@ struct xenUnifiedDriver xenDaemonDriver
*/
static int
virDomainXMLDevID(virDomainPtr domain,
@@ -60,7 +60,7 @@
virDomainDeviceDefPtr dev,
char *class,
char *ref,
-@@ -3923,8 +3925,12 @@ virDomainXMLDevID(virDomainPtr domain,
+@@ -3926,8 +3928,12 @@ virDomainXMLDevID(virDomainPtr domain,
xenUnifiedPrivatePtr priv = domain->conn->privateData;
char *xref;
char *tmp;
@@ -73,7 +73,7 @@
if (dev->data.disk->driverName &&
STREQ(dev->data.disk->driverName, "tap"))
strcpy(class, "tap");
-@@ -3934,19 +3940,21 @@ virDomainXMLDevID(virDomainPtr domain,
+@@ -3937,19 +3943,21 @@ virDomainXMLDevID(virDomainPtr domain,
else
strcpy(class, "vbd");
++++++ xen-pv-cdrom.patch ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-0.9.1/src/xenxs/xen_sxpr.c
+Index: libvirt-0.9.6/src/xenxs/xen_sxpr.c
===================================================================
---- libvirt-0.9.1.orig/src/xenxs/xen_sxpr.c
-+++ libvirt-0.9.1/src/xenxs/xen_sxpr.c
+--- libvirt-0.9.6.orig/src/xenxs/xen_sxpr.c
++++ libvirt-0.9.6/src/xenxs/xen_sxpr.c
@@ -324,7 +324,7 @@ error:
static int
xenParseSxprDisks(virDomainDefPtr def,
++++++ xend-disk-order.patch ++++++
--- /var/tmp/diff_new_pack.I0nnCU/_old 2012-01-19 18:05:49.000000000 +0100
+++ /var/tmp/diff_new_pack.I0nnCU/_new 2012-01-19 18:05:49.000000000 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-0.9.1/src/xenxs/xen_sxpr.c
+Index: libvirt-0.9.6/src/xenxs/xen_sxpr.c
===================================================================
---- libvirt-0.9.1.orig/src/xenxs/xen_sxpr.c
-+++ libvirt-0.9.1/src/xenxs/xen_sxpr.c
+--- libvirt-0.9.6.orig/src/xenxs/xen_sxpr.c
++++ libvirt-0.9.6/src/xenxs/xen_sxpr.c
@@ -342,20 +342,24 @@ xenParseSxprDisks(virDomainDefPtr def,
const char *src = NULL;
const char *dst = NULL;
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org