Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libvirt for openSUSE:Factory checked 
in at 2021-12-06 23:59:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libvirt (Old)
 and      /work/SRC/openSUSE:Factory/.libvirt.new.31177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libvirt"

Mon Dec  6 23:59:04 2021 rev:344 rq:935300 version:7.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes  2021-11-22 
23:04:17.965908803 +0100
+++ /work/SRC/openSUSE:Factory/.libvirt.new.31177/libvirt.changes       
2021-12-06 23:59:09.060613461 +0100
@@ -1,0 +2,20 @@
+Thu Dec  2 22:36:06 UTC 2021 - James Fehlig <jfeh...@suse.com>
+
+- libxl: Fix libvirtd deadlocks and segfaults
+  23b51d7b-libxl-disable-death-event.patch,
+  a4e6fba0-libxl-rename-threadinfo-struct.patch,
+  e4f7589a-libxl-shutdown-thread-name.patch,
+  b9a5faea-libxl-handle-death-thread.patch,
+  5c5df531-libxl-search-domid-in-thread.patch,
+  a7a03324-libxl-protect-logger-access.patch
+  bsc#1191668, bsc#1192017
+
+-------------------------------------------------------------------
+Thu Dec  2 15:12:31 UTC 2021 - James Fehlig <jfeh...@suse.com>
+
+- Update to libvirt 7.10.0
+  - jsc#SLE-18260, jsc#SLE-19264
+  - Many incremental improvements and bug fixes, see
+    https://libvirt.org/news.html#v7-10-0-2021-12-01
+
+-------------------------------------------------------------------

Old:
----
  libvirt-7.9.0.tar.xz
  libvirt-7.9.0.tar.xz.asc

New:
----
  23b51d7b-libxl-disable-death-event.patch
  5c5df531-libxl-search-domid-in-thread.patch
  a4e6fba0-libxl-rename-threadinfo-struct.patch
  a7a03324-libxl-protect-logger-access.patch
  b9a5faea-libxl-handle-death-thread.patch
  e4f7589a-libxl-shutdown-thread-name.patch
  libvirt-7.10.0.tar.xz
  libvirt-7.10.0.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libvirt.spec ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.716607604 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.720607590 +0100
@@ -128,6 +128,10 @@
 %define qemu_user          qemu
 %define qemu_group         qemu
 
+# Locations for QEMU data
+%define qemu_moddir        %{_libdir}/qemu
+%define qemu_datadir       %{_datadir}/qemu
+
 %define _fwdefdir %{_prefix}/lib/firewalld/services
 
 %if %{with_wireshark}
@@ -136,7 +140,7 @@
 
 Name:           libvirt
 URL:            http://libvirt.org/
-Version:        7.9.0
+Version:        7.10.0
 Release:        0
 Summary:        Library providing a virtualization API
 License:        LGPL-2.1-or-later
@@ -282,6 +286,12 @@
 Source99:       baselibs.conf
 Source100:      %{name}-rpmlintrc
 # Upstream patches
+Patch0:         23b51d7b-libxl-disable-death-event.patch
+Patch1:         a4e6fba0-libxl-rename-threadinfo-struct.patch
+Patch2:         e4f7589a-libxl-shutdown-thread-name.patch
+Patch3:         b9a5faea-libxl-handle-death-thread.patch
+Patch4:         5c5df531-libxl-search-domid-in-thread.patch
+Patch5:         a7a03324-libxl-protect-logger-access.patch
 # Patches pending upstream review
 Patch100:       libxl-dom-reset.patch
 Patch101:       network-don-t-use-dhcp-authoritative-on-static-netwo.patch
@@ -989,6 +999,8 @@
            -Dnss=enabled \
            -Dqemu_user=%{qemu_user} \
            -Dqemu_group=%{qemu_group} \
+           -Dqemu_moddir=%{qemu_moddir} \
+           -Dqemu_datadir=%{qemu_datadir} \
            %{?arg_loader_nvram} \
            -Dlogin_shell=disabled \
            -Dinit_script=systemd \
@@ -1025,7 +1037,6 @@
 mkdir -p %{buildroot}/%{_localstatedir}/lib/%{name}
 mkdir -p %{buildroot}/%{_sysconfdir}/%{name}/hooks
 %find_lang %{name}
-install -d -m 0755 %{buildroot}/%{_localstatedir}/lib/%{name}/dnsmasq/
 install -d -m 0755 %{buildroot}/%{_datadir}/%{name}/networks/
 cp %{buildroot}/%{_sysconfdir}/%{name}/qemu/networks/default.xml \
    %{buildroot}/%{_datadir}/%{name}/networks/default.xml
@@ -1737,6 +1748,7 @@
 %doc %{_mandir}/man1/virt-pki-validate.1*
 %{_bindir}/virsh
 %{_bindir}/virt-xml-validate
+%{_bindir}/virt-pki-query-dn
 %{_bindir}/virt-pki-validate
 %{_datadir}/bash-completion/completions/virsh
 %dir %{_libdir}/%{name}

++++++ 0001-Extract-stats-functions-from-the-qemu-driver.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.772607406 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.776607392 +0100
@@ -18,10 +18,10 @@
  create mode 100644 src/conf/domain_stats.c
  create mode 100644 src/conf/domain_stats.h
 
-Index: libvirt-7.9.0/src/conf/domain_stats.c
+Index: libvirt-7.10.0/src/conf/domain_stats.c
 ===================================================================
 --- /dev/null
-+++ libvirt-7.9.0/src/conf/domain_stats.c
++++ libvirt-7.10.0/src/conf/domain_stats.c
 @@ -0,0 +1,117 @@
 +/*
 + * domain_stats.c: domain stats extraction helpers
@@ -140,10 +140,10 @@
 +}
 +
 +#undef STATS_ADD_NET_PARAM
-Index: libvirt-7.9.0/src/conf/domain_stats.h
+Index: libvirt-7.10.0/src/conf/domain_stats.h
 ===================================================================
 --- /dev/null
-+++ libvirt-7.9.0/src/conf/domain_stats.h
++++ libvirt-7.10.0/src/conf/domain_stats.h
 @@ -0,0 +1,60 @@
 +/*
 + * domain_stats.h: domain stats extraction helpers
@@ -205,11 +205,11 @@
 +                           virTypedParamList *params);
 +
 +#endif /* __DOMAIN_STATS_H */
-Index: libvirt-7.9.0/src/libvirt_private.syms
+Index: libvirt-7.10.0/src/libvirt_private.syms
 ===================================================================
---- libvirt-7.9.0.orig/src/libvirt_private.syms
-+++ libvirt-7.9.0/src/libvirt_private.syms
-@@ -768,6 +768,11 @@ virDomainConfNWFilterTeardown;
+--- libvirt-7.10.0.orig/src/libvirt_private.syms
++++ libvirt-7.10.0/src/libvirt_private.syms
+@@ -770,6 +770,11 @@ virDomainConfNWFilterTeardown;
  virDomainConfVMNWFilterTeardown;
  
  
@@ -221,7 +221,7 @@
  # conf/domain_validate.h
  virDomainActualNetDefValidate;
  virDomainDefValidate;
-@@ -1944,6 +1949,7 @@ virCgroupGetMemoryUsage;
+@@ -1950,6 +1955,7 @@ virCgroupGetMemoryUsage;
  virCgroupGetMemSwapHardLimit;
  virCgroupGetMemSwapUsage;
  virCgroupGetPercpuStats;
@@ -229,10 +229,10 @@
  virCgroupHasController;
  virCgroupHasEmptyTasks;
  virCgroupKillPainfully;
-Index: libvirt-7.9.0/src/qemu/qemu_driver.c
+Index: libvirt-7.10.0/src/qemu/qemu_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/qemu_driver.c
-+++ libvirt-7.9.0/src/qemu/qemu_driver.c
+--- libvirt-7.10.0.orig/src/qemu/qemu_driver.c
++++ libvirt-7.10.0/src/qemu/qemu_driver.c
 @@ -68,6 +68,7 @@
  #include "virarptable.h"
  #include "viruuid.h"
@@ -241,7 +241,7 @@
  #include "domain_audit.h"
  #include "domain_cgroup.h"
  #include "domain_driver.h"
-@@ -17584,13 +17585,7 @@ qemuDomainGetStatsState(virQEMUDriver *d
+@@ -17530,13 +17531,7 @@ qemuDomainGetStatsState(virQEMUDriver *d
                          virTypedParamList *params,
                          unsigned int privflags G_GNUC_UNUSED)
  {
@@ -256,7 +256,7 @@
  }
  
  
-@@ -17882,25 +17877,11 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
+@@ -17828,25 +17823,11 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
                              virTypedParamList *params)
  {
      qemuDomainObjPrivate *priv = dom->privateData;
@@ -283,7 +283,7 @@
  }
  
  static int
-@@ -18093,76 +18074,15 @@ qemuDomainGetStatsVcpu(virQEMUDriver *dr
+@@ -18039,76 +18020,15 @@ qemuDomainGetStatsVcpu(virQEMUDriver *dr
      return ret;
  }
  
@@ -361,11 +361,11 @@
  
  /* refresh information by opening images on the disk */
  static int
-Index: libvirt-7.9.0/src/util/vircgroup.c
+Index: libvirt-7.10.0/src/util/vircgroup.c
 ===================================================================
---- libvirt-7.9.0.orig/src/util/vircgroup.c
-+++ libvirt-7.9.0/src/util/vircgroup.c
-@@ -3036,6 +3036,31 @@ virCgroupGetInode(virCgroup *cgroup)
+--- libvirt-7.10.0.orig/src/util/vircgroup.c
++++ libvirt-7.10.0/src/util/vircgroup.c
+@@ -3033,6 +3033,31 @@ virCgroupGetInode(virCgroup *cgroup)
      return st.st_ino;
  }
  
@@ -397,7 +397,7 @@
  #else /* !__linux__ */
  
  bool
-@@ -3045,6 +3070,14 @@ virCgroupAvailable(void)
+@@ -3042,6 +3067,14 @@ virCgroupAvailable(void)
  }
  
  
