Accepting request 947276 from Virtualization
OBS-URL: https://build.opensuse.org/request/show/947276 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libvirt?expand=0&rev=346
This commit is contained in:
commit
8e799487c9
@ -18,10 +18,10 @@ them.
|
||||
create mode 100644 src/conf/domain_stats.c
|
||||
create mode 100644 src/conf/domain_stats.h
|
||||
|
||||
Index: libvirt-7.10.0/src/conf/domain_stats.c
|
||||
Index: libvirt-8.0.0/src/conf/domain_stats.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-7.10.0/src/conf/domain_stats.c
|
||||
+++ libvirt-8.0.0/src/conf/domain_stats.c
|
||||
@@ -0,0 +1,117 @@
|
||||
+/*
|
||||
+ * domain_stats.c: domain stats extraction helpers
|
||||
@ -140,10 +140,10 @@ Index: libvirt-7.10.0/src/conf/domain_stats.c
|
||||
+}
|
||||
+
|
||||
+#undef STATS_ADD_NET_PARAM
|
||||
Index: libvirt-7.10.0/src/conf/domain_stats.h
|
||||
Index: libvirt-8.0.0/src/conf/domain_stats.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-7.10.0/src/conf/domain_stats.h
|
||||
+++ libvirt-8.0.0/src/conf/domain_stats.h
|
||||
@@ -0,0 +1,60 @@
|
||||
+/*
|
||||
+ * domain_stats.h: domain stats extraction helpers
|
||||
@ -205,11 +205,11 @@ Index: libvirt-7.10.0/src/conf/domain_stats.h
|
||||
+ virTypedParamList *params);
|
||||
+
|
||||
+#endif /* __DOMAIN_STATS_H */
|
||||
Index: libvirt-7.10.0/src/libvirt_private.syms
|
||||
Index: libvirt-8.0.0/src/libvirt_private.syms
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/libvirt_private.syms
|
||||
+++ libvirt-7.10.0/src/libvirt_private.syms
|
||||
@@ -770,6 +770,11 @@ virDomainConfNWFilterTeardown;
|
||||
--- libvirt-8.0.0.orig/src/libvirt_private.syms
|
||||
+++ libvirt-8.0.0/src/libvirt_private.syms
|
||||
@@ -772,6 +772,11 @@ virDomainConfNWFilterTeardown;
|
||||
virDomainConfVMNWFilterTeardown;
|
||||
|
||||
|
||||
@ -221,7 +221,7 @@ Index: libvirt-7.10.0/src/libvirt_private.syms
|
||||
# conf/domain_validate.h
|
||||
virDomainActualNetDefValidate;
|
||||
virDomainDefValidate;
|
||||
@@ -1950,6 +1955,7 @@ virCgroupGetMemoryUsage;
|
||||
@@ -1942,6 +1947,7 @@ virCgroupGetMemoryUsage;
|
||||
virCgroupGetMemSwapHardLimit;
|
||||
virCgroupGetMemSwapUsage;
|
||||
virCgroupGetPercpuStats;
|
||||
@ -229,10 +229,10 @@ Index: libvirt-7.10.0/src/libvirt_private.syms
|
||||
virCgroupHasController;
|
||||
virCgroupHasEmptyTasks;
|
||||
virCgroupKillPainfully;
|
||||
Index: libvirt-7.10.0/src/qemu/qemu_driver.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/qemu/qemu_driver.c
|
||||
+++ libvirt-8.0.0/src/qemu/qemu_driver.c
|
||||
@@ -68,6 +68,7 @@
|
||||
#include "virarptable.h"
|
||||
#include "viruuid.h"
|
||||
@ -241,7 +241,7 @@ Index: libvirt-7.10.0/src/qemu/qemu_driver.c
|
||||
#include "domain_audit.h"
|
||||
#include "domain_cgroup.h"
|
||||
#include "domain_driver.h"
|
||||
@@ -17530,13 +17531,7 @@ qemuDomainGetStatsState(virQEMUDriver *d
|
||||
@@ -17407,13 +17408,7 @@ qemuDomainGetStatsState(virQEMUDriver *d
|
||||
virTypedParamList *params,
|
||||
unsigned int privflags G_GNUC_UNUSED)
|
||||
{
|
||||
@ -256,7 +256,7 @@ Index: libvirt-7.10.0/src/qemu/qemu_driver.c
|
||||
}
|
||||
|
||||
|
||||
@@ -17828,25 +17823,11 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
|
||||
@@ -17705,25 +17700,11 @@ qemuDomainGetStatsCpuCgroup(virDomainObj
|
||||
virTypedParamList *params)
|
||||
{
|
||||
qemuDomainObjPrivate *priv = dom->privateData;
|
||||
@ -283,7 +283,7 @@ Index: libvirt-7.10.0/src/qemu/qemu_driver.c
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -18039,76 +18020,15 @@ qemuDomainGetStatsVcpu(virQEMUDriver *dr
|
||||
@@ -17916,76 +17897,15 @@ qemuDomainGetStatsVcpu(virQEMUDriver *dr
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -361,11 +361,11 @@ Index: libvirt-7.10.0/src/qemu/qemu_driver.c
|
||||
|
||||
/* refresh information by opening images on the disk */
|
||||
static int
|
||||
Index: libvirt-7.10.0/src/util/vircgroup.c
|
||||
Index: libvirt-8.0.0/src/util/vircgroup.c
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/util/vircgroup.c
|
||||
+++ libvirt-7.10.0/src/util/vircgroup.c
|
||||
@@ -3033,6 +3033,31 @@ virCgroupGetInode(virCgroup *cgroup)
|
||||
--- libvirt-8.0.0.orig/src/util/vircgroup.c
|
||||
+++ libvirt-8.0.0/src/util/vircgroup.c
|
||||
@@ -3022,6 +3022,31 @@ virCgroupGetInode(virCgroup *cgroup)
|
||||
return st.st_ino;
|
||||
}
|
||||
|
||||
@ -397,7 +397,7 @@ Index: libvirt-7.10.0/src/util/vircgroup.c
|
||||
#else /* !__linux__ */
|
||||
|
||||
bool
|
||||
@@ -3042,6 +3067,14 @@ virCgroupAvailable(void)
|
||||
@@ -3031,6 +3056,14 @@ virCgroupAvailable(void)
|
||||
}
|
||||
|
||||
|
||||
@ -412,10 +412,10 @@ Index: libvirt-7.10.0/src/util/vircgroup.c
|
||||
int
|
||||
virCgroupNewPartition(const char *path G_GNUC_UNUSED,
|
||||
bool create G_GNUC_UNUSED,
|
||||
Index: libvirt-7.10.0/src/util/vircgroup.h
|
||||
Index: libvirt-8.0.0/src/util/vircgroup.h
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/util/vircgroup.h
|
||||
+++ libvirt-7.10.0/src/util/vircgroup.h
|
||||
--- libvirt-8.0.0.orig/src/util/vircgroup.h
|
||||
+++ libvirt-8.0.0/src/util/vircgroup.h
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "virbitmap.h"
|
||||
@ -432,10 +432,10 @@ Index: libvirt-7.10.0/src/util/vircgroup.h
|
||||
+ virTypedParamList *params);
|
||||
+
|
||||
int virCgroupGetInode(virCgroup *cgroup);
|
||||
Index: libvirt-7.10.0/src/conf/meson.build
|
||||
Index: libvirt-8.0.0/src/conf/meson.build
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/conf/meson.build
|
||||
+++ libvirt-7.10.0/src/conf/meson.build
|
||||
--- libvirt-8.0.0.orig/src/conf/meson.build
|
||||
+++ libvirt-8.0.0/src/conf/meson.build
|
||||
@@ -15,6 +15,7 @@ domain_conf_sources = [
|
||||
'domain_conf.c',
|
||||
'domain_nwfilter.c',
|
||||
|
@ -19,11 +19,11 @@ reworking this patch and submitting it to upstream libvirt.
|
||||
src/libxl/libxl_driver.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 91 insertions(+)
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- 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,
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
@@ -5241,6 +5241,95 @@ libxlDomainMemoryStats(virDomainPtr dom,
|
||||
|
||||
#undef LIBXL_SET_MEMSTAT
|
||||
|
||||
@ -119,7 +119,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
static int
|
||||
libxlDomainGetJobInfo(virDomainPtr dom,
|
||||
virDomainJobInfoPtr info)
|
||||
@@ -6575,6 +6664,7 @@ static virHypervisorDriver libxlHypervis
|
||||
@@ -6554,6 +6643,7 @@ static virHypervisorDriver libxlHypervis
|
||||
.domainGetNumaParameters = libxlDomainGetNumaParameters, /* 1.1.1 */
|
||||
.nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */
|
||||
.nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */
|
||||
@ -127,10 +127,10 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
.domainGetJobInfo = libxlDomainGetJobInfo, /* 1.3.1 */
|
||||
.domainGetJobStats = libxlDomainGetJobStats, /* 1.3.1 */
|
||||
.domainMemoryStats = libxlDomainMemoryStats, /* 1.3.0 */
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_api_wrapper.h
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_api_wrapper.h
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_api_wrapper.h
|
||||
@@ -215,3 +215,18 @@ libxlSetMemoryTargetWrapper(libxl_ctx *c
|
||||
|
||||
return ret;
|
||||
|
@ -18,10 +18,10 @@ Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
src/util/virpolkit.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: libvirt-7.10.0/src/util/virpolkit.c
|
||||
Index: libvirt-8.0.0/src/util/virpolkit.c
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/util/virpolkit.c
|
||||
+++ libvirt-7.10.0/src/util/virpolkit.c
|
||||
--- libvirt-8.0.0.orig/src/util/virpolkit.c
|
||||
+++ libvirt-8.0.0/src/util/virpolkit.c
|
||||
@@ -237,6 +237,9 @@ virPolkitAgentAvailable(void)
|
||||
const char *termid = ctermid(NULL);
|
||||
VIR_AUTOCLOSE fd = -1;
|
||||
|
@ -9,10 +9,10 @@ them using the existing API.
|
||||
src/lxc/lxc_driver.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 138 insertions(+)
|
||||
|
||||
Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-8.0.0/src/lxc/lxc_driver.c
|
||||
@@ -74,6 +74,8 @@
|
||||
#include "netdev_bandwidth_conf.h"
|
||||
#include "virsocket.h"
|
||||
@ -22,7 +22,7 @@ Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
|
||||
#define VIR_FROM_THIS VIR_FROM_LXC
|
||||
|
||||
@@ -5075,6 +5077,128 @@ lxcDomainHasManagedSaveImage(virDomainPt
|
||||
@@ -5036,6 +5038,128 @@ lxcDomainHasManagedSaveImage(virDomainPt
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -151,7 +151,7 @@ Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
|
||||
/* Function Tables */
|
||||
static virHypervisorDriver lxcHypervisorDriver = {
|
||||
@@ -5172,6 +5296,7 @@ static virHypervisorDriver lxcHypervisor
|
||||
@@ -5133,6 +5257,7 @@ static virHypervisorDriver lxcHypervisor
|
||||
.nodeGetFreePages = lxcNodeGetFreePages, /* 1.2.6 */
|
||||
.nodeAllocPages = lxcNodeAllocPages, /* 1.2.9 */
|
||||
.domainHasManagedSaveImage = lxcDomainHasManagedSaveImage, /* 1.2.13 */
|
||||
|
214
16172741-libvirt-guests-manpage.patch
Normal file
214
16172741-libvirt-guests-manpage.patch
Normal file
@ -0,0 +1,214 @@
|
||||
commit 161727417a91bdddf8f3167cf70c3de2829be81c
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Fri Jan 7 14:35:10 2022 -0700
|
||||
|
||||
docs: Add man page for libvirt-guests
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
Index: libvirt-8.0.0/docs/manpages/index.rst
|
||||
===================================================================
|
||||
--- libvirt-8.0.0.orig/docs/manpages/index.rst
|
||||
+++ libvirt-8.0.0/docs/manpages/index.rst
|
||||
@@ -41,6 +41,7 @@ Tools
|
||||
* `virt-admin(1) <virt-admin.html>`__ - daemon administration interface
|
||||
* `virsh(1) <virsh.html>`__ - management user interface
|
||||
* `virt-qemu-run(1) <virt-qemu-run.html>`__ - run standalone QEMU instances
|
||||
+* `libvirt-guests(8) <libvirt-guests.html>`__ - suspend/resume running libvirt guests
|
||||
|
||||
Key codes
|
||||
=========
|
||||
Index: libvirt-8.0.0/docs/manpages/libvirt-guests.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-8.0.0/docs/manpages/libvirt-guests.rst
|
||||
@@ -0,0 +1,151 @@
|
||||
+==============
|
||||
+libvirt-guests
|
||||
+==============
|
||||
+
|
||||
+-------------------------------------
|
||||
+suspend/resume running libvirt guests
|
||||
+-------------------------------------
|
||||
+
|
||||
+:Manual section: 8
|
||||
+:Manual group: Virtualization Support
|
||||
+
|
||||
+.. contents::
|
||||
+
|
||||
+SYNOPSIS
|
||||
+========
|
||||
+
|
||||
+``libvirt-guests`` *COMMAND*
|
||||
+
|
||||
+
|
||||
+DESCRIPTION
|
||||
+===========
|
||||
+
|
||||
+``libvirt-guests`` is a service that can be used to coordinate guest and host
|
||||
+lifecyle actions. By default, ``libvirt-guests`` will suspend running guests
|
||||
+when the host shuts down, and restore them to their pre-shutdown state when
|
||||
+the host reboots.
|
||||
+
|
||||
+``libvirt-guests`` is typically under control of systemd. When
|
||||
+``libvirt-guests.service`` is enabled, systemd will call ``libvirt-guests``
|
||||
+with the ``start`` *COMMAND* when the host boots. Conversely, systemd will call
|
||||
+``libvirt-guests`` with the ``stop`` *COMMAND* when the host shuts down.
|
||||
+
|
||||
+``libvirt-guests`` can be used directly. In addition to the ``start`` and
|
||||
+``stop`` *COMMAND*\s, it also supports ``status``, ``restart``, ``condrestart``,
|
||||
+``try-restart``, ``reload``, ``force-reload``, ``gueststatus``, and
|
||||
+``shutdown`` *COMMAND*\s.
|
||||
+
|
||||
+
|
||||
+FILES
|
||||
+=====
|
||||
+
|
||||
+``libvirt-guests`` defines several variables to control service behavior.
|
||||
+The default vaule of these variables can be overridden in:
|
||||
+
|
||||
+* ``@SYSCONFDIR@/sysconfig/libvirt-guests``
|
||||
+
|
||||
+The following variables are supported:
|
||||
+
|
||||
+- URIS=default
|
||||
+
|
||||
+ URIs to check for running guests. Example:
|
||||
+ ``URIS='default xen:///system xen+tcp://host/system lxc:///system'``
|
||||
+
|
||||
+- ON_BOOT=start
|
||||
+
|
||||
+ Action taken on host boot
|
||||
+
|
||||
+ * start
|
||||
+
|
||||
+ All guests which were running on shutdown are started on boot regardless
|
||||
+ of their autostart settings
|
||||
+
|
||||
+ * ignore
|
||||
+
|
||||
+ ``libvirt-guests`` won't start any guest on boot, however, guests marked
|
||||
+ as autostart will still be automatically started by libvirtd
|
||||
+
|
||||
+- START_DELAY=0
|
||||
+
|
||||
+ Number of seconds to wait between each guest start. Set to 0 to allow parallel
|
||||
+ startup.
|
||||
+
|
||||
+- ON_SHUTDOWN=suspend
|
||||
+
|
||||
+ Action taken on host shutdown
|
||||
+
|
||||
+ * suspend
|
||||
+
|
||||
+ All running guests are suspended using virsh managedsave
|
||||
+
|
||||
+ * shutdown
|
||||
+
|
||||
+ All running guests are asked to shutdown. Please be careful with this
|
||||
+ settings since there is no way to distinguish between a guest which is
|
||||
+ stuck or ignores shutdown requests and a guest which just needs a long
|
||||
+ time to shutdown. When setting ON_SHUTDOWN=shutdown, you must also set
|
||||
+ SHUTDOWN_TIMEOUT to a value suitable for your guests.
|
||||
+
|
||||
+- PARALLEL_SHUTDOWN=0
|
||||
+
|
||||
+ Number of guests will be shutdown concurrently, taking effect when
|
||||
+ "ON_SHUTDOWN" is set to "shutdown". If Set to 0, guests will be shutdown one
|
||||
+ after another. Number of guests on shutdown at any time will not exceed number
|
||||
+ set in this variable.
|
||||
+
|
||||
+- SHUTDOWN_TIMEOUT=300
|
||||
+
|
||||
+ Number of seconds we're willing to wait for a guest to shut down. If parallel
|
||||
+ shutdown is enabled, this timeout applies as a timeout for shutting down all
|
||||
+ guests on a single URI defined in the variable URIS. If this is 0, then there
|
||||
+ is no time out (use with caution, as guests might not respond to a shutdown
|
||||
+ request). The default value is 300 seconds (5 minutes).
|
||||
+
|
||||
+- BYPASS_CACHE=0
|
||||
+
|
||||
+ If non-zero, try to bypass the file system cache when saving and
|
||||
+ restoring guests, even though this may give slower operation for
|
||||
+ some file systems.
|
||||
+
|
||||
+- SYNC_TIME=0
|
||||
+
|
||||
+ If non-zero, try to sync guest time on domain resume. Be aware, that
|
||||
+ this requires guest agent with support for time synchronization
|
||||
+ running in the guest. By default, this functionality is turned off.
|
||||
+
|
||||
+
|
||||
+BUGS
|
||||
+====
|
||||
+
|
||||
+Please report all bugs you discover. This should be done via either:
|
||||
+
|
||||
+#. the mailing list
|
||||
+
|
||||
+ `https://libvirt.org/contact.html <https://libvirt.org/contact.html>`_
|
||||
+
|
||||
+#. the bug tracker
|
||||
+
|
||||
+ `https://libvirt.org/bugs.html <https://libvirt.org/bugs.html>`_
|
||||
+
|
||||
+Alternatively, you may report bugs to your software distributor / vendor.
|
||||
+
|
||||
+
|
||||
+AUTHORS
|
||||
+=======
|
||||
+
|
||||
+Please refer to the AUTHORS file distributed with libvirt.
|
||||
+
|
||||
+
|
||||
+LICENSE
|
||||
+=======
|
||||
+
|
||||
+``libvirt-guests`` is distributed under the terms of the GNU LGPL v2.1+.
|
||||
+This is free software; see the source for copying conditions. There
|
||||
+is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
+PURPOSE
|
||||
+
|
||||
+
|
||||
+SEE ALSO
|
||||
+========
|
||||
+
|
||||
+libvirtd(8), `https://libvirt.org/ <https://libvirt.org/>`_
|
||||
Index: libvirt-8.0.0/docs/manpages/meson.build
|
||||
===================================================================
|
||||
--- libvirt-8.0.0.orig/docs/manpages/meson.build
|
||||
+++ libvirt-8.0.0/docs/manpages/meson.build
|
||||
@@ -21,6 +21,7 @@ docs_man_files = [
|
||||
{ 'name': 'virt-qemu-run', 'section': '1', 'install': conf.has('WITH_QEMU') },
|
||||
{ 'name': 'virt-xml-validate', 'section': '1', 'install': true },
|
||||
|
||||
+ { 'name': 'libvirt-guests', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
||||
{ 'name': 'libvirtd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
||||
{ 'name': 'virt-sanlock-cleanup', 'section': '8', 'install': conf.has('WITH_SANLOCK') },
|
||||
{ 'name': 'virt-ssh-helper', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
||||
Index: libvirt-8.0.0/libvirt.spec.in
|
||||
===================================================================
|
||||
--- libvirt-8.0.0.orig/libvirt.spec.in
|
||||
+++ libvirt-8.0.0/libvirt.spec.in
|
||||
@@ -1694,6 +1694,7 @@ exit 0
|
||||
%{_mandir}/man1/virt-admin.1*
|
||||
%{_mandir}/man1/virt-host-validate.1*
|
||||
%{_mandir}/man8/virt-ssh-helper.8*
|
||||
+%{_mandir}/man8/libvirt-guests.8*
|
||||
%{_mandir}/man8/libvirtd.8*
|
||||
%{_mandir}/man8/virtlogd.8*
|
||||
%{_mandir}/man8/virtlockd.8*
|
||||
Index: libvirt-8.0.0/tools/libvirt-guests.service.in
|
||||
===================================================================
|
||||
--- libvirt-8.0.0.orig/tools/libvirt-guests.service.in
|
||||
+++ libvirt-8.0.0/tools/libvirt-guests.service.in
|
||||
@@ -6,7 +6,7 @@ After=network.target
|
||||
After=time-sync.target
|
||||
After=libvirtd.service
|
||||
After=virt-guest-shutdown.target
|
||||
-Documentation=man:libvirtd(8)
|
||||
+Documentation=man:libvirt-guests(8)
|
||||
Documentation=https://libvirt.org
|
||||
|
||||
[Service]
|
@ -1,105 +0,0 @@
|
||||
commit 23b51d7b8ec885e97a9277cf0a6c2833db4636e8
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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;
|
66
3be5ba11-libvirt-guests-install.patch
Normal file
66
3be5ba11-libvirt-guests-install.patch
Normal file
@ -0,0 +1,66 @@
|
||||
commit 3be5ba11a2c6fcb2dfdffa03ab4f847113f36b85
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Mon Jan 10 11:42:58 2022 -0700
|
||||
|
||||
build: Only install libvirt-guests when building libvirtd
|
||||
|
||||
libvirt-guests was already moved to the libvirt daemon package in commit
|
||||
d800c50349. It only needs to be installed when building libvirtd.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
Index: libvirt-8.0.0/tools/meson.build
|
||||
===================================================================
|
||||
--- libvirt-8.0.0.orig/tools/meson.build
|
||||
+++ libvirt-8.0.0/tools/meson.build
|
||||
@@ -297,29 +297,31 @@ if conf.has('WITH_SANLOCK')
|
||||
)
|
||||
endif
|
||||
|
||||
-configure_file(
|
||||
- input: 'libvirt-guests.sh.in',
|
||||
- output: '@BASENAME@',
|
||||
- configuration: tools_conf,
|
||||
- install: true,
|
||||
- install_dir: libexecdir,
|
||||
- install_mode: 'rwxrwxr-x',
|
||||
-)
|
||||
-
|
||||
-if init_script == 'systemd'
|
||||
- install_data(
|
||||
- 'libvirt-guests.sysconf',
|
||||
- install_dir: sysconfdir / 'sysconfig',
|
||||
- rename: 'libvirt-guests',
|
||||
- )
|
||||
-
|
||||
+if conf.has('WITH_LIBVIRTD')
|
||||
configure_file(
|
||||
- input: 'libvirt-guests.service.in',
|
||||
+ input: 'libvirt-guests.sh.in',
|
||||
output: '@BASENAME@',
|
||||
configuration: tools_conf,
|
||||
install: true,
|
||||
- install_dir: prefix / 'lib' / 'systemd' / 'system',
|
||||
+ install_dir: libexecdir,
|
||||
+ install_mode: 'rwxrwxr-x',
|
||||
)
|
||||
+
|
||||
+ if init_script == 'systemd'
|
||||
+ install_data(
|
||||
+ 'libvirt-guests.sysconf',
|
||||
+ install_dir: sysconfdir / 'sysconfig',
|
||||
+ rename: 'libvirt-guests',
|
||||
+ )
|
||||
+
|
||||
+ configure_file(
|
||||
+ input: 'libvirt-guests.service.in',
|
||||
+ output: '@BASENAME@',
|
||||
+ configuration: tools_conf,
|
||||
+ install: true,
|
||||
+ install_dir: prefix / 'lib' / 'systemd' / 'system',
|
||||
+ )
|
||||
+ endif
|
||||
endif
|
||||
|
||||
if bash_completion_dep.found()
|
@ -1,167 +0,0 @@
|
||||
commit 5c5df5310f72be4878a71ace47074c54e0d1a27d
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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 */
|
1034
8eb44616-remove-sysconfig-files.patch
Normal file
1034
8eb44616-remove-sysconfig-files.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,63 +0,0 @@
|
||||
commit a4e6fba069c0809b8b5dde5e9db62d2efd91b4a0
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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) {
|
@ -1,84 +0,0 @@
|
||||
commit a7a03324d86e111f81687b5315b8f296dde84340
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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);
|
||||
}
|
@ -1,140 +0,0 @@
|
||||
commit b9a5faea49b7412e26d7389af4c32fc2b3ee80e5
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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);
|
@ -1,62 +0,0 @@
|
||||
commit cbae4eaa19dd97da8b4330af80cf1e1f7cb21931
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Mon Dec 13 16:59:55 2021 -0700
|
||||
|
||||
libxl: Implement domainGetMessages API
|
||||
|
||||
Since commit 46783e6307a, the 'virsh dominfo' command calls
|
||||
virDomainGetMessages to report any messages from the domain.
|
||||
Hypervisors not implementing the API now get the following
|
||||
libvirtd log message when clients invoke 'virsh dominfo'
|
||||
|
||||
this function is not supported by the connection driver: virDomainGetMessages
|
||||
|
||||
Although libxl currently does not support any tainting or
|
||||
deprecation messages, provide an implementation to squelch
|
||||
the previously unseen error message when collecting dominfo.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
@@ -6406,6 +6406,29 @@ libxlDomainGetMetadata(virDomainPtr dom,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static int
|
||||
+libxlDomainGetMessages(virDomainPtr dom,
|
||||
+ char ***msgs,
|
||||
+ unsigned int flags)
|
||||
+{
|
||||
+ virDomainObj *vm = NULL;
|
||||
+ int ret = -1;
|
||||
+
|
||||
+ virCheckFlags(0, -1);
|
||||
+
|
||||
+ if (!(vm = libxlDomObjFromDomain(dom)))
|
||||
+ return -1;
|
||||
+
|
||||
+ if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
|
||||
+ goto cleanup;
|
||||
+
|
||||
+ ret = virDomainObjGetMessages(vm, msgs, flags);
|
||||
+
|
||||
+ cleanup:
|
||||
+ virDomainObjEndAPI(&vm);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static virHypervisorDriver libxlHypervisorDriver = {
|
||||
.name = LIBXL_DRIVER_EXTERNAL_NAME,
|
||||
.connectURIProbe = libxlConnectURIProbe,
|
||||
@@ -6519,6 +6542,7 @@ static virHypervisorDriver libxlHypervis
|
||||
.connectBaselineCPU = libxlConnectBaselineCPU, /* 2.3.0 */
|
||||
.domainSetMetadata = libxlDomainSetMetadata, /* 5.7.0 */
|
||||
.domainGetMetadata = libxlDomainGetMetadata, /* 5.7.0 */
|
||||
+ .domainGetMessages = libxlDomainGetMessages, /* 8.0.0 */
|
||||
|
||||
};
|
||||
|
@ -1,27 +0,0 @@
|
||||
commit e4f7589a3ec285489618ca04c8c0230cc31f3d99
|
||||
Author: Jim Fehlig <jfehlig@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 <jfehlig@suse.com>
|
||||
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Reviewed-by: Ján Tomko <jtomko@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.
|
||||
*/
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cb318014af097327928c6e3d72922e3be02a3e6401247b2aa52d9ab8e0b480f9
|
||||
size 8798000
|
@ -1,16 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEERTtlMQWVVihVRxGZymi+gBAITJwFAmGnRisACgkQymi+gBAI
|
||||
TJx/DA//SSeuKY/Z/T2UrkaPOGnMR1kYJA9GKcC7XzHQ7exLrz5TbMpROsP1a1cD
|
||||
K7ys53NHesxs9RHCPj/QpX4eFW4K8h+NiYZyQPO1O/Gu8PWzTdHYFTIFEzpktnsk
|
||||
qjB/24bJ57QJ8mRnj+n16ch0KmSYzF2qY1WFOOUgyJ21JbL87ULx0TaQ83oq7TdJ
|
||||
09AJ9dGlUjiOnLXCH54cUto4Ccb2sXxVdqy5UvmzUuA3RIFhGmVbZYdicl2nWrl4
|
||||
5lGBOVGcIvjojoj6SLunO149nQqotJ85Z/jOc9OQLYBDgVE+/BPIGsQZcFnCSEDw
|
||||
MYUab/RMkVky2UeNTXKv4YMXIkYO5FTrIwKfWiWpHhZgN0ZgoDg8BPJLQDi4INPY
|
||||
nom8u7mpQmNk/UpLNYomMiDpP34xt1XhRwT+jrrSpgyFHJf7BSYn/+qUp0kVEjNY
|
||||
StLjUufcIGxDM+0dCnSQKVl7zYwvjt9vlD2B9wXnm92xAIIZaVVe3yN3MGC2HCwN
|
||||
8kSM266ZeP4yPb716GFXhvFhqC0Y1MX48y3IpNtut8O7x4a5qAsSgLIXZ/3Vp8sk
|
||||
uCN9S7h942NfgoeWbjm3nbeoKUx3iiuvX5B1HVceu+mu4juEcFqCecFmKABSr8Uv
|
||||
6h4/D84wqGZHHQEhrvvR0Eqq+rFfkKgwZKXhrTZDL/9/weuHscY=
|
||||
=JMZi
|
||||
-----END PGP SIGNATURE-----
|
3
libvirt-8.0.0.tar.xz
Normal file
3
libvirt-8.0.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:51e6e8ff04bafe96d7e314b213dcd41fb1163d9b4f0f75cdab01e663728f4cf6
|
||||
size 8860124
|
16
libvirt-8.0.0.tar.xz.asc
Normal file
16
libvirt-8.0.0.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIzBAABCAAdFiEERTtlMQWVVihVRxGZymi+gBAITJwFAmHhhg0ACgkQymi+gBAI
|
||||
TJyHTA/9F7mEVTE7lu/5Jtk738golxj2/75H+vurBFZM5gIDPHBlNPH7RLPHtxNw
|
||||
nS4rtWR0ThajITQ+3lP2ttjLE6jvsMpIhKIizHqoyVEcW/LlR55RxGfR6K+0+lrh
|
||||
CE7ycJujl0CVvkfjt7fFp1IkVD6mtxOciVwjRg5VtHBdNnmh6HWJQV+D9MfDhod5
|
||||
3ayzq3y3NZDfgWtOt4ZbTyhKh22VgTdIue0iHI+eRPI9xdp67bRjDh+rvjJ3SEGc
|
||||
inEXaa1aj4O/VPcrsyjwBdg+O52YLZN/KG3cpZ/kmbQdFNiYOti8APM9t9NShNf7
|
||||
4egKeQthG90S3d2mFsyuVoIN7xk26NyMC3fgwKZeTEaMPbG1P+Y2f1k/efzVVqL0
|
||||
q6tCY74oQXbQ6XF/hANaM/HRvQnlt2JjWiTZ6DJ/+U0jW9MAEwzt/WRqrZfhT8i4
|
||||
gtemB/sYoZo1BTjZuW5e+pNRmaxyxZkzGUFwIJz+q86mvxi8IDWCGy9NOuypHUWQ
|
||||
iavGE8vULDgZczd1fWMrmjWzDXe49L1b0mLqLOFdNpjbWxSnF3Bj7AR8GjTM0Bsu
|
||||
5JpQ1Tjgz6IiW2DnL3EMZ4pKGMXiTgcqL/lYJH4a8yNJ4sV2+coVGijhhfQ2JW+O
|
||||
x0ymOq77z/VyMI+ZffMeV00tiQF3TYZnwvaqU3e9TnVxmr3Ghx8=
|
||||
=6QUv
|
||||
-----END PGP SIGNATURE-----
|
@ -2,10 +2,10 @@ Add POWER8 v2.0 and v2.1 to cpu map XML
|
||||
|
||||
From: <ro@suse.de>
|
||||
|
||||
Index: libvirt-7.10.0/src/cpu_map/ppc64_POWER8.xml
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/cpu_map/ppc64_POWER8.xml
|
||||
+++ libvirt-8.0.0/src/cpu_map/ppc64_POWER8.xml
|
||||
@@ -4,5 +4,7 @@
|
||||
<pvr value='0x004b0000' mask='0xffff0000'/>
|
||||
<pvr value='0x004c0000' mask='0xffff0000'/>
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: libvirt-7.10.0/tools/virsh.c
|
||||
Index: libvirt-8.0.0/tools/virsh.c
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/tools/virsh.c
|
||||
+++ libvirt-7.10.0/tools/virsh.c
|
||||
--- libvirt-8.0.0.orig/tools/virsh.c
|
||||
+++ libvirt-8.0.0/tools/virsh.c
|
||||
@@ -552,6 +552,8 @@ virshShowVersion(vshControl *ctl G_GNUC_
|
||||
vshPrint(ctl, " Interface");
|
||||
# if defined(WITH_NETCF)
|
||||
@ -11,10 +11,10 @@ Index: libvirt-7.10.0/tools/virsh.c
|
||||
# elif defined(WITH_UDEV)
|
||||
vshPrint(ctl, " udev");
|
||||
# endif
|
||||
Index: libvirt-7.10.0/src/interface/interface_backend_netcf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/interface/interface_backend_netcf.c
|
||||
+++ libvirt-8.0.0/src/interface/interface_backend_netcf.c
|
||||
@@ -21,7 +21,12 @@
|
||||
|
||||
#include <config.h>
|
||||
@ -126,10 +126,10 @@ Index: libvirt-7.10.0/src/interface/interface_backend_netcf.c
|
||||
if (virRegisterConnectDriver(&interfaceConnectDriver, false) < 0)
|
||||
return -1;
|
||||
if (virSetSharedInterfaceDriver(&interfaceDriver) < 0)
|
||||
Index: libvirt-7.10.0/src/interface/interface_driver.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/interface/interface_driver.c
|
||||
+++ libvirt-8.0.0/src/interface/interface_driver.c
|
||||
@@ -30,8 +30,15 @@ interfaceRegister(void)
|
||||
if (netcfIfaceRegister() == 0)
|
||||
return 0;
|
||||
@ -147,11 +147,11 @@ Index: libvirt-7.10.0/src/interface/interface_driver.c
|
||||
if (udevIfaceRegister() == 0)
|
||||
return 0;
|
||||
#endif /* WITH_UDEV */
|
||||
Index: libvirt-7.10.0/meson.build
|
||||
Index: libvirt-8.0.0/meson.build
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/meson.build
|
||||
+++ libvirt-7.10.0/meson.build
|
||||
@@ -1116,6 +1116,12 @@ else
|
||||
--- libvirt-8.0.0.orig/meson.build
|
||||
+++ libvirt-8.0.0/meson.build
|
||||
@@ -1098,6 +1098,12 @@ else
|
||||
netcf_dep = dependency('', required: false)
|
||||
endif
|
||||
|
||||
@ -164,7 +164,7 @@ Index: libvirt-7.10.0/meson.build
|
||||
have_gnu_gettext_tools = false
|
||||
if not get_option('nls').disabled()
|
||||
have_gettext = cc.has_function('gettext')
|
||||
@@ -1512,10 +1518,10 @@ elif get_option('driver_hyperv').enabled
|
||||
@@ -1505,10 +1511,10 @@ elif get_option('driver_hyperv').enabled
|
||||
error('openwsman is required for the Hyper-V driver')
|
||||
endif
|
||||
|
||||
@ -177,7 +177,7 @@ Index: libvirt-7.10.0/meson.build
|
||||
endif
|
||||
|
||||
if not get_option('driver_libxl').disabled() and conf.has('WITH_LIBVIRTD')
|
||||
@@ -2352,6 +2358,7 @@ libs_summary = {
|
||||
@@ -2345,6 +2351,7 @@ libs_summary = {
|
||||
'libssh2': libssh2_dep.found(),
|
||||
'libutil': libutil_dep.found(),
|
||||
'netcf': conf.has('WITH_NETCF'),
|
||||
@ -185,10 +185,10 @@ Index: libvirt-7.10.0/meson.build
|
||||
'NLS': have_gnu_gettext_tools,
|
||||
'numactl': numactl_dep.found(),
|
||||
'openwsman': openwsman_dep.found(),
|
||||
Index: libvirt-7.10.0/src/interface/meson.build
|
||||
Index: libvirt-8.0.0/src/interface/meson.build
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/interface/meson.build
|
||||
+++ libvirt-7.10.0/src/interface/meson.build
|
||||
--- libvirt-8.0.0.orig/src/interface/meson.build
|
||||
+++ libvirt-8.0.0/src/interface/meson.build
|
||||
@@ -2,7 +2,7 @@ interface_driver_sources = [
|
||||
'interface_driver.c',
|
||||
]
|
||||
@ -206,10 +206,10 @@ Index: libvirt-7.10.0/src/interface/meson.build
|
||||
udev_dep,
|
||||
],
|
||||
'link_args': [
|
||||
Index: libvirt-7.10.0/meson_options.txt
|
||||
Index: libvirt-8.0.0/meson_options.txt
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/meson_options.txt
|
||||
+++ libvirt-7.10.0/meson_options.txt
|
||||
--- libvirt-8.0.0.orig/meson_options.txt
|
||||
+++ libvirt-8.0.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')
|
||||
|
@ -1,3 +1,31 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 18 17:11:13 UTC 2022 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
- sysconfig files have not been distributed for many months. Add
|
||||
upstream patches that improve documentation and moves service
|
||||
default settings to the associated systemd service file.
|
||||
3be5ba11-libvirt-guests-install.patch,
|
||||
16172741-libvirt-guests-manpage.patch,
|
||||
8eb44616-remove-sysconfig-files.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 18 03:06:25 UTC 2022 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
- Update to libvirt 8.0.0
|
||||
- CVE-2021-4147
|
||||
- bsc#1191511
|
||||
- jsc#SLE-11435, jsc#SLE-18354
|
||||
- Many incremental improvements and bug fixes, see
|
||||
https://libvirt.org/news.html#v8-0-0-2022-01-14
|
||||
- Dropped patches:
|
||||
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,
|
||||
cbae4eaa-libxl-add-domainGetMessages.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 14 16:36:15 UTC 2021 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
|
115
libvirt.spec
115
libvirt.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libvirt
|
||||
#
|
||||
# Copyright (c) 2021 SUSE LLC
|
||||
# Copyright (c) 2022 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -138,9 +138,27 @@
|
||||
%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan
|
||||
%endif
|
||||
|
||||
# libvirt no longer distributes sysconfig files.
|
||||
# If the user has customized a sysconfig file, the RPM upgrade path will rename
|
||||
# it to .rpmsave since the file is no longer managed by RPM. To prevent a
|
||||
# regression, we rename it back after the transaction to preserve the user's
|
||||
# modifications
|
||||
%define libvirt_sysconfig_pre() \
|
||||
for sc in %{?*} ; do \
|
||||
test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \
|
||||
mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}.rpmsave.old" ; \
|
||||
done \
|
||||
%{nil}
|
||||
%define libvirt_sysconfig_posttrans() \
|
||||
for sc in %{?*} ; do \
|
||||
test -f "%{_sysconfdir}/sysconfig/${sc}.rpmsave" || continue ; \
|
||||
mv -v "%{_sysconfdir}/sysconfig/${sc}.rpmsave" "%{_sysconfdir}/sysconfig/${sc}" ; \
|
||||
done \
|
||||
%{nil}
|
||||
|
||||
Name: libvirt
|
||||
URL: http://libvirt.org/
|
||||
Version: 7.10.0
|
||||
Version: 8.0.0
|
||||
Release: 0
|
||||
Summary: Library providing a virtualization API
|
||||
License: LGPL-2.1-or-later
|
||||
@ -219,7 +237,6 @@ BuildRequires: dnsmasq >= 2.41
|
||||
BuildRequires: ebtables
|
||||
BuildRequires: iptables
|
||||
BuildRequires: polkit >= 0.112
|
||||
BuildRequires: radvd
|
||||
# For mount/umount in FS driver
|
||||
BuildRequires: util-linux
|
||||
# For LVM drivers
|
||||
@ -235,8 +252,6 @@ BuildRequires: parted
|
||||
BuildRequires: parted-devel
|
||||
# For Multipath support
|
||||
BuildRequires: device-mapper-devel
|
||||
# For XFS reflink clone support
|
||||
BuildRequires: xfsprogs-devel
|
||||
%if %{with_storage_rbd}
|
||||
BuildRequires: %{with_rbd_lib}
|
||||
%endif
|
||||
@ -286,13 +301,9 @@ Source6: libvirtd-relocation-server.xml
|
||||
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
|
||||
Patch6: cbae4eaa-libxl-add-domainGetMessages.patch
|
||||
Patch0: 3be5ba11-libvirt-guests-install.patch
|
||||
Patch1: 16172741-libvirt-guests-manpage.patch
|
||||
Patch2: 8eb44616-remove-sysconfig-files.patch
|
||||
# Patches pending upstream review
|
||||
Patch100: libxl-dom-reset.patch
|
||||
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
|
||||
@ -345,9 +356,10 @@ Group: System/Management
|
||||
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
|
||||
# So remote clients can access libvirt over SSH tunnel
|
||||
# (client invokes 'nc' against the UNIX socket on the server)
|
||||
Requires: netcat-openbsd
|
||||
# netcat is needed on the server side so that clients that have
|
||||
# libvirt < 6.9.0 can connect, but newer versions will prefer
|
||||
# virt-ssh-helper
|
||||
Recommends: netcat-openbsd
|
||||
# for modprobe of pci devices
|
||||
Requires: modutils
|
||||
# for /sbin/ip & /sbin/tc
|
||||
@ -427,7 +439,6 @@ Requires: %{name}-daemon = %{version}-%{release}
|
||||
Requires: %{name}-libs = %{version}-%{release}
|
||||
Requires: dnsmasq >= 2.41
|
||||
Requires: iptables
|
||||
Requires: radvd
|
||||
|
||||
%description daemon-driver-network
|
||||
The network driver plugin for the libvirtd daemon, providing
|
||||
@ -1071,17 +1082,6 @@ rm -f %{buildroot}/%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug
|
||||
|
||||
# init scripts
|
||||
rm -f %{buildroot}/usr/lib/sysctl.d/60-libvirtd.conf
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/libvirtd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtproxyd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtlogd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtlockd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtinterfaced
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtnetworkd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtnodedevd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtnwfilterd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtsecretd
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtstoraged
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/libvirt-guests
|
||||
# Provide rc symlink backward compatibility
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rclibvirtd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtproxyd
|
||||
@ -1096,19 +1096,15 @@ ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtstoraged
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rclibvirt-guests
|
||||
|
||||
%if %{with_qemu}
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtqemud
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtqemud
|
||||
%endif
|
||||
%if %{with_lxc}
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtlxcd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtlxcd
|
||||
%endif
|
||||
%if %{with_libxl}
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtxend
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtxend
|
||||
%endif
|
||||
%if %{with_vbox}
|
||||
rm -f %{buildroot}/%{_sysconfdir}/sysconfig/virtvboxd
|
||||
ln -s %{_sbindir}/service %{buildroot}/%{_sbindir}/rcvirtvboxd
|
||||
%endif
|
||||
|
||||
@ -1136,6 +1132,7 @@ mv %{buildroot}/%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \
|
||||
VIR_TEST_DEBUG=1 %meson_test -t 5 --no-suite syntax-check
|
||||
|
||||
%pre daemon
|
||||
%libvirt_sysconfig_pre libvirtd virtproxyd virtlogd virtlockd libvirt-guests
|
||||
%service_add_pre libvirtd.service libvirtd.socket libvirtd-ro.socket libvirt-guests.service libvirtd-admin.socket libvirtd-tcp.socket libvirtd-tls.socket virtlockd.service virtlockd.socket virtlogd.service virtlogd.socket virtlockd-admin.socket virtlogd-admin.socket virtproxyd.service virtproxyd.socket virtproxyd-ro.socket virtproxyd-admin.socket virtproxyd-tcp.socket virtproxyd-tls.socket
|
||||
|
||||
%post daemon
|
||||
@ -1157,64 +1154,20 @@ fi
|
||||
%service_del_postun_without_restart libvirtd.service libvirtd.socket libvirtd-ro.socket libvirt-guests.service libvirtd-admin.socket libvirtd-tcp.socket libvirtd-tls.socket virtlockd.service virtlockd.socket virtlogd.service virtlogd.socket virtlockd-admin.socket virtlogd-admin.socket virtproxyd.service virtproxyd.socket virtproxyd-ro.socket virtproxyd-admin.socket virtproxyd-tcp.socket virtproxyd-tls.socket
|
||||
|
||||
%posttrans daemon
|
||||
%libvirt_sysconfig_posttrans libvirtd virtproxyd virtlogd virtlockd libvirt-guests
|
||||
# virtlockd and virtlogd must not be restarted, particularly virtlockd since the
|
||||
# locks it uses to protect VM resources would be lost. Both are safe to re-exec.
|
||||
%{_bindir}/systemctl reload-or-try-restart virtlockd.service >/dev/null 2>&1 || :
|
||||
%{_bindir}/systemctl reload-or-try-restart virtlogd.service >/dev/null 2>&1 || :
|
||||
# The '--listen' option is incompatible with socket activation.
|
||||
# Check if the existing install uses --listen
|
||||
listen_mode=no
|
||||
if test -f %{_sysconfdir}/sysconfig/libvirtd; then
|
||||
if grep -q -E '^LIBVIRTD_ARGS=.*--listen' %{_sysconfdir}/sysconfig/libvirtd; then
|
||||
listen_mode=yes
|
||||
fi
|
||||
# A benefit of socket activation is libvirtd doesn't need to be running
|
||||
# when unused. If sockets are enabled, set a timeout value if it doesn't
|
||||
# already exist
|
||||
if test "$listen_mode" = no && \
|
||||
%{_bindir}/systemctl -q is-enabled libvirtd.socket; then
|
||||
awk -i inplace "
|
||||
/^LIBVIRTD_ARGS=/ {
|
||||
gsub(\"^LIBVIRTD_ARGS=\", \"\")
|
||||
gsub(\"^['\\\"]\", \"\")
|
||||
gsub(\"['\\\"]$\", \"\")
|
||||
printf \"LIBVIRTD_ARGS='\"
|
||||
num = split(\$0, values)
|
||||
got_timeout = 0
|
||||
for ( i = 1; i <= num ; i++) {
|
||||
if (values[i] ~ /^--timeout=/)
|
||||
got_timeout = 1
|
||||
if (values[i] ~ /^--timeout$/) {
|
||||
if (i < num) {
|
||||
got_timeout = 1
|
||||
printf \"%%s \",values[i]
|
||||
i++
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
}
|
||||
printf \"%%s\",values[i]
|
||||
if (i >= 1 && i < num)
|
||||
printf \" \"
|
||||
}
|
||||
if (got_timeout == 0)
|
||||
if (num == 0)
|
||||
printf \"--timeout 120\"
|
||||
else
|
||||
printf \" --timeout 120\"
|
||||
printf \"'\n\"
|
||||
next
|
||||
}
|
||||
{ print } " "%{_sysconfdir}/sysconfig/libvirtd" || :
|
||||
fi
|
||||
fi
|
||||
# All connection drivers should be installed post transaction.
|
||||
# Time to restart the daemon
|
||||
test -f %{_sysconfdir}/sysconfig/services -a \
|
||||
-z "$DISABLE_RESTART_ON_UPDATE" && . %{_sysconfdir}/sysconfig/services
|
||||
if test "$DISABLE_RESTART_ON_UPDATE" != yes -a \
|
||||
"$DISABLE_RESTART_ON_UPDATE" != 1; then
|
||||
if test "$listen_mode" = yes; then
|
||||
# See if user has previously modified their install to
|
||||
# tell libvirtd to use --listen
|
||||
if grep -q -E '^LIBVIRTD_ARGS=.*--listen' %{_sysconfdir}/sysconfig/libvirtd; then
|
||||
# Keep honouring --listen and *not* use systemd socket activation.
|
||||
# Switching things might confuse management tools that expect the old
|
||||
# style libvirtd
|
||||
@ -1450,6 +1403,8 @@ fi
|
||||
%attr(0755, root, root) %{_bindir}/virt-ssh-helper
|
||||
%doc %{_mandir}/man1/virt-admin.1*
|
||||
%doc %{_mandir}/man1/virt-host-validate.1*
|
||||
%doc %{_mandir}/man8/virt-ssh-helper.8*
|
||||
%doc %{_mandir}/man8/libvirt-guests.8*
|
||||
%doc %{_mandir}/man8/libvirtd.8*
|
||||
%doc %{_mandir}/man8/virtlogd.8*
|
||||
%doc %{_mandir}/man8/virtlockd.8*
|
||||
@ -1630,6 +1585,7 @@ fi
|
||||
%files daemon-driver-qemu
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/virtqemud.conf
|
||||
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.virtqemud
|
||||
%config(noreplace) %{_prefix}/lib/sysctl.d/60-qemu-postcopy-migration.conf
|
||||
%{_datadir}/augeas/lenses/virtqemud.aug
|
||||
%{_datadir}/augeas/lenses/tests/test_virtqemud.aug
|
||||
%{_unitdir}/virtqemud.service
|
||||
@ -1747,6 +1703,7 @@ fi
|
||||
%files client
|
||||
%doc %{_mandir}/man1/virsh.1*
|
||||
%doc %{_mandir}/man1/virt-xml-validate.1*
|
||||
%doc %{_mandir}/man1/virt-pki-query-dn.1*
|
||||
%doc %{_mandir}/man1/virt-pki-validate.1*
|
||||
%{_bindir}/virsh
|
||||
%{_bindir}/virt-xml-validate
|
||||
|
@ -8,11 +8,11 @@ Date: Mon Jun 23 15:51:20 2014 -0600
|
||||
option, but domainReset can be implemented in the libxl driver by
|
||||
forcibly destroying the domain and starting it again.
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- 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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
@@ -1338,6 +1338,63 @@ libxlDomainReboot(virDomainPtr dom, unsi
|
||||
}
|
||||
|
||||
static int
|
||||
@ -76,7 +76,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
libxlDomainDestroyFlags(virDomainPtr dom,
|
||||
unsigned int flags)
|
||||
{
|
||||
@@ -6453,6 +6510,7 @@ static virHypervisorDriver libxlHypervis
|
||||
@@ -6432,6 +6489,7 @@ static virHypervisorDriver libxlHypervis
|
||||
.domainShutdown = libxlDomainShutdown, /* 0.9.0 */
|
||||
.domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */
|
||||
.domainReboot = libxlDomainReboot, /* 0.9.0 */
|
||||
|
@ -3,10 +3,10 @@ https://bugzilla.novell.com/show_bug.cgi?id=879425
|
||||
src/libxl/libxl_conf.c | 25 +++++++++++++++++++++++++
|
||||
1 file changed, 25 insertions(+)
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_conf.c
|
||||
@@ -941,6 +941,28 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||
}
|
||||
}
|
||||
|
@ -16,21 +16,19 @@ Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
tools/virsh.pod | 8 ++++++++
|
||||
6 files changed, 125 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: libvirt-7.10.0/docs/manpages/virsh.rst
|
||||
Index: libvirt-8.0.0/docs/manpages/virsh.rst
|
||||
===================================================================
|
||||
--- 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]
|
||||
--- libvirt-8.0.0.orig/docs/manpages/virsh.rst
|
||||
+++ libvirt-8.0.0/docs/manpages/virsh.rst
|
||||
@@ -3237,6 +3237,7 @@ migrate
|
||||
[--parallel [--parallel-connections connections]]
|
||||
[--bandwidth bandwidth] [--tls-destination hostname]
|
||||
- [--disks-uri URI]
|
||||
+ [--disks-uri URI] [--max_iters num]
|
||||
+ [--min_remaining num] [--abort_if_busy]
|
||||
[--disks-uri URI] [--copy-storage-synchronous-writes]
|
||||
+ [--max_iters num] [--min_remaining num] [--abort_if_busy]
|
||||
|
||||
Migrate domain to another host. Add *--live* for live migration; <--p2p>
|
||||
for peer-2-peer migration; *--direct* for direct migration; or *--tunnelled*
|
||||
@@ -3281,6 +3282,12 @@ parallel connections. The number of such
|
||||
@@ -3354,6 +3355,12 @@ parallel connections. The number of such
|
||||
network link between the source and the target and thus speeding up the
|
||||
migration.
|
||||
|
||||
@ -43,11 +41,11 @@ Index: libvirt-7.10.0/docs/manpages/virsh.rst
|
||||
Running migration can be canceled by interrupting virsh (usually using
|
||||
``Ctrl-C``) or by ``domjobabort`` command sent from another virsh instance.
|
||||
|
||||
Index: libvirt-7.10.0/include/libvirt/libvirt-domain.h
|
||||
Index: libvirt-8.0.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 {
|
||||
--- libvirt-8.0.0.orig/include/libvirt/libvirt-domain.h
|
||||
+++ libvirt-8.0.0/include/libvirt/libvirt-domain.h
|
||||
@@ -1089,6 +1089,25 @@ typedef enum {
|
||||
*/
|
||||
# define VIR_MIGRATE_PARAM_TLS_DESTINATION "tls.destination"
|
||||
|
||||
@ -73,11 +71,11 @@ Index: libvirt-7.10.0/include/libvirt/libvirt-domain.h
|
||||
/* Domain migration. */
|
||||
virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
|
||||
unsigned long flags, const char *dname,
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
Index: libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- 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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_driver.c
|
||||
@@ -5973,6 +5973,9 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
const char *dname = NULL;
|
||||
const char *uri = NULL;
|
||||
int ret = -1;
|
||||
@ -87,7 +85,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
|
||||
#ifdef LIBXL_HAVE_NO_SUSPEND_RESUME
|
||||
virReportUnsupportedError();
|
||||
@@ -6010,6 +6013,15 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
@@ -5989,6 +5992,15 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
virTypedParamsGetString(params, nparams,
|
||||
VIR_MIGRATE_PARAM_DEST_NAME,
|
||||
&dname) < 0 ||
|
||||
@ -103,7 +101,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
virTypedParamsGetString(params, nparams,
|
||||
VIR_MIGRATE_PARAM_URI,
|
||||
&uri) < 0)
|
||||
@@ -6024,11 +6036,11 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
@@ -6003,11 +6015,11 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
|
||||
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
|
||||
if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,
|
||||
@ -117,10 +115,10 @@ Index: libvirt-7.10.0/src/libxl/libxl_driver.c
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_migration.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_migration.c
|
||||
@@ -334,18 +334,38 @@ libxlMigrateDstReceive(virNetSocket *soc
|
||||
static int
|
||||
libxlDoMigrateSrcSend(libxlDriverPrivate *driver,
|
||||
@ -162,7 +160,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
if (ret != 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Failed to send migration data to destination host"));
|
||||
@@ -885,7 +905,7 @@ struct libxlTunnelControl {
|
||||
@@ -884,7 +904,7 @@ struct libxlTunnelControl {
|
||||
static int
|
||||
libxlMigrationSrcStartTunnel(libxlDriverPrivate *driver,
|
||||
virDomainObj *vm,
|
||||
@ -171,7 +169,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
virStreamPtr st,
|
||||
struct libxlTunnelControl **tnl)
|
||||
{
|
||||
@@ -918,7 +938,7 @@ libxlMigrationSrcStartTunnel(libxlDriver
|
||||
@@ -917,7 +937,7 @@ libxlMigrationSrcStartTunnel(libxlDriver
|
||||
|
||||
virObjectUnlock(vm);
|
||||
/* Send data to pipe */
|
||||
@ -180,7 +178,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
virObjectLock(vm);
|
||||
|
||||
/* libxlMigrationSrcStopTunnel will be called in libxlDoMigrateSrcP2P
|
||||
@@ -953,7 +973,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -952,7 +972,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
const char *dconnuri G_GNUC_UNUSED,
|
||||
const char *dname,
|
||||
const char *uri,
|
||||
@ -189,7 +187,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
{
|
||||
virDomainPtr ddomain = NULL;
|
||||
virTypedParameterPtr params = NULL;
|
||||
@@ -998,11 +1018,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -997,11 +1017,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 +201,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
if (!(st = virStreamNew(dconn, 0)))
|
||||
goto confirm;
|
||||
ret = dconn->driver->domainMigratePrepareTunnel3Params
|
||||
@@ -1016,7 +1036,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -1015,7 +1035,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
if (ret == -1)
|
||||
goto confirm;
|
||||
|
||||
@ -212,7 +210,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
if (uri_out) {
|
||||
if (virTypedParamsReplaceString(¶ms, &nparams,
|
||||
VIR_MIGRATE_PARAM_URI, uri_out) < 0) {
|
||||
@@ -1031,11 +1051,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -1030,11 +1050,11 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
}
|
||||
|
||||
VIR_DEBUG("Perform3 uri=%s", NULLSTR(uri_out));
|
||||
@ -227,7 +225,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
if (ret < 0) {
|
||||
notify_source = false;
|
||||
virErrorPreserveLast(&orig_err);
|
||||
@@ -1070,7 +1090,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -1069,7 +1089,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
confirm:
|
||||
if (notify_source) {
|
||||
VIR_DEBUG("Confirm3 cancelled=%d vm=%p", cancelled, vm);
|
||||
@ -236,7 +234,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
|
||||
if (ret < 0)
|
||||
VIR_WARN("Guest %s probably left in 'paused' state on source",
|
||||
@@ -1078,7 +1098,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
@@ -1077,7 +1097,7 @@ libxlDoMigrateSrcP2P(libxlDriverPrivate
|
||||
}
|
||||
|
||||
cleanup:
|
||||
@ -245,7 +243,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
libxlMigrationSrcStopTunnel(tc);
|
||||
virObjectUnref(st);
|
||||
}
|
||||
@@ -1122,7 +1142,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
|
||||
@@ -1121,7 +1141,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
|
||||
const char *dconnuri,
|
||||
const char *uri_str G_GNUC_UNUSED,
|
||||
const char *dname,
|
||||
@ -254,7 +252,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
{
|
||||
int ret = -1;
|
||||
int useParams;
|
||||
@@ -1159,7 +1179,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
|
||||
@@ -1155,7 +1175,7 @@ libxlDomainMigrationSrcPerformP2P(libxlD
|
||||
}
|
||||
|
||||
ret = libxlDoMigrateSrcP2P(driver, vm, sconn, xmlin, dconn, dconnuri,
|
||||
@ -263,7 +261,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
|
||||
if (ret < 0) {
|
||||
/*
|
||||
@@ -1186,7 +1206,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
|
||||
@@ -1182,7 +1202,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
|
||||
const char *dconnuri G_GNUC_UNUSED,
|
||||
const char *uri_str,
|
||||
const char *dname G_GNUC_UNUSED,
|
||||
@ -272,7 +270,7 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
{
|
||||
libxlDomainObjPrivate *priv = vm->privateData;
|
||||
char *hostname = NULL;
|
||||
@@ -1222,7 +1242,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
|
||||
@@ -1218,7 +1238,7 @@ libxlDomainMigrationSrcPerform(libxlDriv
|
||||
|
||||
/* suspend vm and send saved data to dst through socket fd */
|
||||
virObjectUnlock(vm);
|
||||
@ -281,10 +279,10 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.c
|
||||
virObjectLock(vm);
|
||||
|
||||
if (ret == 0) {
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_migration.h
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_migration.h
|
||||
+++ libvirt-8.0.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 +325,11 @@ Index: libvirt-7.10.0/src/libxl/libxl_migration.h
|
||||
|
||||
virDomainPtr
|
||||
libxlDomainMigrationDstFinish(virConnectPtr dconn,
|
||||
Index: libvirt-7.10.0/tools/virsh-domain.c
|
||||
Index: libvirt-8.0.0/tools/virsh-domain.c
|
||||
===================================================================
|
||||
--- 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[]
|
||||
--- libvirt-8.0.0.orig/tools/virsh-domain.c
|
||||
+++ libvirt-8.0.0/tools/virsh-domain.c
|
||||
@@ -10841,6 +10841,18 @@ static const vshCmdOptDef opts_migrate[]
|
||||
.completer = virshCompleteEmpty,
|
||||
.help = N_("override the destination host name used for TLS verification")
|
||||
},
|
||||
@ -350,7 +348,7 @@ Index: libvirt-7.10.0/tools/virsh-domain.c
|
||||
{.name = NULL}
|
||||
};
|
||||
|
||||
@@ -10703,6 +10715,7 @@ doMigrate(void *opaque)
|
||||
@@ -10861,6 +10873,7 @@ doMigrate(void *opaque)
|
||||
unsigned long long ullOpt = 0;
|
||||
int rv;
|
||||
virConnectPtr dconn = data->dconn;
|
||||
@ -358,7 +356,7 @@ Index: libvirt-7.10.0/tools/virsh-domain.c
|
||||
#ifndef WIN32
|
||||
sigset_t sigmask, oldsigmask;
|
||||
|
||||
@@ -10833,6 +10846,22 @@ doMigrate(void *opaque)
|
||||
@@ -10991,6 +11004,22 @@ doMigrate(void *opaque)
|
||||
goto save_error;
|
||||
}
|
||||
|
||||
|
@ -7,10 +7,10 @@ and npiv.
|
||||
|
||||
For more details, see bsc#954872 and FATE#319810
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_conf.c
|
||||
@@ -942,6 +942,20 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||
}
|
||||
|
||||
|
@ -13,11 +13,11 @@ device with the same name that is being created.
|
||||
src/lxc/lxc_process.c | 1 +
|
||||
3 files changed, 4 insertions(+)
|
||||
|
||||
Index: libvirt-7.10.0/src/lxc/lxc_controller.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/lxc/lxc_controller.c
|
||||
+++ libvirt-8.0.0/src/lxc/lxc_controller.c
|
||||
@@ -2006,6 +2006,7 @@ static int virLXCControllerDeleteInterfa
|
||||
if (virNetDevVethDelete(ctrl->veths[i]) < 0)
|
||||
ret = -1;
|
||||
}
|
||||
@ -25,10 +25,10 @@ Index: libvirt-7.10.0/src/lxc/lxc_controller.c
|
||||
|
||||
return ret;
|
||||
}
|
||||
Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/lxc/lxc_driver.c
|
||||
+++ libvirt-8.0.0/src/lxc/lxc_driver.c
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "virtime.h"
|
||||
#include "virtypedparam.h"
|
||||
@ -37,7 +37,7 @@ Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
#include "virstring.h"
|
||||
#include "viraccessapicheck.h"
|
||||
#include "viraccessapichecklxc.h"
|
||||
@@ -3539,6 +3540,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
|
||||
@@ -3508,6 +3509,7 @@ lxcDomainAttachDeviceNetLive(virLXCDrive
|
||||
case VIR_DOMAIN_NET_TYPE_NETWORK:
|
||||
case VIR_DOMAIN_NET_TYPE_ETHERNET:
|
||||
ignore_value(virNetDevVethDelete(veth));
|
||||
@ -45,7 +45,7 @@ Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_NET_TYPE_DIRECT:
|
||||
@@ -3978,6 +3980,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
|
||||
@@ -3947,6 +3949,7 @@ lxcDomainDetachDeviceNetLive(virDomainOb
|
||||
virDomainAuditNet(vm, detach, NULL, "detach", false);
|
||||
goto cleanup;
|
||||
}
|
||||
@ -53,10 +53,10 @@ Index: libvirt-7.10.0/src/lxc/lxc_driver.c
|
||||
break;
|
||||
|
||||
/* It'd be nice to support this, but with macvlan
|
||||
Index: libvirt-7.10.0/src/lxc/lxc_process.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/lxc/lxc_process.c
|
||||
+++ libvirt-8.0.0/src/lxc/lxc_process.c
|
||||
@@ -51,6 +51,7 @@
|
||||
#include "virstring.h"
|
||||
#include "virprocess.h"
|
||||
|
@ -17,11 +17,11 @@ Signed-off-by: Martin Wilck <mwilck@suse.com>
|
||||
tests/networkxml2confdata/dhcp6host-routed-network.conf | 1 -
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: libvirt-7.10.0/src/network/bridge_driver.c
|
||||
Index: libvirt-8.0.0/src/network/bridge_driver.c
|
||||
===================================================================
|
||||
--- 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
|
||||
--- libvirt-8.0.0.orig/src/network/bridge_driver.c
|
||||
+++ libvirt-8.0.0/src/network/bridge_driver.c
|
||||
@@ -1347,7 +1347,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 @@ Index: libvirt-7.10.0/src/network/bridge_driver.c
|
||||
}
|
||||
|
||||
if (ipdef->tftproot) {
|
||||
Index: libvirt-7.10.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
+++ libvirt-8.0.0/tests/networkxml2confdata/dhcp6host-routed-network.conf
|
||||
@@ -10,7 +10,6 @@ bind-dynamic
|
||||
interface=virbr1
|
||||
dhcp-range=192.168.122.1,static
|
||||
|
@ -2,10 +2,10 @@ Canonicalize hostarch name ppc64le to ppc64
|
||||
|
||||
See bnc#894956
|
||||
|
||||
Index: libvirt-7.10.0/src/util/virarch.c
|
||||
Index: libvirt-8.0.0/src/util/virarch.c
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/util/virarch.c
|
||||
+++ libvirt-7.10.0/src/util/virarch.c
|
||||
--- libvirt-8.0.0.orig/src/util/virarch.c
|
||||
+++ libvirt-8.0.0/src/util/virarch.c
|
||||
@@ -222,6 +222,8 @@ virArch virArchFromHost(void)
|
||||
arch = VIR_ARCH_X86_64;
|
||||
} else if (STREQ(ut.machine, "arm64")) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: libvirt-7.10.0/src/security/apparmor/libvirt-qemu
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/security/apparmor/libvirt-qemu
|
||||
+++ libvirt-8.0.0/src/security/apparmor/libvirt-qemu
|
||||
@@ -248,3 +248,6 @@
|
||||
# /sys/bus/nd/devices
|
||||
/ r, # harmless on any lsb compliant system
|
||||
|
@ -1,9 +1,9 @@
|
||||
Adjust libvirt-guests service to conform to SUSE standards
|
||||
|
||||
Index: libvirt-7.10.0/tools/libvirt-guests.sh.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/tools/libvirt-guests.sh.in
|
||||
+++ libvirt-8.0.0/tools/libvirt-guests.sh.in
|
||||
@@ -20,10 +20,6 @@ sysconfdir="@sysconfdir@"
|
||||
localstatedir="@localstatedir@"
|
||||
libvirtd="@sbindir@"/libvirtd
|
||||
|
@ -3,10 +3,10 @@ Disable TLS by default
|
||||
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.10.0/src/remote/remote_daemon_config.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/remote/remote_daemon_config.c
|
||||
+++ libvirt-8.0.0/src/remote/remote_daemon_config.c
|
||||
@@ -98,7 +98,7 @@ daemonConfigNew(bool privileged G_GNUC_U
|
||||
|
||||
#ifdef WITH_IP
|
||||
@ -16,10 +16,10 @@ Index: libvirt-7.10.0/src/remote/remote_daemon_config.c
|
||||
# else /* ! LIBVIRTD */
|
||||
data->listen_tls = false; /* Always honoured, --listen doesn't exist. */
|
||||
# endif /* ! LIBVIRTD */
|
||||
Index: libvirt-7.10.0/src/remote/libvirtd.conf.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/remote/libvirtd.conf.in
|
||||
+++ libvirt-8.0.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 @@ Index: libvirt-7.10.0/src/remote/libvirtd.conf.in
|
||||
|
||||
# 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.10.0/src/remote/test_libvirtd.aug.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/remote/test_libvirtd.aug.in
|
||||
+++ libvirt-8.0.0/src/remote/test_libvirtd.aug.in
|
||||
@@ -3,7 +3,7 @@ module Test_@DAEMON_NAME@ =
|
||||
|
||||
test @DAEMON_NAME_UC@.lns get conf =
|
||||
|
@ -6,10 +6,10 @@ autoballooning. This patch changes libvirt to also disable autoballooning
|
||||
by default. It can only be enabled with the 'autoballoon' setting in
|
||||
libxl.conf. See jsc#SLE-3059 for more details.
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl.conf
|
||||
Index: libvirt-8.0.0/src/libxl/libxl.conf
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/libxl/libxl.conf
|
||||
+++ libvirt-7.10.0/src/libxl/libxl.conf
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl.conf
|
||||
+++ libvirt-8.0.0/src/libxl/libxl.conf
|
||||
@@ -4,12 +4,11 @@
|
||||
|
||||
# Enable autoballooning of domain0
|
||||
@ -27,10 +27,10 @@ Index: libvirt-7.10.0/src/libxl/libxl.conf
|
||||
|
||||
|
||||
# In order to prevent accidentally starting two domains that
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_conf.c
|
||||
@@ -1746,15 +1746,12 @@ libxlMakeBuildInfoVfb(virPortAllocatorRa
|
||||
/*
|
||||
* Get domain0 autoballoon configuration. Honor user-specified
|
||||
@ -66,10 +66,10 @@ Index: libvirt-7.10.0/src/libxl/libxl_conf.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/test_libvirtd_libxl.aug.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/test_libvirtd_libxl.aug.in
|
||||
+++ libvirt-8.0.0/src/libxl/test_libvirtd_libxl.aug.in
|
||||
@@ -2,7 +2,7 @@ module Test_libvirtd_libxl =
|
||||
@CONFIG@
|
||||
|
||||
|
@ -7,10 +7,10 @@ suse-qemu-conf-secdriver.patch, suse-qemu-conf-lockmgr.patch,
|
||||
etc.), but for now they are all lumped together in this
|
||||
single patch.
|
||||
|
||||
Index: libvirt-7.10.0/src/qemu/qemu.conf
|
||||
Index: libvirt-8.0.0/src/qemu/qemu.conf
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-7.10.0/src/qemu/qemu.conf
|
||||
--- libvirt-8.0.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-8.0.0/src/qemu/qemu.conf
|
||||
@@ -491,10 +491,19 @@
|
||||
# isolation, but it cannot appear in a list of drivers.
|
||||
#
|
||||
@ -60,10 +60,10 @@ Index: libvirt-7.10.0/src/qemu/qemu.conf
|
||||
#
|
||||
#lock_manager = "lockd"
|
||||
|
||||
Index: libvirt-7.10.0/src/qemu/qemu_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-8.0.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 @@ Index: libvirt-7.10.0/src/qemu/qemu_conf.c
|
||||
cfg->securityRequireConfined = false;
|
||||
|
||||
cfg->keepAliveInterval = 5;
|
||||
Index: libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/qemu/test_libvirtd_qemu.aug.in
|
||||
+++ libvirt-8.0.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" }
|
||||
|
@ -5,10 +5,10 @@ advertised and used by libvirt are automatically detected. Until upstream
|
||||
removes the old DEFAULT_LOADER_NVRAM approach and associated code, this
|
||||
patch will stay.
|
||||
|
||||
Index: libvirt-7.10.0/src/qemu/qemu.conf
|
||||
Index: libvirt-8.0.0/src/qemu/qemu.conf
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-7.10.0/src/qemu/qemu.conf
|
||||
--- libvirt-8.0.0.orig/src/qemu/qemu.conf
|
||||
+++ libvirt-8.0.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 @@ Index: libvirt-7.10.0/src/qemu/qemu.conf
|
||||
#]
|
||||
|
||||
# The backend to use for handling stdout/stderr output from
|
||||
Index: libvirt-7.10.0/src/qemu/qemu_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/qemu/qemu_conf.c
|
||||
+++ libvirt-8.0.0/src/qemu/qemu_conf.c
|
||||
@@ -98,10 +98,9 @@ qemuDriverUnlock(virQEMUDriver *driver)
|
||||
|
||||
#ifndef DEFAULT_LOADER_NVRAM
|
||||
@ -41,10 +41,10 @@ Index: libvirt-7.10.0/src/qemu/qemu_conf.c
|
||||
#endif
|
||||
|
||||
|
||||
Index: libvirt-7.10.0/src/security/virt-aa-helper.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/security/virt-aa-helper.c
|
||||
+++ libvirt-8.0.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 @@ Index: libvirt-7.10.0/src/security/virt-aa-helper.c
|
||||
};
|
||||
/* override the above with these */
|
||||
const char * const override[] = {
|
||||
Index: libvirt-7.10.0/src/qemu/test_libvirtd_qemu.aug.in
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/qemu/test_libvirtd_qemu.aug.in
|
||||
+++ libvirt-8.0.0/src/qemu/test_libvirtd_qemu.aug.in
|
||||
@@ -96,10 +96,9 @@ module Test_libvirtd_qemu =
|
||||
{ "migration_port_max" = "49215" }
|
||||
{ "log_timestamp" = "0" }
|
||||
|
@ -5,10 +5,10 @@ June 2021 ovmf only supports one firmware for Xen. This patch adjusts
|
||||
the firmware path to match the one provided by the ovmf package.
|
||||
|
||||
|
||||
Index: libvirt-7.10.0/src/libxl/libxl_conf.c
|
||||
Index: libvirt-8.0.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
|
||||
--- libvirt-8.0.0.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-8.0.0/src/libxl/libxl_conf.c
|
||||
@@ -1797,7 +1797,7 @@ libxlDriverConfigNew(void)
|
||||
cfg->firmwares = g_new0(virFirmware *, 1);
|
||||
cfg->nfirmwares = 1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: libvirt-7.10.0/tools/virt-create-rootfs
|
||||
Index: libvirt-8.0.0/tools/virt-create-rootfs
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-7.10.0/tools/virt-create-rootfs
|
||||
+++ libvirt-8.0.0/tools/virt-create-rootfs
|
||||
@@ -0,0 +1,236 @@
|
||||
+#!/bin/sh
|
||||
+set -e
|
||||
@ -239,10 +239,10 @@ Index: libvirt-7.10.0/tools/virt-create-rootfs
|
||||
+ echo "pts/0" >> "$ROOT/etc/securetty"
|
||||
+ chroot "$ROOT" /usr/bin/passwd
|
||||
+fi
|
||||
Index: libvirt-7.10.0/docs/manpages/virt-create-rootfs.rst
|
||||
Index: libvirt-8.0.0/docs/manpages/virt-create-rootfs.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ libvirt-7.10.0/docs/manpages/virt-create-rootfs.rst
|
||||
+++ libvirt-8.0.0/docs/manpages/virt-create-rootfs.rst
|
||||
@@ -0,0 +1,88 @@
|
||||
+==================
|
||||
+virt-create-rootfs
|
||||
@ -332,22 +332,22 @@ Index: libvirt-7.10.0/docs/manpages/virt-create-rootfs.rst
|
||||
+========
|
||||
+
|
||||
+virsh(1), `https://libvirt.org/ <https://libvirt.org/>`_
|
||||
Index: libvirt-7.10.0/docs/manpages/meson.build
|
||||
Index: libvirt-8.0.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 = [
|
||||
--- libvirt-8.0.0.orig/docs/manpages/meson.build
|
||||
+++ libvirt-8.0.0/docs/manpages/meson.build
|
||||
@@ -20,6 +20,7 @@ docs_man_files = [
|
||||
{ 'name': 'virt-pki-validate', 'section': '1', 'install': true },
|
||||
{ 'name': 'virt-qemu-run', 'section': '1', 'install': conf.has('WITH_QEMU') },
|
||||
{ 'name': 'virt-xml-validate', 'section': '1', 'install': true },
|
||||
+ { 'name': 'virt-create-rootfs', 'section': '1', 'install': true },
|
||||
|
||||
{ 'name': 'libvirt-guests', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
||||
{ 'name': 'libvirtd', 'section': '8', 'install': conf.has('WITH_LIBVIRTD') },
|
||||
{ 'name': 'virt-sanlock-cleanup', 'section': '8', 'install': conf.has('WITH_SANLOCK') },
|
||||
Index: libvirt-7.10.0/tools/meson.build
|
||||
Index: libvirt-8.0.0/tools/meson.build
|
||||
===================================================================
|
||||
--- libvirt-7.10.0.orig/tools/meson.build
|
||||
+++ libvirt-7.10.0/tools/meson.build
|
||||
--- libvirt-8.0.0.orig/tools/meson.build
|
||||
+++ libvirt-8.0.0/tools/meson.build
|
||||
@@ -154,6 +154,8 @@ else
|
||||
virsh_icon_res = []
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user