diff --git a/0dda594d-libvirtd-shutdown-deadlock.patch b/0dda594d-libvirtd-shutdown-deadlock.patch new file mode 100644 index 0000000..b703457 --- /dev/null +++ b/0dda594d-libvirtd-shutdown-deadlock.patch @@ -0,0 +1,45 @@ +commit 0dda594da99aede7621018a3705e7cf4c13b1606 +Author: Jim Fehlig +Date: Thu Jun 21 09:21:44 2012 -0600 + + Fix deadlock on libvirtd shutdown + + When shutting down libvirtd, the virNetServer shutdown can deadlock + if there are in-flight jobs being handled by virNetServerHandleJob(). + virNetServerFree() will acquire the virNetServer lock and call + virThreadPoolFree() to terminate the workers, waiting for the workers + to finish. But in-flight workers will attempt to acquire the + virNetServer lock, resulting in deadlock. + + Fix the deadlock by unlocking the virNetServer lock before calling + virThreadPoolFree(). This is safe since the virNetServerPtr object + is ref-counted and only decrementing the ref count needs to be + protected. Additionally, there is no need to re-acquire the lock + after virThreadPoolFree() completes as all the workers have + terminated. + +Index: libvirt-0.9.11.4/src/rpc/virnetserver.c +=================================================================== +--- libvirt-0.9.11.4.orig/src/rpc/virnetserver.c ++++ libvirt-0.9.11.4/src/rpc/virnetserver.c +@@ -801,10 +801,9 @@ void virNetServerFree(virNetServerPtr sr + virNetServerLock(srv); + VIR_DEBUG("srv=%p refs=%d", srv, srv->refs); + srv->refs--; +- if (srv->refs > 0) { +- virNetServerUnlock(srv); ++ virNetServerUnlock(srv); ++ if (srv->refs > 0) + return; +- } + + for (i = 0 ; i < srv->nservices ; i++) + virNetServerServiceToggle(srv->services[i], false); +@@ -845,7 +844,6 @@ void virNetServerFree(virNetServerPtr sr + dbus_connection_unref(srv->sysbus); + #endif + +- virNetServerUnlock(srv); + virMutexDestroy(&srv->lock); + VIR_FREE(srv); + } diff --git a/4036aa91-systemd.patch b/4036aa91-systemd.patch new file mode 100644 index 0000000..33872f0 --- /dev/null +++ b/4036aa91-systemd.patch @@ -0,0 +1,26 @@ +commit 4036aa91bff6482cf4c136c93277619fa8ec6f94 +Author: Jim Fehlig +Date: Mon Jul 9 09:52:55 2012 -0600 + + systemd: start libvirtd after network + + Domains configured with autostart may fail to start if the host + network stack has not been started. E.g. when using bridged + networking autostarting a domain can fail with + + libvirtd[1403]: 2012-06-20 13:23:49.833+0000: 1485: error : + qemuAutostartDomain:177 : Failed to autostart VM 'test': Cannot get + interface MTU on 'br0': No such device + +Index: libvirt-0.9.11.4/daemon/libvirtd.service.in +=================================================================== +--- libvirt-0.9.11.4.orig/daemon/libvirtd.service.in ++++ libvirt-0.9.11.4/daemon/libvirtd.service.in +@@ -6,6 +6,7 @@ + [Unit] + Description=Virtualization daemon + Before=libvirt-guests.service ++After=network.target + + [Service] + EnvironmentFile=-/etc/sysconfig/libvirtd diff --git a/57349ffc-lxc-ctrl.patch b/57349ffc-lxc-ctrl.patch new file mode 100644 index 0000000..2f5f13a --- /dev/null +++ b/57349ffc-lxc-ctrl.patch @@ -0,0 +1,70 @@ +commit 57349ffc10290eed2cb25ca7cfb4b34ab5003156 +Author: Jim Fehlig +Date: Wed Jun 20 23:28:09 2012 -0600 + + Initialize random generator in lxc controller + + The lxc contoller eventually makes use of virRandomBits(), which was + segfaulting since virRandomInitialize() is never invoked. + + Program received signal SIGSEGV, Segmentation fault. + 0x00007ffff554d560 in random_r () from /lib64/libc.so.6 + (gdb) bt + 0 0x00007ffff554d560 in random_r () from /lib64/libc.so.6 + 1 0x0000000000469eaa in virRandomBits (nbits=32) at util/virrandom.c:80 + 2 0x000000000045bf69 in virHashCreateFull (size=256, + dataFree=0x4aa2a2 , keyCode=0x45bd40 , + keyEqual=0x45bdad , keyCopy=0x45bdfa , + keyFree=0x45be37 ) at util/virhash.c:134 + 3 0x000000000045c069 in virHashCreate (size=0, dataFree=0x4aa2a2 ) + at util/virhash.c:164 + 4 0x00000000004aa562 in virNWFilterHashTableCreate (n=0) + at conf/nwfilter_params.c:686 + 5 0x00000000004aa95b in virNWFilterParseParamAttributes (cur=0x711d30) + at conf/nwfilter_params.c:793 + 6 0x0000000000481a7f in virDomainNetDefParseXML (caps=0x702c90, node=0x7116b0, + ctxt=0x7101b0, bootMap=0x0, flags=0) at conf/domain_conf.c:4589 + 7 0x000000000048cc36 in virDomainDefParseXML (caps=0x702c90, xml=0x710040, + root=0x7103b0, ctxt=0x7101b0, expectedVirtTypes=16, flags=0) + at conf/domain_conf.c:8658 + 8 0x000000000048f011 in virDomainDefParseNode (caps=0x702c90, xml=0x710040, + root=0x7103b0, expectedVirtTypes=16, flags=0) at conf/domain_conf.c:9360 + 9 0x000000000048ee30 in virDomainDefParse (xmlStr=0x0, + filename=0x702ae0 "/var/run/libvirt/lxc/x.xml", caps=0x702c90, + expectedVirtTypes=16, flags=0) at conf/domain_conf.c:9310 + 10 0x000000000048ef00 in virDomainDefParseFile (caps=0x702c90, + filename=0x702ae0 "/var/run/libvirt/lxc/x.xml", expectedVirtTypes=16, flags=0) + at conf/domain_conf.c:9332 + 11 0x0000000000425053 in main (argc=5, argv=0x7fffffffe2b8) + at lxc/lxc_controller.c:1773 + +Index: libvirt-0.9.11.4/src/lxc/lxc_controller.c +=================================================================== +--- libvirt-0.9.11.4.orig/src/lxc/lxc_controller.c ++++ libvirt-0.9.11.4/src/lxc/lxc_controller.c +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + #if HAVE_CAPNG + # include +@@ -71,6 +72,7 @@ + #include "command.h" + #include "processinfo.h" + #include "nodeinfo.h" ++#include "virrandom.h" + + #define VIR_FROM_THIS VIR_FROM_LXC + +@@ -1663,7 +1665,8 @@ int main(int argc, char *argv[]) + + if (setlocale(LC_ALL, "") == NULL || + bindtextdomain(PACKAGE, LOCALEDIR) == NULL || +- textdomain(PACKAGE) == NULL) { ++ textdomain(PACKAGE) == NULL || ++ virRandomInitialize(time(NULL) ^ getpid())) { + fprintf(stderr, _("%s: initialization failed\n"), argv[0]); + exit(EXIT_FAILURE); + } diff --git a/9c77bf04-fix-virnetserver-refcnt.patch b/9c77bf04-fix-virnetserver-refcnt.patch new file mode 100644 index 0000000..83ca93a --- /dev/null +++ b/9c77bf04-fix-virnetserver-refcnt.patch @@ -0,0 +1,34 @@ +commit 9c77bf04b03ff026bb37212a195070d8983f530d +Author: Hu Tao +Date: Fri Jun 22 11:26:03 2012 +0800 + + fix a bug of ref count in virnetserver.c + + The test of ref count is not protected by lock, which is unsafe because + the ref count may have been changed by other threads during the test. + + This patch fixes this. + +Index: libvirt-0.9.11.4/src/rpc/virnetserver.c +=================================================================== +--- libvirt-0.9.11.4.orig/src/rpc/virnetserver.c ++++ libvirt-0.9.11.4/src/rpc/virnetserver.c +@@ -794,15 +794,16 @@ void virNetServerQuit(virNetServerPtr sr + void virNetServerFree(virNetServerPtr srv) + { + int i; ++ int refs; + + if (!srv) + return; + + virNetServerLock(srv); + VIR_DEBUG("srv=%p refs=%d", srv, srv->refs); +- srv->refs--; ++ refs = --srv->refs; + virNetServerUnlock(srv); +- if (srv->refs > 0) ++ if (refs > 0) + return; + + for (i = 0 ; i < srv->nservices ; i++) diff --git a/AF_PACKET.patch b/AF_PACKET.patch index c6d1966..316a217 100644 --- a/AF_PACKET.patch +++ b/AF_PACKET.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/src/util/virnetdev.c +Index: libvirt-0.9.11.4/src/util/virnetdev.c =================================================================== ---- libvirt-0.9.11.3.orig/src/util/virnetdev.c -+++ libvirt-0.9.11.3/src/util/virnetdev.c +--- libvirt-0.9.11.4.orig/src/util/virnetdev.c ++++ libvirt-0.9.11.4/src/util/virnetdev.c @@ -85,7 +85,7 @@ static int virNetDevSetupControlFull(con static int virNetDevSetupControl(const char *ifname, struct ifreq *ifr) @@ -11,10 +11,10 @@ Index: libvirt-0.9.11.3/src/util/virnetdev.c } #endif -Index: libvirt-0.9.11.3/src/util/virnetdevbridge.c +Index: libvirt-0.9.11.4/src/util/virnetdevbridge.c =================================================================== ---- libvirt-0.9.11.3.orig/src/util/virnetdevbridge.c -+++ libvirt-0.9.11.3/src/util/virnetdevbridge.c +--- libvirt-0.9.11.4.orig/src/util/virnetdevbridge.c ++++ libvirt-0.9.11.4/src/util/virnetdevbridge.c @@ -84,7 +84,7 @@ static int virNetDevSetupControlFull(con static int virNetDevSetupControl(const char *ifname, struct ifreq *ifr) diff --git a/clone.patch b/clone.patch index af5ddbb..353c9ba 100644 --- a/clone.patch +++ b/clone.patch @@ -2,7 +2,7 @@ Index: src/lxc/lxc_container.c =================================================================== --- src/lxc/lxc_container.c.orig +++ src/lxc/lxc_container.c -@@ -1453,6 +1453,9 @@ int lxcContainerStart(virDomainDefPtr de +@@ -1454,6 +1454,9 @@ int lxcContainerStart(virDomainDefPtr de ttyPaths, nttyPaths, handshakefd}; /* allocate a stack for the container */ @@ -12,7 +12,7 @@ Index: src/lxc/lxc_container.c if (VIR_ALLOC_N(stack, stacksize) < 0) { virReportOOMError(); return -1; -@@ -1472,7 +1475,11 @@ int lxcContainerStart(virDomainDefPtr de +@@ -1473,7 +1476,11 @@ int lxcContainerStart(virDomainDefPtr de cflags |= CLONE_NEWNET; } @@ -24,7 +24,7 @@ Index: src/lxc/lxc_container.c VIR_FREE(stack); VIR_DEBUG("clone() completed, new container PID is %d", pid); -@@ -1498,6 +1505,7 @@ int lxcContainerAvailable(int features) +@@ -1499,6 +1506,7 @@ int lxcContainerAvailable(int features) int cpid; char *childStack; char *stack; @@ -32,7 +32,7 @@ Index: src/lxc/lxc_container.c if (features & LXC_CONTAINER_FEATURE_USER) flags |= CLONE_NEWUSER; -@@ -1505,14 +1513,21 @@ int lxcContainerAvailable(int features) +@@ -1506,14 +1514,21 @@ int lxcContainerAvailable(int features) if (features & LXC_CONTAINER_FEATURE_NET) flags |= CLONE_NEWNET; diff --git a/install-apparmor-profiles.patch b/install-apparmor-profiles.patch index 20c83cc..fef25ac 100644 --- a/install-apparmor-profiles.patch +++ b/install-apparmor-profiles.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/examples/apparmor/Makefile.am +Index: libvirt-0.9.11.4/examples/apparmor/Makefile.am =================================================================== ---- libvirt-0.9.11.3.orig/examples/apparmor/Makefile.am -+++ libvirt-0.9.11.3/examples/apparmor/Makefile.am +--- libvirt-0.9.11.4.orig/examples/apparmor/Makefile.am ++++ libvirt-0.9.11.4/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 @@ Index: libvirt-0.9.11.3/examples/apparmor/Makefile.am + rm -f $(DESTDIR)$(sysconfdir)/apparmor.d/libvirt/TEMPLATE + +endif -Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in +Index: libvirt-0.9.11.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in =================================================================== --- /dev/null -+++ libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in ++++ libvirt-0.9.11.4/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 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper.in + /var/lib/kvm/images/ r, + /var/lib/kvm/images/** r, +} -Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper +Index: libvirt-0.9.11.4/examples/apparmor/usr.lib.libvirt.virt-aa-helper =================================================================== ---- libvirt-0.9.11.3.orig/examples/apparmor/usr.lib.libvirt.virt-aa-helper +--- libvirt-0.9.11.4.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 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.lib.libvirt.virt-aa-helper - /var/lib/libvirt/images/ r, - /var/lib/libvirt/images/** r, -} -Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd +Index: libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd =================================================================== ---- libvirt-0.9.11.3.orig/examples/apparmor/usr.sbin.libvirtd +--- libvirt-0.9.11.4.orig/examples/apparmor/usr.sbin.libvirtd +++ /dev/null @@ -1,52 +0,0 @@ -# Last Modified: Mon Apr 5 15:03:58 2010 @@ -192,10 +192,10 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd - change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*, - -} -Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in +Index: libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd.in =================================================================== --- /dev/null -+++ libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in ++++ libvirt-0.9.11.4/examples/apparmor/usr.sbin.libvirtd.in @@ -0,0 +1,58 @@ +# Last Modified: Fri Aug 19 11:20:36 2011 +#include @@ -255,10 +255,10 @@ Index: libvirt-0.9.11.3/examples/apparmor/usr.sbin.libvirtd.in + change_profile -> @{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*, + +} -Index: libvirt-0.9.11.3/examples/apparmor/libvirt-qemu +Index: libvirt-0.9.11.4/examples/apparmor/libvirt-qemu =================================================================== ---- libvirt-0.9.11.3.orig/examples/apparmor/libvirt-qemu -+++ libvirt-0.9.11.3/examples/apparmor/libvirt-qemu +--- libvirt-0.9.11.4.orig/examples/apparmor/libvirt-qemu ++++ libvirt-0.9.11.4/examples/apparmor/libvirt-qemu @@ -52,6 +52,7 @@ # access to firmware's etc /usr/share/kvm/** r, diff --git a/libvirt-0.9.11.3.tar.bz2 b/libvirt-0.9.11.3.tar.bz2 deleted file mode 100644 index 1f0c216..0000000 --- a/libvirt-0.9.11.3.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f9a4fd33ee9e88b0dc1431799b583feba0539e224db87e1c4b2c44ddae52afa -size 13800939 diff --git a/libvirt-0.9.11.4.tar.bz2 b/libvirt-0.9.11.4.tar.bz2 new file mode 100644 index 0000000..5b57f60 --- /dev/null +++ b/libvirt-0.9.11.4.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba68c591b0a500188170fefc43d0dbec02f4527aeed18c5b2ebbdc5ca91bca56 +size 13792390 diff --git a/libvirt-suse-netcontrol.patch b/libvirt-suse-netcontrol.patch index 1104030..d93cec8 100644 --- a/libvirt-suse-netcontrol.patch +++ b/libvirt-suse-netcontrol.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/configure.ac +Index: libvirt-0.9.11.4/configure.ac =================================================================== ---- libvirt-0.9.11.3.orig/configure.ac -+++ libvirt-0.9.11.3/configure.ac +--- libvirt-0.9.11.4.orig/configure.ac ++++ libvirt-0.9.11.4/configure.ac @@ -63,6 +63,7 @@ AVAHI_REQUIRED="0.6.0" POLKIT_REQUIRED="0.6" PARTED_REQUIRED="1.8.0" @@ -10,7 +10,7 @@ Index: libvirt-0.9.11.3/configure.ac UDEV_REQUIRED=145 PCIACCESS_REQUIRED=0.10.0 XMLRPC_REQUIRED=1.14.0 -@@ -1741,6 +1742,38 @@ AM_CONDITIONAL([WITH_NETCF], [test "$wit +@@ -1756,6 +1757,38 @@ AM_CONDITIONAL([WITH_NETCF], [test "$wit AC_SUBST([NETCF_CFLAGS]) AC_SUBST([NETCF_LIBS]) @@ -49,7 +49,7 @@ Index: libvirt-0.9.11.3/configure.ac AC_ARG_WITH([secrets], AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes]) -@@ -2686,6 +2719,7 @@ AC_MSG_NOTICE([ Remote: $with_remote]) +@@ -2701,6 +2734,7 @@ AC_MSG_NOTICE([ Remote: $with_remote]) AC_MSG_NOTICE([ Network: $with_network]) AC_MSG_NOTICE([Libvirtd: $with_libvirtd]) AC_MSG_NOTICE([ netcf: $with_netcf]) @@ -57,7 +57,7 @@ Index: libvirt-0.9.11.3/configure.ac AC_MSG_NOTICE([ macvtap: $with_macvtap]) AC_MSG_NOTICE([virtport: $with_virtualport]) AC_MSG_NOTICE([]) -@@ -2817,6 +2851,11 @@ AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $ +@@ -2832,6 +2866,11 @@ AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $ else AC_MSG_NOTICE([ netcf: no]) fi @@ -69,10 +69,10 @@ Index: libvirt-0.9.11.3/configure.ac if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS]) else -Index: libvirt-0.9.11.3/daemon/Makefile.am +Index: libvirt-0.9.11.4/daemon/Makefile.am =================================================================== ---- libvirt-0.9.11.3.orig/daemon/Makefile.am -+++ libvirt-0.9.11.3/daemon/Makefile.am +--- libvirt-0.9.11.4.orig/daemon/Makefile.am ++++ libvirt-0.9.11.4/daemon/Makefile.am @@ -143,6 +143,10 @@ endif if WITH_NETCF @@ -84,10 +84,10 @@ Index: libvirt-0.9.11.3/daemon/Makefile.am endif if WITH_NODE_DEVICES -Index: libvirt-0.9.11.3/daemon/libvirtd.c +Index: libvirt-0.9.11.4/daemon/libvirtd.c =================================================================== ---- libvirt-0.9.11.3.orig/daemon/libvirtd.c -+++ libvirt-0.9.11.3/daemon/libvirtd.c +--- libvirt-0.9.11.4.orig/daemon/libvirtd.c ++++ libvirt-0.9.11.4/daemon/libvirtd.c @@ -76,6 +76,10 @@ # endif # ifdef WITH_NETCF @@ -110,11 +110,11 @@ Index: libvirt-0.9.11.3/daemon/libvirtd.c # endif # ifdef WITH_STORAGE_DIR storageRegister(); -Index: libvirt-0.9.11.3/src/Makefile.am +Index: libvirt-0.9.11.4/src/Makefile.am =================================================================== ---- libvirt-0.9.11.3.orig/src/Makefile.am -+++ libvirt-0.9.11.3/src/Makefile.am -@@ -967,6 +967,24 @@ libvirt_driver_interface_la_LIBADD += .. +--- libvirt-0.9.11.4.orig/src/Makefile.am ++++ libvirt-0.9.11.4/src/Makefile.am +@@ -970,6 +970,24 @@ libvirt_driver_interface_la_LIBADD += .. libvirt_driver_interface_la_LDFLAGS += -module -avoid-version endif libvirt_driver_interface_la_SOURCES = $(INTERFACE_DRIVER_SOURCES) @@ -139,10 +139,10 @@ Index: libvirt-0.9.11.3/src/Makefile.am endif if WITH_SECRETS -Index: libvirt-0.9.11.3/src/interface/netcf_driver.c +Index: libvirt-0.9.11.4/src/interface/netcf_driver.c =================================================================== ---- libvirt-0.9.11.3.orig/src/interface/netcf_driver.c -+++ libvirt-0.9.11.3/src/interface/netcf_driver.c +--- libvirt-0.9.11.4.orig/src/interface/netcf_driver.c ++++ libvirt-0.9.11.4/src/interface/netcf_driver.c @@ -23,7 +23,13 @@ #include @@ -208,11 +208,11 @@ Index: libvirt-0.9.11.3/src/interface/netcf_driver.c /* open netcf */ if (ncf_init(&driverState->netcf, NULL) != 0) { -Index: libvirt-0.9.11.3/tools/virsh.c +Index: libvirt-0.9.11.4/tools/virsh.c =================================================================== ---- libvirt-0.9.11.3.orig/tools/virsh.c -+++ libvirt-0.9.11.3/tools/virsh.c -@@ -19821,6 +19821,10 @@ vshShowVersion(vshControl *ctl ATTRIBUTE +--- libvirt-0.9.11.4.orig/tools/virsh.c ++++ libvirt-0.9.11.4/tools/virsh.c +@@ -19827,6 +19827,10 @@ vshShowVersion(vshControl *ctl ATTRIBUTE #endif #ifdef WITH_NETCF vshPrint(ctl, " Netcf"); diff --git a/libvirt.changes b/libvirt.changes index 176e14b..5a7a5c0 100644 --- a/libvirt.changes +++ b/libvirt.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Tue Jul 10 09:17:01 MDT 2012 - jfehlig@suse.com + +- libvirtd.service: ensure libvirtd starts after network + 4036aa91-systemd.patch + bnc#767932 + +------------------------------------------------------------------- +Fri Jun 22 16:26:01 MDT 2012 - jfehlig@suse.com + +- Add upstream patch to fix ref count of virNetServer object + 9c77bf04-fix-virnetserver-refcnt.patch + +------------------------------------------------------------------- +Thu Jun 21 11:56:35 MDT 2012 - jfehlig@suse.com + +- Fix libvirtd deadlock on shutdown + 0dda594d-libvirtd-shutdown-deadlock.patch + bnc#767797 + +------------------------------------------------------------------- +Wed Jun 20 23:40:14 MDT 2012 - jfehlig@suse.com + +- Fix segfault in libvirt_lxc + 57349ffc-lxc-ctrl.patch + bnc#767448 + +------------------------------------------------------------------- +Wed Jun 20 10:48:35 MDT 2012 - jfehlig@suse.com + +- Fix build on i586 + revert-d8978c90.patch + +------------------------------------------------------------------- +Tue Jun 19 17:48:26 MDT 2012 - jfehlig@suse.com + +- Update to libvirt 0.9.11.4 stable release + +------------------------------------------------------------------- +Tue Jun 12 14:18:23 MDT 2012 - jfehlig@suse.com + +- VUL-1: Fix hotplug support for usb devices with same vendorID, + productID + 9914477e-usb-search-funcs.patch + 05abd150-usb-improve-hotplug.patch + bnc#766559 + ------------------------------------------------------------------- Wed May 30 16:00:38 MDT 2012 - jfehlig@suse.com diff --git a/libvirt.spec b/libvirt.spec index 2419ce8..2844635 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -327,7 +327,7 @@ BuildRequires: systemd Name: libvirt Url: http://libvirt.org/ -Version: 0.9.11.3 +Version: 0.9.11.4 Release: 0 Summary: A C toolkit to interact with the virtualization capabilities of Linux License: LGPL-2.1+ @@ -410,6 +410,12 @@ Source1: libvirtd.init Source2: libvirtd-relocation-server.fw Source99: baselibs.conf # Upstream patches +# Revert v0.9.11-maint branch commit d8978c90 +Patch0: revert-d8978c90.patch +Patch1: 57349ffc-lxc-ctrl.patch +Patch2: 0dda594d-libvirtd-shutdown-deadlock.patch +Patch3: 9c77bf04-fix-virnetserver-refcnt.patch +Patch4: 4036aa91-systemd.patch # Need to go upstream Patch100: xen-name-for-devid.patch Patch101: clone.patch @@ -545,6 +551,11 @@ Authors: %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %patch100 -p1 %patch101 %patch102 -p1 diff --git a/libvirtd-defaults.patch b/libvirtd-defaults.patch index 37e289e..79381b0 100644 --- a/libvirtd-defaults.patch +++ b/libvirtd-defaults.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/daemon/libvirtd.conf +Index: libvirt-0.9.11.4/daemon/libvirtd.conf =================================================================== ---- libvirt-0.9.11.3.orig/daemon/libvirtd.conf -+++ libvirt-0.9.11.3/daemon/libvirtd.conf +--- libvirt-0.9.11.4.orig/daemon/libvirtd.conf ++++ libvirt-0.9.11.4/daemon/libvirtd.conf @@ -18,8 +18,8 @@ # It is necessary to setup a CA and issue server certificates before # using this capability. @@ -13,10 +13,10 @@ Index: libvirt-0.9.11.3/daemon/libvirtd.conf # Listen for unencrypted TCP connections on the public TCP/IP port. # NB, must pass the --listen flag to the libvirtd process for this to -Index: libvirt-0.9.11.3/daemon/libvirtd.c +Index: libvirt-0.9.11.4/daemon/libvirtd.c =================================================================== ---- libvirt-0.9.11.3.orig/daemon/libvirtd.c -+++ libvirt-0.9.11.3/daemon/libvirtd.c +--- libvirt-0.9.11.4.orig/daemon/libvirtd.c ++++ libvirt-0.9.11.4/daemon/libvirtd.c @@ -872,7 +872,7 @@ daemonConfigNew(bool privileged ATTRIBUT return NULL; } diff --git a/relax-qemu-usergroup-check.patch b/relax-qemu-usergroup-check.patch index 505ebc7..9324396 100644 --- a/relax-qemu-usergroup-check.patch +++ b/relax-qemu-usergroup-check.patch @@ -7,10 +7,10 @@ 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.11.3/src/qemu/qemu_conf.c +Index: libvirt-0.9.11.4/src/qemu/qemu_conf.c =================================================================== ---- libvirt-0.9.11.3.orig/src/qemu/qemu_conf.c -+++ libvirt-0.9.11.3/src/qemu/qemu_conf.c +--- libvirt-0.9.11.4.orig/src/qemu/qemu_conf.c ++++ libvirt-0.9.11.4/src/qemu/qemu_conf.c @@ -271,9 +271,7 @@ int qemudLoadDriverConfig(struct qemud_d return -1; } diff --git a/revert-d8978c90.patch b/revert-d8978c90.patch new file mode 100644 index 0000000..e5bcb49 --- /dev/null +++ b/revert-d8978c90.patch @@ -0,0 +1,20 @@ +Revert commit d8978c90 + +Commit d8978c90 (master commit 5c650b98) should not have been backported +to 0.9.11 branch without master commit 97010eb1 as well. + + +Index: libvirt-0.9.11.4/src/qemu/qemu_process.c +=================================================================== +--- libvirt-0.9.11.4.orig/src/qemu/qemu_process.c ++++ libvirt-0.9.11.4/src/qemu/qemu_process.c +@@ -1735,8 +1735,7 @@ cleanup: + } + #else + static int +-qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm, +- const char *nodemask ATTRIBUTE_UNUSED) ++qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm) + { + if (vm->def->numatune.memory.nodemask) { + qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", diff --git a/suse-qemu-conf.patch b/suse-qemu-conf.patch index fb2e50e..faf07ad 100644 --- a/suse-qemu-conf.patch +++ b/suse-qemu-conf.patch @@ -1,8 +1,8 @@ -Index: libvirt-0.9.11.3/src/qemu/qemu.conf +Index: libvirt-0.9.11.4/src/qemu/qemu.conf =================================================================== ---- libvirt-0.9.11.3.orig/src/qemu/qemu.conf -+++ libvirt-0.9.11.3/src/qemu/qemu.conf -@@ -136,7 +136,16 @@ +--- libvirt-0.9.11.4.orig/src/qemu/qemu.conf ++++ libvirt-0.9.11.4/src/qemu/qemu.conf +@@ -146,7 +146,16 @@ # leaving SELinux enabled for the host in general, then set this # to 'none' instead. # @@ -13,15 +13,15 @@ Index: libvirt-0.9.11.3/src/qemu/qemu.conf +# instances. Change this to 'apparmor' to enable Apparmor +# confinement of qemu instances. +# - # security_driver = "selinux" + #security_driver = "selinux" +# security_driver = "apparmor" +security_driver = "none" # If set to non-zero, then the default security labeling # will make guests confined. If set to zero, then guests -@@ -317,6 +326,15 @@ - # max_processes = 0 - # max_files = 0 +@@ -319,6 +328,15 @@ + #allow_disk_format_probing = 1 + +# SUSE note: +# Many lock managers, sanlock included, will kill the resources diff --git a/use-init-script-redhat.patch b/use-init-script-redhat.patch index 640e9ae..69bbc36 100644 --- a/use-init-script-redhat.patch +++ b/use-init-script-redhat.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/tools/Makefile.am +Index: libvirt-0.9.11.4/tools/Makefile.am =================================================================== ---- libvirt-0.9.11.3.orig/tools/Makefile.am -+++ libvirt-0.9.11.3/tools/Makefile.am +--- libvirt-0.9.11.4.orig/tools/Makefile.am ++++ libvirt-0.9.11.4/tools/Makefile.am @@ -182,24 +182,22 @@ install-data-local: install-init install uninstall-local: uninstall-init uninstall-systemd @@ -33,10 +33,10 @@ Index: libvirt-0.9.11.3/tools/Makefile.am if LIBVIRT_INIT_SCRIPT_RED_HAT -Index: libvirt-0.9.11.3/tools/libvirt-guests.sysconf +Index: libvirt-0.9.11.4/tools/libvirt-guests.sysconf =================================================================== ---- libvirt-0.9.11.3.orig/tools/libvirt-guests.sysconf -+++ libvirt-0.9.11.3/tools/libvirt-guests.sysconf +--- libvirt-0.9.11.4.orig/tools/libvirt-guests.sysconf ++++ libvirt-0.9.11.4/tools/libvirt-guests.sysconf @@ -1,19 +1,29 @@ +## Path: System/Virtualization/libvirt + @@ -101,10 +101,10 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.sysconf # some file systems. -#BYPASS_CACHE=0 +BYPASS_CACHE=0 -Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh +Index: libvirt-0.9.11.4/tools/libvirt-guests.init.sh =================================================================== ---- libvirt-0.9.11.3.orig/tools/libvirt-guests.init.sh -+++ libvirt-0.9.11.3/tools/libvirt-guests.init.sh +--- libvirt-0.9.11.4.orig/tools/libvirt-guests.init.sh ++++ libvirt-0.9.11.4/tools/libvirt-guests.init.sh @@ -4,10 +4,10 @@ # ### BEGIN INIT INFO @@ -230,7 +230,7 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh return fi fi -@@ -504,14 +526,13 @@ gueststatus() { +@@ -508,14 +530,13 @@ gueststatus() { rh_status() { if [ -f "$LISTFILE" ]; then gettext "stopped, with saved guests"; echo @@ -246,16 +246,16 @@ Index: libvirt-0.9.11.3/tools/libvirt-guests.init.sh fi } -@@ -555,4 +576,4 @@ case "$1" in +@@ -559,4 +580,4 @@ case "$1" in usage ;; esac -exit $RETVAL +rc_exit -Index: libvirt-0.9.11.3/daemon/Makefile.am +Index: libvirt-0.9.11.4/daemon/Makefile.am =================================================================== ---- libvirt-0.9.11.3.orig/daemon/Makefile.am -+++ libvirt-0.9.11.3/daemon/Makefile.am +--- libvirt-0.9.11.4.orig/daemon/Makefile.am ++++ libvirt-0.9.11.4/daemon/Makefile.am @@ -249,22 +249,16 @@ uninstall-logrotate: rmdir $(DESTDIR)$(sysconfdir)/logrotate.d || : @@ -297,10 +297,10 @@ Index: libvirt-0.9.11.3/daemon/Makefile.am else install-init-redhat: uninstall-init-redhat: -Index: libvirt-0.9.11.3/daemon/libvirtd.sysconf +Index: libvirt-0.9.11.4/daemon/libvirtd.sysconf =================================================================== ---- libvirt-0.9.11.3.orig/daemon/libvirtd.sysconf -+++ libvirt-0.9.11.3/daemon/libvirtd.sysconf +--- libvirt-0.9.11.4.orig/daemon/libvirtd.sysconf ++++ libvirt-0.9.11.4/daemon/libvirtd.sysconf @@ -1,16 +1,25 @@ +## Path: System/Virtualization/libvirt + diff --git a/xen-name-for-devid.patch b/xen-name-for-devid.patch index 88ed70f..ddea34c 100644 --- a/xen-name-for-devid.patch +++ b/xen-name-for-devid.patch @@ -13,10 +13,10 @@ Date: Wed Jan 27 16:11:41 2010 -0700 This approach allows removing a disk when domain is inactive. We obviously can't search xenstore when the domain is inactive. -Index: libvirt-0.9.11.3/src/xen/xend_internal.c +Index: libvirt-0.9.11.4/src/xen/xend_internal.c =================================================================== ---- libvirt-0.9.11.3.orig/src/xen/xend_internal.c -+++ libvirt-0.9.11.3/src/xen/xend_internal.c +--- libvirt-0.9.11.4.orig/src/xen/xend_internal.c ++++ libvirt-0.9.11.4/src/xen/xend_internal.c @@ -60,6 +60,7 @@ static int diff --git a/xen-pv-cdrom.patch b/xen-pv-cdrom.patch index 06b7211..055cb55 100644 --- a/xen-pv-cdrom.patch +++ b/xen-pv-cdrom.patch @@ -1,7 +1,7 @@ -Index: libvirt-0.9.11.3/src/xenxs/xen_sxpr.c +Index: libvirt-0.9.11.4/src/xenxs/xen_sxpr.c =================================================================== ---- libvirt-0.9.11.3.orig/src/xenxs/xen_sxpr.c -+++ libvirt-0.9.11.3/src/xenxs/xen_sxpr.c +--- libvirt-0.9.11.4.orig/src/xenxs/xen_sxpr.c ++++ libvirt-0.9.11.4/src/xenxs/xen_sxpr.c @@ -340,7 +340,7 @@ error: static int xenParseSxprDisks(virDomainDefPtr def,