@@ -412,10 +412,10 @@
  int
  virCgroupNewPartition(const char *path G_GNUC_UNUSED,
                        bool create G_GNUC_UNUSED,
-Index: libvirt-7.9.0/src/util/vircgroup.h
+Index: libvirt-7.10.0/src/util/vircgroup.h
 ===================================================================
---- libvirt-7.9.0.orig/src/util/vircgroup.h
-+++ libvirt-7.9.0/src/util/vircgroup.h
+--- libvirt-7.10.0.orig/src/util/vircgroup.h
++++ libvirt-7.10.0/src/util/vircgroup.h
 @@ -23,6 +23,7 @@
  
  #include "virbitmap.h"
@@ -432,10 +432,10 @@
 +                         virTypedParamList *params);
 +
  int virCgroupGetInode(virCgroup *cgroup);
-Index: libvirt-7.9.0/src/conf/meson.build
+Index: libvirt-7.10.0/src/conf/meson.build
 ===================================================================
---- libvirt-7.9.0.orig/src/conf/meson.build
-+++ libvirt-7.9.0/src/conf/meson.build
+--- libvirt-7.10.0.orig/src/conf/meson.build
++++ libvirt-7.10.0/src/conf/meson.build
 @@ -15,6 +15,7 @@ domain_conf_sources = [
    'domain_conf.c',
    'domain_nwfilter.c',

++++++ 0001-libxl-add-support-for-BlockResize-API.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.784607364 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.784607364 +0100
@@ -19,11 +19,11 @@
  src/libxl/libxl_driver.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 91 insertions(+)
 
-Index: libvirt-7.9.0/src/libxl/libxl_driver.c
+Index: libvirt-7.10.0/src/libxl/libxl_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_driver.c
-+++ libvirt-7.9.0/src/libxl/libxl_driver.c
-@@ -5265,6 +5265,95 @@ libxlDomainMemoryStats(virDomainPtr dom,
+--- libvirt-7.10.0.orig/src/libxl/libxl_driver.c
++++ libvirt-7.10.0/src/libxl/libxl_driver.c
+@@ -5254,6 +5254,95 @@ libxlDomainMemoryStats(virDomainPtr dom,
  
  #undef LIBXL_SET_MEMSTAT
  
@@ -119,7 +119,7 @@
  static int
  libxlDomainGetJobInfo(virDomainPtr dom,
                        virDomainJobInfoPtr info)
-@@ -6563,6 +6652,7 @@ static virHypervisorDriver libxlHypervis
+@@ -6552,6 +6641,7 @@ static virHypervisorDriver libxlHypervis
      .domainGetNumaParameters = libxlDomainGetNumaParameters, /* 1.1.1 */
      .nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */
      .nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */
@@ -127,10 +127,10 @@
      .domainGetJobInfo = libxlDomainGetJobInfo, /* 1.3.1 */
      .domainGetJobStats = libxlDomainGetJobStats, /* 1.3.1 */
      .domainMemoryStats = libxlDomainMemoryStats, /* 1.3.0 */
-Index: libvirt-7.9.0/src/libxl/libxl_api_wrapper.h
+Index: libvirt-7.10.0/src/libxl/libxl_api_wrapper.h
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_api_wrapper.h
-+++ libvirt-7.9.0/src/libxl/libxl_api_wrapper.h
+--- libvirt-7.10.0.orig/src/libxl/libxl_api_wrapper.h
++++ libvirt-7.10.0/src/libxl/libxl_api_wrapper.h
 @@ -215,3 +215,18 @@ libxlSetMemoryTargetWrapper(libxl_ctx *c
  
      return ret;

++++++ 0002-lxc-implement-connectGetAllDomainStats.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.792607335 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.796607321 +0100
@@ -9,10 +9,10 @@
  src/lxc/lxc_driver.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 138 insertions(+)
 
-Index: libvirt-7.9.0/src/lxc/lxc_driver.c
+Index: libvirt-7.10.0/src/lxc/lxc_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/lxc/lxc_driver.c
-+++ libvirt-7.9.0/src/lxc/lxc_driver.c
+--- libvirt-7.10.0.orig/src/lxc/lxc_driver.c
++++ libvirt-7.10.0/src/lxc/lxc_driver.c
 @@ -74,6 +74,8 @@
  #include "netdev_bandwidth_conf.h"
  #include "virsocket.h"
@@ -22,7 +22,7 @@
  
  #define VIR_FROM_THIS VIR_FROM_LXC
  
-@@ -5083,6 +5085,128 @@ lxcDomainHasManagedSaveImage(virDomainPt
+@@ -5075,6 +5077,128 @@ lxcDomainHasManagedSaveImage(virDomainPt
      return ret;
  }
  
@@ -151,7 +151,7 @@
  
  /* Function Tables */
  static virHypervisorDriver lxcHypervisorDriver = {
-@@ -5180,6 +5304,7 @@ static virHypervisorDriver lxcHypervisor
+@@ -5172,6 +5296,7 @@ static virHypervisorDriver lxcHypervisor
      .nodeGetFreePages = lxcNodeGetFreePages, /* 1.2.6 */
      .nodeAllocPages = lxcNodeAllocPages, /* 1.2.9 */
      .domainHasManagedSaveImage = lxcDomainHasManagedSaveImage, /* 1.2.13 */

++++++ 23b51d7b-libxl-disable-death-event.patch ++++++
commit 23b51d7b8ec885e97a9277cf0a6c2833db4636e8
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Fri Oct 29 14:16:33 2021 -0600

    libxl: Disable death events after receiving a shutdown event
    
    The libxl driver will handle all domain destruction and cleanup
    when receiving a domain shutdown event from libxl. Commit fa30ee04a2a
    introduced the ignoreDeathEvent boolean in the DomainObjPrivate struct
    to ignore subsequent death events from libxl. But libxl already provides
    a mechanism to disable death events via libxl_evdisable_domain_death.
    
    This patch partially reverts commit fa30ee04a2a and instead uses
    libxl_evdisable_domain_death to disable subsequent death events when
    processing a shutdown event.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.c
+++ libvirt-7.10.0/src/libxl/libxl_domain.c
@@ -616,12 +616,6 @@ static void
 libxlDomainHandleDeath(libxlDriverPrivate *driver, virDomainObj *vm)
 {
     virObjectEvent *dom_event = NULL;
-    libxlDomainObjPrivate *priv = vm->privateData;
-
-    if (priv->ignoreDeathEvent) {
-        priv->ignoreDeathEvent = false;
-        return;
-    }
 
     if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
         return;
@@ -671,7 +665,6 @@ libxlDomainEventHandler(void *data, libx
     }
 
     if (event->type == LIBXL_EVENT_TYPE_DOMAIN_SHUTDOWN) {
-        libxlDomainObjPrivate *priv = vm->privateData;
         struct libxlShutdownThreadInfo *shutdown_info = NULL;
         virThread thread;
         g_autofree char *name = NULL;
@@ -688,12 +681,9 @@ libxlDomainEventHandler(void *data, libx
         name = g_strdup_printf("ev-%d", event->domid);
         /*
          * Cleanup will be handled by the shutdown thread.
-         * Ignore the forthcoming death event from libxl
          */
-        priv->ignoreDeathEvent = true;
         if (virThreadCreateFull(&thread, false, libxlDomainShutdownThread,
                                 name, false, shutdown_info) < 0) {
-             priv->ignoreDeathEvent = false;
             /*
              * Not much we can do on error here except log it.
              */
@@ -859,18 +849,17 @@ libxlDomainDestroyInternal(libxlDriverPr
     libxlDomainObjPrivate *priv = vm->privateData;
     int ret = -1;
 
-    /* Ignore next LIBXL_EVENT_TYPE_DOMAIN_DEATH as the caller will handle
-     * domain death appropriately already (having more info, like the reason).
-     */
-    priv->ignoreDeathEvent = true;
+    if (priv->deathW) {
+        libxl_evdisable_domain_death(cfg->ctx, priv->deathW);
+        priv->deathW = NULL;
+    }
+
     /* Unlock virDomainObj during destroy, which can take considerable
      * time on large memory domains.
      */
     virObjectUnlock(vm);
     ret = libxl_domain_destroy(cfg->ctx, vm->def->id, NULL);
     virObjectLock(vm);
-    if (ret)
-        priv->ignoreDeathEvent = false;
 
     return ret;
 }
@@ -921,8 +910,6 @@ libxlDomainCleanup(libxlDriverPrivate *d
         priv->deathW = NULL;
     }
 
-    priv->ignoreDeathEvent = false;
-
     if (!!g_atomic_int_dec_and_test(&driver->nactive) && 
driver->inhibitCallback)
         driver->inhibitCallback(false, driver->inhibitOpaque);
 
Index: libvirt-7.10.0/src/libxl/libxl_domain.h
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.h
+++ libvirt-7.10.0/src/libxl/libxl_domain.h
@@ -54,9 +54,6 @@ struct _libxlDomainObjPrivate {
     /* console */
     virChrdevs *devs;
     libxl_evgen_domain_death *deathW;
-    /* Flag to indicate the upcoming LIBXL_EVENT_TYPE_DOMAIN_DEATH is caused
-     * by libvirt and should not be handled separately */
-    bool ignoreDeathEvent;
     virThread *migrationDstReceiveThr;
     unsigned short migrationPort;
     char *lockState;
++++++ 5c5df531-libxl-search-domid-in-thread.patch ++++++
commit 5c5df5310f72be4878a71ace47074c54e0d1a27d
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Wed Nov 24 11:48:51 2021 -0700

    libxl: Search for virDomainObj in event handler threads
    
    libxl can deliver events and invoke callbacks on any application thread
    calling into libxl. This can cause deadlock in the libvirt libxl driver
    
    Thread 19 (Thread 0x7f31411ec700 (LWP 14068) "libvirtd"):
    #0  0x00007f318520cc7d in __lll_lock_wait () from /lib64/libpthread.so.0
    #1  0x00007f3185205ed5 in pthread_mutex_lock () from /lib64/libpthread.so.0
    #2  0x00007f3189488015 in virMutexLock (m=<optimized out>) at 
../../src/util/virthread.c:79
    #3  0x00007f3189463f3b in virObjectLock (anyobj=<optimized out>) at 
../../src/util/virobject.c:433
    #4  0x00007f31894f2f41 in virDomainObjListSearchID (payload=0x7f317400a6d0, 
name=<optimized out>, data=0x7f31411eaeac) at 
../../src/conf/virdomainobjlist.c:105
    #5  0x00007f3189437ac5 in virHashSearch (ctable=0x7f3124025a30, 
iter=iter@entry=0x7f31894f2f30 <virDomainObjListSearchID>, 
data=data@entry=0x7f31411eaeac, name=name@entry=0x0) at 
../../src/util/virhash.c:745
    #6  0x00007f31894f3919 in virDomainObjListFindByID (doms=0x7f3124025430, 
id=<optimized out>) at ../../src/conf/virdomainobjlist.c:121
    #7  0x00007f3152f292e5 in libxlDomainEventHandler (data=0x7f3124023d80, 
event=0x7f310c010ae0) at ../../src/libxl/libxl_domain.c:660
    #8  0x00007f3152c6ff5d in egc_run_callbacks (egc=egc@entry=0x7f31411eaf50) 
at libxl_event.c:1427
    #9  0x00007f3152c718bd in libxl__egc_cleanup (egc=0x7f31411eaf50) at 
libxl_event.c:1458
    #10 libxl__ao_inprogress (ao=ao@entry=0x7f310c00b8a0, 
file=file@entry=0x7f3152cce987 "libxl_domain.c", line=line@entry=730, 
func=func@entry=0x7f3152ccf750 <__func__.22238> "libxl_domain_unpause") at 
libxl_event.c:2047
    #11 0x00007f3152c8c5b8 in libxl_domain_unpause (ctx=0x7f3124015a40, 
domid=<optimized out>, ao_how=ao_how@entry=0x0) at libxl_domain.c:730
    #12 0x00007f3152f2a584 in libxl_domain_unpause_0x041200 (domid=<optimized 
out>, ctx=<optimized out>) at /usr/include/libxl.h:1756
    #13 libxlDomainStart (driver=driver@entry=0x7f3124023d80, 
vm=vm@entry=0x7f317400a6d0, start_paused=start_paused@entry=false, 
restore_fd=restore_fd@entry=-1, restore_ver=<optimized out>, 
restore_ver@entry=2) at ../../src/libxl/libxl_domain.c:1482
    #14 0x00007f3152f2a6e3 in libxlDomainStartNew 
(driver=driver@entry=0x7f3124023d80, vm=vm@entry=0x7f317400a6d0, 
start_paused=start_paused@entry=false) at ../../src/libxl/libxl_domain.c:1545
    #15 0x00007f3152f2a789 in libxlDomainShutdownHandleRestart 
(driver=0x7f3124023d80, vm=0x7f317400a6d0) at ../../src/libxl/libxl_domain.c:464
    #16 0x00007f3152f2a9e4 in libxlDomainShutdownThread (opaque=<optimized 
out>) at ../../src/libxl/libxl_domain.c:559
    #17 0x00007f3189487ee2 in virThreadHelper (data=<optimized out>) at 
../../src/util/virthread.c:196
    #18 0x00007f3185203539 in start_thread () from /lib64/libpthread.so.0
    #19 0x00007f3184f3becf in clone () from /lib64/libc.so.6
    
    Frame 16 runs a thread created to handle domain shutdown processing for
    domid 28712. In this case the event contained the reboot reason, so the
    old domain is destroyed and a new one is created by libxlDomainStart new.
    After starting the domain, it is unpaused by calling libxl_domain_unpause
    in frame 12. While the thread is running within libxl, libxl takes the
    opportunity to deliver a pending domain shutdown event for unrelated domid
    28710. While searching for the associated virDomainObj by ID, a deadlock is
    encountered when attempting to lock the virDomainObj for domid 28712, which
    is already locked since this thread is processing its shutdown event.
    
    The deadlock can be avoided by moving the search for a virDomainObj
    associated with the event domid to the shutdown thread. The same is done
    for the death thread.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.c
+++ libvirt-7.10.0/src/libxl/libxl_domain.c
@@ -480,7 +480,6 @@ libxlDomainShutdownHandleRestart(libxlDr
 struct libxlEventHandlerThreadInfo
 {
     libxlDriverPrivate *driver;
-    virDomainObj *vm;
     libxl_event *event;
 };
 
@@ -489,7 +488,7 @@ static void
 libxlDomainShutdownThread(void *opaque)
 {
     struct libxlEventHandlerThreadInfo *shutdown_info = opaque;
-    virDomainObj *vm = shutdown_info->vm;
+    virDomainObj *vm = NULL;
     libxl_event *ev = shutdown_info->event;
     libxlDriverPrivate *driver = shutdown_info->driver;
     virObjectEvent *dom_event = NULL;
@@ -499,6 +498,12 @@ libxlDomainShutdownThread(void *opaque)
 
     libxl_domain_config_init(&d_config);
 
+    vm = virDomainObjListFindByID(driver->domains, ev->domid);
+    if (!vm) {
+        /* Nothing to do if we can't find the virDomainObj */
+        goto cleanup;
+    }
+
     if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
         goto cleanup;
 
@@ -616,12 +621,18 @@ static void
 libxlDomainDeathThread(void *opaque)
 {
     struct libxlEventHandlerThreadInfo *death_info = opaque;
-    virDomainObj *vm = death_info->vm;
+    virDomainObj *vm = NULL;
     libxl_event *ev = death_info->event;
     libxlDriverPrivate *driver = death_info->driver;
     virObjectEvent *dom_event = NULL;
     g_autoptr(libxlDriverConfig) cfg = libxlDriverConfigGet(driver);
 
+    vm = virDomainObjListFindByID(driver->domains, ev->domid);
+    if (!vm) {
+        /* Nothing to do if we can't find the virDomainObj */
+        goto cleanup;
+    }
+
     if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
         goto cleanup;
 
@@ -650,7 +661,6 @@ libxlDomainEventHandler(void *data, libx
 {
     libxlDriverPrivate *driver = data;
     libxl_shutdown_reason xl_reason = event->u.domain_shutdown.shutdown_reason;
-    virDomainObj *vm = NULL;
     g_autoptr(libxlDriverConfig) cfg = NULL;
     struct libxlEventHandlerThreadInfo *thread_info = NULL;
     virThread thread;
@@ -671,12 +681,6 @@ libxlDomainEventHandler(void *data, libx
     if (xl_reason == LIBXL_SHUTDOWN_REASON_SUSPEND)
         goto cleanup;
 
-    vm = virDomainObjListFindByID(driver->domains, event->domid);
-    if (!vm) {
-        /* Nothing to do if we can't find the virDomainObj */
-        goto cleanup;
-    }
-
     /*
      * Start event-specific threads to handle shutdown and death.
      * They are potentially lengthy operations and we don't want to be
@@ -686,7 +690,6 @@ libxlDomainEventHandler(void *data, libx
         thread_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
 
         thread_info->driver = driver;
-        thread_info->vm = vm;
         thread_info->event = (libxl_event *)event;
         thread_name = g_strdup_printf("shutdown-event-%d", event->domid);
         /*
@@ -701,15 +704,14 @@ libxlDomainEventHandler(void *data, libx
             goto cleanup;
         }
         /*
-         * virDomainObjEndAPI is called in the shutdown thread, where
-         * libxlEventHandlerThreadInfo and libxl_event are also freed.
+         * libxlEventHandlerThreadInfo and libxl_event are freed in the
+         * shutdown thread
          */
         return;
     } else if (event->type == LIBXL_EVENT_TYPE_DOMAIN_DEATH) {
         thread_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
 
         thread_info->driver = driver;
-        thread_info->vm = vm;
         thread_info->event = (libxl_event *)event;
         thread_name = g_strdup_printf("death-event-%d", event->domid);
         /*
@@ -724,14 +726,13 @@ libxlDomainEventHandler(void *data, libx
             goto cleanup;
         }
         /*
-         * virDomainObjEndAPI is called in the death thread, where
-         * libxlEventHandlerThreadInfo and libxl_event are also freed.
+         * libxlEventHandlerThreadInfo and libxl_event are freed in the
+         * death thread
          */
         return;
     }
 
  cleanup:
-    virDomainObjEndAPI(&vm);
     VIR_FREE(thread_info);
     cfg = libxlDriverConfigGet(driver);
     /* Cast away any const */
++++++ a4e6fba0-libxl-rename-threadinfo-struct.patch ++++++
commit a4e6fba069c0809b8b5dde5e9db62d2efd91b4a0
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Wed Nov 24 11:10:19 2021 -0700

    libxl: Rename libxlShutdownThreadInfo struct
    
    An upcoming change will use the struct in a thread created to process
    death events. Rename libxlShutdownThreadInfo to libxlEventHandlerThreadInfo
    to reflect the more generic usage.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.c
+++ libvirt-7.10.0/src/libxl/libxl_domain.c
@@ -477,7 +477,7 @@ libxlDomainShutdownHandleRestart(libxlDr
 }
 
 
-struct libxlShutdownThreadInfo
+struct libxlEventHandlerThreadInfo
 {
     libxlDriverPrivate *driver;
     virDomainObj *vm;
@@ -488,7 +488,7 @@ struct libxlShutdownThreadInfo
 static void
 libxlDomainShutdownThread(void *opaque)
 {
-    struct libxlShutdownThreadInfo *shutdown_info = opaque;
+    struct libxlEventHandlerThreadInfo *shutdown_info = opaque;
     virDomainObj *vm = shutdown_info->vm;
     libxl_event *ev = shutdown_info->event;
     libxlDriverPrivate *driver = shutdown_info->driver;
@@ -665,7 +665,7 @@ libxlDomainEventHandler(void *data, libx
     }
 
     if (event->type == LIBXL_EVENT_TYPE_DOMAIN_SHUTDOWN) {
-        struct libxlShutdownThreadInfo *shutdown_info = NULL;
+        struct libxlEventHandlerThreadInfo *shutdown_info = NULL;
         virThread thread;
         g_autofree char *name = NULL;
 
@@ -673,7 +673,7 @@ libxlDomainEventHandler(void *data, libx
          * Start a thread to handle shutdown.  We don't want to be tying up
          * libxl's event machinery by doing a potentially lengthy shutdown.
          */
-        shutdown_info = g_new0(struct libxlShutdownThreadInfo, 1);
+        shutdown_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
 
         shutdown_info->driver = driver;
         shutdown_info->vm = vm;
@@ -693,7 +693,7 @@ libxlDomainEventHandler(void *data, libx
         }
         /*
          * virDomainObjEndAPI is called in the shutdown thread, where
-         * libxlShutdownThreadInfo and libxl_event are also freed.
+         * libxlEventHandlerThreadInfo and libxl_event are also freed.
          */
         return;
     } else if (event->type == LIBXL_EVENT_TYPE_DOMAIN_DEATH) {
++++++ a7a03324-libxl-protect-logger-access.patch ++++++
commit a7a03324d86e111f81687b5315b8f296dde84340
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Thu Nov 18 12:03:20 2021 -0700

    libxl: Protect access to libxlLogger files hash table
    
    The hash table of log file objects in libxlLogger is not protected against
    concurrent access. It is possible for one thread to remove an entry while
    another is updating it. Add a mutex to the libxlLogger object and lock it
    when accessing the files hash table.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_logger.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_logger.c
+++ libvirt-7.10.0/src/libxl/libxl_logger.c
@@ -28,6 +28,7 @@
 #include "util/virfile.h"
 #include "util/virhash.h"
 #include "util/virstring.h"
+#include "util/virthread.h"
 #include "util/virtime.h"
 
 #define VIR_FROM_THIS VIR_FROM_LIBXL
@@ -43,6 +44,7 @@ struct xentoollog_logger_libvirt {
 
     /* map storing the opened fds: "domid" -> FILE* */
     GHashTable *files;
+    virMutex tableLock;
     FILE *defaultLogFile;
 };
 
@@ -85,7 +87,9 @@ libvirt_vmessage(xentoollog_logger *logg
         start = start + 9;
         *end = '\0';
 
+        virMutexLock(&lg->tableLock);
         domainLogFile = virHashLookup(lg->files, start);
+        virMutexUnlock(&lg->tableLock);
         if (domainLogFile)
             logFile = domainLogFile;
 
@@ -158,6 +162,12 @@ libxlLoggerNew(const char *logDir, virLo
         return NULL;
     }
 
+    if (virMutexInit(&logger.tableLock) < 0) {
+        VIR_FORCE_FCLOSE(logger.defaultLogFile);
+        virHashFree(logger.files);
+        return NULL;
+    }
+
     return XTL_NEW_LOGGER(libvirt, logger);
 }
 
@@ -168,6 +178,7 @@ libxlLoggerFree(libxlLogger *logger)
     if (logger->defaultLogFile)
         VIR_FORCE_FCLOSE(logger->defaultLogFile);
     virHashFree(logger->files);
+    virMutexDestroy(&logger->tableLock);
     xtl_logger_destroy(xtl_logger);
 }
 
@@ -189,7 +200,9 @@ libxlLoggerOpenFile(libxlLogger *logger,
                  path, g_strerror(errno));
         return;
     }
+    virMutexLock(&logger->tableLock);
     ignore_value(virHashAddEntry(logger->files, domidstr, logFile));
+    virMutexUnlock(&logger->tableLock);
 
     /* domain_config is non NULL only when starting a new domain */
     if (domain_config) {
@@ -204,5 +217,7 @@ libxlLoggerCloseFile(libxlLogger *logger
     g_autofree char *domidstr = NULL;
     domidstr = g_strdup_printf("%d", id);
 
+    virMutexLock(&logger->tableLock);
     ignore_value(virHashRemoveEntry(logger->files, domidstr));
+    virMutexUnlock(&logger->tableLock);
 }
++++++ b9a5faea-libxl-handle-death-thread.patch ++++++
commit b9a5faea49b7412e26d7389af4c32fc2b3ee80e5
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Wed Nov 24 11:36:55 2021 -0700

    libxl: Handle domain death events in a thread
    
    Similar to domain shutdown events, processing domain death events can be a
    lengthy process and we don't want to block the event handler while the
    operation completes. Move the death handling function to a thread.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.c
+++ libvirt-7.10.0/src/libxl/libxl_domain.c
@@ -613,12 +613,17 @@ libxlDomainShutdownThread(void *opaque)
 }
 
 static void
-libxlDomainHandleDeath(libxlDriverPrivate *driver, virDomainObj *vm)
+libxlDomainDeathThread(void *opaque)
 {
+    struct libxlEventHandlerThreadInfo *death_info = opaque;
+    virDomainObj *vm = death_info->vm;
+    libxl_event *ev = death_info->event;
+    libxlDriverPrivate *driver = death_info->driver;
     virObjectEvent *dom_event = NULL;
+    g_autoptr(libxlDriverConfig) cfg = libxlDriverConfigGet(driver);
 
     if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0)
-        return;
+        goto cleanup;
 
     virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, VIR_DOMAIN_SHUTOFF_DESTROYED);
     dom_event = virDomainEventLifecycleNewFromObj(vm,
@@ -629,6 +634,11 @@ libxlDomainHandleDeath(libxlDriverPrivat
         virDomainObjListRemove(driver->domains, vm);
     libxlDomainObjEndJob(driver, vm);
     virObjectEventStateQueue(driver->domainEventState, dom_event);
+
+ cleanup:
+    virDomainObjEndAPI(&vm);
+    libxl_event_free(cfg->ctx, ev);
+    VIR_FREE(death_info);
 }
 
 
@@ -642,6 +652,9 @@ libxlDomainEventHandler(void *data, libx
     libxl_shutdown_reason xl_reason = event->u.domain_shutdown.shutdown_reason;
     virDomainObj *vm = NULL;
     g_autoptr(libxlDriverConfig) cfg = NULL;
+    struct libxlEventHandlerThreadInfo *thread_info = NULL;
+    virThread thread;
+    g_autofree char *thread_name = NULL;
 
     VIR_DEBUG("Received libxl event '%d' for domid '%d'", event->type, 
event->domid);
 
@@ -664,31 +677,27 @@ libxlDomainEventHandler(void *data, libx
         goto cleanup;
     }
 
+    /*
+     * Start event-specific threads to handle shutdown and death.
+     * They are potentially lengthy operations and we don't want to be
+     * blocking this event handler while they are in progress.
+     */
     if (event->type == LIBXL_EVENT_TYPE_DOMAIN_SHUTDOWN) {
-        struct libxlEventHandlerThreadInfo *shutdown_info = NULL;
-        virThread thread;
-        g_autofree char *name = NULL;
-
-        /*
-         * Start a thread to handle shutdown.  We don't want to be tying up
-         * libxl's event machinery by doing a potentially lengthy shutdown.
-         */
-        shutdown_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
+        thread_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
 
-        shutdown_info->driver = driver;
-        shutdown_info->vm = vm;
-        shutdown_info->event = (libxl_event *)event;
-        name = g_strdup_printf("shutdown-event-%d", event->domid);
+        thread_info->driver = driver;
+        thread_info->vm = vm;
+        thread_info->event = (libxl_event *)event;
+        thread_name = g_strdup_printf("shutdown-event-%d", event->domid);
         /*
          * Cleanup will be handled by the shutdown thread.
          */
         if (virThreadCreateFull(&thread, false, libxlDomainShutdownThread,
-                                name, false, shutdown_info) < 0) {
+                                thread_name, false, thread_info) < 0) {
             /*
              * Not much we can do on error here except log it.
              */
             VIR_ERROR(_("Failed to create thread to handle domain shutdown"));
-            VIR_FREE(shutdown_info);
             goto cleanup;
         }
         /*
@@ -697,15 +706,33 @@ libxlDomainEventHandler(void *data, libx
          */
         return;
     } else if (event->type == LIBXL_EVENT_TYPE_DOMAIN_DEATH) {
+        thread_info = g_new0(struct libxlEventHandlerThreadInfo, 1);
+
+        thread_info->driver = driver;
+        thread_info->vm = vm;
+        thread_info->event = (libxl_event *)event;
+        thread_name = g_strdup_printf("death-event-%d", event->domid);
+        /*
+         * Cleanup will be handled by the death thread.
+         */
+        if (virThreadCreateFull(&thread, false, libxlDomainDeathThread,
+                                thread_name, false, thread_info) < 0) {
+            /*
+             * Not much we can do on error here except log it.
+             */
+            VIR_ERROR(_("Failed to create thread to handle domain death"));
+            goto cleanup;
+        }
         /*
-         * On death the domain is cleaned up from Xen's perspective.
-         * Cleanup on the libvirt side can be done synchronously.
+         * virDomainObjEndAPI is called in the death thread, where
+         * libxlEventHandlerThreadInfo and libxl_event are also freed.
          */
-        libxlDomainHandleDeath(driver, vm);
+        return;
     }
 
  cleanup:
     virDomainObjEndAPI(&vm);
+    VIR_FREE(thread_info);
     cfg = libxlDriverConfigGet(driver);
     /* Cast away any const */
     libxl_event_free(cfg->ctx, (libxl_event *)event);
++++++ e4f7589a-libxl-shutdown-thread-name.patch ++++++
commit e4f7589a3ec285489618ca04c8c0230cc31f3d99
Author: Jim Fehlig <jfeh...@suse.com>
Date:   Wed Nov 24 11:16:38 2021 -0700

    libxl: Modify name of shutdown thread
    
    The current thread name 'ev-<domid>' is a bit terse. Change the name
    to 'shutdown-event-<domid>', allowing it to be distinguished between
    thread handling other event types.
    
    Signed-off-by: Jim Fehlig <jfeh...@suse.com>
    Reviewed-by: Daniel P. Berrang?? <berra...@redhat.com>
    Reviewed-by: J??n Tomko <jto...@redhat.com>

Index: libvirt-7.10.0/src/libxl/libxl_domain.c
===================================================================
--- libvirt-7.10.0.orig/src/libxl/libxl_domain.c
+++ libvirt-7.10.0/src/libxl/libxl_domain.c
@@ -678,7 +678,7 @@ libxlDomainEventHandler(void *data, libx
         shutdown_info->driver = driver;
         shutdown_info->vm = vm;
         shutdown_info->event = (libxl_event *)event;
-        name = g_strdup_printf("ev-%d", event->domid);
+        name = g_strdup_printf("shutdown-event-%d", event->domid);
         /*
          * Cleanup will be handled by the shutdown thread.
          */
++++++ libvirt-7.9.0.tar.xz -> libvirt-7.10.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/libvirt/libvirt-7.9.0.tar.xz 
/work/SRC/openSUSE:Factory/.libvirt.new.31177/libvirt-7.10.0.tar.xz differ: 
char 26, line 1

++++++ libvirt-power8-models.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.888606996 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.888606996 +0100
@@ -2,10 +2,10 @@
 
 From: <r...@suse.de>
 
-Index: libvirt-7.9.0/src/cpu_map/ppc64_POWER8.xml
+Index: libvirt-7.10.0/src/cpu_map/ppc64_POWER8.xml
 ===================================================================
---- libvirt-7.9.0.orig/src/cpu_map/ppc64_POWER8.xml
-+++ libvirt-7.9.0/src/cpu_map/ppc64_POWER8.xml
+--- libvirt-7.10.0.orig/src/cpu_map/ppc64_POWER8.xml
++++ libvirt-7.10.0/src/cpu_map/ppc64_POWER8.xml
 @@ -4,5 +4,7 @@
      <pvr value='0x004b0000' mask='0xffff0000'/>
      <pvr value='0x004c0000' mask='0xffff0000'/>

++++++ libvirt-suse-netcontrol.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.924606868 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.924606868 +0100
@@ -1,8 +1,8 @@
-Index: libvirt-7.9.0/tools/virsh.c
+Index: libvirt-7.10.0/tools/virsh.c
 ===================================================================
---- libvirt-7.9.0.orig/tools/virsh.c
-+++ libvirt-7.9.0/tools/virsh.c
-@@ -546,6 +546,8 @@ virshShowVersion(vshControl *ctl G_GNUC_
+--- libvirt-7.10.0.orig/tools/virsh.c
++++ libvirt-7.10.0/tools/virsh.c
+@@ -552,6 +552,8 @@ virshShowVersion(vshControl *ctl G_GNUC_
      vshPrint(ctl, " Interface");
  # if defined(WITH_NETCF)
      vshPrint(ctl, " netcf");
@@ -11,10 +11,10 @@
  # elif defined(WITH_UDEV)
      vshPrint(ctl, " udev");
  # endif
-Index: libvirt-7.9.0/src/interface/interface_backend_netcf.c
+Index: libvirt-7.10.0/src/interface/interface_backend_netcf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/interface/interface_backend_netcf.c
-+++ libvirt-7.9.0/src/interface/interface_backend_netcf.c
+--- libvirt-7.10.0.orig/src/interface/interface_backend_netcf.c
++++ libvirt-7.10.0/src/interface/interface_backend_netcf.c
 @@ -21,7 +21,12 @@
  
  #include <config.h>
@@ -78,7 +78,7 @@
      /* open netcf */
      if (ncf_init(&driver->netcf, NULL) != 0) {
          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-@@ -1110,6 +1150,7 @@ static int netcfInterfaceIsActive(virInt
+@@ -1093,6 +1133,7 @@ static int netcfInterfaceIsActive(virInt
      return ret;
  }
  
@@ -86,7 +86,7 @@
  static int netcfInterfaceChangeBegin(virConnectPtr conn, unsigned int flags)
  {
      int ret;
-@@ -1184,6 +1225,7 @@ static int netcfInterfaceChangeRollback(
+@@ -1167,6 +1208,7 @@ static int netcfInterfaceChangeRollback(
      virObjectUnlock(driver);
      return ret;
  }
@@ -94,7 +94,7 @@
  
  static virInterfaceDriver interfaceDriver = {
      .name = INTERFACE_DRIVER_NAME,
-@@ -1200,9 +1242,11 @@ static virInterfaceDriver interfaceDrive
+@@ -1183,9 +1225,11 @@ static virInterfaceDriver interfaceDrive
      .interfaceCreate = netcfInterfaceCreate, /* 0.7.0 */
      .interfaceDestroy = netcfInterfaceDestroy, /* 0.7.0 */
      .interfaceIsActive = netcfInterfaceIsActive, /* 0.7.3 */
@@ -106,7 +106,7 @@
  };
  
  
-@@ -1233,6 +1277,19 @@ static virStateDriver interfaceStateDriv
+@@ -1216,6 +1260,19 @@ static virStateDriver interfaceStateDriv
  
  int netcfIfaceRegister(void)
  {
@@ -126,10 +126,10 @@
      if (virRegisterConnectDriver(&interfaceConnectDriver, false) < 0)
          return -1;
      if (virSetSharedInterfaceDriver(&interfaceDriver) < 0)
-Index: libvirt-7.9.0/src/interface/interface_driver.c
+Index: libvirt-7.10.0/src/interface/interface_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/interface/interface_driver.c
-+++ libvirt-7.9.0/src/interface/interface_driver.c
+--- libvirt-7.10.0.orig/src/interface/interface_driver.c
++++ libvirt-7.10.0/src/interface/interface_driver.c
 @@ -30,8 +30,15 @@ interfaceRegister(void)
      if (netcfIfaceRegister() == 0)
          return 0;
@@ -147,11 +147,11 @@
      if (udevIfaceRegister() == 0)
          return 0;
  #endif /* WITH_UDEV */
-Index: libvirt-7.9.0/meson.build
+Index: libvirt-7.10.0/meson.build
 ===================================================================
---- libvirt-7.9.0.orig/meson.build
-+++ libvirt-7.9.0/meson.build
-@@ -1086,6 +1086,12 @@ else
+--- libvirt-7.10.0.orig/meson.build
++++ libvirt-7.10.0/meson.build
+@@ -1116,6 +1116,12 @@ else
    netcf_dep = dependency('', required: false)
  endif
  
@@ -164,7 +164,7 @@
  have_gnu_gettext_tools = false
  if not get_option('nls').disabled()
    have_gettext = cc.has_function('gettext')
-@@ -1482,10 +1488,10 @@ elif get_option('driver_hyperv').enabled
+@@ -1512,10 +1518,10 @@ elif get_option('driver_hyperv').enabled
    error('openwsman is required for the Hyper-V driver')
  endif
  
@@ -177,7 +177,7 @@
  endif
  
  if not get_option('driver_libxl').disabled() and conf.has('WITH_LIBVIRTD')
-@@ -2332,6 +2338,7 @@ libs_summary = {
+@@ -2352,6 +2358,7 @@ libs_summary = {
    'libssh2': libssh2_dep.found(),
    'libutil': libutil_dep.found(),
    'netcf': conf.has('WITH_NETCF'),
@@ -185,10 +185,10 @@
    'NLS': have_gnu_gettext_tools,
    'numactl': numactl_dep.found(),
    'openwsman': openwsman_dep.found(),
-Index: libvirt-7.9.0/src/interface/meson.build
+Index: libvirt-7.10.0/src/interface/meson.build
 ===================================================================
---- libvirt-7.9.0.orig/src/interface/meson.build
-+++ libvirt-7.9.0/src/interface/meson.build
+--- libvirt-7.10.0.orig/src/interface/meson.build
++++ libvirt-7.10.0/src/interface/meson.build
 @@ -2,7 +2,7 @@ interface_driver_sources = [
    'interface_driver.c',
  ]
@@ -206,10 +206,10 @@
        udev_dep,
      ],
      'link_args': [
-Index: libvirt-7.9.0/meson_options.txt
+Index: libvirt-7.10.0/meson_options.txt
 ===================================================================
---- libvirt-7.9.0.orig/meson_options.txt
-+++ libvirt-7.9.0/meson_options.txt
+--- libvirt-7.10.0.orig/meson_options.txt
++++ libvirt-7.10.0/meson_options.txt
 @@ -29,6 +29,7 @@ option('libpcap', type: 'feature', value
  option('libssh', type: 'feature', value: 'auto', description: 'libssh 
support')
  option('libssh2', type: 'feature', value: 'auto', description: 'libssh2 
support')

++++++ libxl-dom-reset.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.972606699 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.976606685 +0100
@@ -8,11 +8,11 @@
     option, but domainReset can be implemented in the libxl driver by
     forcibly destroying the domain and starting it again.
 
-Index: libvirt-7.9.0/src/libxl/libxl_driver.c
+Index: libvirt-7.10.0/src/libxl/libxl_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_driver.c
-+++ libvirt-7.9.0/src/libxl/libxl_driver.c
-@@ -1343,6 +1343,63 @@ libxlDomainReboot(virDomainPtr dom, unsi
+--- libvirt-7.10.0.orig/src/libxl/libxl_driver.c
++++ libvirt-7.10.0/src/libxl/libxl_driver.c
+@@ -1340,6 +1340,63 @@ libxlDomainReboot(virDomainPtr dom, unsi
  }
  
  static int
@@ -76,7 +76,7 @@
  libxlDomainDestroyFlags(virDomainPtr dom,
                          unsigned int flags)
  {
-@@ -6441,6 +6498,7 @@ static virHypervisorDriver libxlHypervis
+@@ -6430,6 +6487,7 @@ static virHypervisorDriver libxlHypervis
      .domainShutdown = libxlDomainShutdown, /* 0.9.0 */
      .domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */
      .domainReboot = libxlDomainReboot, /* 0.9.0 */

++++++ libxl-set-cach-mode.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:10.992606628 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:10.992606628 +0100
@@ -3,10 +3,10 @@
  src/libxl/libxl_conf.c |   25 +++++++++++++++++++++++++
  1 file changed, 25 insertions(+)
 
-Index: libvirt-7.9.0/src/libxl/libxl_conf.c
+Index: libvirt-7.10.0/src/libxl/libxl_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_conf.c
-+++ libvirt-7.9.0/src/libxl/libxl_conf.c
+--- libvirt-7.10.0.orig/src/libxl/libxl_conf.c
++++ libvirt-7.10.0/src/libxl/libxl_conf.c
 @@ -941,6 +941,28 @@ libxlDiskSetDiscard(libxl_device_disk *x
      }
  }

++++++ libxl-set-migration-constraints.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.000606600 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.000606600 +0100
@@ -16,11 +16,11 @@
  tools/virsh.pod                  |    8 ++++++++
  6 files changed, 125 insertions(+), 6 deletions(-)
 
-Index: libvirt-7.9.0/docs/manpages/virsh.rst
+Index: libvirt-7.10.0/docs/manpages/virsh.rst
 ===================================================================
---- libvirt-7.9.0.orig/docs/manpages/virsh.rst
-+++ libvirt-7.9.0/docs/manpages/virsh.rst
-@@ -3167,7 +3167,8 @@ migrate
+--- libvirt-7.10.0.orig/docs/manpages/virsh.rst
++++ libvirt-7.10.0/docs/manpages/virsh.rst
+@@ -3175,7 +3175,8 @@ migrate
        [--postcopy-bandwidth bandwidth]
        [--parallel [--parallel-connections connections]]
        [--bandwidth bandwidth] [--tls-destination hostname]
@@ -30,7 +30,7 @@
  
  Migrate domain to another host.  Add *--live* for live migration; <--p2p>
  for peer-2-peer migration; *--direct* for direct migration; or *--tunnelled*
-@@ -3273,6 +3274,12 @@ parallel connections. The number of such
+@@ -3281,6 +3282,12 @@ parallel connections. The number of such
  network link between the source and the target and thus speeding up the
  migration.
  
@@ -43,10 +43,10 @@
  Running migration can be canceled by interrupting virsh (usually using
  ``Ctrl-C``) or by ``domjobabort`` command sent from another virsh instance.
  
-Index: libvirt-7.9.0/include/libvirt/libvirt-domain.h
+Index: libvirt-7.10.0/include/libvirt/libvirt-domain.h
 ===================================================================
---- libvirt-7.9.0.orig/include/libvirt/libvirt-domain.h
-+++ libvirt-7.9.0/include/libvirt/libvirt-domain.h
+--- libvirt-7.10.0.orig/include/libvirt/libvirt-domain.h
++++ libvirt-7.10.0/include/libvirt/libvirt-domain.h
 @@ -1079,6 +1079,25 @@ typedef enum {
   */
  # define VIR_MIGRATE_PARAM_TLS_DESTINATION          "tls.destination"
@@ -73,11 +73,11 @@
  /* Domain migration. */
  virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
                                 unsigned long flags, const char *dname,
-Index: libvirt-7.9.0/src/libxl/libxl_driver.c
+Index: libvirt-7.10.0/src/libxl/libxl_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_driver.c
-+++ libvirt-7.9.0/src/libxl/libxl_driver.c
-@@ -6005,6 +6005,9 @@ libxlDomainMigratePerform3Params(virDoma
+--- libvirt-7.10.0.orig/src/libxl/libxl_driver.c
++++ libvirt-7.10.0/src/libxl/libxl_driver.c
+@@ -5994,6 +5994,9 @@ libxlDomainMigratePerform3Params(virDoma
      const char *dname = NULL;
      const char *uri = NULL;
      int ret = -1;
@@ -87,7 +87,7 @@
  
  #ifdef LIBXL_HAVE_NO_SUSPEND_RESUME
      virReportUnsupportedError();
-@@ -6021,6 +6024,15 @@ libxlDomainMigratePerform3Params(virDoma
+@@ -6010,6 +6013,15 @@ libxlDomainMigratePerform3Params(virDoma
          virTypedParamsGetString(params, nparams,
                                  VIR_MIGRATE_PARAM_DEST_NAME,
                                  &dname) < 0 ||
@@ -103,7 +103,7 @@
          virTypedParamsGetString(params, nparams,
                                  VIR_MIGRATE_PARAM_URI,
                                  &uri) < 0)
-@@ -6035,11 +6047,11 @@ libxlDomainMigratePerform3Params(virDoma
+@@ -6024,11 +6036,11 @@ libxlDomainMigratePerform3Params(virDoma
  
      if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
          if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,
@@ -117,10 +117,10 @@
              goto cleanup;
      }
  
-Index: libvirt-7.9.0/src/libxl/libxl_migration.c
+Index: libvirt-7.10.0/src/libxl/libxl_migration.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_migration.c
-+++ libvirt-7.9.0/src/libxl/libxl_migration.c
+--- libvirt-7.10.0.orig/src/libxl/libxl_migration.c
++++ libvirt-7.10.0/src/libxl/libxl_migration.c
 @@ -334,18 +334,38 @@ libxlMigrateDstReceive(virNetSocket *soc
  static int
  libxlDoMigrateSrcSend(libxlDriverPrivate *driver,
@@ -162,7 +162,7 @@
      if (ret != 0) {
          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                         _("Failed to send migration data to destination 
host"));
-@@ -887,7 +907,7 @@ struct libxlTunnelControl {
+@@ -885,7 +905,7 @@ struct libxlTunnelControl {
  static int
  libxlMigrationSrcStartTunnel(libxlDriverPrivate *driver,
                               virDomainObj *vm,
@@ -171,7 +171,7 @@
                               virStreamPtr st,
                               struct libxlTunnelControl **tnl)
  {
-@@ -920,7 +940,7 @@ libxlMigrationSrcStartTunnel(libxlDriver
+@@ -918,7 +938,7 @@ libxlMigrationSrcStartTunnel(libxlDriver
  
      virObjectUnlock(vm);
      /* Send data to pipe */
@@ -179,8 +179,8 @@
 +    ret = libxlDoMigrateSrcSend(driver, vm, props, tc->dataFD[1]);
      virObjectLock(vm);
  
-  out:
-@@ -956,7 +976,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+     /* libxlMigrationSrcStopTunnel will be called in libxlDoMigrateSrcP2P
+@@ -953,7 +973,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
                       const char *dconnuri G_GNUC_UNUSED,
                       const char *dname,
                       const char *uri,
@@ -189,7 +189,7 @@
  {
      virDomainPtr ddomain = NULL;
      virTypedParameterPtr params = NULL;
-@@ -1001,11 +1021,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+@@ -998,11 +1018,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
      /* We don't require the destination to have P2P support
       * as it looks to be normal migration from the receiver perspective.
       */
@@ -203,7 +203,7 @@
          if (!(st = virStreamNew(dconn, 0)))
              goto confirm;
          ret = dconn->driver->domainMigratePrepareTunnel3Params
-@@ -1019,7 +1039,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+@@ -1016,7 +1036,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
      if (ret == -1)
          goto confirm;
  
@@ -212,7 +212,7 @@
          if (uri_out) {
              if (virTypedParamsReplaceString(&params, &nparams,
                                              VIR_MIGRATE_PARAM_URI, uri_out) < 
0) {
-@@ -1034,11 +1054,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+@@ -1031,11 +1051,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
      }
  
      VIR_DEBUG("Perform3 uri=%s", NULLSTR(uri_out));
@@ -227,7 +227,7 @@
      if (ret < 0) {
          notify_source = false;
          virErrorPreserveLast(&orig_err);
-@@ -1073,7 +1093,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+@@ -1070,7 +1090,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
   confirm:
      if (notify_source) {
          VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm);
@@ -236,7 +236,7 @@
  
          if (ret < 0)
              VIR_WARN("Guest %s probably left in 'paused' state on source",
-@@ -1081,7 +1101,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
+@@ -1078,7 +1098,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
      }
  
   cleanup:
@@ -245,7 +245,7 @@
          libxlMigrationSrcStopTunnel(tc);
          virObjectUnref(st);
      }
-@@ -1125,7 +1145,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
+@@ -1122,7 +1142,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
                                    const char *dconnuri,
                                    const char *uri_str G_GNUC_UNUSED,
                                    const char *dname,
@@ -254,7 +254,7 @@
  {
      int ret = -1;
      int useParams;
-@@ -1162,7 +1182,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
+@@ -1159,7 +1179,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
      }
  
      ret = libxlDoMigrateSrcP2P(driver, vm, sconn, xmlin, dconn, dconnuri,
@@ -263,7 +263,7 @@
  
      if (ret < 0) {
          /*
-@@ -1189,7 +1209,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
+@@ -1186,7 +1206,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
                                 const char *dconnuri G_GNUC_UNUSED,
                                 const char *uri_str,
                                 const char *dname G_GNUC_UNUSED,
@@ -272,7 +272,7 @@
  {
      libxlDomainObjPrivate *priv = vm->privateData;
      char *hostname = NULL;
-@@ -1225,7 +1245,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
+@@ -1222,7 +1242,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
  
      /* suspend vm and send saved data to dst through socket fd */
      virObjectUnlock(vm);
@@ -281,10 +281,10 @@
      virObjectLock(vm);
  
      if (ret == 0) {
-Index: libvirt-7.9.0/src/libxl/libxl_migration.h
+Index: libvirt-7.10.0/src/libxl/libxl_migration.h
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_migration.h
-+++ libvirt-7.9.0/src/libxl/libxl_migration.h
+--- libvirt-7.10.0.orig/src/libxl/libxl_migration.h
++++ libvirt-7.10.0/src/libxl/libxl_migration.h
 @@ -35,6 +35,9 @@
      VIR_MIGRATE_PARAM_URI,              VIR_TYPED_PARAM_STRING, \
      VIR_MIGRATE_PARAM_DEST_NAME,        VIR_TYPED_PARAM_STRING, \
@@ -327,11 +327,11 @@
  
  virDomainPtr
  libxlDomainMigrationDstFinish(virConnectPtr dconn,
-Index: libvirt-7.9.0/tools/virsh-domain.c
+Index: libvirt-7.10.0/tools/virsh-domain.c
 ===================================================================
---- libvirt-7.9.0.orig/tools/virsh-domain.c
-+++ libvirt-7.9.0/tools/virsh-domain.c
-@@ -10685,6 +10685,18 @@ static const vshCmdOptDef opts_migrate[]
+--- libvirt-7.10.0.orig/tools/virsh-domain.c
++++ libvirt-7.10.0/tools/virsh-domain.c
+@@ -10683,6 +10683,18 @@ static const vshCmdOptDef opts_migrate[]
       .completer = virshCompleteEmpty,
       .help = N_("override the destination host name used for TLS 
verification")
      },
@@ -350,7 +350,7 @@
      {.name = NULL}
  };
  
-@@ -10705,6 +10717,7 @@ doMigrate(void *opaque)
+@@ -10703,6 +10715,7 @@ doMigrate(void *opaque)
      unsigned long long ullOpt = 0;
      int rv;
      virConnectPtr dconn = data->dconn;
@@ -358,7 +358,7 @@
  #ifndef WIN32
      sigset_t sigmask, oldsigmask;
  
-@@ -10835,6 +10848,22 @@ doMigrate(void *opaque)
+@@ -10833,6 +10846,22 @@ doMigrate(void *opaque)
              goto save_error;
      }
  

++++++ libxl-support-block-script.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.008606571 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.008606571 +0100
@@ -7,10 +7,10 @@
 
 For more details, see bsc#954872 and FATE#319810
 
-Index: libvirt-7.9.0/src/libxl/libxl_conf.c
+Index: libvirt-7.10.0/src/libxl/libxl_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_conf.c
-+++ libvirt-7.9.0/src/libxl/libxl_conf.c
+--- libvirt-7.10.0.orig/src/libxl/libxl_conf.c
++++ libvirt-7.10.0/src/libxl/libxl_conf.c
 @@ -942,6 +942,20 @@ libxlDiskSetDiscard(libxl_device_disk *x
  }
  

++++++ lxc-wait-after-eth-del.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.016606543 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.016606543 +0100
@@ -13,10 +13,10 @@
  src/lxc/lxc_process.c    | 1 +
  3 files changed, 4 insertions(+)
 
-Index: libvirt-7.9.0/src/lxc/lxc_controller.c
+Index: libvirt-7.10.0/src/lxc/lxc_controller.c
 ===================================================================
---- libvirt-7.9.0.orig/src/lxc/lxc_controller.c
-+++ libvirt-7.9.0/src/lxc/lxc_controller.c
+--- libvirt-7.10.0.orig/src/lxc/lxc_controller.c
++++ libvirt-7.10.0/src/lxc/lxc_controller.c
 @@ -2012,6 +2012,7 @@ static int virLXCControllerDeleteInterfa
          if (virNetDevVethDelete(ctrl->veths[i]) < 0)
              ret = -1;
@@ -25,10 +25,10 @@
  
      return ret;
  }
-Index: libvirt-7.9.0/src/lxc/lxc_driver.c
+Index: libvirt-7.10.0/src/lxc/lxc_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/lxc/lxc_driver.c
-+++ libvirt-7.9.0/src/lxc/lxc_driver.c
+--- libvirt-7.10.0.orig/src/lxc/lxc_driver.c
++++ libvirt-7.10.0/src/lxc/lxc_driver.c
 @@ -67,6 +67,7 @@
  #include "virtime.h"
  #include "virtypedparam.h"
@@ -37,7 +37,7 @@
  #include "virstring.h"
  #include "viraccessapicheck.h"
  #include "viraccessapichecklxc.h"
-@@ -3542,6 +3543,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
+@@ -3539,6 +3540,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
          case VIR_DOMAIN_NET_TYPE_NETWORK:
          case VIR_DOMAIN_NET_TYPE_ETHERNET:
              ignore_value(virNetDevVethDelete(veth));
@@ -45,7 +45,7 @@
              break;
  
          case VIR_DOMAIN_NET_TYPE_DIRECT:
-@@ -3981,6 +3983,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
+@@ -3978,6 +3980,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
              virDomainAuditNet(vm, detach, NULL, "detach", false);
              goto cleanup;
          }
@@ -53,10 +53,10 @@
          break;
  
          /* It'd be nice to support this, but with macvlan
-Index: libvirt-7.9.0/src/lxc/lxc_process.c
+Index: libvirt-7.10.0/src/lxc/lxc_process.c
 ===================================================================
---- libvirt-7.9.0.orig/src/lxc/lxc_process.c
-+++ libvirt-7.9.0/src/lxc/lxc_process.c
+--- libvirt-7.10.0.orig/src/lxc/lxc_process.c
++++ libvirt-7.10.0/src/lxc/lxc_process.c
 @@ -51,6 +51,7 @@
  #include "virstring.h"
  #include "virprocess.h"

++++++ network-don-t-use-dhcp-authoritative-on-static-netwo.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.024606515 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.024606515 +0100
@@ -17,11 +17,11 @@
  tests/networkxml2confdata/dhcp6host-routed-network.conf | 1 -
  2 files changed, 8 insertions(+), 2 deletions(-)
 
-Index: libvirt-7.9.0/src/network/bridge_driver.c
+Index: libvirt-7.10.0/src/network/bridge_driver.c
 ===================================================================
---- libvirt-7.9.0.orig/src/network/bridge_driver.c
-+++ libvirt-7.9.0/src/network/bridge_driver.c
-@@ -1463,7 +1463,14 @@ networkDnsmasqConfContents(virNetworkObj
+--- libvirt-7.10.0.orig/src/network/bridge_driver.c
++++ libvirt-7.10.0/src/network/bridge_driver.c
+@@ -1449,7 +1449,14 @@ networkDnsmasqConfContents(virNetworkObj
          if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) {
              if (ipdef->nranges || ipdef->nhosts) {
                  virBufferAddLit(&configbuf, "dhcp-no-override\n");
@@ -37,10 +37,10 @@
              }
  
              if (ipdef->tftproot) {
-Index: libvirt-7.9.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
+Index: libvirt-7.10.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
 ===================================================================
---- libvirt-7.9.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf
-+++ libvirt-7.9.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
+--- libvirt-7.10.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf
++++ libvirt-7.10.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
 @@ -10,7 +10,6 @@ bind-dynamic
  interface=virbr1
  dhcp-range=192.168.122.1,static

++++++ ppc64le-canonical-name.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.036606473 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.036606473 +0100
@@ -2,14 +2,14 @@
 
 See bnc#894956
 
-Index: libvirt-7.9.0/src/util/virarch.c
+Index: libvirt-7.10.0/src/util/virarch.c
 ===================================================================
---- libvirt-7.9.0.orig/src/util/virarch.c
-+++ libvirt-7.9.0/src/util/virarch.c
-@@ -220,6 +220,8 @@ virArch virArchFromHost(void)
-         arch = VIR_ARCH_I686;
-     } else if (STREQ(ut.machine, "amd64")) {
+--- libvirt-7.10.0.orig/src/util/virarch.c
++++ libvirt-7.10.0/src/util/virarch.c
+@@ -222,6 +222,8 @@ virArch virArchFromHost(void)
          arch = VIR_ARCH_X86_64;
+     } else if (STREQ(ut.machine, "arm64")) {
+         arch = VIR_ARCH_AARCH64;
 +    } else if (STREQ(ut.machine, "ppc64le")) {
 +        arch = VIR_ARCH_PPC64;
      } else {

++++++ qemu-apparmor-screenshot.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.052606416 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.056606402 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-7.9.0/src/security/apparmor/libvirt-qemu
+Index: libvirt-7.10.0/src/security/apparmor/libvirt-qemu
 ===================================================================
---- libvirt-7.9.0.orig/src/security/apparmor/libvirt-qemu
-+++ libvirt-7.9.0/src/security/apparmor/libvirt-qemu
+--- libvirt-7.10.0.orig/src/security/apparmor/libvirt-qemu
++++ libvirt-7.10.0/src/security/apparmor/libvirt-qemu
 @@ -248,3 +248,6 @@
    # /sys/bus/nd/devices
    / r, # harmless on any lsb compliant system

++++++ suse-libvirt-guests-service.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.068606359 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.072606345 +0100
@@ -1,9 +1,9 @@
 Adjust libvirt-guests service to conform to SUSE standards
 
-Index: libvirt-7.9.0/tools/libvirt-guests.sh.in
+Index: libvirt-7.10.0/tools/libvirt-guests.sh.in
 ===================================================================
---- libvirt-7.9.0.orig/tools/libvirt-guests.sh.in
-+++ libvirt-7.9.0/tools/libvirt-guests.sh.in
+--- libvirt-7.10.0.orig/tools/libvirt-guests.sh.in
++++ libvirt-7.10.0/tools/libvirt-guests.sh.in
 @@ -20,10 +20,6 @@ sysconfdir="@sysconfdir@"
  localstatedir="@localstatedir@"
  libvirtd="@sbindir@"/libvirtd

++++++ suse-libvirtd-disable-tls.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.096606261 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.096606261 +0100
@@ -3,10 +3,10 @@
 On SUSE distros, the default is for libvirtd to listen only on the
 Unix Domain Socket. The libvirt client still provides remote access
 via a SSH tunnel.
-Index: libvirt-7.9.0/src/remote/remote_daemon_config.c
+Index: libvirt-7.10.0/src/remote/remote_daemon_config.c
 ===================================================================
---- libvirt-7.9.0.orig/src/remote/remote_daemon_config.c
-+++ libvirt-7.9.0/src/remote/remote_daemon_config.c
+--- libvirt-7.10.0.orig/src/remote/remote_daemon_config.c
++++ libvirt-7.10.0/src/remote/remote_daemon_config.c
 @@ -98,7 +98,7 @@ daemonConfigNew(bool privileged G_GNUC_U
  
  #ifdef WITH_IP
@@ -16,10 +16,10 @@
  # else /* ! LIBVIRTD */
      data->listen_tls = false; /* Always honoured, --listen doesn't exist. */
  # endif /* ! LIBVIRTD */
-Index: libvirt-7.9.0/src/remote/libvirtd.conf.in
+Index: libvirt-7.10.0/src/remote/libvirtd.conf.in
 ===================================================================
---- libvirt-7.9.0.orig/src/remote/libvirtd.conf.in
-+++ libvirt-7.9.0/src/remote/libvirtd.conf.in
+--- libvirt-7.10.0.orig/src/remote/libvirtd.conf.in
++++ libvirt-7.10.0/src/remote/libvirtd.conf.in
 @@ -17,8 +17,8 @@
  # It is necessary to setup a CA and issue server certificates before
  # using this capability.
@@ -31,10 +31,10 @@
  
  # Listen for unencrypted TCP connections on the public TCP/IP port.
  # NB, must pass the --listen flag to the @DAEMON_NAME@ process for this to
-Index: libvirt-7.9.0/src/remote/test_libvirtd.aug.in
+Index: libvirt-7.10.0/src/remote/test_libvirtd.aug.in
 ===================================================================
---- libvirt-7.9.0.orig/src/remote/test_libvirtd.aug.in
-+++ libvirt-7.9.0/src/remote/test_libvirtd.aug.in
+--- libvirt-7.10.0.orig/src/remote/test_libvirtd.aug.in
++++ libvirt-7.10.0/src/remote/test_libvirtd.aug.in
 @@ -3,7 +3,7 @@ module Test_@DAEMON_NAME@ =
  
     test @DAEMON_NAME_UC@.lns get conf =

++++++ suse-libxl-disable-autoballoon.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.108606218 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.108606218 +0100
@@ -6,10 +6,10 @@
 by default. It can only be enabled with the 'autoballoon' setting in
 libxl.conf. See jsc#SLE-3059 for more details.
 
-Index: libvirt-7.9.0/src/libxl/libxl.conf
+Index: libvirt-7.10.0/src/libxl/libxl.conf
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl.conf
-+++ libvirt-7.9.0/src/libxl/libxl.conf
+--- libvirt-7.10.0.orig/src/libxl/libxl.conf
++++ libvirt-7.10.0/src/libxl/libxl.conf
 @@ -4,12 +4,11 @@
  
  # Enable autoballooning of domain0
@@ -27,10 +27,10 @@
  
  
  # In order to prevent accidentally starting two domains that
-Index: libvirt-7.9.0/src/libxl/libxl_conf.c
+Index: libvirt-7.10.0/src/libxl/libxl_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_conf.c
-+++ libvirt-7.9.0/src/libxl/libxl_conf.c
+--- libvirt-7.10.0.orig/src/libxl/libxl_conf.c
++++ libvirt-7.10.0/src/libxl/libxl_conf.c
 @@ -1746,15 +1746,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa
  /*
   * Get domain0 autoballoon configuration.  Honor user-specified
@@ -66,10 +66,10 @@
      return 0;
  }
  
-Index: libvirt-7.9.0/src/libxl/test_libvirtd_libxl.aug.in
+Index: libvirt-7.10.0/src/libxl/test_libvirtd_libxl.aug.in
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/test_libvirtd_libxl.aug.in
-+++ libvirt-7.9.0/src/libxl/test_libvirtd_libxl.aug.in
+--- libvirt-7.10.0.orig/src/libxl/test_libvirtd_libxl.aug.in
++++ libvirt-7.10.0/src/libxl/test_libvirtd_libxl.aug.in
 @@ -2,7 +2,7 @@ module Test_libvirtd_libxl =
    @CONFIG@
  

++++++ suse-qemu-conf.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.116606189 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.116606189 +0100
@@ -7,10 +7,10 @@
 etc.), but for now they are all lumped together in this
 single patch.
 
-Index: libvirt-7.9.0/src/qemu/qemu.conf
+Index: libvirt-7.10.0/src/qemu/qemu.conf
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/qemu.conf
-+++ libvirt-7.9.0/src/qemu/qemu.conf
+--- libvirt-7.10.0.orig/src/qemu/qemu.conf
++++ libvirt-7.10.0/src/qemu/qemu.conf
 @@ -491,10 +491,19 @@
  # isolation, but it cannot appear in a list of drivers.
  #
@@ -60,10 +60,10 @@
  #
  #lock_manager = "lockd"
  
-Index: libvirt-7.9.0/src/qemu/qemu_conf.c
+Index: libvirt-7.10.0/src/qemu/qemu_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/qemu_conf.c
-+++ libvirt-7.9.0/src/qemu/qemu_conf.c
+--- libvirt-7.10.0.orig/src/qemu/qemu_conf.c
++++ libvirt-7.10.0/src/qemu/qemu_conf.c
 @@ -272,7 +272,7 @@ virQEMUDriverConfig *virQEMUDriverConfig
      cfg->slirpHelperName = g_strdup(QEMU_SLIRP_HELPER);
      cfg->dbusDaemonName = g_strdup(QEMU_DBUS_DAEMON);
@@ -73,10 +73,10 @@
      cfg->securityRequireConfined = false;
  
      cfg->keepAliveInterval = 5;
-Index: libvirt-7.9.0/src/qemu/test_libvirtd_qemu.aug.in
+Index: libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/test_libvirtd_qemu.aug.in
-+++ libvirt-7.9.0/src/qemu/test_libvirtd_qemu.aug.in
+--- libvirt-7.10.0.orig/src/qemu/test_libvirtd_qemu.aug.in
++++ libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
 @@ -45,6 +45,7 @@ module Test_libvirtd_qemu =
  { "remote_websocket_port_min" = "5700" }
  { "remote_websocket_port_max" = "65535" }

++++++ suse-qemu-ovmf-paths.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.136606119 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.136606119 +0100
@@ -5,10 +5,10 @@
 removes the old DEFAULT_LOADER_NVRAM approach and associated code, this
 patch will stay.
 
-Index: libvirt-7.9.0/src/qemu/qemu.conf
+Index: libvirt-7.10.0/src/qemu/qemu.conf
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/qemu.conf
-+++ libvirt-7.9.0/src/qemu/qemu.conf
+--- libvirt-7.10.0.orig/src/qemu/qemu.conf
++++ libvirt-7.10.0/src/qemu/qemu.conf
 @@ -857,10 +857,9 @@
  # for x86_64 and i686, but it's AAVMF for aarch64. The libvirt default
  # follows this scheme.
@@ -23,10 +23,10 @@
  #]
  
  # The backend to use for handling stdout/stderr output from
-Index: libvirt-7.9.0/src/qemu/qemu_conf.c
+Index: libvirt-7.10.0/src/qemu/qemu_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/qemu_conf.c
-+++ libvirt-7.9.0/src/qemu/qemu_conf.c
+--- libvirt-7.10.0.orig/src/qemu/qemu_conf.c
++++ libvirt-7.10.0/src/qemu/qemu_conf.c
 @@ -98,10 +98,9 @@ qemuDriverUnlock(virQEMUDriver *driver)
  
  #ifndef DEFAULT_LOADER_NVRAM
@@ -41,10 +41,10 @@
  #endif
  
  
-Index: libvirt-7.9.0/src/security/virt-aa-helper.c
+Index: libvirt-7.10.0/src/security/virt-aa-helper.c
 ===================================================================
---- libvirt-7.9.0.orig/src/security/virt-aa-helper.c
-+++ libvirt-7.9.0/src/security/virt-aa-helper.c
+--- libvirt-7.10.0.orig/src/security/virt-aa-helper.c
++++ libvirt-7.10.0/src/security/virt-aa-helper.c
 @@ -480,7 +480,8 @@ valid_path(const char *path, const bool
          "/usr/share/ovmf/",              /* for OVMF images */
          "/usr/share/AAVMF/",             /* for AAVMF images */
@@ -55,10 +55,10 @@
      };
      /* override the above with these */
      const char * const override[] = {
-Index: libvirt-7.9.0/src/qemu/test_libvirtd_qemu.aug.in
+Index: libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
 ===================================================================
---- libvirt-7.9.0.orig/src/qemu/test_libvirtd_qemu.aug.in
-+++ libvirt-7.9.0/src/qemu/test_libvirtd_qemu.aug.in
+--- libvirt-7.10.0.orig/src/qemu/test_libvirtd_qemu.aug.in
++++ libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
 @@ -96,10 +96,9 @@ module Test_libvirtd_qemu =
  { "migration_port_max" = "49215" }
  { "log_timestamp" = "0" }

++++++ suse-xen-ovmf-paths.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.144606091 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.148606076 +0100
@@ -5,10 +5,10 @@
 the firmware path to match the one provided by the ovmf package.
 
 
-Index: libvirt-7.9.0/src/libxl/libxl_conf.c
+Index: libvirt-7.10.0/src/libxl/libxl_conf.c
 ===================================================================
---- libvirt-7.9.0.orig/src/libxl/libxl_conf.c
-+++ libvirt-7.9.0/src/libxl/libxl_conf.c
+--- libvirt-7.10.0.orig/src/libxl/libxl_conf.c
++++ libvirt-7.10.0/src/libxl/libxl_conf.c
 @@ -1797,7 +1797,7 @@ libxlDriverConfigNew(void)
      cfg->firmwares = g_new0(virFirmware *, 1);
      cfg->nfirmwares = 1;

++++++ virt-create-rootfs.patch ++++++
--- /var/tmp/diff_new_pack.4ahbgN/_old  2021-12-06 23:59:11.156606048 +0100
+++ /var/tmp/diff_new_pack.4ahbgN/_new  2021-12-06 23:59:11.156606048 +0100
@@ -1,7 +1,7 @@
-Index: libvirt-7.9.0/tools/virt-create-rootfs
+Index: libvirt-7.10.0/tools/virt-create-rootfs
 ===================================================================
 --- /dev/null
-+++ libvirt-7.9.0/tools/virt-create-rootfs
++++ libvirt-7.10.0/tools/virt-create-rootfs
 @@ -0,0 +1,236 @@
 +#!/bin/sh
 +set -e
@@ -239,10 +239,10 @@
 +    echo "pts/0" >> "$ROOT/etc/securetty"
 +    chroot "$ROOT" /usr/bin/passwd
 +fi
-Index: libvirt-7.9.0/docs/manpages/virt-create-rootfs.rst
+Index: libvirt-7.10.0/docs/manpages/virt-create-rootfs.rst
 ===================================================================
 --- /dev/null
-+++ libvirt-7.9.0/docs/manpages/virt-create-rootfs.rst
++++ libvirt-7.10.0/docs/manpages/virt-create-rootfs.rst
 @@ -0,0 +1,88 @@
 +==================
 +virt-create-rootfs
@@ -332,10 +332,10 @@
 +========
 +
 +virsh(1), `https://libvirt.org/ <https://libvirt.org/>`_
-Index: libvirt-7.9.0/docs/manpages/meson.build
+Index: libvirt-7.10.0/docs/manpages/meson.build
 ===================================================================
---- libvirt-7.9.0.orig/docs/manpages/meson.build
-+++ libvirt-7.9.0/docs/manpages/meson.build
+--- libvirt-7.10.0.orig/docs/manpages/meson.build
++++ libvirt-7.10.0/docs/manpages/meson.build
 @@ -19,6 +19,7 @@ docs_man_files = [
    { 'name': 'virt-pki-validate', 'section': '1', 'install': true },
    { 'name': 'virt-qemu-run', 'section': '1', 'install': conf.has('WITH_QEMU') 
},
@@ -344,10 +344,10 @@
  
    { 'name': 'libvirtd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') 
},
    { 'name': 'virt-sanlock-cleanup', 'section': '8', 'install': 
conf.has('WITH_SANLOCK') },
-Index: libvirt-7.9.0/tools/meson.build
+Index: libvirt-7.10.0/tools/meson.build
 ===================================================================
---- libvirt-7.9.0.orig/tools/meson.build
-+++ libvirt-7.9.0/tools/meson.build
+--- libvirt-7.10.0.orig/tools/meson.build
++++ libvirt-7.10.0/tools/meson.build
 @@ -154,6 +154,8 @@ else
    virsh_icon_res = []
  endif

Reply via email to