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:
Dominique Leuenberger 2022-01-21 00:25:01 +00:00 committed by Git OBS Bridge
commit 8e799487c9
37 changed files with 1597 additions and 948 deletions

View File

@ -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',

View File

@ -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;

View File

@ -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;

View File

@ -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 */

View 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]

View File

@ -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;

View 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()

View File

@ -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 */

File diff suppressed because it is too large Load Diff

View File

@ -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) {

View File

@ -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);
}

View File

@ -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);

View File

@ -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 */
};

View File

@ -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.
*/

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb318014af097327928c6e3d72922e3be02a3e6401247b2aa52d9ab8e0b480f9
size 8798000

View File

@ -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
View 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
View 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-----

View File

@ -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'/>

View File

@ -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')

View File

@ -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>

View File

@ -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

View File

@ -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 */

View File

@ -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
}
}

View File

@ -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(&params, &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;
}

View File

@ -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
}

View File

@ -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"

View File

@ -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

View File

@ -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")) {

View File

@ -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

View File

@ -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

View File

@ -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 =

View File

@ -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@

View File

@ -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" }

View File

@ -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" }

View File

@ -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;

View File

@ -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