diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbb5a7e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libvirt-8.0.0.tar.xz diff --git a/.libvirt.metadata b/.libvirt.metadata new file mode 100644 index 0000000..76dff0f --- /dev/null +++ b/.libvirt.metadata @@ -0,0 +1 @@ +e440412e9b45d7e24f0ef492d8edf5cf2cbd3f4c SOURCES/libvirt-8.0.0.tar.xz diff --git a/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch b/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch new file mode 100644 index 0000000..be38df5 --- /dev/null +++ b/SOURCES/libvirt-Make-systemd-unit-ordering-more-robust.patch @@ -0,0 +1,89 @@ +From ee1ce580f5373070e4b6a50d1ae4a3218c737a72 Mon Sep 17 00:00:00 2001 +Message-Id: <ee1ce580f5373070e4b6a50d1ae4a3218c737a72@dist-git> +From: Martin Kletzander <mkletzan@redhat.com> +Date: Mon, 14 Feb 2022 12:37:37 +0100 +Subject: [PATCH] Make systemd unit ordering more robust + +Since libvirt-guests script/service can operate on various URIs and we do +support both socket activation and traditional services, the ordering should be +specified for all the possible sockets and services. + +Also remove the Wants= dependency since do not want to start any service. We +cannot know which one libvirt-guests is configured, so we'd have to start all +the daemons which would break if unused colliding services are not +masked (libvirtd.service in the modular case and all the modular daemon service +units in the monolithic scenario). Fortunately we can assume that the system is +configured properly to start services/sockets that are of interest to the user. +That also works with the setup described in https://libvirt.org/daemons.html . + +To make it even more robust we add the daemon service into the machine units +created for individual domains as it was missing there. + +https://bugzilla.redhat.com/show_bug.cgi?id=1868537 + +Signed-off-by: Martin Kletzander <mkletzan@redhat.com> +Reviewed-by: Michal Privoznik <mprivozn@redhat.com> +(cherry picked from commit 4e42686adef8b9e9266f0099ddcd25bc95c4ed43) +Signed-off-by: Martin Kletzander <mkletzan@redhat.com> +--- + src/util/virsystemd.c | 8 ++++++-- + tools/libvirt-guests.service.in | 12 +++++++++++- + 2 files changed, 17 insertions(+), 3 deletions(-) + +diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c +index a86d4c6bb9..f156c2f39a 100644 +--- a/src/util/virsystemd.c ++++ b/src/util/virsystemd.c +@@ -441,8 +441,10 @@ int virSystemdCreateMachine(const char *name, + nicindexes, nnicindexes, sizeof(int)); + gprops = g_variant_new_parsed("[('Slice', <%s>)," + " ('After', <['libvirtd.service']>)," ++ " ('After', <['virt%sd.service']>)," + " ('Before', <['virt-guest-shutdown.target']>)]", +- slicename); ++ slicename, ++ drivername); + message = g_variant_new("(s@ayssus@ai@a(sv))", + name, + guuid, +@@ -489,8 +491,10 @@ int virSystemdCreateMachine(const char *name, + uuid, 16, sizeof(unsigned char)); + gprops = g_variant_new_parsed("[('Slice', <%s>)," + " ('After', <['libvirtd.service']>)," ++ " ('After', <['virt%sd.service']>)," + " ('Before', <['virt-guest-shutdown.target']>)]", +- slicename); ++ slicename, ++ drivername); + message = g_variant_new("(s@ayssus@a(sv))", + name, + guuid, +diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in +index 1a9b233e11..3cf6476196 100644 +--- a/tools/libvirt-guests.service.in ++++ b/tools/libvirt-guests.service.in +@@ -1,10 +1,20 @@ + [Unit] + Description=Suspend/Resume Running libvirt Guests +-Wants=libvirtd.service + Requires=virt-guest-shutdown.target + After=network.target + After=time-sync.target ++After=libvirtd.socket ++After=virtqemud.socket ++After=virtlxcd.socket ++After=virtvboxd.socket ++After=virtvzd.socket ++After=virtxend.socket + After=libvirtd.service ++After=virtqemud.service ++After=virtlxcd.service ++After=virtvboxd.service ++After=virtvzd.service ++After=virtxend.service + After=virt-guest-shutdown.target + Documentation=man:libvirt-guests(8) + Documentation=https://libvirt.org +-- +2.35.1 + diff --git a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch new file mode 100644 index 0000000..245859e --- /dev/null +++ b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch @@ -0,0 +1,46 @@ +From 16b9ab85b004308e1d99db4ed4769a5fa56e2dfa Mon Sep 17 00:00:00 2001 +Message-Id: <16b9ab85b004308e1d99db4ed4769a5fa56e2dfa@dist-git> +From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com> +Date: Mon, 27 Aug 2018 13:09:38 +0200 +Subject: [PATCH] RHEL: Fix virConnectGetMaxVcpus output +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +https://bugzilla.redhat.com/show_bug.cgi?id=1092363 + +RHEL-only. + +Ignore the maximum vcpu limit (KVM_CAP_MAX_VCPUS) on RHEL, +since RHEL QEMU treats the recommended limit (KVM_CAP_NR_VCPUS) +as the maximum, see: +https://bugzilla.redhat.com/show_bug.cgi?id=998708 + +(cherry picked from commit 7dff909fa34bdd93ad200dbffe70c0c1ee931925) +Signed-off-by: Ján Tomko <jtomko@redhat.com> + +https: //bugzilla.redhat.com/show_bug.cgi?id=1582222 +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +--- + src/util/virhostcpu.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c +index a07c00a0e9..35f41daef2 100644 +--- a/src/util/virhostcpu.c ++++ b/src/util/virhostcpu.c +@@ -1166,6 +1166,11 @@ virHostCPUGetKVMMaxVCPUs(void) + return -1; + } + ++/* Ignore KVM_CAP_MAX_VCPUS on RHEL - the recommended maximum ++ * is treated as a hard limit. ++ */ ++# undef KVM_CAP_MAX_VCPUS ++ + # ifdef KVM_CAP_MAX_VCPUS + /* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */ + if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0) +-- +2.34.1 + diff --git a/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch b/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch new file mode 100644 index 0000000..f2ab83f --- /dev/null +++ b/SOURCES/libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch @@ -0,0 +1,104 @@ +From 81f1508d99d4740e7a2a092128d651cf245a554e Mon Sep 17 00:00:00 2001 +Message-Id: <81f1508d99d4740e7a2a092128d651cf245a554e@dist-git> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Tue, 18 Jan 2022 12:40:09 +0100 +Subject: [PATCH] Revert "report error when virProcessGetStatInfo() is unable + to parse data" + +This reverts commit 938382b60ae5bd1f83b5cb09e1ce68b9a88f679a. + +Turns out, the commit did more harm than good. It changed +semantics on some public APIs. For instance, while +qemuDomainGetInfo() previously did not returned an error it does +now. While the calls to virProcessGetStatInfo() is guarded with +virDomainObjIsActive() it doesn't necessarily mean that QEMU's +PID is still alive. QEMU might be gone but we just haven't +realized it (e.g. because the eof handler thread is waiting for a +job). + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2041610 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +(cherry picked from commit 105dace22cc7b5b18d72a4dcad4a2cf386ce5c99) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2043579 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/ch/ch_driver.c | 2 ++ + src/qemu/qemu_driver.c | 7 ++++++- + src/util/virprocess.c | 8 ++------ + 3 files changed, 10 insertions(+), 7 deletions(-) + +diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c +index 3cbc668489..53e0872207 100644 +--- a/src/ch/ch_driver.c ++++ b/src/ch/ch_driver.c +@@ -1073,6 +1073,8 @@ chDomainHelperGetVcpus(virDomainObj *vm, + if (virProcessGetStatInfo(&vcpuinfo->cpuTime, + &vcpuinfo->cpu, NULL, + vm->pid, vcpupid) < 0) { ++ virReportSystemError(errno, "%s", ++ _("cannot get vCPU placement & pCPU time")); + return -1; + } + } +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 65ac5ef367..d3d76c003f 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -1359,6 +1359,8 @@ qemuDomainHelperGetVcpus(virDomainObj *vm, + if (virProcessGetStatInfo(&vcpuinfo->cpuTime, + &vcpuinfo->cpu, NULL, + vm->pid, vcpupid) < 0) { ++ virReportSystemError(errno, "%s", ++ _("cannot get vCPU placement & pCPU time")); + return -1; + } + } +@@ -2519,6 +2521,8 @@ qemuDomainGetInfo(virDomainPtr dom, + if (virDomainObjIsActive(vm)) { + if (virProcessGetStatInfo(&(info->cpuTime), NULL, NULL, + vm->pid, 0) < 0) { ++ virReportError(VIR_ERR_OPERATION_FAILED, "%s", ++ _("cannot read cputime for domain")); + goto cleanup; + } + } +@@ -10526,7 +10530,8 @@ qemuDomainMemoryStatsInternal(virQEMUDriver *driver, + } + + if (virProcessGetStatInfo(NULL, NULL, &rss, vm->pid, 0) < 0) { +- virResetLastError(); ++ virReportError(VIR_ERR_OPERATION_FAILED, "%s", ++ _("cannot get RSS for domain")); + } else { + stats[ret].tag = VIR_DOMAIN_MEMORY_STAT_RSS; + stats[ret].val = rss; +diff --git a/src/util/virprocess.c b/src/util/virprocess.c +index 85d8c8e747..b559a4257e 100644 +--- a/src/util/virprocess.c ++++ b/src/util/virprocess.c +@@ -1784,10 +1784,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime, + virStrToLong_ullp(proc_stat[VIR_PROCESS_STAT_STIME], NULL, 10, &systime) < 0 || + virStrToLong_l(proc_stat[VIR_PROCESS_STAT_RSS], NULL, 10, &rss) < 0 || + virStrToLong_i(proc_stat[VIR_PROCESS_STAT_PROCESSOR], NULL, 10, &cpu) < 0) { +- virReportError(VIR_ERR_INTERNAL_ERROR, +- _("cannot parse process status data for pid '%d/%d'"), +- (int) pid, (int) tid); +- return -1; ++ VIR_WARN("cannot parse process status data"); + } + + /* We got jiffies +@@ -1884,8 +1881,7 @@ virProcessGetStatInfo(unsigned long long *cpuTime G_GNUC_UNUSED, + pid_t pid G_GNUC_UNUSED, + pid_t tid G_GNUC_UNUSED) + { +- virReportSystemError(ENOSYS, "%s", +- _("Process statistics data is not supported on this platform")); ++ errno = ENOSYS; + return -1; + } + +-- +2.35.0 + diff --git a/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch b/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch new file mode 100644 index 0000000..a2ecb09 --- /dev/null +++ b/SOURCES/libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch @@ -0,0 +1,75 @@ +From f45c99be9258f2d97c1f19b93ae8f5e73f4cb486 Mon Sep 17 00:00:00 2001 +Message-Id: <f45c99be9258f2d97c1f19b93ae8f5e73f4cb486@dist-git> +From: Jim Fehlig <jfehlig@suse.com> +Date: Mon, 10 Jan 2022 11:42:58 -0700 +Subject: [PATCH] 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> +(cherry picked from commit 3be5ba11a2c6fcb2dfdffa03ab4f847113f36b85) + +https://bugzilla.redhat.com/show_bug.cgi?id=2042529 +--- + tools/meson.build | 38 ++++++++++++++++++++------------------ + 1 file changed, 20 insertions(+), 18 deletions(-) + +diff --git a/tools/meson.build b/tools/meson.build +index 22fa3604ba..2d0aecb90b 100644 +--- a/tools/meson.build ++++ b/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() +-- +2.35.0 + diff --git a/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch b/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch new file mode 100644 index 0000000..de5f819 --- /dev/null +++ b/SOURCES/libvirt-docs-Add-man-page-for-libvirt-guests.patch @@ -0,0 +1,217 @@ +From 8363046dd5f3e018aaea7b6d9b711fb3d1e417cc Mon Sep 17 00:00:00 2001 +Message-Id: <8363046dd5f3e018aaea7b6d9b711fb3d1e417cc@dist-git> +From: Jim Fehlig <jfehlig@suse.com> +Date: Fri, 7 Jan 2022 14:35:10 -0700 +Subject: [PATCH] docs: Add man page for libvirt-guests + +Signed-off-by: Jim Fehlig <jfehlig@suse.com> +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +(cherry picked from commit 161727417a91bdddf8f3167cf70c3de2829be81c) + +https://bugzilla.redhat.com/show_bug.cgi?id=2042529 +--- + docs/manpages/index.rst | 1 + + docs/manpages/libvirt-guests.rst | 151 +++++++++++++++++++++++++++++++ + docs/manpages/meson.build | 1 + + libvirt.spec.in | 1 + + tools/libvirt-guests.service.in | 2 +- + 5 files changed, 155 insertions(+), 1 deletion(-) + create mode 100644 docs/manpages/libvirt-guests.rst + +diff --git a/docs/manpages/index.rst b/docs/manpages/index.rst +index fb4a36d46a..8fd0d90041 100644 +--- a/docs/manpages/index.rst ++++ b/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 + ========= +diff --git a/docs/manpages/libvirt-guests.rst b/docs/manpages/libvirt-guests.rst +new file mode 100644 +index 0000000000..76045ed11a +--- /dev/null ++++ b/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/>`_ +diff --git a/docs/manpages/meson.build b/docs/manpages/meson.build +index 150f45d296..bad9b62a2e 100644 +--- a/docs/manpages/meson.build ++++ b/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') }, +diff --git a/tools/libvirt-guests.service.in b/tools/libvirt-guests.service.in +index 10c664016a..1a9b233e11 100644 +--- a/tools/libvirt-guests.service.in ++++ b/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] +-- +2.35.0 + diff --git a/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch b/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch new file mode 100644 index 0000000..d9f6fab --- /dev/null +++ b/SOURCES/libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch @@ -0,0 +1,77 @@ +From bbab997f4307da65856dedd3f319037ce442d17e Mon Sep 17 00:00:00 2001 +Message-Id: <bbab997f4307da65856dedd3f319037ce442d17e@dist-git> +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> +Date: Thu, 24 Feb 2022 18:41:29 +0000 +Subject: [PATCH] nwfilter: hold filter update lock when creating/deleting + bindings +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The nwfilter update lock is historically acquired by the virt +drivers in order to achieve serialization between nwfilter +define/undefine, and instantiation/teardown of filters. + +When running in the modular daemons, however, the mutex that +the virt drivers are locking is in a completely different +process from the mutex that the nwfilter driver is locking. + +Serialization is lost and thus call from the virt driver to +virNWFilterBindingCreateXML can deadlock with a concurrent +call to the virNWFilterDefineXML method. + +The solution is surprisingly easy, the update lock simply +needs acquiring in the virNWFilterBindingCreateXML method +and virNWFilterBindingUndefine method instead of in the +virt drivers. + +The only semantic difference here is that when a virtual +machine has multiple NICs, the instantiation and teardown +of filters is no longer serialized for the whole VM, but +rather for each NIC. This should not be a problem since +the virt drivers already need to cope with tearing down +a partially created VM where only some of the NICs are +setup. + +Reviewed-by: Laine Stump <laine@redhat.com> +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> +(cherry picked from commit 65dc79f50b96b34b2253601b8972d5ca90658f33) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2044379 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/nwfilter/nwfilter_driver.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c +index 200451d6b1..a4479fc9fe 100644 +--- a/src/nwfilter/nwfilter_driver.c ++++ b/src/nwfilter/nwfilter_driver.c +@@ -760,12 +760,15 @@ nwfilterBindingCreateXML(virConnectPtr conn, + if (!(ret = virGetNWFilterBinding(conn, def->portdevname, def->filter))) + goto cleanup; + ++ virNWFilterReadLockFilterUpdates(); + if (virNWFilterInstantiateFilter(driver, def) < 0) { ++ virNWFilterUnlockFilterUpdates(); + virNWFilterBindingObjListRemove(driver->bindings, obj); + virObjectUnref(ret); + ret = NULL; + goto cleanup; + } ++ virNWFilterUnlockFilterUpdates(); + virNWFilterBindingObjSave(obj, driver->bindingDir); + + cleanup: +@@ -802,7 +805,9 @@ nwfilterBindingDelete(virNWFilterBindingPtr binding) + if (virNWFilterBindingDeleteEnsureACL(binding->conn, def) < 0) + goto cleanup; + ++ virNWFilterReadLockFilterUpdates(); + virNWFilterTeardownFilter(def); ++ virNWFilterUnlockFilterUpdates(); + virNWFilterBindingObjDelete(obj, driver->bindingDir); + virNWFilterBindingObjListRemove(driver->bindings, obj); + +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch b/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch new file mode 100644 index 0000000..a20b9bc --- /dev/null +++ b/SOURCES/libvirt-qemu-Validate-domain-definition-even-on-migration.patch @@ -0,0 +1,71 @@ +From 84cedeca547585a51f6044186d241a501ff757d2 Mon Sep 17 00:00:00 2001 +Message-Id: <84cedeca547585a51f6044186d241a501ff757d2@dist-git> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Mon, 31 Jan 2022 12:55:47 +0100 +Subject: [PATCH] qemu: Validate domain definition even on migration + +When we are about to spawn QEMU, we validate the domain +definition against qemuCaps. Except when domain is/was already +running before (i.e. on incoming migration, snapshots, resume +from a file). However, especially on incoming migration it may +happen that the destination QEMU is different to the source +QEMU, e.g. the destination QEMU may have some devices disabled. + +And we have a function that validates devices/features requested +in domain XML against the desired QEMU capabilities (aka +qemuCaps) - it's virDomainDefValidate() which calls +qemuValidateDomainDef() and qemuValidateDomainDeviceDef() +subsequently. + +But the problem here is that the validation function is +explicitly skipped over in specific scenarios (like incoming +migration, restore from a snapshot or previously saved file). + +This in turn means that we may spawn QEMU and request +device/features it doesn't support. When that happens QEMU fails +to load migration stream: + + qemu-kvm: ... 'virtio-mem-pci' is not a valid device model name + +(NB, while the example shows one particular device, the problem +is paramount) + +This problem is easier to run into since we are slowly moving +validation from qemu_command.c into said validation functions. + +The solution is simple: do the validation in all cases. And while +it may happen that users would be unable to migrate/restore a +guest due to a bug in our validator, spawning QEMU without +validation is worse (especially when you consider that users can +supply their own XMLs for migrate/restore operations - these were +never validated). + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2048435 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +Reviewed-by: Peter Krempa <pkrempa@redhat.com> +(cherry picked from commit 517b8c12b98d7ac0bb4d582e0b491d50d776eb6d) +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/qemu/qemu_process.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index 5c9ca0fe4f..5c6657a876 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -5411,11 +5411,7 @@ qemuProcessStartValidate(virQEMUDriver *driver, + + } + +- /* Checks below should not be executed when starting a qemu process for a +- * VM that was running before (migration, snapshots, save). It's more +- * important to start such VM than keep the configuration clean */ +- if ((flags & VIR_QEMU_PROCESS_START_NEW) && +- virDomainDefValidate(vm->def, 0, driver->xmlopt, qemuCaps) < 0) ++ if (virDomainDefValidate(vm->def, 0, driver->xmlopt, qemuCaps) < 0) + return -1; + + if (qemuProcessStartValidateGraphics(vm) < 0) +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch b/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch new file mode 100644 index 0000000..50000ad --- /dev/null +++ b/SOURCES/libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch @@ -0,0 +1,90 @@ +From 68b294cf8e9c5e0f0f14b14e63178b2bf7a9f7e2 Mon Sep 17 00:00:00 2001 +Message-Id: <68b294cf8e9c5e0f0f14b14e63178b2bf7a9f7e2@dist-git> +From: Jonathon Jongsma <jjongsma@redhat.com> +Date: Tue, 29 Mar 2022 14:24:36 -0500 +Subject: [PATCH] qemu: fix hotplug for multiqueue vdpa net device +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +While commit a5e659f0 removed the restriction against multiple queues +for the vdpa net device, there were some missing pieces. Configuring a +device statically and then starting the domain worked as expected, but +hotplugging a device didn't have the expected multiqueue support +enabled. Add the missing bits. + +Consider the following device xml: + <interface type="vdpa"> + <mac address="00:11:22:33:44:03" /> + <source dev="/dev/vhost-vdpa-0" /> + <model type="virtio" /> + <driver queues='2' /> + </interface> + +Without this patch, hotplugging the above XML description resulted in +the following: + {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","id":"hostnet1"},"id":"libvirt-392"} + {"execute":"device_add","arguments":{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"} + +With the patch, hotplugging results in the following: + {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","queues":2,"id":"hostnet1"},"id":"libvirt-392"} + {"execute":"device_add","arguments":{"driver":"virtio-net-pci","mq":true,"vectors":6,"netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"} + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024406 + +Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> +Reviewed-by: Ján Tomko <jtomko@redhat.com> + +(cherry picked from commit 3832db21084661d00438dfbb4bad865816157dd9) +Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> +--- + src/qemu/qemu_command.c | 4 ++++ + src/qemu/qemu_hotplug.c | 3 +++ + tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args | 2 +- + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index 509bab08ef..ee0e611513 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -4349,6 +4349,10 @@ qemuBuildHostNetProps(virDomainNetDef *net, + if (virJSONValueObjectAdd(&netprops, "s:type", "vhost-vdpa", NULL) < 0 || + virJSONValueObjectAppendString(netprops, "vhostdev", vdpadev) < 0) + return NULL; ++ ++ if (net->driver.virtio.queues > 1 && ++ virJSONValueObjectAppendNumberUlong(netprops, "queues", net->driver.virtio.queues) < 0) ++ return NULL; + break; + + case VIR_DOMAIN_NET_TYPE_HOSTDEV: +diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c +index 04c6600f26..c10493e212 100644 +--- a/src/qemu/qemu_hotplug.c ++++ b/src/qemu/qemu_hotplug.c +@@ -1364,6 +1364,9 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver, + break; + + case VIR_DOMAIN_NET_TYPE_VDPA: ++ queueSize = net->driver.virtio.queues; ++ if (!queueSize) ++ queueSize = 1; + if (qemuDomainAdjustMaxMemLock(vm, false) < 0) + goto cleanup; + adjustmemlock = true; +diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args +index 61ba85a847..3e45ab6870 100644 +--- a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args +@@ -29,7 +29,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ + -add-fd set=0,fd=1732,opaque=/dev/vhost-vdpa-0 \ +--netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \ ++-netdev vhost-vdpa,vhostdev=/dev/fdset/0,queues=2,id=hostnet0 \ + -device virtio-net-pci,mq=on,vectors=6,netdev=hostnet0,id=net0,mac=52:54:00:95:db:c0,bus=pci.0,addr=0x2 \ + -audiodev '{"id":"audio1","driver":"none"}' \ + -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch b/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch new file mode 100644 index 0000000..ae4c4cf --- /dev/null +++ b/SOURCES/libvirt-qemu-fix-inactive-snapshot-revert.patch @@ -0,0 +1,41 @@ +From 1911ebd62779701aae271dd3e047415bfd2cd303 Mon Sep 17 00:00:00 2001 +Message-Id: <1911ebd62779701aae271dd3e047415bfd2cd303@dist-git> +From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com> +Date: Thu, 20 Jan 2022 14:53:33 +0100 +Subject: [PATCH] qemu: fix inactive snapshot revert +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The commit splitting out the qemuSnapshotRevertInactive function +dropped the 'defined = true' line by accident and instead +returned -1, leaving the user with a cryptic error: +error: An error occurred, but the cause is unknown + +https://bugzilla.redhat.com/show_bug.cgi?id=2039136 +https://gitlab.com/libvirt/libvirt/-/issues/266 + +Fixes: 85e4a13c3f19078fb6af5ffb4a80022c142cbc7e +Signed-off-by: Ján Tomko <jtomko@redhat.com> +(cherry picked from commit 76deb656132bb8817ddae4b7f417930c4db824c9) +Signed-off-by: Ján Tomko <jtomko@redhat.com> +--- + src/qemu/qemu_snapshot.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qemu/qemu_snapshot.c b/src/qemu/qemu_snapshot.c +index f92e00f9c0..ac7bab90f8 100644 +--- a/src/qemu/qemu_snapshot.c ++++ b/src/qemu/qemu_snapshot.c +@@ -2193,7 +2193,7 @@ qemuSnapshotRevertInactive(virDomainObj *vm, + + if (*inactiveConfig) { + virDomainObjAssignDef(vm, inactiveConfig, false, NULL); +- return -1; ++ defined = true; + } + + if (flags & (VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING | +-- +2.35.0 + diff --git a/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch b/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch new file mode 100644 index 0000000..6699b1c --- /dev/null +++ b/SOURCES/libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch @@ -0,0 +1,222 @@ +From 7bcd75ca73d8eda05fafa8342309a8fd058cd326 Mon Sep 17 00:00:00 2001 +Message-Id: <7bcd75ca73d8eda05fafa8342309a8fd058cd326@dist-git> +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> +Date: Thu, 24 Feb 2022 19:02:32 +0000 +Subject: [PATCH] qemu,lxc: remove use to nwfilter update lock +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Now that the virNWFilterBinding APIs are using the nwfilter +update lock directly, there is no need for the virt drivers +to do it themselves. + +Reviewed-by: Laine Stump <laine@redhat.com> +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> +(cherry picked from commit 5f8b090f421cd6a6c46f44905431491e2d3cf8f5) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2044379 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/lxc/lxc_driver.c | 6 ------ + src/qemu/qemu_driver.c | 18 ------------------ + src/qemu/qemu_migration.c | 3 --- + src/qemu/qemu_process.c | 4 ---- + 4 files changed, 31 deletions(-) + +diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c +index 7bc39120ee..e581c62668 100644 +--- a/src/lxc/lxc_driver.c ++++ b/src/lxc/lxc_driver.c +@@ -971,8 +971,6 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, + + virCheckFlags(VIR_DOMAIN_START_AUTODESTROY, -1); + +- virNWFilterReadLockFilterUpdates(); +- + if (!(vm = lxcDomObjFromDomain(dom))) + goto cleanup; + +@@ -1014,7 +1012,6 @@ static int lxcDomainCreateWithFiles(virDomainPtr dom, + cleanup: + virDomainObjEndAPI(&vm); + virObjectEventStateQueue(driver->domainEventState, event); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +@@ -1080,8 +1077,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, + if (flags & VIR_DOMAIN_START_VALIDATE) + parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; + +- virNWFilterReadLockFilterUpdates(); +- + if (!(caps = virLXCDriverGetCapabilities(driver, false))) + goto cleanup; + +@@ -1138,7 +1133,6 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn, + cleanup: + virDomainObjEndAPI(&vm); + virObjectEventStateQueue(driver->domainEventState, event); +- virNWFilterUnlockFilterUpdates(); + return dom; + } + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index d3d76c003f..00a86b6c7c 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -1603,8 +1603,6 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, + if (flags & VIR_DOMAIN_START_AUTODESTROY) + start_flags |= VIR_QEMU_PROCESS_START_AUTODESTROY; + +- virNWFilterReadLockFilterUpdates(); +- + if (!(def = virDomainDefParseString(xml, driver->xmlopt, + NULL, parse_flags))) + goto cleanup; +@@ -1658,7 +1656,6 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, + virDomainObjEndAPI(&vm); + virObjectEventStateQueue(driver->domainEventState, event); + virObjectEventStateQueue(driver->domainEventState, event2); +- virNWFilterUnlockFilterUpdates(); + return dom; + } + +@@ -5773,8 +5770,6 @@ qemuDomainRestoreFlags(virConnectPtr conn, + VIR_DOMAIN_SAVE_PAUSED, -1); + + +- virNWFilterReadLockFilterUpdates(); +- + fd = qemuSaveImageOpen(driver, NULL, path, &def, &data, + (flags & VIR_DOMAIN_SAVE_BYPASS_CACHE) != 0, + &wrapperFd, false, false); +@@ -5846,7 +5841,6 @@ qemuDomainRestoreFlags(virConnectPtr conn, + if (vm && ret < 0) + qemuDomainRemoveInactiveJob(driver, vm); + virDomainObjEndAPI(&vm); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +@@ -6395,8 +6389,6 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) + VIR_DOMAIN_START_BYPASS_CACHE | + VIR_DOMAIN_START_FORCE_BOOT, -1); + +- virNWFilterReadLockFilterUpdates(); +- + if (!(vm = qemuDomainObjFromDomain(dom))) + goto cleanup; + +@@ -6425,7 +6417,6 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned int flags) + + cleanup: + virDomainObjEndAPI(&vm); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +@@ -7811,8 +7802,6 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom, + virDomainObj *vm = NULL; + int ret = -1; + +- virNWFilterReadLockFilterUpdates(); +- + if (!(vm = qemuDomainObjFromDomain(dom))) + goto cleanup; + +@@ -7835,7 +7824,6 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom, + + cleanup: + virDomainObjEndAPI(&vm); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +@@ -7865,8 +7853,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, + VIR_DOMAIN_AFFECT_CONFIG | + VIR_DOMAIN_DEVICE_MODIFY_FORCE, -1); + +- virNWFilterReadLockFilterUpdates(); +- + cfg = virQEMUDriverGetConfig(driver); + + if (!(vm = qemuDomainObjFromDomain(dom))) +@@ -7943,7 +7929,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, + if (dev != dev_copy) + virDomainDeviceDefFree(dev_copy); + virDomainObjEndAPI(&vm); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +@@ -13644,8 +13629,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, + virDomainObj *vm = NULL; + int ret = -1; + +- virNWFilterReadLockFilterUpdates(); +- + if (!(vm = qemuDomObjFromSnapshot(snapshot))) + goto cleanup; + +@@ -13656,7 +13639,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, + + cleanup: + virDomainObjEndAPI(&vm); +- virNWFilterUnlockFilterUpdates(); + return ret; + } + +diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c +index 2635ef1162..358cb9c3b5 100644 +--- a/src/qemu/qemu_migration.c ++++ b/src/qemu/qemu_migration.c +@@ -2779,8 +2779,6 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, + int rv; + g_autofree char *tlsAlias = NULL; + +- virNWFilterReadLockFilterUpdates(); +- + if (flags & VIR_MIGRATE_OFFLINE) { + if (flags & (VIR_MIGRATE_NON_SHARED_DISK | + VIR_MIGRATE_NON_SHARED_INC)) { +@@ -3101,7 +3099,6 @@ qemuMigrationDstPrepareAny(virQEMUDriver *driver, + virDomainObjEndAPI(&vm); + virObjectEventStateQueue(driver->domainEventState, event); + qemuMigrationCookieFree(mig); +- virNWFilterUnlockFilterUpdates(); + virErrorRestore(&origErr); + return ret; + +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index 5c6657a876..914f9bef8b 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -8986,7 +8986,6 @@ qemuProcessReconnect(void *opaque) + qemuDomainRemoveInactiveJob(driver, obj); + } + virDomainObjEndAPI(&obj); +- virNWFilterUnlockFilterUpdates(); + virIdentitySetCurrent(NULL); + return; + +@@ -9038,8 +9037,6 @@ qemuProcessReconnectHelper(virDomainObj *obj, + data->obj = obj; + data->identity = virIdentityGetCurrent(); + +- virNWFilterReadLockFilterUpdates(); +- + /* this lock and reference will be eventually transferred to the thread + * that handles the reconnect */ + virObjectLock(obj); +@@ -9062,7 +9059,6 @@ qemuProcessReconnectHelper(virDomainObj *obj, + qemuDomainRemoveInactiveJobLocked(src->driver, obj); + + virDomainObjEndAPI(&obj); +- virNWFilterUnlockFilterUpdates(); + g_clear_object(&data->identity); + VIR_FREE(data); + return -1; +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch b/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch new file mode 100644 index 0000000..822b859 --- /dev/null +++ b/SOURCES/libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch @@ -0,0 +1,471 @@ +From 3cde498c98be902fc8fe87c895dfeaaa95352b38 Mon Sep 17 00:00:00 2001 +Message-Id: <3cde498c98be902fc8fe87c895dfeaaa95352b38@dist-git> +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com> +Date: Thu, 3 Feb 2022 13:43:18 +0000 +Subject: [PATCH] qemu: support firmware descriptor flash 'mode' for optional + NVRAM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Currently the 'nvram_template' entry is mandatory when parsing the +firmware descriptor based on flash. QEMU is extending the firmware +descriptor spec to make the 'nvram_template' optional, depending +on the value of a new 'mode' field: + + - "split" + * "executable" contains read-only CODE + * "nvram_template" contains read-write VARS + + - "combined" + * "executable" contains read-write CODE and VARs + * "nvram_template" not present + + - "stateless" + * "executable" contains read-only CODE and VARs + * "nvram_template" not present + +In the latter case, the guest OS can write vars but the +firmware will make no attempt to persist them, so any changes +will be lost at poweroff. + +For now we parse this new 'mode' but discard any firmware +which is not 'mode=split' when matching for a domain. + +In the tests we have a mixture of files with and without the +mode attribute. + +Reviewed-by: Michal Privoznik <mprivozn@redhat.com> +Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> +(cherry picked from commit 32b9d8b0ae00669555f01f91ee11612a636c4b69) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2057769 +--- + src/qemu/qemu_firmware.c | 79 ++++++++++++++++--- + .../share/qemu/firmware/50-ovmf-sb-keys.json | 33 ++++++++ + .../out/usr/share/qemu/firmware/61-ovmf.json | 31 ++++++++ + .../out/usr/share/qemu/firmware/70-aavmf.json | 28 +++++++ + .../qemu/firmware/45-ovmf-sev-stateless.json | 31 ++++++++ + .../qemu/firmware/55-ovmf-sb-combined.json | 33 ++++++++ + .../usr/share/qemu/firmware/60-ovmf-sb.json | 1 + + tests/qemufirmwaretest.c | 31 ++++++-- + 8 files changed, 246 insertions(+), 21 deletions(-) + create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json + create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json + create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json + create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json + create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json + +diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c +index 529ab8d68e..7911d45aa0 100644 +--- a/src/qemu/qemu_firmware.c ++++ b/src/qemu/qemu_firmware.c +@@ -59,6 +59,22 @@ VIR_ENUM_IMPL(qemuFirmwareOSInterface, + ); + + ++typedef enum { ++ QEMU_FIRMWARE_FLASH_MODE_SPLIT, ++ QEMU_FIRMWARE_FLASH_MODE_COMBINED, ++ QEMU_FIRMWARE_FLASH_MODE_STATELESS, ++ ++ QEMU_FIRMWARE_FLASH_MODE_LAST, ++} qemuFirmwareFlashMode; ++ ++VIR_ENUM_DECL(qemuFirmwareFlashMode); ++VIR_ENUM_IMPL(qemuFirmwareFlashMode, ++ QEMU_FIRMWARE_FLASH_MODE_LAST, ++ "split", ++ "combined", ++ "stateless", ++); ++ + typedef struct _qemuFirmwareFlashFile qemuFirmwareFlashFile; + struct _qemuFirmwareFlashFile { + char *filename; +@@ -68,6 +84,7 @@ struct _qemuFirmwareFlashFile { + + typedef struct _qemuFirmwareMappingFlash qemuFirmwareMappingFlash; + struct _qemuFirmwareMappingFlash { ++ qemuFirmwareFlashMode mode; + qemuFirmwareFlashFile executable; + qemuFirmwareFlashFile nvram_template; + }; +@@ -359,9 +376,31 @@ qemuFirmwareMappingFlashParse(const char *path, + virJSONValue *doc, + qemuFirmwareMappingFlash *flash) + { ++ virJSONValue *mode; + virJSONValue *executable; + virJSONValue *nvram_template; + ++ if (!(mode = virJSONValueObjectGet(doc, "mode"))) { ++ /* Historical default */ ++ flash->mode = QEMU_FIRMWARE_FLASH_MODE_SPLIT; ++ } else { ++ const char *modestr = virJSONValueGetString(mode); ++ int modeval; ++ if (!modestr) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", ++ _("Firmware flash mode value was malformed")); ++ return -1; ++ } ++ modeval = qemuFirmwareFlashModeTypeFromString(modestr); ++ if (modeval < 0) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, ++ _("Firmware flash mode value '%s' unexpected"), ++ modestr); ++ return -1; ++ } ++ flash->mode = modeval; ++ } ++ + if (!(executable = virJSONValueObjectGet(doc, "executable"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("missing 'executable' in '%s'"), +@@ -372,15 +411,17 @@ qemuFirmwareMappingFlashParse(const char *path, + if (qemuFirmwareFlashFileParse(path, executable, &flash->executable) < 0) + return -1; + +- if (!(nvram_template = virJSONValueObjectGet(doc, "nvram-template"))) { +- virReportError(VIR_ERR_INTERNAL_ERROR, +- _("missing 'nvram-template' in '%s'"), +- path); +- return -1; +- } ++ if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { ++ if (!(nvram_template = virJSONValueObjectGet(doc, "nvram-template"))) { ++ virReportError(VIR_ERR_INTERNAL_ERROR, ++ _("missing 'nvram-template' in '%s'"), ++ path); ++ return -1; ++ } + +- if (qemuFirmwareFlashFileParse(path, nvram_template, &flash->nvram_template) < 0) +- return -1; ++ if (qemuFirmwareFlashFileParse(path, nvram_template, &flash->nvram_template) < 0) ++ return -1; ++ } + + return 0; + } +@@ -693,10 +734,12 @@ qemuFirmwareMappingFlashFormat(virJSONValue *mapping, + g_autoptr(virJSONValue) executable = NULL; + g_autoptr(virJSONValue) nvram_template = NULL; + +- if (!(executable = qemuFirmwareFlashFileFormat(flash->executable))) ++ if (virJSONValueObjectAppendString(mapping, ++ "mode", ++ qemuFirmwareFlashModeTypeToString(flash->mode)) < 0) + return -1; + +- if (!(nvram_template = qemuFirmwareFlashFileFormat(flash->nvram_template))) ++ if (!(executable = qemuFirmwareFlashFileFormat(flash->executable))) + return -1; + + if (virJSONValueObjectAppend(mapping, +@@ -704,11 +747,15 @@ qemuFirmwareMappingFlashFormat(virJSONValue *mapping, + &executable) < 0) + return -1; + ++ if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { ++ if (!(nvram_template = qemuFirmwareFlashFileFormat(flash->nvram_template))) ++ return -1; + +- if (virJSONValueObjectAppend(mapping, ++ if (virJSONValueObjectAppend(mapping, + "nvram-template", +- &nvram_template) < 0) +- return -1; ++ &nvram_template) < 0) ++ return -1; ++ } + + return 0; + } +@@ -1053,6 +1100,12 @@ qemuFirmwareMatchDomain(const virDomainDef *def, + return false; + } + ++ if (fw->mapping.device == QEMU_FIRMWARE_DEVICE_FLASH && ++ fw->mapping.data.flash.mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT) { ++ VIR_DEBUG("Discarding loader without split flash"); ++ return false; ++ } ++ + if (def->sec) { + switch ((virDomainLaunchSecurity) def->sec->sectype) { + case VIR_DOMAIN_LAUNCH_SECURITY_SEV: +diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json +new file mode 100644 +index 0000000000..c251682cd9 +--- /dev/null ++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json +@@ -0,0 +1,33 @@ ++{ ++ "interface-types": [ ++ "uefi" ++ ], ++ "mapping": { ++ "device": "flash", ++ "mode": "split", ++ "executable": { ++ "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd", ++ "format": "raw" ++ }, ++ "nvram-template": { ++ "filename": "/usr/share/OVMF/OVMF_VARS.secboot.fd", ++ "format": "raw" ++ } ++ }, ++ "targets": [ ++ { ++ "architecture": "x86_64", ++ "machines": [ ++ "pc-q35-*" ++ ] ++ } ++ ], ++ "features": [ ++ "acpi-s3", ++ "amd-sev", ++ "enrolled-keys", ++ "requires-smm", ++ "secure-boot", ++ "verbose-dynamic" ++ ] ++} +diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json +new file mode 100644 +index 0000000000..2a9aa23efb +--- /dev/null ++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json +@@ -0,0 +1,31 @@ ++{ ++ "interface-types": [ ++ "uefi" ++ ], ++ "mapping": { ++ "device": "flash", ++ "mode": "split", ++ "executable": { ++ "filename": "/usr/share/OVMF/OVMF_CODE.fd", ++ "format": "raw" ++ }, ++ "nvram-template": { ++ "filename": "/usr/share/OVMF/OVMF_VARS.fd", ++ "format": "raw" ++ } ++ }, ++ "targets": [ ++ { ++ "architecture": "x86_64", ++ "machines": [ ++ "pc-i440fx-*", ++ "pc-q35-*" ++ ] ++ } ++ ], ++ "features": [ ++ "acpi-s3", ++ "amd-sev", ++ "verbose-dynamic" ++ ] ++} +diff --git a/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json +new file mode 100644 +index 0000000000..9bd5ac2868 +--- /dev/null ++++ b/tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json +@@ -0,0 +1,28 @@ ++{ ++ "interface-types": [ ++ "uefi" ++ ], ++ "mapping": { ++ "device": "flash", ++ "mode": "split", ++ "executable": { ++ "filename": "/usr/share/AAVMF/AAVMF_CODE.fd", ++ "format": "raw" ++ }, ++ "nvram-template": { ++ "filename": "/usr/share/AAVMF/AAVMF_VARS.fd", ++ "format": "raw" ++ } ++ }, ++ "targets": [ ++ { ++ "architecture": "aarch64", ++ "machines": [ ++ "virt-*" ++ ] ++ } ++ ], ++ "features": [ ++ ++ ] ++} +diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json +new file mode 100644 +index 0000000000..5a619f3ab0 +--- /dev/null ++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json +@@ -0,0 +1,31 @@ ++{ ++ "description": "OVMF for x86_64, with SEV, without SB, without SMM, with NO varstore", ++ "interface-types": [ ++ "uefi" ++ ], ++ "mapping": { ++ "device": "flash", ++ "mode": "stateless", ++ "executable": { ++ "filename": "/usr/share/OVMF/OVMF.sev.fd", ++ "format": "raw" ++ } ++ }, ++ "targets": [ ++ { ++ "architecture": "x86_64", ++ "machines": [ ++ "pc-q35-*" ++ ] ++ } ++ ], ++ "features": [ ++ "acpi-s3", ++ "amd-sev", ++ "amd-sev-es", ++ "verbose-dynamic" ++ ], ++ "tags": [ ++ ++ ] ++} +diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json +new file mode 100644 +index 0000000000..eb3332e4ab +--- /dev/null ++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json +@@ -0,0 +1,33 @@ ++{ ++ "description": "OVMF with SB+SMM, SB enabled, MS certs enrolled", ++ "interface-types": [ ++ "uefi" ++ ], ++ "mapping": { ++ "device": "flash", ++ "mode": "combined", ++ "executable": { ++ "filename": "/usr/share/OVMF/OVMF.secboot.fd", ++ "format": "raw" ++ } ++ }, ++ "targets": [ ++ { ++ "architecture": "x86_64", ++ "machines": [ ++ "pc-q35-*" ++ ] ++ } ++ ], ++ "features": [ ++ "acpi-s3", ++ "amd-sev", ++ "enrolled-keys", ++ "requires-smm", ++ "secure-boot", ++ "verbose-dynamic" ++ ], ++ "tags": [ ++ ++ ] ++} +diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json +index 5e8a94ae78..a5273a5e8b 100644 +--- a/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json ++++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/60-ovmf-sb.json +@@ -5,6 +5,7 @@ + ], + "mapping": { + "device": "flash", ++ "mode": "split", + "executable": { + "filename": "/usr/share/OVMF/OVMF_CODE.secboot.fd", + "format": "raw" +diff --git a/tests/qemufirmwaretest.c b/tests/qemufirmwaretest.c +index cad4b6d383..fc3416b2ae 100644 +--- a/tests/qemufirmwaretest.c ++++ b/tests/qemufirmwaretest.c +@@ -17,22 +17,31 @@ static int + testParseFormatFW(const void *opaque) + { + const char *filename = opaque; +- g_autofree char *path = NULL; ++ g_autofree char *inpath = NULL; ++ g_autofree char *outpath = NULL; + g_autoptr(qemuFirmware) fw = NULL; +- g_autofree char *buf = NULL; + g_autoptr(virJSONValue) json = NULL; + g_autofree char *expected = NULL; + g_autofree char *actual = NULL; ++ g_autofree char *buf = NULL; + +- path = g_strdup_printf("%s/qemufirmwaredata/%s", abs_srcdir, filename); ++ inpath = g_strdup_printf("%s/qemufirmwaredata/%s", abs_srcdir, filename); ++ outpath = g_strdup_printf("%s/qemufirmwaredata/out/%s", abs_srcdir, filename); + +- if (!(fw = qemuFirmwareParse(path))) ++ if (!(fw = qemuFirmwareParse(inpath))) + return -1; + +- if (virFileReadAll(path, +- 1024 * 1024, /* 1MiB */ +- &buf) < 0) +- return -1; ++ if (virFileExists(outpath)) { ++ if (virFileReadAll(outpath, ++ 1024 * 1024, /* 1MiB */ ++ &buf) < 0) ++ return -1; ++ } else { ++ if (virFileReadAll(inpath, ++ 1024 * 1024, /* 1MiB */ ++ &buf) < 0) ++ return -1; ++ } + + if (!(json = virJSONValueFromString(buf))) + return -1; +@@ -60,7 +69,9 @@ testFWPrecedence(const void *opaque G_GNUC_UNUSED) + const char *expected[] = { + PREFIX "/share/qemu/firmware/40-bios.json", + SYSCONFDIR "/qemu/firmware/40-ovmf-sb-keys.json", ++ PREFIX "/share/qemu/firmware/45-ovmf-sev-stateless.json", + PREFIX "/share/qemu/firmware/50-ovmf-sb-keys.json", ++ PREFIX "/share/qemu/firmware/55-ovmf-sb-combined.json", + PREFIX "/share/qemu/firmware/61-ovmf.json", + PREFIX "/share/qemu/firmware/70-aavmf.json", + NULL +@@ -218,7 +229,9 @@ mymain(void) + } while (0) + + DO_PARSE_TEST("usr/share/qemu/firmware/40-bios.json"); ++ DO_PARSE_TEST("usr/share/qemu/firmware/45-ovmf-sev-stateless.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/50-ovmf-sb-keys.json"); ++ DO_PARSE_TEST("usr/share/qemu/firmware/55-ovmf-sb-combined.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/60-ovmf-sb.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/61-ovmf.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/70-aavmf.json"); +@@ -250,6 +263,8 @@ mymain(void) + DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_X86_64, true, + "/usr/share/seabios/bios-256k.bin:NULL:" + "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.secboot.fd:" ++ "/usr/share/OVMF/OVMF.sev.fd:NULL:" ++ "/usr/share/OVMF/OVMF.secboot.fd:NULL:" + "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd", + VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, + VIR_DOMAIN_OS_DEF_FIRMWARE_EFI); +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch b/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch new file mode 100644 index 0000000..83d9be3 --- /dev/null +++ b/SOURCES/libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch @@ -0,0 +1,186 @@ +From 563e17f59f088d4ba76e7a95ea8958792ae165e2 Mon Sep 17 00:00:00 2001 +Message-Id: <563e17f59f088d4ba76e7a95ea8958792ae165e2@dist-git> +From: Jonathon Jongsma <jjongsma@redhat.com> +Date: Tue, 1 Mar 2022 16:55:21 -0600 +Subject: [PATCH] qemu: support multiqueue for vdpa net device + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2024406 + +Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> +Reviewed-by: Martin Kletzander <mkletzan@redhat.com> + +(cherry picked from commit a5e659f071ae5f5fc9aadb46ad7c31736425f8cf) +Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> +--- + src/qemu/qemu_domain.c | 3 +- + .../net-vdpa-multiqueue.x86_64-latest.args | 36 +++++++++++++++++++ + .../qemuxml2argvdata/net-vdpa-multiqueue.xml | 30 ++++++++++++++++ + tests/qemuxml2argvtest.c | 1 + + .../net-vdpa-multiqueue.xml | 36 +++++++++++++++++++ + tests/qemuxml2xmltest.c | 1 + + 6 files changed, 106 insertions(+), 1 deletion(-) + create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args + create mode 100644 tests/qemuxml2argvdata/net-vdpa-multiqueue.xml + create mode 100644 tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml + +diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c +index a8401bac30..68052769af 100644 +--- a/src/qemu/qemu_domain.c ++++ b/src/qemu/qemu_domain.c +@@ -4511,7 +4511,8 @@ qemuDomainValidateActualNetDef(const virDomainNetDef *net, + actualType == VIR_DOMAIN_NET_TYPE_BRIDGE || + actualType == VIR_DOMAIN_NET_TYPE_DIRECT || + actualType == VIR_DOMAIN_NET_TYPE_ETHERNET || +- actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER)) { ++ actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER || ++ actualType == VIR_DOMAIN_NET_TYPE_VDPA)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("interface %s - multiqueue is not supported for network interfaces of type %s"), + macstr, virDomainNetTypeToString(actualType)); +diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args +new file mode 100644 +index 0000000000..61ba85a847 +--- /dev/null ++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.x86_64-latest.args +@@ -0,0 +1,36 @@ ++LC_ALL=C \ ++PATH=/bin \ ++HOME=/tmp/lib/domain--1-QEMUGuest1 \ ++USER=test \ ++LOGNAME=test \ ++XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest1/.local/share \ ++XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest1/.cache \ ++XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ ++/usr/bin/qemu-system-x86_64 \ ++-name guest=QEMUGuest1,debug-threads=on \ ++-S \ ++-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \ ++-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ ++-accel tcg \ ++-cpu qemu64 \ ++-m 214 \ ++-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \ ++-overcommit mem-lock=off \ ++-smp 1,sockets=1,cores=1,threads=1 \ ++-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ ++-display none \ ++-no-user-config \ ++-nodefaults \ ++-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ ++-mon chardev=charmonitor,id=monitor,mode=control \ ++-rtc base=utc \ ++-no-shutdown \ ++-no-acpi \ ++-boot strict=on \ ++-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-add-fd set=0,fd=1732,opaque=/dev/vhost-vdpa-0 \ ++-netdev vhost-vdpa,vhostdev=/dev/fdset/0,id=hostnet0 \ ++-device virtio-net-pci,mq=on,vectors=6,netdev=hostnet0,id=net0,mac=52:54:00:95:db:c0,bus=pci.0,addr=0x2 \ ++-audiodev '{"id":"audio1","driver":"none"}' \ ++-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ ++-msg timestamp=on +diff --git a/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml +new file mode 100644 +index 0000000000..6e369c1916 +--- /dev/null ++++ b/tests/qemuxml2argvdata/net-vdpa-multiqueue.xml +@@ -0,0 +1,30 @@ ++<domain type='qemu'> ++ <name>QEMUGuest1</name> ++ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> ++ <memory unit='KiB'>219136</memory> ++ <currentMemory unit='KiB'>219136</currentMemory> ++ <vcpu placement='static'>1</vcpu> ++ <os> ++ <type arch='x86_64' machine='pc'>hvm</type> ++ <boot dev='hd'/> ++ </os> ++ <clock offset='utc'/> ++ <on_poweroff>destroy</on_poweroff> ++ <on_reboot>restart</on_reboot> ++ <on_crash>destroy</on_crash> ++ <devices> ++ <emulator>/usr/bin/qemu-system-x86_64</emulator> ++ <controller type='usb' index='0'/> ++ <controller type='ide' index='0'/> ++ <controller type='pci' index='0' model='pci-root'/> ++ <interface type='vdpa'> ++ <mac address='52:54:00:95:db:c0'/> ++ <source dev='/dev/vhost-vdpa-0'/> ++ <model type='virtio'/> ++ <driver queues='2'/> ++ </interface> ++ <input type='mouse' bus='ps2'/> ++ <input type='keyboard' bus='ps2'/> ++ <memballoon model='none'/> ++ </devices> ++</domain> +diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c +index cc67d806e4..1abb5d0124 100644 +--- a/tests/qemuxml2argvtest.c ++++ b/tests/qemuxml2argvtest.c +@@ -1652,6 +1652,7 @@ mymain(void) + DO_TEST_FAILURE("net-hostdev-fail", + QEMU_CAPS_DEVICE_VFIO_PCI); + DO_TEST_CAPS_LATEST("net-vdpa"); ++ DO_TEST_CAPS_LATEST("net-vdpa-multiqueue"); + + DO_TEST("hostdev-pci-multifunction", + QEMU_CAPS_KVM, +diff --git a/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml +new file mode 100644 +index 0000000000..0876d5df62 +--- /dev/null ++++ b/tests/qemuxml2xmloutdata/net-vdpa-multiqueue.xml +@@ -0,0 +1,36 @@ ++<domain type='qemu'> ++ <name>QEMUGuest1</name> ++ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> ++ <memory unit='KiB'>219136</memory> ++ <currentMemory unit='KiB'>219136</currentMemory> ++ <vcpu placement='static'>1</vcpu> ++ <os> ++ <type arch='x86_64' machine='pc'>hvm</type> ++ <boot dev='hd'/> ++ </os> ++ <clock offset='utc'/> ++ <on_poweroff>destroy</on_poweroff> ++ <on_reboot>restart</on_reboot> ++ <on_crash>destroy</on_crash> ++ <devices> ++ <emulator>/usr/bin/qemu-system-x86_64</emulator> ++ <controller type='usb' index='0'> ++ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> ++ </controller> ++ <controller type='ide' index='0'> ++ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> ++ </controller> ++ <controller type='pci' index='0' model='pci-root'/> ++ <interface type='vdpa'> ++ <mac address='52:54:00:95:db:c0'/> ++ <source dev='/dev/vhost-vdpa-0'/> ++ <model type='virtio'/> ++ <driver queues='2'/> ++ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> ++ </interface> ++ <input type='mouse' bus='ps2'/> ++ <input type='keyboard' bus='ps2'/> ++ <audio id='1' type='none'/> ++ <memballoon model='none'/> ++ </devices> ++</domain> +diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c +index fb438269b9..772586cf19 100644 +--- a/tests/qemuxml2xmltest.c ++++ b/tests/qemuxml2xmltest.c +@@ -461,6 +461,7 @@ mymain(void) + DO_TEST_NOCAPS("net-coalesce"); + DO_TEST_NOCAPS("net-many-models"); + DO_TEST("net-vdpa", QEMU_CAPS_NETDEV_VHOST_VDPA); ++ DO_TEST("net-vdpa-multiqueue", QEMU_CAPS_NETDEV_VHOST_VDPA); + + DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev"); + DO_TEST_NOCAPS("serial-tcp-tlsx509-chardev-notls"); +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch b/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch new file mode 100644 index 0000000..cdec8db --- /dev/null +++ b/SOURCES/libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch @@ -0,0 +1,41 @@ +From 0eec7bae9f59b2693798d25d346243109e92aeff Mon Sep 17 00:00:00 2001 +Message-Id: <0eec7bae9f59b2693798d25d346243109e92aeff@dist-git> +From: Peter Krempa <pkrempa@redhat.com> +Date: Tue, 25 Jan 2022 17:49:00 +0100 +Subject: [PATCH] qemuDomainSetupDisk: Initialize 'targetPaths' + +Compiler isn't able to see that 'virDevMapperGetTargets' in cases e.g. +when the devmapper isn't available may not initialize the value in the +pointer passed as the second argument. + +The usage 'qemuDomainSetupDisk' lead to an accidental infinite loop as +previous calls apparently doctored the stack to a point where +'g_slist_concat' would end up in an infinite loop trying to find the end +of the list. + +Fixes: 6c49c2ee9fcb88de02cdc333f666a8e95d60a3b0 +Closes: https://gitlab.com/libvirt/libvirt/-/issues/268 +Signed-off-by: Peter Krempa <pkrempa@redhat.com> +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +(cherry picked from commit ddb2384f0c78a91c40d95afdbc7fe325e95ef2bc) +https://bugzilla.redhat.com/show_bug.cgi?id=2046170 +--- + src/qemu/qemu_namespace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c +index 23b1160c5e..94453033f5 100644 +--- a/src/qemu/qemu_namespace.c ++++ b/src/qemu/qemu_namespace.c +@@ -251,7 +251,7 @@ qemuDomainSetupDisk(virStorageSource *src, + if (!(tmpPath = virPCIDeviceAddressGetIOMMUGroupDev(&next->nvme->pciAddr))) + return -1; + } else { +- GSList *targetPaths; ++ GSList *targetPaths = NULL; + + if (virStorageSourceIsEmpty(next) || + !virStorageSourceIsLocalStorage(next)) { +-- +2.35.1 + diff --git a/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch b/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch new file mode 100644 index 0000000..6671005 --- /dev/null +++ b/SOURCES/libvirt-qemu_command-Generate-memory-only-after-controllers.patch @@ -0,0 +1,662 @@ +From 6f692c60b1d58135f439ad91e95d18540dfa6556 Mon Sep 17 00:00:00 2001 +Message-Id: <6f692c60b1d58135f439ad91e95d18540dfa6556@dist-git> +From: Michal Privoznik <mprivozn@redhat.com> +Date: Thu, 27 Jan 2022 11:13:53 +0100 +Subject: [PATCH] qemu_command: Generate memory only after controllers + +Currently, memory device (def->mems) part of cmd line is +generated before any controller. In majority of cases it doesn't +matter because neither of memory devices live on a bus that's +created by an exposed controller (e.g. there's no DIMM +controller, at least not exposed). Except for virtio-mem and +virtio-pmem, which do have a PCI address. And if it so happens +that the device goes onto non-default bus (pci.0) starting such +guest fails, because the controller that creates the desired bus +wasn't processed yet. QEMU processes arguments in order. + +For instance, if virtio-mem has address with bus='0x01' QEMU +refuses to start with the following message: + + Bus 'pci.1' not found + +Similarly for virtio-pmem. I've successfully tested migration and +changing the order does not affect migration stream. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2047271 +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +(cherry picked from commit af23241cfed712f69450e82135d7c7b4899736de) + +Conflicts: +tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args: +tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args: +tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args: + These happened because downstream we don't use JSON for -device, + but upstream we do (as of 1a691fe1c84090da80a652c4c80ac00a6134a69b). + +Signed-off-by: Michal Privoznik <mprivozn@redhat.com> +--- + src/qemu/qemu_command.c | 6 +++--- + tests/qemuxml2argvdata/hugepages-memaccess.args | 4 ++-- + tests/qemuxml2argvdata/hugepages-memaccess2.args | 4 ++-- + tests/qemuxml2argvdata/hugepages-numa-default-dimm.args | 4 ++-- + .../qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args | 4 ++-- + .../qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args | 4 ++-- + tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args | 8 ++++---- + tests/qemuxml2argvdata/memory-hotplug-dimm.args | 8 ++++---- + .../memory-hotplug-nvdimm-access.x86_64-latest.args | 4 ++-- + .../memory-hotplug-nvdimm-align.x86_64-5.2.0.args | 4 ++-- + .../memory-hotplug-nvdimm-align.x86_64-latest.args | 4 ++-- + .../memory-hotplug-nvdimm-label.x86_64-5.2.0.args | 4 ++-- + .../memory-hotplug-nvdimm-label.x86_64-latest.args | 4 ++-- + .../memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args | 4 ++-- + .../memory-hotplug-nvdimm-pmem.x86_64-latest.args | 4 ++-- + .../memory-hotplug-nvdimm-ppc64-abi-update.args | 4 ++-- + tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args | 4 ++-- + .../memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args | 4 ++-- + .../memory-hotplug-nvdimm-readonly.x86_64-latest.args | 4 ++-- + .../memory-hotplug-nvdimm.x86_64-latest.args | 4 ++-- + .../memory-hotplug-ppc64-nonuma-abi-update.args | 8 ++++---- + tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args | 8 ++++---- + .../memory-hotplug-virtio-mem.x86_64-latest.args | 8 ++++---- + .../memory-hotplug-virtio-pmem.x86_64-5.2.0.args | 4 ++-- + .../memory-hotplug-virtio-pmem.x86_64-latest.args | 4 ++-- + tests/qemuxml2argvdata/pages-dimm-discard.args | 8 ++++---- + 26 files changed, 65 insertions(+), 65 deletions(-) + +diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c +index d822533ccb..509bab08ef 100644 +--- a/src/qemu/qemu_command.c ++++ b/src/qemu/qemu_command.c +@@ -10543,9 +10543,6 @@ qemuBuildCommandLine(virQEMUDriver *driver, + qemuBuildNumaCommandLine(cfg, def, cmd, priv) < 0) + return NULL; + +- if (qemuBuildMemoryDeviceCommandLine(cmd, cfg, def, priv) < 0) +- return NULL; +- + virUUIDFormat(def->uuid, uuid); + virCommandAddArgList(cmd, "-uuid", uuid, NULL); + +@@ -10595,6 +10592,9 @@ qemuBuildCommandLine(virQEMUDriver *driver, + if (qemuBuildControllersCommandLine(cmd, def, qemuCaps) < 0) + return NULL; + ++ if (qemuBuildMemoryDeviceCommandLine(cmd, cfg, def, priv) < 0) ++ return NULL; ++ + if (qemuBuildHubCommandLine(cmd, def, qemuCaps) < 0) + return NULL; + +diff --git a/tests/qemuxml2argvdata/hugepages-memaccess.args b/tests/qemuxml2argvdata/hugepages-memaccess.args +index b89f791697..a369c7f6da 100644 +--- a/tests/qemuxml2argvdata/hugepages-memaccess.args ++++ b/tests/qemuxml2argvdata/hugepages-memaccess.args +@@ -24,8 +24,6 @@ QEMU_AUDIO_DRV=none \ + -numa node,nodeid=2,cpus=2,memdev=ram-node2 \ + -object memory-backend-file,id=ram-node3,mem-path=/dev/hugepages1G/libvirt/qemu/-1-QEMUGuest1,share=off,prealloc=on,size=1073741824,host-nodes=3,policy=bind \ + -numa node,nodeid=3,cpus=3,memdev=ram-node3 \ +--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \ +--device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -37,6 +35,8 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \ ++-device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ + -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ + -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ + -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \ +diff --git a/tests/qemuxml2argvdata/hugepages-memaccess2.args b/tests/qemuxml2argvdata/hugepages-memaccess2.args +index 0c296797e9..434ebdaa62 100644 +--- a/tests/qemuxml2argvdata/hugepages-memaccess2.args ++++ b/tests/qemuxml2argvdata/hugepages-memaccess2.args +@@ -24,8 +24,6 @@ QEMU_AUDIO_DRV=none \ + -numa node,nodeid=2,cpus=2,memdev=ram-node2 \ + -object memory-backend-file,id=ram-node3,mem-path=/var/lib/libvirt/qemu/ram/-1-QEMUGuest1/ram-node3,share=off,size=1073741824,host-nodes=3,policy=bind \ + -numa node,nodeid=3,cpus=3,memdev=ram-node3 \ +--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \ +--device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -37,6 +35,8 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=on,prealloc=on,size=536870912,host-nodes=0-3,policy=bind \ ++-device pc-dimm,node=1,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ + -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ + -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ + -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \ +diff --git a/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args b/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args +index f560cabf8e..57bb70346d 100644 +--- a/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args ++++ b/tests/qemuxml2argvdata/hugepages-numa-default-dimm.args +@@ -19,8 +19,6 @@ QEMU_AUDIO_DRV=none \ + -mem-prealloc \ + -mem-path /dev/hugepages2M/libvirt/qemu/-1-fedora \ + -numa node,nodeid=0,cpus=0-1,mem=1024 \ +--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,size=1073741824,host-nodes=1-3,policy=bind \ +--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ + -uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ + -display none \ + -no-user-config \ +@@ -32,4 +30,6 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,size=1073741824,host-nodes=1-3,policy=bind \ ++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args b/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args +index 8b5665f86e..7d9dcfb4df 100644 +--- a/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/hugepages-nvdimm.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-file","id":"ram-node0","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","share":true,"prealloc":true,"size":1073741824}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -audiodev '{"id":"audio1","driver":"none"}' \ + -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args b/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args +index 8a40e2d79c..04a320d469 100644 +--- a/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memfd-memory-numa.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \ + -smp 8,sockets=1,dies=1,cores=8,threads=1 \ + -object '{"qom-type":"memory-backend-memfd","id":"ram-node0","hugetlb":true,"hugetlbsize":2097152,"share":true,"prealloc":true,"size":15032385536,"host-nodes":[3],"policy":"preferred"}' \ + -numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912,"host-nodes":[3],"policy":"preferred"}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-instance-00000092/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":true,"prealloc":true,"size":536870912,"host-nodes":[3],"policy":"preferred"}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -audiodev '{"id":"audio1","driver":"none"}' \ + -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \ + -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args +index 907072d55d..b36117f1e8 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.args +@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \ + -realtime mlock=off \ + -smp 2,sockets=2,cores=1,threads=1 \ + -numa node,nodeid=0,cpus=0-1,mem=214 \ +--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \ +--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ +--object memory-backend-ram,id=memdimm2,size=536870912 \ +--device pc-dimm,node=0,memdev=memdimm2,id=dimm2,slot=2 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -32,6 +28,10 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \ ++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0,addr=4294967296 \ ++-object memory-backend-ram,id=memdimm2,size=536870912 \ ++-device pc-dimm,node=0,memdev=memdimm2,id=dimm2,slot=2 \ + -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ + -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ + -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm.args b/tests/qemuxml2argvdata/memory-hotplug-dimm.args +index 5d87f4a3ef..72c2803c5e 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-dimm.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-dimm.args +@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \ + -realtime mlock=off \ + -smp 2,sockets=2,cores=1,threads=1 \ + -numa node,nodeid=0,cpus=0-1,mem=214 \ +--object memory-backend-ram,id=memdimm0,size=536870912 \ +--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ +--object memory-backend-file,id=memdimm1,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \ +--device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -32,6 +28,10 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-ram,id=memdimm0,size=536870912 \ ++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ ++-object memory-backend-file,id=memdimm1,mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,prealloc=on,size=536870912,host-nodes=1-3,policy=bind \ ++-device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \ + -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \ + -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \ + -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args +index 3664150c51..94aeadabce 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args +index 6c28c86004..0b29a6fded 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-5.2.0.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object memory-backend-ram,id=ram-node0,size=224395264 \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912,align=2097152 \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912,align=2097152 \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args +index aa77849079..5045cc8318 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912,"align":2097152}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912,"align":2097152}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args +index c45b401af5..7c67161b78 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-5.2.0.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object memory-backend-ram,id=ram-node0,size=224395264 \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \ +--device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \ ++-device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args +index 07863ba87c..9466877699 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ +--device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ ++-device nvdimm,node=0,label-size=131072,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args +index 3f35d4dca2..c4dae0cfd1 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-5.2.0.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object memory-backend-ram,id=ram-node0,size=224395264 \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,size=536870912,pmem=on \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,size=536870912,pmem=on \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args +index 4ed86feb01..9324535ac3 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"size":536870912,"pmem":true}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"size":536870912,"pmem":true}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args +index ebdb0429d0..55b16c9dc2 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.args +@@ -17,8 +17,6 @@ QEMU_AUDIO_DRV=none \ + -realtime mlock=off \ + -smp 2,sockets=2,cores=1,threads=1 \ + -numa node,nodeid=0,cpus=0-1,mem=1024 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \ +--device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -28,4 +26,6 @@ QEMU_AUDIO_DRV=none \ + -rtc base=utc \ + -no-shutdown \ + -boot strict=on \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \ ++-device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args +index ebdb0429d0..55b16c9dc2 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64.args +@@ -17,8 +17,6 @@ QEMU_AUDIO_DRV=none \ + -realtime mlock=off \ + -smp 2,sockets=2,cores=1,threads=1 \ + -numa node,nodeid=0,cpus=0-1,mem=1024 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \ +--device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -28,4 +26,6 @@ QEMU_AUDIO_DRV=none \ + -rtc base=utc \ + -no-shutdown \ + -boot strict=on \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,prealloc=on,size=537001984 \ ++-device nvdimm,node=0,label-size=131072,uuid=49545eb3-75e1-2d0a-acdd-f0294406c99e,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args +index bca2f286ba..b1873c100f 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-5.2.0.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object memory-backend-ram,id=ram-node0,size=224395264 \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \ +--device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object memory-backend-file,id=memnvdimm0,mem-path=/tmp/nvdimm,share=off,prealloc=on,size=536870912 \ ++-device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args +index 8be7f35cec..4f11d22e00 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":224395264}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ +--device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","share":false,"prealloc":true,"size":536870912}' \ ++-device nvdimm,node=0,unarmed=on,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args +index 307698749e..434a0f91cf 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":1073741824}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","prealloc":true,"size":536870912}' \ +--device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memnvdimm0","mem-path":"/tmp/nvdimm","prealloc":true,"size":536870912}' \ ++-device nvdimm,node=0,memdev=memnvdimm0,id=nvdimm0,slot=0 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args +index 5380c9e805..e8a6451841 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.args +@@ -16,10 +16,6 @@ QEMU_AUDIO_DRV=none \ + -m size=1048576k,slots=16,maxmem=4194304k \ + -realtime mlock=off \ + -smp 1,sockets=1,cores=1,threads=1 \ +--object memory-backend-ram,id=memdimm0,size=536870912 \ +--device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \ +--object memory-backend-ram,id=memdimm1,size=536870912 \ +--device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \ + -uuid 49545eb3-75e1-2d0a-acdd-f0294406c99e \ + -display none \ + -no-user-config \ +@@ -29,4 +25,8 @@ QEMU_AUDIO_DRV=none \ + -rtc base=utc \ + -no-shutdown \ + -boot strict=on \ ++-object memory-backend-ram,id=memdimm0,size=536870912 \ ++-device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \ ++-object memory-backend-ram,id=memdimm1,size=536870912 \ ++-device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args +index acff36eb78..181409cde0 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma.args +@@ -16,10 +16,6 @@ QEMU_AUDIO_DRV=none \ + -m size=1310720k,slots=16,maxmem=4194304k \ + -realtime mlock=off \ + -smp 1,sockets=1,cores=1,threads=1 \ +--object memory-backend-ram,id=memdimm0,size=536870912 \ +--device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \ +--object memory-backend-ram,id=memdimm1,size=536870912 \ +--device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \ + -uuid 49545eb3-75e1-2d0a-acdd-f0294406c99e \ + -display none \ + -no-user-config \ +@@ -29,4 +25,8 @@ QEMU_AUDIO_DRV=none \ + -rtc base=utc \ + -no-shutdown \ + -boot strict=on \ ++-object memory-backend-ram,id=memdimm0,size=536870912 \ ++-device pc-dimm,memdev=memdimm0,id=dimm0,slot=0 \ ++-object memory-backend-ram,id=memdimm1,size=536870912 \ ++-device pc-dimm,memdev=memdimm1,id=dimm1,slot=1 \ + -msg timestamp=on +diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args +index 8747b249da..30b635d365 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-mem.x86_64-latest.args +@@ -18,10 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":2145386496}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-ram","id":"memvirtiomem0","reserve":false,"size":1073741824}' \ +--device virtio-mem-pci,node=0,block-size=2097152,requested-size=536870912,memdev=memvirtiomem0,id=virtiomem0,bus=pci.0,addr=0x2 \ +--object '{"qom-type":"memory-backend-file","id":"memvirtiomem1","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","reserve":false,"size":2147483648,"host-nodes":[1,2,3],"policy":"bind"}' \ +--device virtio-mem-pci,node=0,block-size=2097152,requested-size=1073741824,memdev=memvirtiomem1,id=virtiomem1,bus=pci.0,addr=0x3 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -33,6 +29,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-ram","id":"memvirtiomem0","reserve":false,"size":1073741824}' \ ++-device virtio-mem-pci,node=0,block-size=2097152,requested-size=536870912,memdev=memvirtiomem0,id=virtiomem0,bus=pci.0,addr=0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memvirtiomem1","mem-path":"/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1","reserve":false,"size":2147483648,"host-nodes":[1,2,3],"policy":"bind"}' \ ++-device virtio-mem-pci,node=0,block-size=2097152,requested-size=1073741824,memdev=memvirtiomem1,id=virtiomem1,bus=pci.0,addr=0x3 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args +index 17fd98fb88..8fa678c209 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-5.2.0.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object memory-backend-ram,id=ram-node0,size=2145386496 \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object memory-backend-file,id=memvirtiopmem0,mem-path=/tmp/virtio_pmem,share=on,size=536870912 \ +--device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object memory-backend-file,id=memvirtiopmem0,mem-path=/tmp/virtio_pmem,share=on,size=536870912 \ ++-device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args +index e5a91b6d33..95ff490cef 100644 +--- a/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args ++++ b/tests/qemuxml2argvdata/memory-hotplug-virtio-pmem.x86_64-latest.args +@@ -18,8 +18,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -smp 2,sockets=2,dies=1,cores=1,threads=1 \ + -object '{"qom-type":"memory-backend-ram","id":"ram-node0","size":2145386496}' \ + -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ +--object '{"qom-type":"memory-backend-file","id":"memvirtiopmem0","mem-path":"/tmp/virtio_pmem","share":true,"size":536870912}' \ +--device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \ + -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ + -display none \ + -no-user-config \ +@@ -31,6 +29,8 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ + -no-acpi \ + -boot strict=on \ + -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ ++-object '{"qom-type":"memory-backend-file","id":"memvirtiopmem0","mem-path":"/tmp/virtio_pmem","share":true,"size":536870912}' \ ++-device virtio-pmem-pci,memdev=memvirtiopmem0,id=virtiopmem0,bus=pci.0,addr=0x5 \ + -blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \ + -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ + -device ide-hd,bus=ide.0,unit=0,drive=libvirt-1-format,id=ide0-0-0,bootindex=1 \ +diff --git a/tests/qemuxml2argvdata/pages-dimm-discard.args b/tests/qemuxml2argvdata/pages-dimm-discard.args +index 2ebe9c1350..e63c908549 100644 +--- a/tests/qemuxml2argvdata/pages-dimm-discard.args ++++ b/tests/qemuxml2argvdata/pages-dimm-discard.args +@@ -17,10 +17,6 @@ QEMU_AUDIO_DRV=none \ + -realtime mlock=off \ + -smp 2,sockets=2,cores=1,threads=1 \ + -numa node,nodeid=0,cpus=0-1,mem=1024 \ +--object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,prealloc=on,size=1073741824,host-nodes=1-3,policy=bind \ +--device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ +--object memory-backend-file,id=memdimm1,mem-path=/var/lib/libvirt/qemu/ram/-1-fedora/dimm1,discard-data=on,share=off,size=536870912 \ +--device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \ + -uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ + -display none \ + -no-user-config \ +@@ -32,4 +28,8 @@ QEMU_AUDIO_DRV=none \ + -no-acpi \ + -boot strict=on \ + -usb \ ++-object memory-backend-file,id=memdimm0,mem-path=/dev/hugepages1G/libvirt/qemu/-1-fedora,prealloc=on,size=1073741824,host-nodes=1-3,policy=bind \ ++-device pc-dimm,node=0,memdev=memdimm0,id=dimm0,slot=0 \ ++-object memory-backend-file,id=memdimm1,mem-path=/var/lib/libvirt/qemu/ram/-1-fedora/dimm1,discard-data=on,share=off,size=536870912 \ ++-device pc-dimm,node=0,memdev=memdimm1,id=dimm1,slot=1 \ + -msg timestamp=on +-- +2.35.1 + diff --git a/SOURCES/libvirt-remove-sysconfig-files.patch b/SOURCES/libvirt-remove-sysconfig-files.patch new file mode 100644 index 0000000..0a6fc8d --- /dev/null +++ b/SOURCES/libvirt-remove-sysconfig-files.patch @@ -0,0 +1,846 @@ +From fabb2642be1ef180b221af36e5810f819622fc58 Mon Sep 17 00:00:00 2001 +Message-Id: <fabb2642be1ef180b221af36e5810f819622fc58@dist-git> +From: Olaf Hering <olaf@aepfle.de> +Date: Wed, 12 Jan 2022 11:45:08 +0100 +Subject: [PATCH] remove sysconfig files + +sysconfig files are owned by the admin of the host. They have the +liberty to put anything they want into these files. This makes it +difficult to provide different built-in defaults. + +Remove the sysconfig file and place the current desired default into +the service file. + +Local customizations can now go either into /etc/sysconfig/name +or /etc/systemd/system/name.service.d/my-knobs.conf + +Attempt to handle upgrades in libvirt.spec. +Dirty files which are marked as %config will be renamed to file.rpmsave. +To restore them automatically, move stale .rpmsave files away, and +catch any new rpmsave files in %posttrans. + +Signed-off-by: Olaf Hering <olaf@aepfle.de> +Reviewed-by: Andrea Bolognani <abologna@redhat.com> +(cherry picked from commit 8eb4461645c5738674232ee26c15f5555230b7ff) + +https://bugzilla.redhat.com/show_bug.cgi?id=2042529 +--- + docs/daemons.rst | 21 ++++++++ + docs/remote.html.in | 6 +-- + libvirt.spec.in | 69 +++++++++++++++++++------ + src/ch/meson.build | 5 -- + src/ch/virtchd.service.in | 1 + + src/ch/virtchd.sysconf | 3 -- + src/interface/meson.build | 5 -- + src/interface/virtinterfaced.service.in | 1 + + src/interface/virtinterfaced.sysconf | 3 -- + src/libxl/meson.build | 5 -- + src/libxl/virtxend.service.in | 1 + + src/libxl/virtxend.sysconf | 3 -- + src/locking/meson.build | 5 -- + src/locking/virtlockd.service.in | 1 + + src/locking/virtlockd.sysconf | 3 -- + src/logging/meson.build | 5 -- + src/logging/virtlogd.sysconf | 3 -- + src/lxc/meson.build | 5 -- + src/lxc/virtlxcd.service.in | 1 + + src/lxc/virtlxcd.sysconf | 3 -- + src/meson.build | 16 ------ + src/network/meson.build | 5 -- + src/network/virtnetworkd.service.in | 1 + + src/network/virtnetworkd.sysconf | 3 -- + src/node_device/meson.build | 5 -- + src/node_device/virtnodedevd.service.in | 1 + + src/node_device/virtnodedevd.sysconf | 3 -- + src/nwfilter/meson.build | 5 -- + src/nwfilter/virtnwfilterd.service.in | 1 + + src/nwfilter/virtnwfilterd.sysconf | 3 -- + src/qemu/meson.build | 5 -- + src/qemu/virtqemud.service.in | 1 + + src/qemu/virtqemud.sysconf | 12 ----- + src/remote/libvirtd.service.in | 1 + + src/remote/libvirtd.sysconf | 21 -------- + src/remote/meson.build | 10 ---- + src/remote/virtproxyd.service.in | 1 + + src/remote/virtproxyd.sysconf | 3 -- + src/secret/meson.build | 5 -- + src/secret/virtsecretd.service.in | 1 + + src/secret/virtsecretd.sysconf | 3 -- + src/storage/meson.build | 5 -- + src/storage/virtstoraged.service.in | 1 + + src/storage/virtstoraged.sysconf | 3 -- + src/vbox/meson.build | 5 -- + src/vbox/virtvboxd.service.in | 1 + + src/vbox/virtvboxd.sysconf | 3 -- + src/vz/meson.build | 5 -- + src/vz/virtvzd.service.in | 1 + + src/vz/virtvzd.sysconf | 3 -- + tools/libvirt-guests.sysconf | 50 ------------------ + tools/meson.build | 6 --- + 52 files changed, 93 insertions(+), 245 deletions(-) + delete mode 100644 src/ch/virtchd.sysconf + delete mode 100644 src/interface/virtinterfaced.sysconf + delete mode 100644 src/libxl/virtxend.sysconf + delete mode 100644 src/locking/virtlockd.sysconf + delete mode 100644 src/logging/virtlogd.sysconf + delete mode 100644 src/lxc/virtlxcd.sysconf + delete mode 100644 src/network/virtnetworkd.sysconf + delete mode 100644 src/node_device/virtnodedevd.sysconf + delete mode 100644 src/nwfilter/virtnwfilterd.sysconf + delete mode 100644 src/qemu/virtqemud.sysconf + delete mode 100644 src/remote/libvirtd.sysconf + delete mode 100644 src/remote/virtproxyd.sysconf + delete mode 100644 src/secret/virtsecretd.sysconf + delete mode 100644 src/storage/virtstoraged.sysconf + delete mode 100644 src/vbox/virtvboxd.sysconf + delete mode 100644 src/vz/virtvzd.sysconf + delete mode 100644 tools/libvirt-guests.sysconf + +diff --git a/docs/daemons.rst b/docs/daemons.rst +index c8ae3b0cef..1f9bc34260 100644 +--- a/docs/daemons.rst ++++ b/docs/daemons.rst +@@ -686,3 +686,24 @@ socket unit names into the service. When using these old versions, the + ``unix_sock_dir`` setting in ``virtlockd.conf`` must be changed in + lock-step with the equivalent setting in the unit files to ensure that + ``virtlockd`` can identify the sockets. ++ ++Changing command line options for daemons ++========================================= ++ ++Two ways exist to override the defaults in the provided service files: ++either a systemd "drop-in" configuration file, or a ``/etc/sysconfig/$daemon`` ++file must be created. For example, to change the command line option ++for a debug session of ``libvirtd``, create a file ++``/etc/systemd/system/libvirtd.service.d/debug.conf`` with the following content: ++ ++ :: ++ ++ [Unit] ++ Description=Virtualization daemon, with override from debug.conf ++ ++ [Service] ++ Environment=G_DEBUG=fatal-warnings ++ Environment=LIBVIRTD_ARGS="--listen --verbose" ++ ++After changes to systemd "drop-in" configuration files it is required to run ++``systemctl daemon-reload``. +diff --git a/docs/remote.html.in b/docs/remote.html.in +index efdb2b3253..47fb2d4df3 100644 +--- a/docs/remote.html.in ++++ b/docs/remote.html.in +@@ -138,9 +138,9 @@ Blank lines and comments beginning with <code>#</code> are ignored. + <td> 1 (on) </td> + <td> + Listen for secure TLS connections on the public TCP/IP port. +- Note: it is also necessary to start the server in listening mode by +- running it with --listen or editing /etc/sysconfig/libvirtd by uncommenting the LIBVIRTD_ARGS="--listen" line +- to cause the server to come up in listening mode whenever it is started. ++ Note: it is also necessary to start the server in listening mode ++ by running it with --listen or adding a LIBVIRTD_ARGS="--listen" ++ line to /etc/sysconfig/libvirtd. + </td> + </tr> + <tr> +diff --git a/src/ch/meson.build b/src/ch/meson.build +index e0afdb390a..a4bf0c6649 100644 +--- a/src/ch/meson.build ++++ b/src/ch/meson.build +@@ -63,11 +63,6 @@ if conf.has('WITH_CH') + 'sockets': [ 'main', 'ro', 'admin' ], + } + +- sysconf_files += { +- 'name': 'virtchd', +- 'file': files('virtchd.sysconf'), +- } +- + virt_install_dirs += [ + localstatedir / 'lib' / 'libvirt' / 'ch', + runstatedir / 'libvirt' / 'ch', +diff --git a/src/ch/virtchd.service.in b/src/ch/virtchd.service.in +index cc1e85d1df..f08339f211 100644 +--- a/src/ch/virtchd.service.in ++++ b/src/ch/virtchd.service.in +@@ -18,6 +18,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTCHD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtchd + ExecStart=@sbindir@/virtchd $VIRTCHD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/ch/virtchd.sysconf b/src/ch/virtchd.sysconf +deleted file mode 100644 +index 5ee44be5cf..0000000000 +--- a/src/ch/virtchd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtchd.service systemd unit +- +-VIRTCHD_ARGS="--timeout 120" +diff --git a/src/interface/meson.build b/src/interface/meson.build +index 2d4e30362c..f9f378aeb0 100644 +--- a/src/interface/meson.build ++++ b/src/interface/meson.build +@@ -54,9 +54,4 @@ if conf.has('WITH_INTERFACE') + 'name': 'virtinterfaced', + 'in_file': files('virtinterfaced.init.in') + } +- +- sysconf_files += { +- 'name': 'virtinterfaced', +- 'file': files('virtinterfaced.sysconf'), +- } + endif +diff --git a/src/interface/virtinterfaced.service.in b/src/interface/virtinterfaced.service.in +index 73d409b81b..3d944e17a9 100644 +--- a/src/interface/virtinterfaced.service.in ++++ b/src/interface/virtinterfaced.service.in +@@ -13,6 +13,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTINTERFACED_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtinterfaced + ExecStart=@sbindir@/virtinterfaced $VIRTINTERFACED_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/interface/virtinterfaced.sysconf b/src/interface/virtinterfaced.sysconf +deleted file mode 100644 +index 0685da31b8..0000000000 +--- a/src/interface/virtinterfaced.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtinterfaced.service systemd unit +- +-VIRTINTERFACED_ARGS="--timeout 120" +diff --git a/src/libxl/meson.build b/src/libxl/meson.build +index 9793899106..8347a3c966 100644 +--- a/src/libxl/meson.build ++++ b/src/libxl/meson.build +@@ -78,11 +78,6 @@ if conf.has('WITH_LIBXL') + 'in_file': files('virtxend.init.in'), + } + +- sysconf_files += { +- 'name': 'virtxend', +- 'file': files('virtxend.sysconf'), +- } +- + virt_install_dirs += [ + localstatedir / 'lib' / 'libvirt' / 'libxl', + runstatedir / 'libvirt' / 'libxl', +diff --git a/src/libxl/virtxend.service.in b/src/libxl/virtxend.service.in +index 19b19ce3e6..2b5163e179 100644 +--- a/src/libxl/virtxend.service.in ++++ b/src/libxl/virtxend.service.in +@@ -18,6 +18,7 @@ ConditionPathExists=/proc/xen/capabilities + + [Service] + Type=notify ++Environment=VIRTXEND_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtxend + ExecStart=@sbindir@/virtxend $VIRTXEND_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/libxl/virtxend.sysconf b/src/libxl/virtxend.sysconf +deleted file mode 100644 +index 301da47e8d..0000000000 +--- a/src/libxl/virtxend.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtxend.service systemd unit +- +-VIRTXEND_ARGS="--timeout 120" +diff --git a/src/locking/meson.build b/src/locking/meson.build +index 184d3c3f56..72f7780438 100644 +--- a/src/locking/meson.build ++++ b/src/locking/meson.build +@@ -156,11 +156,6 @@ if conf.has('WITH_LIBVIRTD') + 'in_file': files('virtlockd.init.in'), + } + +- sysconf_files += { +- 'name': 'virtlockd', +- 'file': files('virtlockd.sysconf'), +- } +- + if conf.has('WITH_SANLOCK') + virt_helpers += { + 'name': 'libvirt_sanlock_helper', +diff --git a/src/locking/virtlockd.service.in b/src/locking/virtlockd.service.in +index 4a6fab05ab..19271d1e7d 100644 +--- a/src/locking/virtlockd.service.in ++++ b/src/locking/virtlockd.service.in +@@ -7,6 +7,7 @@ Documentation=man:virtlockd(8) + Documentation=https://libvirt.org + + [Service] ++Environment=VIRTLOCKD_ARGS= + EnvironmentFile=-@sysconfdir@/sysconfig/virtlockd + ExecStart=@sbindir@/virtlockd $VIRTLOCKD_ARGS + ExecReload=/bin/kill -USR1 $MAINPID +diff --git a/src/locking/virtlockd.sysconf b/src/locking/virtlockd.sysconf +deleted file mode 100644 +index 03aea9e1bc..0000000000 +--- a/src/locking/virtlockd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtlockd.service systemd unit +- +-VIRTLOCKD_ARGS="" +diff --git a/src/logging/meson.build b/src/logging/meson.build +index 89e06a0d5a..7066f16fad 100644 +--- a/src/logging/meson.build ++++ b/src/logging/meson.build +@@ -101,11 +101,6 @@ if conf.has('WITH_LIBVIRTD') + 'name': 'virtlogd', + 'in_file': files('virtlogd.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtlogd', +- 'file': files('virtlogd.sysconf'), +- } + endif + + log_inc_dir = include_directories('.') +diff --git a/src/logging/virtlogd.sysconf b/src/logging/virtlogd.sysconf +deleted file mode 100644 +index 67993e83ce..0000000000 +--- a/src/logging/virtlogd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtlogd.service systemd unit +- +-VIRTLOGD_ARGS="" +diff --git a/src/lxc/meson.build b/src/lxc/meson.build +index ad5c659dba..c1f71b43e1 100644 +--- a/src/lxc/meson.build ++++ b/src/lxc/meson.build +@@ -175,11 +175,6 @@ if conf.has('WITH_LXC') + 'in_file': files('virtlxcd.init.in'), + } + +- sysconf_files += { +- 'name': 'virtlxcd', +- 'file': files('virtlxcd.sysconf'), +- } +- + virt_install_dirs += [ + localstatedir / 'lib' / 'libvirt' / 'lxc', + runstatedir / 'libvirt' / 'lxc', +diff --git a/src/lxc/virtlxcd.service.in b/src/lxc/virtlxcd.service.in +index 3af7c1a52d..d58bde9f5d 100644 +--- a/src/lxc/virtlxcd.service.in ++++ b/src/lxc/virtlxcd.service.in +@@ -18,6 +18,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTLXCD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtlxcd + ExecStart=@sbindir@/virtlxcd $VIRTLXCD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/lxc/virtlxcd.sysconf b/src/lxc/virtlxcd.sysconf +deleted file mode 100644 +index 119a4a23f3..0000000000 +--- a/src/lxc/virtlxcd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtlxcd.service systemd unit +- +-VIRTLXCD_ARGS="--timeout 120" +diff --git a/src/meson.build b/src/meson.build +index 2408344ef7..fc6c77f5d1 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -208,12 +208,6 @@ virt_daemon_units = [] + # * in_file - source init file (required) + openrc_init_files = [] + +-# sysconf_files +-# install libvirt daemon sysconf files +-# * name - daemon name (required) +-# * file - source sysconf file (required) +-sysconf_files = [] +- + # virt_install_dirs: + # list of directories to create during installation + virt_install_dirs = [] +@@ -868,16 +862,6 @@ if conf.has('WITH_LIBVIRTD') + endif + endif + +-if init_script != 'none' +- foreach sysconf : sysconf_files +- install_data( +- sysconf['file'], +- install_dir: sysconfdir / 'sysconfig', +- rename: [ sysconf['name'] ], +- ) +- endforeach +-endif +- + if conf.has('WITH_DTRACE_PROBES') + custom_target( + 'libvirt_functions.stp', +diff --git a/src/network/meson.build b/src/network/meson.build +index d6fb624bb7..e7c43bc4c4 100644 +--- a/src/network/meson.build ++++ b/src/network/meson.build +@@ -72,11 +72,6 @@ if conf.has('WITH_NETWORK') + 'in_file': files('virtnetworkd.init.in'), + } + +- sysconf_files += { +- 'name': 'virtnetworkd', +- 'file': files('virtnetworkd.sysconf'), +- } +- + virt_install_dirs += [ + localstatedir / 'lib' / 'libvirt' / 'network', + localstatedir / 'lib' / 'libvirt' / 'dnsmasq', +diff --git a/src/network/virtnetworkd.service.in b/src/network/virtnetworkd.service.in +index 4c39d2a5d7..3decfbbf1d 100644 +--- a/src/network/virtnetworkd.service.in ++++ b/src/network/virtnetworkd.service.in +@@ -16,6 +16,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTNETWORKD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtnetworkd + ExecStart=@sbindir@/virtnetworkd $VIRTNETWORKD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/network/virtnetworkd.sysconf b/src/network/virtnetworkd.sysconf +deleted file mode 100644 +index 93f3a7a327..0000000000 +--- a/src/network/virtnetworkd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtnetworkd.service systemd unit +- +-VIRTNETWORKD_ARGS="--timeout 120" +diff --git a/src/node_device/meson.build b/src/node_device/meson.build +index 15f9c3ad29..5013d825b3 100644 +--- a/src/node_device/meson.build ++++ b/src/node_device/meson.build +@@ -62,9 +62,4 @@ if conf.has('WITH_NODE_DEVICES') + 'name': 'virtnodedevd', + 'in_file': files('virtnodedevd.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtnodedevd', +- 'file': files('virtnodedevd.sysconf'), +- } + endif +diff --git a/src/node_device/virtnodedevd.service.in b/src/node_device/virtnodedevd.service.in +index d2453dd620..688cf89822 100644 +--- a/src/node_device/virtnodedevd.service.in ++++ b/src/node_device/virtnodedevd.service.in +@@ -13,6 +13,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTNODEDEVD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtnodedevd + ExecStart=@sbindir@/virtnodedevd $VIRTNODEDEVD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/node_device/virtnodedevd.sysconf b/src/node_device/virtnodedevd.sysconf +deleted file mode 100644 +index fa7faa3a79..0000000000 +--- a/src/node_device/virtnodedevd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtnodedevd.service systemd unit +- +-VIRTNODEDEVD_ARGS="--timeout 120" +diff --git a/src/nwfilter/meson.build b/src/nwfilter/meson.build +index a21e575925..ebbe712906 100644 +--- a/src/nwfilter/meson.build ++++ b/src/nwfilter/meson.build +@@ -61,10 +61,5 @@ if conf.has('WITH_NWFILTER') + 'in_file': files('virtnwfilterd.init.in'), + } + +- sysconf_files += { +- 'name': 'virtnwfilterd', +- 'file': files('virtnwfilterd.sysconf'), +- } +- + subdir('xml') + endif +diff --git a/src/nwfilter/virtnwfilterd.service.in b/src/nwfilter/virtnwfilterd.service.in +index dda7c01a3d..36d00b58f0 100644 +--- a/src/nwfilter/virtnwfilterd.service.in ++++ b/src/nwfilter/virtnwfilterd.service.in +@@ -13,6 +13,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTNWFILTERD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtnwfilterd + ExecStart=@sbindir@/virtnwfilterd $VIRTNWFILTERD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/nwfilter/virtnwfilterd.sysconf b/src/nwfilter/virtnwfilterd.sysconf +deleted file mode 100644 +index 80cc645ba5..0000000000 +--- a/src/nwfilter/virtnwfilterd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtnwfilterd.service systemd unit +- +-VIRTNWFILTERD_ARGS="--timeout 120" +diff --git a/src/qemu/meson.build b/src/qemu/meson.build +index 66ef594006..5f82f687c1 100644 +--- a/src/qemu/meson.build ++++ b/src/qemu/meson.build +@@ -165,11 +165,6 @@ if conf.has('WITH_QEMU') + 'in_file': files('virtqemud.init.in'), + } + +- sysconf_files += { +- 'name': 'virtqemud', +- 'file': files('virtqemud.sysconf'), +- } +- + if conf.has('WITH_SYSCTL') + install_data( + 'postcopy-migration.sysctl', +diff --git a/src/qemu/virtqemud.service.in b/src/qemu/virtqemud.service.in +index 20e1b43a6e..551eb4d405 100644 +--- a/src/qemu/virtqemud.service.in ++++ b/src/qemu/virtqemud.service.in +@@ -20,6 +20,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTQEMUD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtqemud + ExecStart=@sbindir@/virtqemud $VIRTQEMUD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/qemu/virtqemud.sysconf b/src/qemu/virtqemud.sysconf +deleted file mode 100644 +index 87b626e3ed..0000000000 +--- a/src/qemu/virtqemud.sysconf ++++ /dev/null +@@ -1,12 +0,0 @@ +-# Customizations for the virtqemud.service systemd unit +- +-VIRTQEMUD_ARGS="--timeout 120" +- +-# Override the QEMU/SDL default audio driver probing when +-# starting virtual machines using SDL graphics +-# +-# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio +-# is enabled in /etc/libvirt/qemu.conf +-#QEMU_AUDIO_DRV=sdl +-# +-#SDL_AUDIODRIVER=pulse +diff --git a/src/remote/libvirtd.service.in b/src/remote/libvirtd.service.in +index cc0d4e3693..5d4d412fcc 100644 +--- a/src/remote/libvirtd.service.in ++++ b/src/remote/libvirtd.service.in +@@ -28,6 +28,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=LIBVIRTD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/libvirtd + ExecStart=@sbindir@/libvirtd $LIBVIRTD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/remote/libvirtd.sysconf b/src/remote/libvirtd.sysconf +deleted file mode 100644 +index 18aec1ba67..0000000000 +--- a/src/remote/libvirtd.sysconf ++++ /dev/null +@@ -1,21 +0,0 @@ +-# Customizations for the libvirtd.service systemd unit +- +-# Default behaviour is for libvirtd.service to start on boot +-# so that VM autostart can be performed. We then want it to +-# shutdown again if nothing was started and rely on systemd +-# socket activation to start it again when some client app +-# connects. +-LIBVIRTD_ARGS="--timeout 120" +- +-# If systemd socket activation is disabled, then the following +-# can be used to listen on TCP/TLS sockets +-#LIBVIRTD_ARGS="--listen" +- +-# Override the QEMU/SDL default audio driver probing when +-# starting virtual machines using SDL graphics +-# +-# NB these have no effect for VMs using VNC, unless vnc_allow_host_audio +-# is enabled in /etc/libvirt/qemu.conf +-#QEMU_AUDIO_DRV=sdl +-# +-#SDL_AUDIODRIVER=pulse +diff --git a/src/remote/meson.build b/src/remote/meson.build +index 0a188268b5..fc98d0e5be 100644 +--- a/src/remote/meson.build ++++ b/src/remote/meson.build +@@ -204,11 +204,6 @@ if conf.has('WITH_REMOTE') + 'confd': files('libvirtd.confd'), + } + +- sysconf_files += { +- 'name': 'libvirtd', +- 'file': files('libvirtd.sysconf'), +- } +- + virt_daemons += { + 'name': 'virtproxyd', + 'c_args': [ +@@ -239,11 +234,6 @@ if conf.has('WITH_REMOTE') + 'confd': files('virtproxyd.confd'), + } + +- sysconf_files += { +- 'name': 'virtproxyd', +- 'file': files('virtproxyd.sysconf'), +- } +- + virt_install_dirs += [ + localstatedir / 'log' / 'libvirt', + ] +diff --git a/src/remote/virtproxyd.service.in b/src/remote/virtproxyd.service.in +index f43ce9ee6e..10e8cf7263 100644 +--- a/src/remote/virtproxyd.service.in ++++ b/src/remote/virtproxyd.service.in +@@ -13,6 +13,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTPROXYD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtproxyd + ExecStart=@sbindir@/virtproxyd $VIRTPROXYD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/remote/virtproxyd.sysconf b/src/remote/virtproxyd.sysconf +deleted file mode 100644 +index 0fc5c61096..0000000000 +--- a/src/remote/virtproxyd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtproxyd.service systemd unit +- +-VIRTPROXYD_ARGS="--timeout 120" +diff --git a/src/secret/meson.build b/src/secret/meson.build +index a487055cde..efc0ebb1e6 100644 +--- a/src/secret/meson.build ++++ b/src/secret/meson.build +@@ -43,9 +43,4 @@ if conf.has('WITH_SECRETS') + 'name': 'virtsecretd', + 'in_file': files('virtsecretd.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtsecretd', +- 'file': files('virtsecretd.sysconf'), +- } + endif +diff --git a/src/secret/virtsecretd.service.in b/src/secret/virtsecretd.service.in +index 8444142a3a..cbd63fe0b2 100644 +--- a/src/secret/virtsecretd.service.in ++++ b/src/secret/virtsecretd.service.in +@@ -13,6 +13,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTSECRETD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtsecretd + ExecStart=@sbindir@/virtsecretd $VIRTSECRETD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/secret/virtsecretd.sysconf b/src/secret/virtsecretd.sysconf +deleted file mode 100644 +index 2247d05964..0000000000 +--- a/src/secret/virtsecretd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtsecretd.service systemd unit +- +-VIRTSECRETD_ARGS="--timeout 120" +diff --git a/src/storage/meson.build b/src/storage/meson.build +index d1aa66b147..c43707461d 100644 +--- a/src/storage/meson.build ++++ b/src/storage/meson.build +@@ -125,11 +125,6 @@ if conf.has('WITH_STORAGE') + 'name': 'virtstoraged', + 'in_file': files('virtstoraged.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtstoraged', +- 'file': files('virtstoraged.sysconf'), +- } + endif + + if conf.has('WITH_STORAGE_DISK') +diff --git a/src/storage/virtstoraged.service.in b/src/storage/virtstoraged.service.in +index fc3e9a1b69..f72f8426fd 100644 +--- a/src/storage/virtstoraged.service.in ++++ b/src/storage/virtstoraged.service.in +@@ -15,6 +15,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTSTORAGED_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtstoraged + ExecStart=@sbindir@/virtstoraged $VIRTSTORAGED_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/storage/virtstoraged.sysconf b/src/storage/virtstoraged.sysconf +deleted file mode 100644 +index 122373eb7c..0000000000 +--- a/src/storage/virtstoraged.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtstoraged.service systemd unit +- +-VIRTSTORAGED_ARGS="--timeout 120" +diff --git a/src/vbox/meson.build b/src/vbox/meson.build +index df0cfb40e8..240f2389a9 100644 +--- a/src/vbox/meson.build ++++ b/src/vbox/meson.build +@@ -68,9 +68,4 @@ if conf.has('WITH_VBOX') + 'name': 'virtvboxd', + 'in_file': files('virtvboxd.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtvboxd', +- 'file': files('virtvboxd.sysconf'), +- } + endif +diff --git a/src/vbox/virtvboxd.service.in b/src/vbox/virtvboxd.service.in +index ebb31dde07..cfdafc39d2 100644 +--- a/src/vbox/virtvboxd.service.in ++++ b/src/vbox/virtvboxd.service.in +@@ -14,6 +14,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTVBOXD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtvboxd + ExecStart=@sbindir@/virtvboxd $VIRTVBOXD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/vbox/virtvboxd.sysconf b/src/vbox/virtvboxd.sysconf +deleted file mode 100644 +index 37ad353d54..0000000000 +--- a/src/vbox/virtvboxd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtvboxd.service systemd unit +- +-VIRTVBOXD_ARGS="--timeout 120" +diff --git a/src/vz/meson.build b/src/vz/meson.build +index 14f7280f66..d102696943 100644 +--- a/src/vz/meson.build ++++ b/src/vz/meson.build +@@ -58,9 +58,4 @@ if conf.has('WITH_VZ') + 'name': 'virtvzd', + 'in_file': files('virtvzd.init.in'), + } +- +- sysconf_files += { +- 'name': 'virtvzd', +- 'file': files('virtvzd.sysconf'), +- } + endif +diff --git a/src/vz/virtvzd.service.in b/src/vz/virtvzd.service.in +index f551cb8fbf..7636bf2b9e 100644 +--- a/src/vz/virtvzd.service.in ++++ b/src/vz/virtvzd.service.in +@@ -14,6 +14,7 @@ Documentation=https://libvirt.org + + [Service] + Type=notify ++Environment=VIRTVZD_ARGS="--timeout 120" + EnvironmentFile=-@sysconfdir@/sysconfig/virtvzd + ExecStart=@sbindir@/virtvzd $VIRTVZD_ARGS + ExecReload=/bin/kill -HUP $MAINPID +diff --git a/src/vz/virtvzd.sysconf b/src/vz/virtvzd.sysconf +deleted file mode 100644 +index a86b9dfb6c..0000000000 +--- a/src/vz/virtvzd.sysconf ++++ /dev/null +@@ -1,3 +0,0 @@ +-# Customizations for the virtvzd.service systemd unit +- +-VIRTVZD_ARGS="--timeout 120" +diff --git a/tools/libvirt-guests.sysconf b/tools/libvirt-guests.sysconf +deleted file mode 100644 +index 4f83edab90..0000000000 +--- a/tools/libvirt-guests.sysconf ++++ /dev/null +@@ -1,50 +0,0 @@ +-# Customizations for the libvirt-guests.service systemd unit +- +-# URIs to check for running guests +-# example: URIS='default xen:///system vbox+tcp://host/system lxc:///system' +-#URIS=default +- +-# action taken on host boot +-# - start all guests which were running on shutdown are started on boot +-# regardless on their autostart settings +-# - ignore libvirt-guests init script won't start any guest on boot, however, +-# guests marked as autostart will still be automatically started by +-# libvirtd +-#ON_BOOT=start +- +-# Number of seconds to wait between each guest start. Set to 0 to allow +-# parallel startup. +-#START_DELAY=0 +- +-# 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. +-#ON_SHUTDOWN=suspend +- +-# 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. +-#PARALLEL_SHUTDOWN=0 +- +-# 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). +-#SHUTDOWN_TIMEOUT=300 +- +-# 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. +-#BYPASS_CACHE=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. +-#SYNC_TIME=1 +diff --git a/tools/meson.build b/tools/meson.build +index 2d0aecb90b..f4b4a16c29 100644 +--- a/tools/meson.build ++++ b/tools/meson.build +@@ -308,12 +308,6 @@ if conf.has('WITH_LIBVIRTD') + ) + + 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@', +-- +2.35.0 + diff --git a/SOURCES/libvirt-util-Fix-machined-servicename.patch b/SOURCES/libvirt-util-Fix-machined-servicename.patch new file mode 100644 index 0000000..bdab8fb --- /dev/null +++ b/SOURCES/libvirt-util-Fix-machined-servicename.patch @@ -0,0 +1,71 @@ +From f38b129e38b73cb20a2d858de7b593d09380e548 Mon Sep 17 00:00:00 2001 +Message-Id: <f38b129e38b73cb20a2d858de7b593d09380e548@dist-git> +From: Martin Kletzander <mkletzan@redhat.com> +Date: Wed, 23 Feb 2022 10:45:28 +0100 +Subject: [PATCH] util: Fix machined servicename + +Commit 4e42686adef8 wrongly assumed how g_variant_new_parsed() works and broke +starting of domains on systems with systemd (machined). + +Signed-off-by: Martin Kletzander <mkletzan@redhat.com> +Reviewed-by: Jiri Denemark <jdenemar@redhat.com> +(cherry picked from commit a64e666a112d4d6299d1b73704d176283bc42b19) + +https://bugzilla.redhat.com/show_bug.cgi?id=1868537 + +Signed-off-by: Martin Kletzander <mkletzan@redhat.com> +--- + src/util/virsystemd.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c +index f156c2f39a..a8af80c495 100644 +--- a/src/util/virsystemd.c ++++ b/src/util/virsystemd.c +@@ -360,6 +360,7 @@ int virSystemdCreateMachine(const char *name, + g_autofree char *creatorname = NULL; + g_autofree char *slicename = NULL; + g_autofree char *scopename = NULL; ++ g_autofree char *servicename = NULL; + static int hasCreateWithNetwork = 1; + + if ((rc = virSystemdHasMachined()) < 0) +@@ -369,6 +370,7 @@ int virSystemdCreateMachine(const char *name, + return -1; + + creatorname = g_strdup_printf("libvirt-%s", drivername); ++ servicename = g_strdup_printf("virt%sd.service", drivername); + + if (partition) { + if (!(slicename = virSystemdMakeSliceName(partition))) +@@ -440,11 +442,10 @@ int virSystemdCreateMachine(const char *name, + gnicindexes = g_variant_new_fixed_array(G_VARIANT_TYPE("i"), + nicindexes, nnicindexes, sizeof(int)); + gprops = g_variant_new_parsed("[('Slice', <%s>)," +- " ('After', <['libvirtd.service']>)," +- " ('After', <['virt%sd.service']>)," ++ " ('After', <['libvirtd.service', %s]>)," + " ('Before', <['virt-guest-shutdown.target']>)]", + slicename, +- drivername); ++ servicename); + message = g_variant_new("(s@ayssus@ai@a(sv))", + name, + guuid, +@@ -490,11 +491,10 @@ int virSystemdCreateMachine(const char *name, + guuid = g_variant_new_fixed_array(G_VARIANT_TYPE("y"), + uuid, 16, sizeof(unsigned char)); + gprops = g_variant_new_parsed("[('Slice', <%s>)," +- " ('After', <['libvirtd.service']>)," +- " ('After', <['virt%sd.service']>)," ++ " ('After', <['libvirtd.service', %s]>)," + " ('Before', <['virt-guest-shutdown.target']>)]", + slicename, +- drivername); ++ servicename); + message = g_variant_new("(s@ayssus@a(sv))", + name, + guuid, +-- +2.35.1 + diff --git a/SOURCES/symlinks b/SOURCES/symlinks new file mode 100644 index 0000000..54c634d --- /dev/null +++ b/SOURCES/symlinks @@ -0,0 +1,1123 @@ +.ctags.d/libvirt.ctags ../.ctags +tests/virt-admin-self-test ./virsh-self-test +tests/genericxml2xmloutdata/device-backenddomain.xml ../genericxml2xmlindata/device-backenddomain.xml +tests/networkxml2xmlin/leasetime-hours.xml ../networkxml2confdata/leasetime-hours.xml +tests/networkxml2xmlin/leasetime-infinite.xml ../networkxml2confdata/leasetime-infinite.xml +tests/networkxml2xmlin/leasetime-minutes.xml ../networkxml2confdata/leasetime-minutes.xml +tests/networkxml2xmlin/leasetime-seconds.xml ../networkxml2confdata/leasetime-seconds.xml +tests/networkxml2xmlout/leasetime-hours.xml ../networkxml2xmlin/leasetime-hours.xml +tests/networkxml2xmlout/leasetime-infinite.xml ../networkxml2xmlin/leasetime-infinite.xml +tests/networkxml2xmlout/leasetime-minutes.xml ../networkxml2xmlin/leasetime-minutes.xml +tests/networkxml2xmlout/leasetime-seconds.xml ../networkxml2xmlin/leasetime-seconds.xml +tests/nodedevxml2xmlout/DVD_GCC_4247N.xml ../nodedevschemadata/DVD_GCC_4247N.xml +tests/nodedevxml2xmlout/DVD_with_media.xml ../nodedevschemadata/DVD_with_media.xml +tests/nodedevxml2xmlout/ap_07_0038.xml ../nodedevschemadata/ap_07_0038.xml +tests/nodedevxml2xmlout/ap_card07.xml ../nodedevschemadata/ap_card07.xml +tests/nodedevxml2xmlout/ap_matrix.xml ../nodedevschemadata/ap_matrix.xml +tests/nodedevxml2xmlout/ap_matrix_mdev_types.xml ../nodedevschemadata/ap_matrix_mdev_types.xml +tests/nodedevxml2xmlout/ccw_0_0_ffff.xml ../nodedevschemadata/ccw_0_0_ffff.xml +tests/nodedevxml2xmlout/computer.xml ../nodedevschemadata/computer.xml +tests/nodedevxml2xmlout/css_0_0_fffe_mdev_types.xml ../nodedevschemadata/css_0_0_fffe_mdev_types.xml +tests/nodedevxml2xmlout/css_0_0_ffff.xml ../nodedevschemadata/css_0_0_ffff.xml +tests/nodedevxml2xmlout/drm_renderD129.xml ../nodedevschemadata/drm_renderD129.xml +tests/nodedevxml2xmlout/mdev_3627463d_b7f0_4fea_b468_f1da537d301b.xml ../nodedevschemadata/mdev_3627463d_b7f0_4fea_b468_f1da537d301b.xml +tests/nodedevxml2xmlout/mdev_ee0b88c4_f554_4dc1_809d_b2a01e8e48ad.xml ../nodedevschemadata/mdev_ee0b88c4_f554_4dc1_809d_b2a01e8e48ad.xml +tests/nodedevxml2xmlout/net_00_13_02_b9_f9_d3.xml ../nodedevschemadata/net_00_13_02_b9_f9_d3.xml +tests/nodedevxml2xmlout/net_00_15_58_2f_e9_55.xml ../nodedevschemadata/net_00_15_58_2f_e9_55.xml +tests/nodedevxml2xmlout/pci_0000_00_02_0_header_type.xml ../nodedevschemadata/pci_0000_00_02_0_header_type.xml +tests/nodedevxml2xmlout/pci_0000_00_1c_0_header_type.xml ../nodedevschemadata/pci_0000_00_1c_0_header_type.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_mdev_types.xml ../nodedevschemadata/pci_0000_02_10_7_mdev_types.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov.xml ../nodedevschemadata/pci_0000_02_10_7_sriov.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_pf_vfs_all.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_pf_vfs_all.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_pf_vfs_all_header_type.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_pf_vfs_all_header_type.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_vfs.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_vfs.xml +tests/nodedevxml2xmlout/pci_0000_02_10_7_sriov_zero_vfs_max_count.xml ../nodedevschemadata/pci_0000_02_10_7_sriov_zero_vfs_max_count.xml +tests/nodedevxml2xmlout/pci_0000_42_00_0_vpd.xml ../nodedevschemadata/pci_0000_42_00_0_vpd.xml +tests/nodedevxml2xmlout/pci_1002_71c4.xml ../nodedevschemadata/pci_1002_71c4.xml +tests/nodedevxml2xmlout/pci_8086_0c0c_snd_hda_intel.xml ../nodedevschemadata/pci_8086_0c0c_snd_hda_intel.xml +tests/nodedevxml2xmlout/pci_8086_10c9_sriov_pf.xml ../nodedevschemadata/pci_8086_10c9_sriov_pf.xml +tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host.xml ../nodedevschemadata/pci_8086_27c5_scsi_host.xml +tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_0.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_0.xml +tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_0_unique_id.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_0_unique_id.xml +tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_scsi_device_lun0.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_scsi_device_lun0.xml +tests/nodedevxml2xmlout/pci_8086_27c5_scsi_host_scsi_host.xml ../nodedevschemadata/pci_8086_27c5_scsi_host_scsi_host.xml +tests/nodedevxml2xmlout/pci_8086_4238_pcie_wireless.xml ../nodedevschemadata/pci_8086_4238_pcie_wireless.xml +tests/nodedevxml2xmlout/scsi_target0_0_0.xml ../nodedevschemadata/scsi_target0_0_0.xml +tests/nodedevxml2xmlout/scsi_target1_0_0.xml ../nodedevschemadata/scsi_target1_0_0.xml +tests/nodedevxml2xmlout/storage_serial_3600c0ff000d7a2a5d463ff4902000000.xml ../nodedevschemadata/storage_serial_3600c0ff000d7a2a5d463ff4902000000.xml +tests/nodedevxml2xmlout/storage_serial_SATA_HTS721010G9SA00_MPCZ12Y0GNGWSE.xml ../nodedevschemadata/storage_serial_SATA_HTS721010G9SA00_MPCZ12Y0GNGWSE.xml +tests/nodedevxml2xmlout/usb_device_1d6b_1_0000_00_1d_0.xml ../nodedevschemadata/usb_device_1d6b_1_0000_00_1d_0.xml +tests/nodedevxml2xmlout/usb_device_1d6b_1_0000_00_1d_0_if0.xml ../nodedevschemadata/usb_device_1d6b_1_0000_00_1d_0_if0.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-luks.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2-slice.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-qcow2luks.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-raw-nbd.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-raw-slice.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-backing-raw.xml qcow2.xml +tests/qemublocktestdata/imagecreate/qcow2-luks-encopts-backing.xml qcow2-luks-encopts.xml +tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json ../../../usr/share/qemu/firmware/50-ovmf-sb-keys.json +tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell-detach.xml qemuhotplug-base-live+ivshmem-plain.xml +tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain-detach.xml qemuhotplug-base-live.xml +tests/qemustatusxml2xmldata/backup-pull-out.xml backup-pull-in.xml +tests/qemustatusxml2xmldata/blockjob-blockdev-out.xml blockjob-blockdev-in.xml +tests/qemustatusxml2xmldata/blockjob-mirror-out.xml blockjob-mirror-in.xml +tests/qemustatusxml2xmldata/migration-in-params-out.xml migration-in-params-in.xml +tests/qemustatusxml2xmldata/migration-out-nbd-bitmaps-out.xml migration-out-nbd-bitmaps-in.xml +tests/qemustatusxml2xmldata/migration-out-params-out.xml migration-out-params-in.xml +tests/qemustatusxml2xmldata/modern-out.xml modern-in.xml +tests/qemustatusxml2xmldata/vcpus-multi-out.xml vcpus-multi-in.xml +tests/qemuvhostuserdata/etc/qemu/vhost-user/40-gpu.json ../../../usr/share/qemu/vhost-user/50-gpu.json +tests/qemuvhostuserdata/usr/share/qemu/vhost-user/30-gpu.json 50-gpu.json +tests/qemuvhostuserdata/usr/share/qemu/vhost-user/60-gpu.json 50-gpu.json +tests/qemuxml2argvdata/aarch64-gic-default-both.args aarch64-gic-v3.args +tests/qemuxml2argvdata/aarch64-gic-default-both.xml aarch64-gic-default.xml +tests/qemuxml2argvdata/aarch64-gic-default-v2.args aarch64-gic-v2.args +tests/qemuxml2argvdata/aarch64-gic-default-v2.xml aarch64-gic-default.xml +tests/qemuxml2argvdata/aarch64-gic-default-v3.args aarch64-gic-v3.args +tests/qemuxml2argvdata/aarch64-gic-default-v3.xml aarch64-gic-default.xml +tests/qemuxml2argvdata/aarch64-gic-default.args aarch64-gic-v2.args +tests/qemuxml2argvdata/aarch64-gic-none-both.args aarch64-gic-v3.args +tests/qemuxml2argvdata/aarch64-gic-none-both.xml aarch64-gic-none.xml +tests/qemuxml2argvdata/aarch64-gic-none-v2.args aarch64-gic-v2.args +tests/qemuxml2argvdata/aarch64-gic-none-v2.xml aarch64-gic-none.xml +tests/qemuxml2argvdata/aarch64-gic-none-v3.args aarch64-gic-v3.args +tests/qemuxml2argvdata/aarch64-gic-none-v3.xml aarch64-gic-none-v2.xml +tests/qemuxml2argvdata/aarch64-gic-none.args aarch64-gic-v2.args +tests/qemuxml2argvdata/cpu-check-full.args cpu-check-none.args +tests/qemuxml2argvdata/cpu-check-partial.args cpu-check-none.args +tests/qemuxml2argvdata/cpu-numa-memshared-1.xml cpu-numa-memshared.xml +tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-2.12.0.args disk-backing-chains-noindex.x86_64-2.12.0.args +tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-latest.args disk-backing-chains-noindex.x86_64-latest.args +tests/qemuxml2argvdata/mach-virt-console-native.args mach-virt-serial-native.args +tests/qemuxml2argvdata/mach-virt-serial+console-native.args mach-virt-serial-native.args +tests/qemuxml2argvdata/mach-virt-serial-compat.args mach-virt-serial-native.args +tests/qemuxml2argvdata/memory-hotplug-nvdimm-ppc64-abi-update.xml memory-hotplug-nvdimm-ppc64.xml +tests/qemuxml2argvdata/memory-hotplug-ppc64-nonuma-abi-update.xml memory-hotplug-ppc64-nonuma.xml +tests/qemuxml2argvdata/pci-rom-disabled-invalid.args pci-rom-disabled.args +tests/qemuxml2argvdata/ppc64-usb-controller-legacy.xml ppc64-usb-controller.xml +tests/qemuxml2argvdata/ppc64-usb-controller-qemu-xhci.xml ppc64-usb-controller.xml +tests/qemuxml2argvdata/pseries-console-native.args pseries-serial-native.args +tests/qemuxml2argvdata/pseries-features-ccf.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-cfpc.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-hpt-pagesize.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-htm.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-ibs.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-nested-hv.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-features-sbbc.xml pseries-features.xml +tests/qemuxml2argvdata/pseries-serial+console-native.args pseries-serial-native.args +tests/qemuxml2argvdata/pseries-serial-compat.args pseries-serial-native.args +tests/qemuxml2argvdata/q35-virtio-pci.xml q35-pcie.xml +tests/qemuxml2argvdata/usb-controller-default-unavailable-q35.xml usb-controller-default-q35.xml +tests/qemuxml2argvdata/usb-controller-explicit-unavailable-q35.xml usb-controller-explicit-q35.xml +tests/qemuxml2argvdata/usb-controller-qemu-xhci-unavailable.xml usb-controller-qemu-xhci.xml +tests/qemuxml2argvdata/user-aliases2.args boot-floppy-q35.args +tests/qemuxml2xmloutdata/aarch64-gic-default-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml +tests/qemuxml2xmloutdata/aarch64-gic-default-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml +tests/qemuxml2xmloutdata/aarch64-gic-default-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml +tests/qemuxml2xmloutdata/aarch64-gic-default.xml ../qemuxml2argvdata/aarch64-gic-v2.xml +tests/qemuxml2xmloutdata/aarch64-gic-host.xml ../qemuxml2argvdata/aarch64-gic-host.xml +tests/qemuxml2xmloutdata/aarch64-gic-none-both.xml ../qemuxml2argvdata/aarch64-gic-v3.xml +tests/qemuxml2xmloutdata/aarch64-gic-none-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml +tests/qemuxml2xmloutdata/aarch64-gic-none-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml +tests/qemuxml2xmloutdata/aarch64-gic-none.xml ../qemuxml2argvdata/aarch64-gic-v2.xml +tests/qemuxml2xmloutdata/aarch64-gic-v2.xml ../qemuxml2argvdata/aarch64-gic-v2.xml +tests/qemuxml2xmloutdata/aarch64-gic-v3.xml ../qemuxml2argvdata/aarch64-gic-v3.xml +tests/qemuxml2xmloutdata/audio-alsa-best.xml ../qemuxml2argvdata/audio-alsa-best.xml +tests/qemuxml2xmloutdata/audio-alsa-full.xml ../qemuxml2argvdata/audio-alsa-full.xml +tests/qemuxml2xmloutdata/audio-alsa-minimal.xml ../qemuxml2argvdata/audio-alsa-minimal.xml +tests/qemuxml2xmloutdata/audio-coreaudio-best.xml ../qemuxml2argvdata/audio-coreaudio-best.xml +tests/qemuxml2xmloutdata/audio-coreaudio-full.xml ../qemuxml2argvdata/audio-coreaudio-full.xml +tests/qemuxml2xmloutdata/audio-coreaudio-minimal.xml ../qemuxml2argvdata/audio-coreaudio-minimal.xml +tests/qemuxml2xmloutdata/audio-file-best.xml ../qemuxml2argvdata/audio-file-best.xml +tests/qemuxml2xmloutdata/audio-file-full.xml ../qemuxml2argvdata/audio-file-full.xml +tests/qemuxml2xmloutdata/audio-file-minimal.xml ../qemuxml2argvdata/audio-file-minimal.xml +tests/qemuxml2xmloutdata/audio-jack-full.xml ../qemuxml2argvdata/audio-jack-full.xml +tests/qemuxml2xmloutdata/audio-many-backends.x86_64-latest.xml ../qemuxml2argvdata/audio-many-backends.xml +tests/qemuxml2xmloutdata/audio-none-best.xml ../qemuxml2argvdata/audio-none-best.xml +tests/qemuxml2xmloutdata/audio-none-full.xml ../qemuxml2argvdata/audio-none-full.xml +tests/qemuxml2xmloutdata/audio-none-minimal.xml ../qemuxml2argvdata/audio-none-minimal.xml +tests/qemuxml2xmloutdata/audio-oss-best.xml ../qemuxml2argvdata/audio-oss-best.xml +tests/qemuxml2xmloutdata/audio-oss-full.xml ../qemuxml2argvdata/audio-oss-full.xml +tests/qemuxml2xmloutdata/audio-oss-minimal.xml ../qemuxml2argvdata/audio-oss-minimal.xml +tests/qemuxml2xmloutdata/audio-pulseaudio-best.xml ../qemuxml2argvdata/audio-pulseaudio-best.xml +tests/qemuxml2xmloutdata/audio-pulseaudio-full.xml ../qemuxml2argvdata/audio-pulseaudio-full.xml +tests/qemuxml2xmloutdata/audio-pulseaudio-minimal.xml ../qemuxml2argvdata/audio-pulseaudio-minimal.xml +tests/qemuxml2xmloutdata/audio-sdl-best.xml ../qemuxml2argvdata/audio-sdl-best.xml +tests/qemuxml2xmloutdata/audio-sdl-full.xml ../qemuxml2argvdata/audio-sdl-full.xml +tests/qemuxml2xmloutdata/audio-sdl-minimal.xml ../qemuxml2argvdata/audio-sdl-minimal.xml +tests/qemuxml2xmloutdata/audio-spice-best.xml ../qemuxml2argvdata/audio-spice-best.xml +tests/qemuxml2xmloutdata/audio-spice-full.xml ../qemuxml2argvdata/audio-spice-full.xml +tests/qemuxml2xmloutdata/audio-spice-minimal.xml ../qemuxml2argvdata/audio-spice-minimal.xml +tests/qemuxml2xmloutdata/blkdeviotune-group-num.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-group-num.xml +tests/qemuxml2xmloutdata/blkdeviotune-max-length.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max-length.xml +tests/qemuxml2xmloutdata/blkdeviotune-max.x86_64-latest.xml ../qemuxml2argvdata/blkdeviotune-max.xml +tests/qemuxml2xmloutdata/boot-floppy-q35.xml ../qemuxml2argvdata/boot-floppy-q35.xml +tests/qemuxml2xmloutdata/clock-realtime.xml ../qemuxml2argvdata/clock-realtime.xml +tests/qemuxml2xmloutdata/clock-timer-armvtimer.aarch64-latest.xml ../qemuxml2argvdata/clock-timer-armvtimer.xml +tests/qemuxml2xmloutdata/disk-detect-zeroes.x86_64-latest.xml ../qemuxml2argvdata/disk-detect-zeroes.xml +tests/qemuxml2xmloutdata/disk-nvme.xml ../qemuxml2argvdata/disk-nvme.xml +tests/qemuxml2xmloutdata/disk-virtio-queues.x86_64-latest.xml ../qemuxml2argvdata/disk-virtio-queues.xml +tests/qemuxml2xmloutdata/disk-virtio-scsi-reservations.xml ../qemuxml2argvdata/disk-virtio-scsi-reservations.xml +tests/qemuxml2xmloutdata/downscript.xml ../qemuxml2argvdata/downscript.xml +tests/qemuxml2xmloutdata/encrypted-disk-usage.xml ../qemuxml2argvdata/encrypted-disk-usage.xml +tests/qemuxml2xmloutdata/fd-memory-no-numa-topology.xml ../qemuxml2argvdata/fd-memory-no-numa-topology.xml +tests/qemuxml2xmloutdata/fd-memory-numa-topology.xml ../qemuxml2argvdata/fd-memory-numa-topology.xml +tests/qemuxml2xmloutdata/fd-memory-numa-topology2.xml ../qemuxml2argvdata/fd-memory-numa-topology2.xml +tests/qemuxml2xmloutdata/fd-memory-numa-topology3.xml ../qemuxml2argvdata/fd-memory-numa-topology3.xml +tests/qemuxml2xmloutdata/fd-memory-numa-topology4.x86_64-latest.xml ../qemuxml2argvdata/fd-memory-numa-topology4.xml +tests/qemuxml2xmloutdata/hugepages-default-2M.xml ../qemuxml2argvdata/hugepages-default-2M.xml +tests/qemuxml2xmloutdata/hugepages-default-system-size.xml ../qemuxml2argvdata/hugepages-default-system-size.xml +tests/qemuxml2xmloutdata/hugepages-memaccess.xml ../qemuxml2argvdata/hugepages-memaccess.xml +tests/qemuxml2xmloutdata/hugepages-memaccess2.xml ../qemuxml2argvdata/hugepages-memaccess2.xml +tests/qemuxml2xmloutdata/hugepages-numa-default-dimm.xml ../qemuxml2argvdata/hugepages-numa-default-dimm.xml +tests/qemuxml2xmloutdata/hugepages-nvdimm.xml ../qemuxml2argvdata/hugepages-nvdimm.xml +tests/qemuxml2xmloutdata/input-linux.x86_64-latest.xml ../qemuxml2argvdata/input-linux.xml +tests/qemuxml2xmloutdata/intel-iommu-aw-bits.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-aw-bits.xml +tests/qemuxml2xmloutdata/intel-iommu-caching-mode.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-caching-mode.xml +tests/qemuxml2xmloutdata/intel-iommu-device-iotlb.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-device-iotlb.xml +tests/qemuxml2xmloutdata/intel-iommu-eim.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu-eim.xml +tests/qemuxml2xmloutdata/intel-iommu.x86_64-latest.xml ../qemuxml2argvdata/intel-iommu.xml +tests/qemuxml2xmloutdata/kvm-features-off.xml ../qemuxml2argvdata/kvm-features-off.xml +tests/qemuxml2xmloutdata/kvm-features.xml ../qemuxml2argvdata/kvm-features.xml +tests/qemuxml2xmloutdata/luks-disks.x86_64-latest.xml ../qemuxml2argvdata/luks-disks.xml +tests/qemuxml2xmloutdata/mach-virt-console-native.xml mach-virt-serial-compat.xml +tests/qemuxml2xmloutdata/mach-virt-serial+console-native.xml mach-virt-serial-compat.xml +tests/qemuxml2xmloutdata/mach-virt-serial-native.xml mach-virt-serial-compat.xml +tests/qemuxml2xmloutdata/memfd-memory-default-hugepage.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-default-hugepage.xml +tests/qemuxml2xmloutdata/memfd-memory-numa.x86_64-latest.xml ../qemuxml2argvdata/memfd-memory-numa.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-access.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-access.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-align.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-align.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-label.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-label.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-pmem.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm-readonly.xml ../qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml +tests/qemuxml2xmloutdata/memory-hotplug-nvdimm.xml ../qemuxml2argvdata/memory-hotplug-nvdimm.xml +tests/qemuxml2xmloutdata/memory-hotplug-ppc64-nonuma.xml ../qemuxml2argvdata/memory-hotplug-ppc64-nonuma.xml +tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-mem.xml +tests/qemuxml2xmloutdata/memory-hotplug-virtio-pmem.x86_64-latest.xml ../qemuxml2argvdata/memory-hotplug-virtio-pmem.xml +tests/qemuxml2xmloutdata/net-user-addr.xml ../qemuxml2argvdata/net-user-addr.xml +tests/qemuxml2xmloutdata/net-virtio-teaming-hostdev.xml ../qemuxml2argvdata/net-virtio-teaming-hostdev.xml +tests/qemuxml2xmloutdata/numatune-hmat.xml ../qemuxml2argvdata/numatune-hmat.xml +tests/qemuxml2xmloutdata/numatune-memnode-restrictive-mode.x86_64-latest.xml ../qemuxml2argvdata/numatune-memnode-restrictive-mode.xml +tests/qemuxml2xmloutdata/numatune-no-vcpu.xml ../qemuxml2argvdata/numatune-no-vcpu.xml +tests/qemuxml2xmloutdata/os-firmware-efi-no-enrolled-keys.x86_64-latest.xml ../qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml +tests/qemuxml2xmloutdata/pages-dimm-discard.xml ../qemuxml2argvdata/pages-dimm-discard.xml +tests/qemuxml2xmloutdata/pages-discard-hugepages.xml ../qemuxml2argvdata/pages-discard-hugepages.xml +tests/qemuxml2xmloutdata/pages-discard.xml ../qemuxml2argvdata/pages-discard.xml +tests/qemuxml2xmloutdata/pc-i440fx-acpi-root-hotplug-disable.x86_64-latest.xml ../qemuxml2argvdata/pc-i440fx-acpi-root-hotplug-disable.xml +tests/qemuxml2xmloutdata/pc-i440fx-acpi-root-hotplug-enable.x86_64-latest.xml ../qemuxml2argvdata/pc-i440fx-acpi-root-hotplug-enable.xml +tests/qemuxml2xmloutdata/pseries-console-native.xml pseries-serial-native.xml +tests/qemuxml2xmloutdata/pseries-serial+console-native.xml pseries-serial-native.xml +tests/qemuxml2xmloutdata/pseries-serial-compat.xml pseries-serial-native.xml +tests/qemuxml2xmloutdata/serial-tcp-tlsx509-chardev-notls.xml ../qemuxml2argvdata/serial-tcp-tlsx509-chardev-notls.xml +tests/qemuxml2xmloutdata/smbios-type-fwcfg.xml ../qemuxml2argvdata/smbios-type-fwcfg.xml +tests/qemuxml2xmloutdata/tpm-emulator-spapr.ppc64-latest.xml ../qemuxml2argvdata/tpm-emulator-spapr.xml +tests/qemuxml2xmloutdata/tpm-emulator-tpm2-enc.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2-enc.xml +tests/qemuxml2xmloutdata/tpm-emulator-tpm2-pstate.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2-pstate.xml +tests/qemuxml2xmloutdata/tpm-emulator-tpm2.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator-tpm2.xml +tests/qemuxml2xmloutdata/tpm-emulator.x86_64-latest.xml ../qemuxml2argvdata/tpm-emulator.xml +tests/qemuxml2xmloutdata/tpm-passthrough-crb.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough-crb.xml +tests/qemuxml2xmloutdata/tpm-passthrough.x86_64-latest.xml ../qemuxml2argvdata/tpm-passthrough.xml +tests/qemuxml2xmloutdata/user-aliases.xml ../qemuxml2argvdata/user-aliases.xml +tests/qemuxml2xmloutdata/vcpu-placement-static.xml ../qemuxml2argvdata/vcpu-placement-static.xml +tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-fd-memory.xml +tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-hugepages.xml +tests/qemuxml2xmloutdata/vhost-user-fs-sock.x86_64-latest.xml ../qemuxml2argvdata/vhost-user-fs-sock.xml +tests/qemuxml2xmloutdata/vhost-vsock-ccw-iommu.s390x-latest.xml ../qemuxml2argvdata/vhost-vsock-ccw-iommu.xml +tests/qemuxml2xmloutdata/vhost-vsock-ccw.xml ../qemuxml2argvdata/vhost-vsock-ccw.xml +tests/qemuxml2xmloutdata/vhost-vsock.x86_64-latest.xml ../qemuxml2argvdata/vhost-vsock.xml +tests/qemuxml2xmloutdata/video-qxl-resolution.xml ../qemuxml2argvdata/video-qxl-resolution.xml +tests/qemuxml2xmloutdata/video-virtio-vga-gpu-gl.x86_64-latest.xml ../qemuxml2argvdata/video-virtio-vga-gpu-gl.xml +tests/qemuxml2xmloutdata/virtio-options.x86_64-latest.xml ../qemuxml2argvdata/virtio-options.xml +tests/qemuxml2xmloutdata/x86_64-default-cpu-tcg-features.x86_64-latest.xml ../qemuxml2argvdata/x86_64-default-cpu-tcg-features.xml +tests/vircaps2xmldata/linux-basic-dies/system/cpu ../../../virhostcpudata/linux-with-die/cpu +tests/vircaps2xmldata/linux-basic-dies/system/node ../../../virhostcpudata/linux-with-die/node +tests/vircaps2xmldata/linux-basic/system/node/node0/cpu0 ../../cpu/cpu0 +tests/vircaps2xmldata/linux-basic/system/node/node0/cpu1 ../../cpu/cpu1 +tests/vircaps2xmldata/linux-basic/system/node/node0/cpu2 ../../cpu/cpu2 +tests/vircaps2xmldata/linux-basic/system/node/node0/cpu3 ../../cpu/cpu3 +tests/vircaps2xmldata/linux-basic/system/node/node1/cpu4 ../../cpu/cpu4 +tests/vircaps2xmldata/linux-basic/system/node/node1/cpu5 ../../cpu/cpu5 +tests/vircaps2xmldata/linux-basic/system/node/node1/cpu6 ../../cpu/cpu6 +tests/vircaps2xmldata/linux-basic/system/node/node1/cpu7 ../../cpu/cpu7 +tests/vircaps2xmldata/linux-basic/system/node/node2/cpu10 ../../cpu/cpu10 +tests/vircaps2xmldata/linux-basic/system/node/node2/cpu11 ../../cpu/cpu11 +tests/vircaps2xmldata/linux-basic/system/node/node2/cpu8 ../../cpu/cpu8 +tests/vircaps2xmldata/linux-basic/system/node/node2/cpu9 ../../cpu/cpu9 +tests/vircaps2xmldata/linux-basic/system/node/node3/cpu12 ../../cpu/cpu12 +tests/vircaps2xmldata/linux-basic/system/node/node3/cpu13 ../../cpu/cpu13 +tests/vircaps2xmldata/linux-basic/system/node/node3/cpu14 ../../cpu/cpu14 +tests/vircaps2xmldata/linux-basic/system/node/node3/cpu15 ../../cpu/cpu15 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu0 ../../cpu/cpu0 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu1 ../../cpu/cpu1 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu2 ../../cpu/cpu2 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu3 ../../cpu/cpu3 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu4 ../../cpu/cpu4 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu5 ../../cpu/cpu5 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu6 ../../cpu/cpu6 +tests/vircaps2xmldata/linux-caches/system/node/node0/cpu7 ../../cpu/cpu7 +tests/vircaps2xmldata/linux-hmat/system/node/node0/access1/targets/node1 ../../../node1 +tests/vircaps2xmldata/linux-resctrl-cdp/system ../linux-resctrl/system/ +tests/vircaps2xmldata/linux-resctrl-cmt/system ../linux-resctrl/system +tests/vircaps2xmldata/linux-resctrl-fake-feature/system ../linux-resctrl/system +tests/vircaps2xmldata/linux-resctrl-skx-twocaches/system/node/node0/cpu0 ../../cpu/cpu0 +tests/vircaps2xmldata/linux-resctrl-skx/system/node/node0/cpu0 ../../cpu/cpu0 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu0 ../../cpu/cpu0 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu1 ../../cpu/cpu1 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu2 ../../cpu/cpu2 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu3 ../../cpu/cpu3 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu4 ../../cpu/cpu4 +tests/vircaps2xmldata/linux-resctrl/system/node/node0/cpu5 ../../cpu/cpu5 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu10 ../../cpu/cpu10 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu11 ../../cpu/cpu11 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu6 ../../cpu/cpu6 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu7 ../../cpu/cpu7 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu8 ../../cpu/cpu8 +tests/vircaps2xmldata/linux-resctrl/system/node/node1/cpu9 ../../cpu/cpu9 +tests/virfilecachedata/9ca150bf3119b75dcac8e8bae4bc3a28e75bc3e262757001e8b953580f5e75ef.cache 5f3154560c130108b282a2aa15b1658aa16923e46497dd8deeb6be287ddb0ca0.cache +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu100 ../../cpu/cpu100 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu101 ../../cpu/cpu101 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu102 ../../cpu/cpu102 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu103 ../../cpu/cpu103 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu144 ../../cpu/cpu144 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu145 ../../cpu/cpu145 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu146 ../../cpu/cpu146 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu147 ../../cpu/cpu147 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu148 ../../cpu/cpu148 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu149 ../../cpu/cpu149 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu150 ../../cpu/cpu150 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu151 ../../cpu/cpu151 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu152 ../../cpu/cpu152 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu153 ../../cpu/cpu153 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu154 ../../cpu/cpu154 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu155 ../../cpu/cpu155 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu156 ../../cpu/cpu156 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu157 ../../cpu/cpu157 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu158 ../../cpu/cpu158 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu159 ../../cpu/cpu159 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu56 ../../cpu/cpu56 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu57 ../../cpu/cpu57 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu58 ../../cpu/cpu58 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu59 ../../cpu/cpu59 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu60 ../../cpu/cpu60 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu61 ../../cpu/cpu61 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu62 ../../cpu/cpu62 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu63 ../../cpu/cpu63 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu64 ../../cpu/cpu64 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu65 ../../cpu/cpu65 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu66 ../../cpu/cpu66 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu67 ../../cpu/cpu67 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu68 ../../cpu/cpu68 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu69 ../../cpu/cpu69 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu70 ../../cpu/cpu70 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu71 ../../cpu/cpu71 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu80 ../../cpu/cpu80 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu81 ../../cpu/cpu81 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu82 ../../cpu/cpu82 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu83 ../../cpu/cpu83 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu84 ../../cpu/cpu84 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu85 ../../cpu/cpu85 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu86 ../../cpu/cpu86 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu87 ../../cpu/cpu87 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu88 ../../cpu/cpu88 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu89 ../../cpu/cpu89 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu90 ../../cpu/cpu90 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu91 ../../cpu/cpu91 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu92 ../../cpu/cpu92 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu93 ../../cpu/cpu93 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu94 ../../cpu/cpu94 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu95 ../../cpu/cpu95 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu96 ../../cpu/cpu96 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu97 ../../cpu/cpu97 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu98 ../../cpu/cpu98 +tests/virhostcpudata/linux-deconf-cpus/node/node0/cpu99 ../../cpu/cpu99 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu48 ../../cpu/cpu48 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu49 ../../cpu/cpu49 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu50 ../../cpu/cpu50 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu51 ../../cpu/cpu51 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu52 ../../cpu/cpu52 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu53 ../../cpu/cpu53 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu54 ../../cpu/cpu54 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu55 ../../cpu/cpu55 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu72 ../../cpu/cpu72 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu73 ../../cpu/cpu73 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu74 ../../cpu/cpu74 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu75 ../../cpu/cpu75 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu76 ../../cpu/cpu76 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu77 ../../cpu/cpu77 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu78 ../../cpu/cpu78 +tests/virhostcpudata/linux-deconf-cpus/node/node1/cpu79 ../../cpu/cpu79 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu104 ../../cpu/cpu104 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu105 ../../cpu/cpu105 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu106 ../../cpu/cpu106 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu107 ../../cpu/cpu107 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu108 ../../cpu/cpu108 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu109 ../../cpu/cpu109 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu110 ../../cpu/cpu110 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu111 ../../cpu/cpu111 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu112 ../../cpu/cpu112 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu113 ../../cpu/cpu113 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu114 ../../cpu/cpu114 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu115 ../../cpu/cpu115 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu116 ../../cpu/cpu116 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu117 ../../cpu/cpu117 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu118 ../../cpu/cpu118 +tests/virhostcpudata/linux-deconf-cpus/node/node16/cpu119 ../../cpu/cpu119 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu120 ../../cpu/cpu120 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu121 ../../cpu/cpu121 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu122 ../../cpu/cpu122 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu123 ../../cpu/cpu123 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu124 ../../cpu/cpu124 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu125 ../../cpu/cpu125 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu126 ../../cpu/cpu126 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu127 ../../cpu/cpu127 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu128 ../../cpu/cpu128 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu129 ../../cpu/cpu129 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu130 ../../cpu/cpu130 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu131 ../../cpu/cpu131 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu132 ../../cpu/cpu132 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu133 ../../cpu/cpu133 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu134 ../../cpu/cpu134 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu135 ../../cpu/cpu135 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu136 ../../cpu/cpu136 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu137 ../../cpu/cpu137 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu138 ../../cpu/cpu138 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu139 ../../cpu/cpu139 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu140 ../../cpu/cpu140 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu141 ../../cpu/cpu141 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu142 ../../cpu/cpu142 +tests/virhostcpudata/linux-deconf-cpus/node/node17/cpu143 ../../cpu/cpu143 +tests/virhostcpudata/linux-high-ids/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-high-ids/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-high-ids/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-high-ids/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-high-ids/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-high-ids/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-high-ids/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-high-ids/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-high-ids/node/node1/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-high-ids/node/node1/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-high-ids/node/node1/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-high-ids/node/node1/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-high-ids/node/node1/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-high-ids/node/node1/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-high-ids/node/node1/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-high-ids/node/node1/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-rhel74-moonshot/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-subcores1/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-subcores1/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-subcores1/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-subcores1/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-subcores1/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-subcores1/node/node0/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-subcores1/node/node0/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-subcores1/node/node0/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-subcores1/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-subcores1/node/node0/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-subcores1/node/node0/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-subcores1/node/node0/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-subcores1/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-subcores1/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-subcores1/node/node0/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-subcores1/node/node0/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-subcores1/node/node0/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-subcores1/node/node0/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-subcores1/node/node0/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-subcores1/node/node0/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-subcores1/node/node0/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-subcores1/node/node0/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-subcores1/node/node0/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-subcores1/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-subcores1/node/node0/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-subcores1/node/node0/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-subcores1/node/node0/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-subcores1/node/node0/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-subcores1/node/node0/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-subcores1/node/node0/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-subcores1/node/node0/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-subcores1/node/node0/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-subcores1/node/node0/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-subcores1/node/node0/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-subcores1/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-subcores1/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-subcores1/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-subcores1/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-subcores1/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-subcores1/node/node0/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-subcores1/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-subcores1/node/node1/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-subcores1/node/node1/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-subcores1/node/node1/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-subcores1/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-subcores1/node/node1/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-subcores1/node/node1/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-subcores1/node/node1/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-subcores1/node/node1/cpu48 ../../cpu/cpu48 +tests/virhostcpudata/linux-subcores1/node/node1/cpu49 ../../cpu/cpu49 +tests/virhostcpudata/linux-subcores1/node/node1/cpu50 ../../cpu/cpu50 +tests/virhostcpudata/linux-subcores1/node/node1/cpu51 ../../cpu/cpu51 +tests/virhostcpudata/linux-subcores1/node/node1/cpu52 ../../cpu/cpu52 +tests/virhostcpudata/linux-subcores1/node/node1/cpu53 ../../cpu/cpu53 +tests/virhostcpudata/linux-subcores1/node/node1/cpu54 ../../cpu/cpu54 +tests/virhostcpudata/linux-subcores1/node/node1/cpu55 ../../cpu/cpu55 +tests/virhostcpudata/linux-subcores1/node/node1/cpu56 ../../cpu/cpu56 +tests/virhostcpudata/linux-subcores1/node/node1/cpu57 ../../cpu/cpu57 +tests/virhostcpudata/linux-subcores1/node/node1/cpu58 ../../cpu/cpu58 +tests/virhostcpudata/linux-subcores1/node/node1/cpu59 ../../cpu/cpu59 +tests/virhostcpudata/linux-subcores1/node/node1/cpu60 ../../cpu/cpu60 +tests/virhostcpudata/linux-subcores1/node/node1/cpu61 ../../cpu/cpu61 +tests/virhostcpudata/linux-subcores1/node/node1/cpu62 ../../cpu/cpu62 +tests/virhostcpudata/linux-subcores1/node/node1/cpu63 ../../cpu/cpu63 +tests/virhostcpudata/linux-subcores1/node/node1/cpu64 ../../cpu/cpu64 +tests/virhostcpudata/linux-subcores1/node/node1/cpu65 ../../cpu/cpu65 +tests/virhostcpudata/linux-subcores1/node/node1/cpu66 ../../cpu/cpu66 +tests/virhostcpudata/linux-subcores1/node/node1/cpu67 ../../cpu/cpu67 +tests/virhostcpudata/linux-subcores1/node/node1/cpu68 ../../cpu/cpu68 +tests/virhostcpudata/linux-subcores1/node/node1/cpu69 ../../cpu/cpu69 +tests/virhostcpudata/linux-subcores1/node/node1/cpu70 ../../cpu/cpu70 +tests/virhostcpudata/linux-subcores1/node/node1/cpu71 ../../cpu/cpu71 +tests/virhostcpudata/linux-subcores1/node/node1/cpu72 ../../cpu/cpu72 +tests/virhostcpudata/linux-subcores1/node/node1/cpu73 ../../cpu/cpu73 +tests/virhostcpudata/linux-subcores1/node/node1/cpu74 ../../cpu/cpu74 +tests/virhostcpudata/linux-subcores1/node/node1/cpu75 ../../cpu/cpu75 +tests/virhostcpudata/linux-subcores1/node/node1/cpu76 ../../cpu/cpu76 +tests/virhostcpudata/linux-subcores1/node/node1/cpu77 ../../cpu/cpu77 +tests/virhostcpudata/linux-subcores1/node/node1/cpu78 ../../cpu/cpu78 +tests/virhostcpudata/linux-subcores1/node/node1/cpu79 ../../cpu/cpu79 +tests/virhostcpudata/linux-subcores1/node/node16/cpu100 ../../cpu/cpu100 +tests/virhostcpudata/linux-subcores1/node/node16/cpu101 ../../cpu/cpu101 +tests/virhostcpudata/linux-subcores1/node/node16/cpu102 ../../cpu/cpu102 +tests/virhostcpudata/linux-subcores1/node/node16/cpu103 ../../cpu/cpu103 +tests/virhostcpudata/linux-subcores1/node/node16/cpu104 ../../cpu/cpu104 +tests/virhostcpudata/linux-subcores1/node/node16/cpu105 ../../cpu/cpu105 +tests/virhostcpudata/linux-subcores1/node/node16/cpu106 ../../cpu/cpu106 +tests/virhostcpudata/linux-subcores1/node/node16/cpu107 ../../cpu/cpu107 +tests/virhostcpudata/linux-subcores1/node/node16/cpu108 ../../cpu/cpu108 +tests/virhostcpudata/linux-subcores1/node/node16/cpu109 ../../cpu/cpu109 +tests/virhostcpudata/linux-subcores1/node/node16/cpu110 ../../cpu/cpu110 +tests/virhostcpudata/linux-subcores1/node/node16/cpu111 ../../cpu/cpu111 +tests/virhostcpudata/linux-subcores1/node/node16/cpu112 ../../cpu/cpu112 +tests/virhostcpudata/linux-subcores1/node/node16/cpu113 ../../cpu/cpu113 +tests/virhostcpudata/linux-subcores1/node/node16/cpu114 ../../cpu/cpu114 +tests/virhostcpudata/linux-subcores1/node/node16/cpu115 ../../cpu/cpu115 +tests/virhostcpudata/linux-subcores1/node/node16/cpu116 ../../cpu/cpu116 +tests/virhostcpudata/linux-subcores1/node/node16/cpu117 ../../cpu/cpu117 +tests/virhostcpudata/linux-subcores1/node/node16/cpu118 ../../cpu/cpu118 +tests/virhostcpudata/linux-subcores1/node/node16/cpu119 ../../cpu/cpu119 +tests/virhostcpudata/linux-subcores1/node/node16/cpu80 ../../cpu/cpu80 +tests/virhostcpudata/linux-subcores1/node/node16/cpu81 ../../cpu/cpu81 +tests/virhostcpudata/linux-subcores1/node/node16/cpu82 ../../cpu/cpu82 +tests/virhostcpudata/linux-subcores1/node/node16/cpu83 ../../cpu/cpu83 +tests/virhostcpudata/linux-subcores1/node/node16/cpu84 ../../cpu/cpu84 +tests/virhostcpudata/linux-subcores1/node/node16/cpu85 ../../cpu/cpu85 +tests/virhostcpudata/linux-subcores1/node/node16/cpu86 ../../cpu/cpu86 +tests/virhostcpudata/linux-subcores1/node/node16/cpu87 ../../cpu/cpu87 +tests/virhostcpudata/linux-subcores1/node/node16/cpu88 ../../cpu/cpu88 +tests/virhostcpudata/linux-subcores1/node/node16/cpu89 ../../cpu/cpu89 +tests/virhostcpudata/linux-subcores1/node/node16/cpu90 ../../cpu/cpu90 +tests/virhostcpudata/linux-subcores1/node/node16/cpu91 ../../cpu/cpu91 +tests/virhostcpudata/linux-subcores1/node/node16/cpu92 ../../cpu/cpu92 +tests/virhostcpudata/linux-subcores1/node/node16/cpu93 ../../cpu/cpu93 +tests/virhostcpudata/linux-subcores1/node/node16/cpu94 ../../cpu/cpu94 +tests/virhostcpudata/linux-subcores1/node/node16/cpu95 ../../cpu/cpu95 +tests/virhostcpudata/linux-subcores1/node/node16/cpu96 ../../cpu/cpu96 +tests/virhostcpudata/linux-subcores1/node/node16/cpu97 ../../cpu/cpu97 +tests/virhostcpudata/linux-subcores1/node/node16/cpu98 ../../cpu/cpu98 +tests/virhostcpudata/linux-subcores1/node/node16/cpu99 ../../cpu/cpu99 +tests/virhostcpudata/linux-subcores1/node/node17/cpu120 ../../cpu/cpu120 +tests/virhostcpudata/linux-subcores1/node/node17/cpu121 ../../cpu/cpu121 +tests/virhostcpudata/linux-subcores1/node/node17/cpu122 ../../cpu/cpu122 +tests/virhostcpudata/linux-subcores1/node/node17/cpu123 ../../cpu/cpu123 +tests/virhostcpudata/linux-subcores1/node/node17/cpu124 ../../cpu/cpu124 +tests/virhostcpudata/linux-subcores1/node/node17/cpu125 ../../cpu/cpu125 +tests/virhostcpudata/linux-subcores1/node/node17/cpu126 ../../cpu/cpu126 +tests/virhostcpudata/linux-subcores1/node/node17/cpu127 ../../cpu/cpu127 +tests/virhostcpudata/linux-subcores1/node/node17/cpu128 ../../cpu/cpu128 +tests/virhostcpudata/linux-subcores1/node/node17/cpu129 ../../cpu/cpu129 +tests/virhostcpudata/linux-subcores1/node/node17/cpu130 ../../cpu/cpu130 +tests/virhostcpudata/linux-subcores1/node/node17/cpu131 ../../cpu/cpu131 +tests/virhostcpudata/linux-subcores1/node/node17/cpu132 ../../cpu/cpu132 +tests/virhostcpudata/linux-subcores1/node/node17/cpu133 ../../cpu/cpu133 +tests/virhostcpudata/linux-subcores1/node/node17/cpu134 ../../cpu/cpu134 +tests/virhostcpudata/linux-subcores1/node/node17/cpu135 ../../cpu/cpu135 +tests/virhostcpudata/linux-subcores1/node/node17/cpu136 ../../cpu/cpu136 +tests/virhostcpudata/linux-subcores1/node/node17/cpu137 ../../cpu/cpu137 +tests/virhostcpudata/linux-subcores1/node/node17/cpu138 ../../cpu/cpu138 +tests/virhostcpudata/linux-subcores1/node/node17/cpu139 ../../cpu/cpu139 +tests/virhostcpudata/linux-subcores1/node/node17/cpu140 ../../cpu/cpu140 +tests/virhostcpudata/linux-subcores1/node/node17/cpu141 ../../cpu/cpu141 +tests/virhostcpudata/linux-subcores1/node/node17/cpu142 ../../cpu/cpu142 +tests/virhostcpudata/linux-subcores1/node/node17/cpu143 ../../cpu/cpu143 +tests/virhostcpudata/linux-subcores1/node/node17/cpu144 ../../cpu/cpu144 +tests/virhostcpudata/linux-subcores1/node/node17/cpu145 ../../cpu/cpu145 +tests/virhostcpudata/linux-subcores1/node/node17/cpu146 ../../cpu/cpu146 +tests/virhostcpudata/linux-subcores1/node/node17/cpu147 ../../cpu/cpu147 +tests/virhostcpudata/linux-subcores1/node/node17/cpu148 ../../cpu/cpu148 +tests/virhostcpudata/linux-subcores1/node/node17/cpu149 ../../cpu/cpu149 +tests/virhostcpudata/linux-subcores1/node/node17/cpu150 ../../cpu/cpu150 +tests/virhostcpudata/linux-subcores1/node/node17/cpu151 ../../cpu/cpu151 +tests/virhostcpudata/linux-subcores1/node/node17/cpu152 ../../cpu/cpu152 +tests/virhostcpudata/linux-subcores1/node/node17/cpu153 ../../cpu/cpu153 +tests/virhostcpudata/linux-subcores1/node/node17/cpu154 ../../cpu/cpu154 +tests/virhostcpudata/linux-subcores1/node/node17/cpu155 ../../cpu/cpu155 +tests/virhostcpudata/linux-subcores1/node/node17/cpu156 ../../cpu/cpu156 +tests/virhostcpudata/linux-subcores1/node/node17/cpu157 ../../cpu/cpu157 +tests/virhostcpudata/linux-subcores1/node/node17/cpu158 ../../cpu/cpu158 +tests/virhostcpudata/linux-subcores1/node/node17/cpu159 ../../cpu/cpu159 +tests/virhostcpudata/linux-subcores2/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-subcores2/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-subcores2/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-subcores2/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-subcores2/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-subcores2/node/node0/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-subcores2/node/node0/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-subcores2/node/node0/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-subcores2/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-subcores2/node/node0/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-subcores2/node/node0/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-subcores2/node/node0/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-subcores2/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-subcores2/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-subcores2/node/node0/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-subcores2/node/node0/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-subcores2/node/node0/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-subcores2/node/node0/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-subcores2/node/node0/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-subcores2/node/node0/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-subcores2/node/node0/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-subcores2/node/node0/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-subcores2/node/node0/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-subcores2/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-subcores2/node/node0/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-subcores2/node/node0/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-subcores2/node/node0/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-subcores2/node/node0/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-subcores2/node/node0/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-subcores2/node/node0/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-subcores2/node/node0/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-subcores2/node/node0/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-subcores2/node/node0/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-subcores2/node/node0/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-subcores2/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-subcores2/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-subcores2/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-subcores2/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-subcores2/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-subcores2/node/node0/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-subcores2/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-subcores2/node/node1/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-subcores2/node/node1/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-subcores2/node/node1/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-subcores2/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-subcores2/node/node1/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-subcores2/node/node1/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-subcores2/node/node1/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-subcores2/node/node1/cpu48 ../../cpu/cpu48 +tests/virhostcpudata/linux-subcores2/node/node1/cpu49 ../../cpu/cpu49 +tests/virhostcpudata/linux-subcores2/node/node1/cpu50 ../../cpu/cpu50 +tests/virhostcpudata/linux-subcores2/node/node1/cpu51 ../../cpu/cpu51 +tests/virhostcpudata/linux-subcores2/node/node1/cpu52 ../../cpu/cpu52 +tests/virhostcpudata/linux-subcores2/node/node1/cpu53 ../../cpu/cpu53 +tests/virhostcpudata/linux-subcores2/node/node1/cpu54 ../../cpu/cpu54 +tests/virhostcpudata/linux-subcores2/node/node1/cpu55 ../../cpu/cpu55 +tests/virhostcpudata/linux-subcores2/node/node1/cpu56 ../../cpu/cpu56 +tests/virhostcpudata/linux-subcores2/node/node1/cpu57 ../../cpu/cpu57 +tests/virhostcpudata/linux-subcores2/node/node1/cpu58 ../../cpu/cpu58 +tests/virhostcpudata/linux-subcores2/node/node1/cpu59 ../../cpu/cpu59 +tests/virhostcpudata/linux-subcores2/node/node1/cpu60 ../../cpu/cpu60 +tests/virhostcpudata/linux-subcores2/node/node1/cpu61 ../../cpu/cpu61 +tests/virhostcpudata/linux-subcores2/node/node1/cpu62 ../../cpu/cpu62 +tests/virhostcpudata/linux-subcores2/node/node1/cpu63 ../../cpu/cpu63 +tests/virhostcpudata/linux-subcores2/node/node1/cpu64 ../../cpu/cpu64 +tests/virhostcpudata/linux-subcores2/node/node1/cpu65 ../../cpu/cpu65 +tests/virhostcpudata/linux-subcores2/node/node1/cpu66 ../../cpu/cpu66 +tests/virhostcpudata/linux-subcores2/node/node1/cpu67 ../../cpu/cpu67 +tests/virhostcpudata/linux-subcores2/node/node1/cpu68 ../../cpu/cpu68 +tests/virhostcpudata/linux-subcores2/node/node1/cpu69 ../../cpu/cpu69 +tests/virhostcpudata/linux-subcores2/node/node1/cpu70 ../../cpu/cpu70 +tests/virhostcpudata/linux-subcores2/node/node1/cpu71 ../../cpu/cpu71 +tests/virhostcpudata/linux-subcores2/node/node1/cpu72 ../../cpu/cpu72 +tests/virhostcpudata/linux-subcores2/node/node1/cpu73 ../../cpu/cpu73 +tests/virhostcpudata/linux-subcores2/node/node1/cpu74 ../../cpu/cpu74 +tests/virhostcpudata/linux-subcores2/node/node1/cpu75 ../../cpu/cpu75 +tests/virhostcpudata/linux-subcores2/node/node1/cpu76 ../../cpu/cpu76 +tests/virhostcpudata/linux-subcores2/node/node1/cpu77 ../../cpu/cpu77 +tests/virhostcpudata/linux-subcores2/node/node1/cpu78 ../../cpu/cpu78 +tests/virhostcpudata/linux-subcores2/node/node1/cpu79 ../../cpu/cpu79 +tests/virhostcpudata/linux-subcores2/node/node16/cpu100 ../../cpu/cpu100 +tests/virhostcpudata/linux-subcores2/node/node16/cpu101 ../../cpu/cpu101 +tests/virhostcpudata/linux-subcores2/node/node16/cpu102 ../../cpu/cpu102 +tests/virhostcpudata/linux-subcores2/node/node16/cpu103 ../../cpu/cpu103 +tests/virhostcpudata/linux-subcores2/node/node16/cpu104 ../../cpu/cpu104 +tests/virhostcpudata/linux-subcores2/node/node16/cpu105 ../../cpu/cpu105 +tests/virhostcpudata/linux-subcores2/node/node16/cpu106 ../../cpu/cpu106 +tests/virhostcpudata/linux-subcores2/node/node16/cpu107 ../../cpu/cpu107 +tests/virhostcpudata/linux-subcores2/node/node16/cpu108 ../../cpu/cpu108 +tests/virhostcpudata/linux-subcores2/node/node16/cpu109 ../../cpu/cpu109 +tests/virhostcpudata/linux-subcores2/node/node16/cpu110 ../../cpu/cpu110 +tests/virhostcpudata/linux-subcores2/node/node16/cpu111 ../../cpu/cpu111 +tests/virhostcpudata/linux-subcores2/node/node16/cpu112 ../../cpu/cpu112 +tests/virhostcpudata/linux-subcores2/node/node16/cpu113 ../../cpu/cpu113 +tests/virhostcpudata/linux-subcores2/node/node16/cpu114 ../../cpu/cpu114 +tests/virhostcpudata/linux-subcores2/node/node16/cpu115 ../../cpu/cpu115 +tests/virhostcpudata/linux-subcores2/node/node16/cpu116 ../../cpu/cpu116 +tests/virhostcpudata/linux-subcores2/node/node16/cpu117 ../../cpu/cpu117 +tests/virhostcpudata/linux-subcores2/node/node16/cpu118 ../../cpu/cpu118 +tests/virhostcpudata/linux-subcores2/node/node16/cpu119 ../../cpu/cpu119 +tests/virhostcpudata/linux-subcores2/node/node16/cpu80 ../../cpu/cpu80 +tests/virhostcpudata/linux-subcores2/node/node16/cpu81 ../../cpu/cpu81 +tests/virhostcpudata/linux-subcores2/node/node16/cpu82 ../../cpu/cpu82 +tests/virhostcpudata/linux-subcores2/node/node16/cpu83 ../../cpu/cpu83 +tests/virhostcpudata/linux-subcores2/node/node16/cpu84 ../../cpu/cpu84 +tests/virhostcpudata/linux-subcores2/node/node16/cpu85 ../../cpu/cpu85 +tests/virhostcpudata/linux-subcores2/node/node16/cpu86 ../../cpu/cpu86 +tests/virhostcpudata/linux-subcores2/node/node16/cpu87 ../../cpu/cpu87 +tests/virhostcpudata/linux-subcores2/node/node16/cpu88 ../../cpu/cpu88 +tests/virhostcpudata/linux-subcores2/node/node16/cpu89 ../../cpu/cpu89 +tests/virhostcpudata/linux-subcores2/node/node16/cpu90 ../../cpu/cpu90 +tests/virhostcpudata/linux-subcores2/node/node16/cpu91 ../../cpu/cpu91 +tests/virhostcpudata/linux-subcores2/node/node16/cpu92 ../../cpu/cpu92 +tests/virhostcpudata/linux-subcores2/node/node16/cpu93 ../../cpu/cpu93 +tests/virhostcpudata/linux-subcores2/node/node16/cpu94 ../../cpu/cpu94 +tests/virhostcpudata/linux-subcores2/node/node16/cpu95 ../../cpu/cpu95 +tests/virhostcpudata/linux-subcores2/node/node16/cpu96 ../../cpu/cpu96 +tests/virhostcpudata/linux-subcores2/node/node16/cpu97 ../../cpu/cpu97 +tests/virhostcpudata/linux-subcores2/node/node16/cpu98 ../../cpu/cpu98 +tests/virhostcpudata/linux-subcores2/node/node16/cpu99 ../../cpu/cpu99 +tests/virhostcpudata/linux-subcores2/node/node17/cpu120 ../../cpu/cpu120 +tests/virhostcpudata/linux-subcores2/node/node17/cpu121 ../../cpu/cpu121 +tests/virhostcpudata/linux-subcores2/node/node17/cpu122 ../../cpu/cpu122 +tests/virhostcpudata/linux-subcores2/node/node17/cpu123 ../../cpu/cpu123 +tests/virhostcpudata/linux-subcores2/node/node17/cpu124 ../../cpu/cpu124 +tests/virhostcpudata/linux-subcores2/node/node17/cpu125 ../../cpu/cpu125 +tests/virhostcpudata/linux-subcores2/node/node17/cpu126 ../../cpu/cpu126 +tests/virhostcpudata/linux-subcores2/node/node17/cpu127 ../../cpu/cpu127 +tests/virhostcpudata/linux-subcores2/node/node17/cpu128 ../../cpu/cpu128 +tests/virhostcpudata/linux-subcores2/node/node17/cpu129 ../../cpu/cpu129 +tests/virhostcpudata/linux-subcores2/node/node17/cpu130 ../../cpu/cpu130 +tests/virhostcpudata/linux-subcores2/node/node17/cpu131 ../../cpu/cpu131 +tests/virhostcpudata/linux-subcores2/node/node17/cpu132 ../../cpu/cpu132 +tests/virhostcpudata/linux-subcores2/node/node17/cpu133 ../../cpu/cpu133 +tests/virhostcpudata/linux-subcores2/node/node17/cpu134 ../../cpu/cpu134 +tests/virhostcpudata/linux-subcores2/node/node17/cpu135 ../../cpu/cpu135 +tests/virhostcpudata/linux-subcores2/node/node17/cpu136 ../../cpu/cpu136 +tests/virhostcpudata/linux-subcores2/node/node17/cpu137 ../../cpu/cpu137 +tests/virhostcpudata/linux-subcores2/node/node17/cpu138 ../../cpu/cpu138 +tests/virhostcpudata/linux-subcores2/node/node17/cpu139 ../../cpu/cpu139 +tests/virhostcpudata/linux-subcores2/node/node17/cpu140 ../../cpu/cpu140 +tests/virhostcpudata/linux-subcores2/node/node17/cpu141 ../../cpu/cpu141 +tests/virhostcpudata/linux-subcores2/node/node17/cpu142 ../../cpu/cpu142 +tests/virhostcpudata/linux-subcores2/node/node17/cpu143 ../../cpu/cpu143 +tests/virhostcpudata/linux-subcores2/node/node17/cpu144 ../../cpu/cpu144 +tests/virhostcpudata/linux-subcores2/node/node17/cpu145 ../../cpu/cpu145 +tests/virhostcpudata/linux-subcores2/node/node17/cpu146 ../../cpu/cpu146 +tests/virhostcpudata/linux-subcores2/node/node17/cpu147 ../../cpu/cpu147 +tests/virhostcpudata/linux-subcores2/node/node17/cpu148 ../../cpu/cpu148 +tests/virhostcpudata/linux-subcores2/node/node17/cpu149 ../../cpu/cpu149 +tests/virhostcpudata/linux-subcores2/node/node17/cpu150 ../../cpu/cpu150 +tests/virhostcpudata/linux-subcores2/node/node17/cpu151 ../../cpu/cpu151 +tests/virhostcpudata/linux-subcores2/node/node17/cpu152 ../../cpu/cpu152 +tests/virhostcpudata/linux-subcores2/node/node17/cpu153 ../../cpu/cpu153 +tests/virhostcpudata/linux-subcores2/node/node17/cpu154 ../../cpu/cpu154 +tests/virhostcpudata/linux-subcores2/node/node17/cpu155 ../../cpu/cpu155 +tests/virhostcpudata/linux-subcores2/node/node17/cpu156 ../../cpu/cpu156 +tests/virhostcpudata/linux-subcores2/node/node17/cpu157 ../../cpu/cpu157 +tests/virhostcpudata/linux-subcores2/node/node17/cpu158 ../../cpu/cpu158 +tests/virhostcpudata/linux-subcores2/node/node17/cpu159 ../../cpu/cpu159 +tests/virhostcpudata/linux-subcores3/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-subcores3/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-subcores3/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-subcores3/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-subcores3/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-subcores3/node/node0/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-subcores3/node/node0/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-subcores3/node/node0/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-subcores3/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-subcores3/node/node0/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-subcores3/node/node0/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-subcores3/node/node0/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-subcores3/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-subcores3/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-subcores3/node/node0/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-subcores3/node/node0/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-subcores3/node/node0/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-subcores3/node/node0/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-subcores3/node/node0/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-subcores3/node/node0/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-subcores3/node/node0/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-subcores3/node/node0/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-subcores3/node/node0/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-subcores3/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-subcores3/node/node0/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-subcores3/node/node0/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-subcores3/node/node0/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-subcores3/node/node0/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-subcores3/node/node0/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-subcores3/node/node0/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-subcores3/node/node0/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-subcores3/node/node0/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-subcores3/node/node0/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-subcores3/node/node0/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-subcores3/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-subcores3/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-subcores3/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-subcores3/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-subcores3/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-subcores3/node/node0/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-subcores3/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-subcores3/node/node1/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-subcores3/node/node1/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-subcores3/node/node1/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-subcores3/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-subcores3/node/node1/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-subcores3/node/node1/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-subcores3/node/node1/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-subcores3/node/node1/cpu48 ../../cpu/cpu48 +tests/virhostcpudata/linux-subcores3/node/node1/cpu49 ../../cpu/cpu49 +tests/virhostcpudata/linux-subcores3/node/node1/cpu50 ../../cpu/cpu50 +tests/virhostcpudata/linux-subcores3/node/node1/cpu51 ../../cpu/cpu51 +tests/virhostcpudata/linux-subcores3/node/node1/cpu52 ../../cpu/cpu52 +tests/virhostcpudata/linux-subcores3/node/node1/cpu53 ../../cpu/cpu53 +tests/virhostcpudata/linux-subcores3/node/node1/cpu54 ../../cpu/cpu54 +tests/virhostcpudata/linux-subcores3/node/node1/cpu55 ../../cpu/cpu55 +tests/virhostcpudata/linux-subcores3/node/node1/cpu56 ../../cpu/cpu56 +tests/virhostcpudata/linux-subcores3/node/node1/cpu57 ../../cpu/cpu57 +tests/virhostcpudata/linux-subcores3/node/node1/cpu58 ../../cpu/cpu58 +tests/virhostcpudata/linux-subcores3/node/node1/cpu59 ../../cpu/cpu59 +tests/virhostcpudata/linux-subcores3/node/node1/cpu60 ../../cpu/cpu60 +tests/virhostcpudata/linux-subcores3/node/node1/cpu61 ../../cpu/cpu61 +tests/virhostcpudata/linux-subcores3/node/node1/cpu62 ../../cpu/cpu62 +tests/virhostcpudata/linux-subcores3/node/node1/cpu63 ../../cpu/cpu63 +tests/virhostcpudata/linux-subcores3/node/node1/cpu64 ../../cpu/cpu64 +tests/virhostcpudata/linux-subcores3/node/node1/cpu65 ../../cpu/cpu65 +tests/virhostcpudata/linux-subcores3/node/node1/cpu66 ../../cpu/cpu66 +tests/virhostcpudata/linux-subcores3/node/node1/cpu67 ../../cpu/cpu67 +tests/virhostcpudata/linux-subcores3/node/node1/cpu68 ../../cpu/cpu68 +tests/virhostcpudata/linux-subcores3/node/node1/cpu69 ../../cpu/cpu69 +tests/virhostcpudata/linux-subcores3/node/node1/cpu70 ../../cpu/cpu70 +tests/virhostcpudata/linux-subcores3/node/node1/cpu71 ../../cpu/cpu71 +tests/virhostcpudata/linux-subcores3/node/node1/cpu72 ../../cpu/cpu72 +tests/virhostcpudata/linux-subcores3/node/node1/cpu73 ../../cpu/cpu73 +tests/virhostcpudata/linux-subcores3/node/node1/cpu74 ../../cpu/cpu74 +tests/virhostcpudata/linux-subcores3/node/node1/cpu75 ../../cpu/cpu75 +tests/virhostcpudata/linux-subcores3/node/node1/cpu76 ../../cpu/cpu76 +tests/virhostcpudata/linux-subcores3/node/node1/cpu77 ../../cpu/cpu77 +tests/virhostcpudata/linux-subcores3/node/node1/cpu78 ../../cpu/cpu78 +tests/virhostcpudata/linux-subcores3/node/node1/cpu79 ../../cpu/cpu79 +tests/virhostcpudata/linux-subcores3/node/node16/cpu100 ../../cpu/cpu100 +tests/virhostcpudata/linux-subcores3/node/node16/cpu101 ../../cpu/cpu101 +tests/virhostcpudata/linux-subcores3/node/node16/cpu102 ../../cpu/cpu102 +tests/virhostcpudata/linux-subcores3/node/node16/cpu103 ../../cpu/cpu103 +tests/virhostcpudata/linux-subcores3/node/node16/cpu104 ../../cpu/cpu104 +tests/virhostcpudata/linux-subcores3/node/node16/cpu105 ../../cpu/cpu105 +tests/virhostcpudata/linux-subcores3/node/node16/cpu106 ../../cpu/cpu106 +tests/virhostcpudata/linux-subcores3/node/node16/cpu107 ../../cpu/cpu107 +tests/virhostcpudata/linux-subcores3/node/node16/cpu108 ../../cpu/cpu108 +tests/virhostcpudata/linux-subcores3/node/node16/cpu109 ../../cpu/cpu109 +tests/virhostcpudata/linux-subcores3/node/node16/cpu110 ../../cpu/cpu110 +tests/virhostcpudata/linux-subcores3/node/node16/cpu111 ../../cpu/cpu111 +tests/virhostcpudata/linux-subcores3/node/node16/cpu112 ../../cpu/cpu112 +tests/virhostcpudata/linux-subcores3/node/node16/cpu113 ../../cpu/cpu113 +tests/virhostcpudata/linux-subcores3/node/node16/cpu114 ../../cpu/cpu114 +tests/virhostcpudata/linux-subcores3/node/node16/cpu115 ../../cpu/cpu115 +tests/virhostcpudata/linux-subcores3/node/node16/cpu116 ../../cpu/cpu116 +tests/virhostcpudata/linux-subcores3/node/node16/cpu117 ../../cpu/cpu117 +tests/virhostcpudata/linux-subcores3/node/node16/cpu118 ../../cpu/cpu118 +tests/virhostcpudata/linux-subcores3/node/node16/cpu119 ../../cpu/cpu119 +tests/virhostcpudata/linux-subcores3/node/node16/cpu80 ../../cpu/cpu80 +tests/virhostcpudata/linux-subcores3/node/node16/cpu81 ../../cpu/cpu81 +tests/virhostcpudata/linux-subcores3/node/node16/cpu82 ../../cpu/cpu82 +tests/virhostcpudata/linux-subcores3/node/node16/cpu83 ../../cpu/cpu83 +tests/virhostcpudata/linux-subcores3/node/node16/cpu84 ../../cpu/cpu84 +tests/virhostcpudata/linux-subcores3/node/node16/cpu85 ../../cpu/cpu85 +tests/virhostcpudata/linux-subcores3/node/node16/cpu86 ../../cpu/cpu86 +tests/virhostcpudata/linux-subcores3/node/node16/cpu87 ../../cpu/cpu87 +tests/virhostcpudata/linux-subcores3/node/node16/cpu88 ../../cpu/cpu88 +tests/virhostcpudata/linux-subcores3/node/node16/cpu89 ../../cpu/cpu89 +tests/virhostcpudata/linux-subcores3/node/node16/cpu90 ../../cpu/cpu90 +tests/virhostcpudata/linux-subcores3/node/node16/cpu91 ../../cpu/cpu91 +tests/virhostcpudata/linux-subcores3/node/node16/cpu92 ../../cpu/cpu92 +tests/virhostcpudata/linux-subcores3/node/node16/cpu93 ../../cpu/cpu93 +tests/virhostcpudata/linux-subcores3/node/node16/cpu94 ../../cpu/cpu94 +tests/virhostcpudata/linux-subcores3/node/node16/cpu95 ../../cpu/cpu95 +tests/virhostcpudata/linux-subcores3/node/node16/cpu96 ../../cpu/cpu96 +tests/virhostcpudata/linux-subcores3/node/node16/cpu97 ../../cpu/cpu97 +tests/virhostcpudata/linux-subcores3/node/node16/cpu98 ../../cpu/cpu98 +tests/virhostcpudata/linux-subcores3/node/node16/cpu99 ../../cpu/cpu99 +tests/virhostcpudata/linux-subcores3/node/node17/cpu120 ../../cpu/cpu120 +tests/virhostcpudata/linux-subcores3/node/node17/cpu121 ../../cpu/cpu121 +tests/virhostcpudata/linux-subcores3/node/node17/cpu122 ../../cpu/cpu122 +tests/virhostcpudata/linux-subcores3/node/node17/cpu123 ../../cpu/cpu123 +tests/virhostcpudata/linux-subcores3/node/node17/cpu124 ../../cpu/cpu124 +tests/virhostcpudata/linux-subcores3/node/node17/cpu125 ../../cpu/cpu125 +tests/virhostcpudata/linux-subcores3/node/node17/cpu126 ../../cpu/cpu126 +tests/virhostcpudata/linux-subcores3/node/node17/cpu127 ../../cpu/cpu127 +tests/virhostcpudata/linux-subcores3/node/node17/cpu128 ../../cpu/cpu128 +tests/virhostcpudata/linux-subcores3/node/node17/cpu129 ../../cpu/cpu129 +tests/virhostcpudata/linux-subcores3/node/node17/cpu130 ../../cpu/cpu130 +tests/virhostcpudata/linux-subcores3/node/node17/cpu131 ../../cpu/cpu131 +tests/virhostcpudata/linux-subcores3/node/node17/cpu132 ../../cpu/cpu132 +tests/virhostcpudata/linux-subcores3/node/node17/cpu133 ../../cpu/cpu133 +tests/virhostcpudata/linux-subcores3/node/node17/cpu134 ../../cpu/cpu134 +tests/virhostcpudata/linux-subcores3/node/node17/cpu135 ../../cpu/cpu135 +tests/virhostcpudata/linux-subcores3/node/node17/cpu136 ../../cpu/cpu136 +tests/virhostcpudata/linux-subcores3/node/node17/cpu137 ../../cpu/cpu137 +tests/virhostcpudata/linux-subcores3/node/node17/cpu138 ../../cpu/cpu138 +tests/virhostcpudata/linux-subcores3/node/node17/cpu139 ../../cpu/cpu139 +tests/virhostcpudata/linux-subcores3/node/node17/cpu140 ../../cpu/cpu140 +tests/virhostcpudata/linux-subcores3/node/node17/cpu141 ../../cpu/cpu141 +tests/virhostcpudata/linux-subcores3/node/node17/cpu142 ../../cpu/cpu142 +tests/virhostcpudata/linux-subcores3/node/node17/cpu143 ../../cpu/cpu143 +tests/virhostcpudata/linux-subcores3/node/node17/cpu144 ../../cpu/cpu144 +tests/virhostcpudata/linux-subcores3/node/node17/cpu145 ../../cpu/cpu145 +tests/virhostcpudata/linux-subcores3/node/node17/cpu146 ../../cpu/cpu146 +tests/virhostcpudata/linux-subcores3/node/node17/cpu147 ../../cpu/cpu147 +tests/virhostcpudata/linux-subcores3/node/node17/cpu148 ../../cpu/cpu148 +tests/virhostcpudata/linux-subcores3/node/node17/cpu149 ../../cpu/cpu149 +tests/virhostcpudata/linux-subcores3/node/node17/cpu150 ../../cpu/cpu150 +tests/virhostcpudata/linux-subcores3/node/node17/cpu151 ../../cpu/cpu151 +tests/virhostcpudata/linux-subcores3/node/node17/cpu152 ../../cpu/cpu152 +tests/virhostcpudata/linux-subcores3/node/node17/cpu153 ../../cpu/cpu153 +tests/virhostcpudata/linux-subcores3/node/node17/cpu154 ../../cpu/cpu154 +tests/virhostcpudata/linux-subcores3/node/node17/cpu155 ../../cpu/cpu155 +tests/virhostcpudata/linux-subcores3/node/node17/cpu156 ../../cpu/cpu156 +tests/virhostcpudata/linux-subcores3/node/node17/cpu157 ../../cpu/cpu157 +tests/virhostcpudata/linux-subcores3/node/node17/cpu158 ../../cpu/cpu158 +tests/virhostcpudata/linux-subcores3/node/node17/cpu159 ../../cpu/cpu159 +tests/virhostcpudata/linux-test2/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test2/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test3/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test3/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-test3/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-test3/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-test3/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-test3/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-test3/node/node1/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-test3/node/node1/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-test3/node/node1/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-test3/node/node1/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-test3/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-test3/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-test3/node/node2/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-test3/node/node2/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-test3/node/node2/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-test3/node/node2/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-test3/node/node2/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-test3/node/node2/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-test3/node/node3/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-test3/node/node3/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-test3/node/node3/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-test3/node/node3/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-test3/node/node3/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-test3/node/node3/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-test3/node/node4/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-test3/node/node4/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-test3/node/node4/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-test3/node/node4/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-test3/node/node4/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-test3/node/node4/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-test3/node/node5/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-test3/node/node5/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-test3/node/node5/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-test3/node/node5/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-test3/node/node5/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-test3/node/node5/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-test3/node/node6/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test3/node/node6/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-test3/node/node6/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-test3/node/node6/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-test3/node/node6/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-test3/node/node6/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-test3/node/node7/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-test3/node/node7/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-test3/node/node7/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-test3/node/node7/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-test3/node/node7/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-test3/node/node7/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-test4/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test4/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test4/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-test4/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-test4/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-test4/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-test4/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-test4/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-test4/node/node1/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-test4/node/node1/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-test4/node/node1/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-test4/node/node1/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-test4/node/node1/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-test4/node/node1/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-test4/node/node1/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-test4/node/node1/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-test6/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test6/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test6/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-test6/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-test6/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-test6/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-test6/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-test6/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-test7/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test7/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test7/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-test7/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-test7/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-test7/node/node0/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-test7/node/node0/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-test7/node/node0/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-test7/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-test7/node/node0/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-test7/node/node0/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-test7/node/node0/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-test7/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-test7/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-test7/node/node0/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-test7/node/node0/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-test7/node/node0/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-test7/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-test7/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-test7/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-test7/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-test7/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-test7/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-test7/node/node0/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-test8/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-test8/node/node0/cpu12 ../../cpu/cpu12 +tests/virhostcpudata/linux-test8/node/node0/cpu16 ../../cpu/cpu16 +tests/virhostcpudata/linux-test8/node/node0/cpu20 ../../cpu/cpu20 +tests/virhostcpudata/linux-test8/node/node0/cpu24 ../../cpu/cpu24 +tests/virhostcpudata/linux-test8/node/node0/cpu28 ../../cpu/cpu28 +tests/virhostcpudata/linux-test8/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-test8/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-test8/node/node1/cpu32 ../../cpu/cpu32 +tests/virhostcpudata/linux-test8/node/node1/cpu36 ../../cpu/cpu36 +tests/virhostcpudata/linux-test8/node/node1/cpu40 ../../cpu/cpu40 +tests/virhostcpudata/linux-test8/node/node1/cpu44 ../../cpu/cpu44 +tests/virhostcpudata/linux-test8/node/node1/cpu48 ../../cpu/cpu48 +tests/virhostcpudata/linux-test8/node/node1/cpu52 ../../cpu/cpu52 +tests/virhostcpudata/linux-test8/node/node1/cpu56 ../../cpu/cpu56 +tests/virhostcpudata/linux-test8/node/node1/cpu60 ../../cpu/cpu60 +tests/virhostcpudata/linux-test8/node/node2/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-test8/node/node2/cpu13 ../../cpu/cpu13 +tests/virhostcpudata/linux-test8/node/node2/cpu17 ../../cpu/cpu17 +tests/virhostcpudata/linux-test8/node/node2/cpu21 ../../cpu/cpu21 +tests/virhostcpudata/linux-test8/node/node2/cpu25 ../../cpu/cpu25 +tests/virhostcpudata/linux-test8/node/node2/cpu29 ../../cpu/cpu29 +tests/virhostcpudata/linux-test8/node/node2/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-test8/node/node2/cpu9 ../../cpu/cpu9 +tests/virhostcpudata/linux-test8/node/node3/cpu33 ../../cpu/cpu33 +tests/virhostcpudata/linux-test8/node/node3/cpu37 ../../cpu/cpu37 +tests/virhostcpudata/linux-test8/node/node3/cpu41 ../../cpu/cpu41 +tests/virhostcpudata/linux-test8/node/node3/cpu45 ../../cpu/cpu45 +tests/virhostcpudata/linux-test8/node/node3/cpu49 ../../cpu/cpu49 +tests/virhostcpudata/linux-test8/node/node3/cpu53 ../../cpu/cpu53 +tests/virhostcpudata/linux-test8/node/node3/cpu57 ../../cpu/cpu57 +tests/virhostcpudata/linux-test8/node/node3/cpu61 ../../cpu/cpu61 +tests/virhostcpudata/linux-test8/node/node4/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-test8/node/node4/cpu14 ../../cpu/cpu14 +tests/virhostcpudata/linux-test8/node/node4/cpu18 ../../cpu/cpu18 +tests/virhostcpudata/linux-test8/node/node4/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-test8/node/node4/cpu22 ../../cpu/cpu22 +tests/virhostcpudata/linux-test8/node/node4/cpu26 ../../cpu/cpu26 +tests/virhostcpudata/linux-test8/node/node4/cpu30 ../../cpu/cpu30 +tests/virhostcpudata/linux-test8/node/node4/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-test8/node/node5/cpu34 ../../cpu/cpu34 +tests/virhostcpudata/linux-test8/node/node5/cpu38 ../../cpu/cpu38 +tests/virhostcpudata/linux-test8/node/node5/cpu42 ../../cpu/cpu42 +tests/virhostcpudata/linux-test8/node/node5/cpu46 ../../cpu/cpu46 +tests/virhostcpudata/linux-test8/node/node5/cpu50 ../../cpu/cpu50 +tests/virhostcpudata/linux-test8/node/node5/cpu54 ../../cpu/cpu54 +tests/virhostcpudata/linux-test8/node/node5/cpu58 ../../cpu/cpu58 +tests/virhostcpudata/linux-test8/node/node5/cpu62 ../../cpu/cpu62 +tests/virhostcpudata/linux-test8/node/node6/cpu35 ../../cpu/cpu35 +tests/virhostcpudata/linux-test8/node/node6/cpu39 ../../cpu/cpu39 +tests/virhostcpudata/linux-test8/node/node6/cpu43 ../../cpu/cpu43 +tests/virhostcpudata/linux-test8/node/node6/cpu47 ../../cpu/cpu47 +tests/virhostcpudata/linux-test8/node/node6/cpu51 ../../cpu/cpu51 +tests/virhostcpudata/linux-test8/node/node6/cpu55 ../../cpu/cpu55 +tests/virhostcpudata/linux-test8/node/node6/cpu59 ../../cpu/cpu59 +tests/virhostcpudata/linux-test8/node/node6/cpu63 ../../cpu/cpu63 +tests/virhostcpudata/linux-test8/node/node7/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-test8/node/node7/cpu15 ../../cpu/cpu15 +tests/virhostcpudata/linux-test8/node/node7/cpu19 ../../cpu/cpu19 +tests/virhostcpudata/linux-test8/node/node7/cpu23 ../../cpu/cpu23 +tests/virhostcpudata/linux-test8/node/node7/cpu27 ../../cpu/cpu27 +tests/virhostcpudata/linux-test8/node/node7/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-test8/node/node7/cpu31 ../../cpu/cpu31 +tests/virhostcpudata/linux-test8/node/node7/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-with-die/node/node0/cpu0 ../../cpu/cpu0 +tests/virhostcpudata/linux-with-die/node/node0/cpu1 ../../cpu/cpu1 +tests/virhostcpudata/linux-with-die/node/node0/cpu10 ../../cpu/cpu10 +tests/virhostcpudata/linux-with-die/node/node0/cpu11 ../../cpu/cpu11 +tests/virhostcpudata/linux-with-die/node/node0/cpu2 ../../cpu/cpu2 +tests/virhostcpudata/linux-with-die/node/node0/cpu3 ../../cpu/cpu3 +tests/virhostcpudata/linux-with-die/node/node0/cpu4 ../../cpu/cpu4 +tests/virhostcpudata/linux-with-die/node/node0/cpu5 ../../cpu/cpu5 +tests/virhostcpudata/linux-with-die/node/node0/cpu6 ../../cpu/cpu6 +tests/virhostcpudata/linux-with-die/node/node0/cpu7 ../../cpu/cpu7 +tests/virhostcpudata/linux-with-die/node/node0/cpu8 ../../cpu/cpu8 +tests/virhostcpudata/linux-with-die/node/node0/cpu9 ../../cpu/cpu9 +tests/virstoragetestdata/images/sub/link1 ../qcow2_raw-raw-reldir.qcow2 +tests/virstoragetestdata/images/sub/link2 ../qcow2_qcow2-qcow2-symlink_raw-raw-reldir.qcow2 +tests/virstoragetestdata/lookup/sub/link2 ../wrap +tests/vmx2xmldata/cdrom-ide-file-missing-datastore.xml cdrom-ide-empty.xml +tests/vmx2xmldata/cdrom-ide-file-missing-file.xml cdrom-ide-empty.xml +tests/vmx2xmldata/serial-pipe-client-app.xml serial-pipe.xml +tests/vmx2xmldata/serial-pipe-client-vm.xml serial-pipe.xml +tests/vmx2xmldata/serial-pipe-server-app.xml serial-pipe.xml +tests/vmx2xmldata/serial-pipe-server-vm.xml serial-pipe.xml diff --git a/SPECS/libvirt.spec b/SPECS/libvirt.spec new file mode 100644 index 0000000..4262c10 --- /dev/null +++ b/SPECS/libvirt.spec @@ -0,0 +1,2347 @@ +# -*- rpm-spec -*- + +# This spec file assumes you are building on a Fedora or RHEL version +# that's still supported by the vendor. It may work on other distros +# or versions, but no effort will be made to ensure that going forward. +%define min_rhel 8 +%define min_fedora 33 + +%define arches_qemu_kvm %{ix86} x86_64 %{power64} %{arm} aarch64 s390x +%if 0%{?rhel} + %if 0%{?rhel} > 8 + %define arches_qemu_kvm x86_64 aarch64 s390x + %else + %define arches_qemu_kvm x86_64 %{power64} aarch64 s390x + %endif +%endif + +%define arches_64bit x86_64 %{power64} aarch64 s390x riscv64 +%define arches_x86 %{ix86} x86_64 + +%define arches_systemtap_64bit %{arches_64bit} +%define arches_dmidecode %{arches_x86} +%define arches_xen %{arches_x86} aarch64 +%define arches_vbox %{arches_x86} +%define arches_ceph %{arches_64bit} +%define arches_zfs %{arches_x86} %{power64} %{arm} +%define arches_numactl %{arches_x86} %{power64} aarch64 s390x +%define arches_numad %{arches_x86} %{power64} aarch64 + +# The hypervisor drivers that run in libvirtd +%define with_qemu 0%{!?_without_qemu:1} +%define with_lxc 0%{!?_without_lxc:1} +%define with_libxl 0%{!?_without_libxl:1} +%define with_vbox 0%{!?_without_vbox:1} + +%ifarch %{arches_qemu_kvm} + %define with_qemu_kvm %{with_qemu} +%else + %define with_qemu_kvm 0 +%endif + +%define with_qemu_tcg %{with_qemu} + +# RHEL disables TCG on all architectures +%if 0%{?rhel} + %define with_qemu_tcg 0 +%endif + +%if ! %{with_qemu_tcg} && ! %{with_qemu_kvm} + %define with_qemu 0 +%endif + +# Then the hypervisor drivers that run outside libvirtd, in libvirt.so +%define with_openvz 0%{!?_without_openvz:1} +%define with_vmware 0%{!?_without_vmware:1} +%define with_esx 0%{!?_without_esx:1} +%define with_hyperv 0%{!?_without_hyperv:1} + +# Then the secondary host drivers, which run inside libvirtd +%define with_storage_rbd 0%{!?_without_storage_rbd:1} +%if 0%{?fedora} + %define with_storage_sheepdog 0%{!?_without_storage_sheepdog:1} +%else + %define with_storage_sheepdog 0 +%endif + +%define with_storage_gluster 0%{!?_without_storage_gluster:1} +%if 0%{?rhel} + # Glusterfs has been dropped in RHEL-9, and before that + # was only enabled on arches where KVM exists + %if 0%{?rhel} > 8 + %define with_storage_gluster 0 + %else + %ifnarch %{arches_qemu_kvm} + %define with_storage_gluster 0 + %endif + %endif +%endif + +# Fedora has zfs-fuse +%if 0%{?fedora} + %define with_storage_zfs 0%{!?_without_storage_zfs:1} +%else + %define with_storage_zfs 0 +%endif + +%define with_storage_iscsi_direct 0%{!?_without_storage_iscsi_direct:1} +# libiscsi has been dropped in RHEL-9 +%if 0%{?rhel} > 8 + %define with_storage_iscsi_direct 0 +%endif + +# Other optional features +%define with_numactl 0%{!?_without_numactl:1} + +# A few optional bits off by default, we enable later +%define with_fuse 0 +%define with_sanlock 0 +%define with_numad 0 +%define with_firewalld_zone 0 +%define with_netcf 0 +%define with_libssh2 0 +%define with_wireshark 0 +%define with_libssh 0 +%define with_dmidecode 0 + +# Finally set the OS / architecture specific special cases + +# Architecture-dependent features +%ifnarch %{arches_xen} + %define with_libxl 0 +%endif +%ifnarch %{arches_vbox} + %define with_vbox 0 +%endif +%ifnarch %{arches_numactl} + %define with_numactl 0 +%endif +%ifnarch %{arches_zfs} + %define with_storage_zfs 0 +%endif +%ifnarch %{arches_ceph} + %define with_storage_rbd 0 +%endif + +# RHEL doesn't ship many hypervisor drivers +%if 0%{?rhel} + %define with_openvz 0 + %define with_vbox 0 + %define with_vmware 0 + %define with_libxl 0 + %define with_hyperv 0 + %define with_vz 0 + %define with_lxc 0 +%endif + +%define with_firewalld_zone 0%{!?_without_firewalld_zone:1} + +%if (0%{?fedora} && 0%{?fedora} < 34) || (0%{?rhel} && 0%{?rhel} < 9) + %define with_netcf 0%{!?_without_netcf:1} +%endif + + +# fuse is used to provide virtualized /proc for LXC +%if %{with_lxc} + %define with_fuse 0%{!?_without_fuse:1} +%endif + +# Enable sanlock library for lock management with QEMU +# Sanlock is available only on arches where kvm is available for RHEL +%if 0%{?fedora} + %define with_sanlock 0%{!?_without_sanlock:1} +%endif +%if 0%{?rhel} + %ifarch %{arches_qemu_kvm} + %define with_sanlock 0%{!?_without_sanlock:1} + %endif +%endif + +# Enable libssh2 transport for new enough distros +%if 0%{?fedora} + %define with_libssh2 0%{!?_without_libssh2:1} +%endif + +# Enable wireshark plugins for all distros +%define with_wireshark 0%{!?_without_wireshark:1} +%define wireshark_plugindir %(pkg-config --variable plugindir wireshark)/epan + +# Enable libssh transport for all distros +%define with_libssh 0%{!?_without_libssh:1} + +%if %{with_qemu} || %{with_lxc} +# numad is used to manage the CPU and memory placement dynamically, +# it's not available on many non-x86 architectures. + %ifarch %{arches_numad} + %define with_numad 0%{!?_without_numad:1} + %endif +%endif + +%ifarch %{arches_dmidecode} + %define with_dmidecode 0%{!?_without_dmidecode:1} +%endif + +%define with_modular_daemons 0 +%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9 + %define with_modular_daemons 1 +%endif + +# Force QEMU to run as non-root +%define qemu_user qemu +%define qemu_group qemu + +# Locations for QEMU data +%define qemu_moddir %{_libdir}/qemu +%define qemu_datadir %{_datadir}/qemu + + +# RHEL releases provide stable tool chains and so it is safe to turn +# compiler warning into errors without being worried about frequent +# changes in reported warnings +%if 0%{?rhel} + %define enable_werror -Dwerror=true +%else + %define enable_werror -Dwerror=false -Dgit_werror=disabled +%endif + +%define tls_priority "@LIBVIRT,SYSTEM" + +# libvirt 8.1.0 stops distributing any sysconfig files. +# If the user has customized their sysconfig file, +# the RPM upgrade path will rename it to .rpmsave +# because 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} + +Summary: Library providing a simple virtualization API +Name: libvirt +Version: 8.0.0 +Release: 8%{?dist}%{?extra_release} +License: LGPLv2+ +URL: https://libvirt.org/ + +%if %(echo %{version} | grep -q "\.0$"; echo $?) == 1 + %define mainturl stable_updates/ +%endif +Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz +Source1: symlinks + +Patch1: libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch +Patch2: libvirt-build-Only-install-libvirt-guests-when-building-libvirtd.patch +Patch3: libvirt-docs-Add-man-page-for-libvirt-guests.patch +Patch4: libvirt-remove-sysconfig-files.patch +Patch5: libvirt-qemu-fix-inactive-snapshot-revert.patch +Patch6: libvirt-Revert-report-error-when-virProcessGetStatInfo-is-unable-to-parse-data.patch +Patch7: libvirt-qemuDomainSetupDisk-Initialize-targetPaths.patch +Patch8: libvirt-qemu_command-Generate-memory-only-after-controllers.patch +Patch9: libvirt-qemu-Validate-domain-definition-even-on-migration.patch +Patch10: libvirt-Make-systemd-unit-ordering-more-robust.patch +Patch11: libvirt-util-Fix-machined-servicename.patch +Patch12: libvirt-qemu-support-firmware-descriptor-flash-mode-for-optional-NVRAM.patch +Patch13: libvirt-nwfilter-hold-filter-update-lock-when-creating-deleting-bindings.patch +Patch14: libvirt-qemu-lxc-remove-use-to-nwfilter-update-lock.patch +Patch15: libvirt-qemu-support-multiqueue-for-vdpa-net-device.patch +Patch16: libvirt-qemu-fix-hotplug-for-multiqueue-vdpa-net-device.patch + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-config-network = %{version}-%{release} +Requires: libvirt-daemon-config-nwfilter = %{version}-%{release} +%if %{with_libxl} +Requires: libvirt-daemon-driver-libxl = %{version}-%{release} +%endif +%if %{with_lxc} +Requires: libvirt-daemon-driver-lxc = %{version}-%{release} +%endif +%if %{with_qemu} +Requires: libvirt-daemon-driver-qemu = %{version}-%{release} +%endif +# We had UML driver, but we've removed it. +Obsoletes: libvirt-daemon-driver-uml <= 5.0.0 +Obsoletes: libvirt-daemon-uml <= 5.0.0 +%if %{with_vbox} +Requires: libvirt-daemon-driver-vbox = %{version}-%{release} +%endif +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} + +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-client = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +# All build-time requirements. Run-time requirements are +# listed against each sub-RPM +BuildRequires: python3-docutils +BuildRequires: gcc +BuildRequires: meson >= 0.54.0 +BuildRequires: ninja-build +BuildRequires: git +BuildRequires: perl-interpreter +BuildRequires: python3 +%if %{with_libxl} +BuildRequires: xen-devel +%endif +BuildRequires: glib2-devel >= 2.56 +BuildRequires: libxml2-devel +BuildRequires: libxslt +BuildRequires: readline-devel +BuildRequires: bash-completion >= 2.0 +BuildRequires: gettext +BuildRequires: libtasn1-devel +BuildRequires: gnutls-devel +BuildRequires: libattr-devel +# For pool-build probing for existing pools +BuildRequires: libblkid-devel >= 2.17 +# for augparse, optionally used in testing +BuildRequires: augeas +BuildRequires: systemd-devel >= 185 +BuildRequires: libpciaccess-devel >= 0.10.9 +BuildRequires: yajl-devel +%if %{with_sanlock} +BuildRequires: sanlock-devel >= 2.4 +%endif +BuildRequires: libpcap-devel >= 1.5.0 +BuildRequires: libnl3-devel +BuildRequires: libselinux-devel +BuildRequires: dnsmasq >= 2.41 +BuildRequires: iptables +BuildRequires: ebtables +BuildRequires: module-init-tools +BuildRequires: cyrus-sasl-devel +BuildRequires: polkit >= 0.112 +# For mount/umount in FS driver +BuildRequires: util-linux +%if %{with_qemu} +# For managing ACLs +BuildRequires: libacl-devel +# From QEMU RPMs +BuildRequires: /usr/bin/qemu-img +%endif +# For LVM drivers +BuildRequires: lvm2 +# For pool type=iscsi +BuildRequires: iscsi-initiator-utils +%if %{with_storage_iscsi_direct} +# For pool type=iscsi-direct +BuildRequires: libiscsi-devel +%endif +# For disk driver +BuildRequires: parted-devel +# For Multipath support +BuildRequires: device-mapper-devel +%if %{with_storage_rbd} +BuildRequires: librados-devel +BuildRequires: librbd-devel +%endif +%if %{with_storage_gluster} +BuildRequires: glusterfs-api-devel >= 3.4.1 +BuildRequires: glusterfs-devel >= 3.4.1 +%endif +%if %{with_storage_sheepdog} +BuildRequires: sheepdog +%endif +%if %{with_numactl} +# For QEMU/LXC numa info +BuildRequires: numactl-devel +%endif +BuildRequires: libcap-ng-devel >= 0.5.0 +%if %{with_fuse} +BuildRequires: fuse-devel >= 2.8.6 +%endif +%if %{with_libssh2} +BuildRequires: libssh2-devel >= 1.3.0 +%endif +%if %{with_netcf} +BuildRequires: netcf-devel >= 0.2.2 +%endif +%if %{with_esx} +BuildRequires: libcurl-devel +%endif +%if %{with_hyperv} +BuildRequires: libwsman-devel >= 2.6.3 +%endif +BuildRequires: audit-libs-devel +# we need /usr/sbin/dtrace +BuildRequires: systemtap-sdt-devel + +# For mount/umount in FS driver +BuildRequires: util-linux +# For showmount in FS driver (netfs discovery) +BuildRequires: nfs-utils + +# Fedora build root suckage +BuildRequires: gawk + +# For storage wiping with different algorithms +BuildRequires: scrub + +%if %{with_numad} +BuildRequires: numad +%endif + +%if %{with_wireshark} +BuildRequires: wireshark-devel +%endif + +%if %{with_libssh} +BuildRequires: libssh-devel >= 0.7.0 +%endif + +BuildRequires: rpcgen +BuildRequires: libtirpc-devel + +# Needed for the firewalld_reload macro +%if %{with_firewalld_zone} +BuildRequires: firewalld-filesystem +%endif + +%description +Libvirt is a C toolkit to interact with the virtualization capabilities +of recent versions of Linux (and other OSes). The main package includes +the libvirtd server exporting the virtualization support. + +%package docs +Summary: API reference and website documentation + +%description docs +Includes the API reference for the libvirt C library, and a complete +copy of the libvirt.org website documentation. + +%package daemon +Summary: Server side daemon and supporting files for libvirt library + +# All runtime requirements for the libvirt package (runtime requrements +# for subpackages are listed later in those subpackages) + +# The client side, i.e. shared libs are in a subpackage +Requires: %{name}-libs = %{version}-%{release} + +# 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. Making this a Recommends means that it gets +# installed by default, but can still be removed if compatibility +# with old clients is not required +Recommends: /usr/bin/nc + +# for modprobe of pci devices +Requires: module-init-tools + +# for /sbin/ip +Requires: iproute +# for /sbin/tc +Requires: iproute-tc + +Requires: polkit >= 0.112 +%if %{with_dmidecode} +# For virConnectGetSysinfo +Requires: dmidecode +%endif +# For service management +Requires(post): /usr/bin/systemctl +%if %{with_numad} +Requires: numad +%endif +# libvirtd depends on 'messagebus' service +Requires: dbus +# For uid creation during pre +Requires(pre): shadow-utils +# Needed by /usr/libexec/libvirt-guests.sh script. +Requires: gettext + +# Ensure smooth upgrades +Obsoletes: libvirt-admin < 7.3.0 +Provides: libvirt-admin = %{version}-%{release} +Obsoletes: libvirt-bash-completion < 7.3.0 + +%description daemon +Server side daemon required to manage the virtualization capabilities +of recent versions of Linux. Requires a hypervisor specific sub-RPM +for specific drivers. + +%package daemon-config-network +Summary: Default configuration files for the libvirtd daemon + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} + +%description daemon-config-network +Default configuration files for setting up NAT based networking + +%package daemon-config-nwfilter +Summary: Network filter configuration files for the libvirtd daemon + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} + +%description daemon-config-nwfilter +Network filter configuration files for cleaning guest traffic + +%package daemon-driver-network +Summary: Network driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: dnsmasq >= 2.41 +Requires: iptables + +%description daemon-driver-network +The network driver plugin for the libvirtd daemon, providing +an implementation of the virtual network APIs using the Linux +bridge capabilities. + + +%package daemon-driver-nwfilter +Summary: Nwfilter driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: iptables +Requires: ebtables + +%description daemon-driver-nwfilter +The nwfilter driver plugin for the libvirtd daemon, providing +an implementation of the firewall APIs using the ebtables, +iptables and ip6tables capabilities + + +%package daemon-driver-nodedev +Summary: Nodedev driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +# needed for device enumeration +Requires: systemd >= 185 +# For managing persistent mediated devices +Requires: mdevctl + +%description daemon-driver-nodedev +The nodedev driver plugin for the libvirtd daemon, providing +an implementation of the node device APIs using the udev +capabilities. + + +%package daemon-driver-interface +Summary: Interface driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +%if %{with_netcf} +Requires: netcf-libs >= 0.2.2 +%endif + +%description daemon-driver-interface +The interface driver plugin for the libvirtd daemon, providing +an implementation of the host network interface APIs. + +%package daemon-driver-secret +Summary: Secret driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +%description daemon-driver-secret +The secret driver plugin for the libvirtd daemon, providing +an implementation of the secret key APIs. + +%package daemon-driver-storage-core +Summary: Storage driver plugin including base backends for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: nfs-utils +# For mkfs +Requires: util-linux +%if %{with_qemu} +# From QEMU RPMs +Requires: /usr/bin/qemu-img +%endif +%if !%{with_storage_rbd} +Obsoletes: libvirt-daemon-driver-storage-rbd < %{version}-%{release} +%endif + +%description daemon-driver-storage-core +The storage driver plugin for the libvirtd daemon, providing +an implementation of the storage APIs using files, local disks, LVM, SCSI, +iSCSI, and multipath storage. + +%package daemon-driver-storage-logical +Summary: Storage driver plugin for lvm volumes +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: lvm2 + +%description daemon-driver-storage-logical +The storage driver backend adding implementation of the storage APIs for block +volumes using lvm. + + +%package daemon-driver-storage-disk +Summary: Storage driver plugin for disk +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: parted +Requires: device-mapper + +%description daemon-driver-storage-disk +The storage driver backend adding implementation of the storage APIs for block +volumes using the host disks. + + +%package daemon-driver-storage-scsi +Summary: Storage driver plugin for local scsi devices +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +%description daemon-driver-storage-scsi +The storage driver backend adding implementation of the storage APIs for scsi +host devices. + + +%package daemon-driver-storage-iscsi +Summary: Storage driver plugin for iscsi +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: iscsi-initiator-utils + +%description daemon-driver-storage-iscsi +The storage driver backend adding implementation of the storage APIs for iscsi +volumes using the host iscsi stack. + + +%if %{with_storage_iscsi_direct} +%package daemon-driver-storage-iscsi-direct +Summary: Storage driver plugin for iscsi-direct +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +%description daemon-driver-storage-iscsi-direct +The storage driver backend adding implementation of the storage APIs for iscsi +volumes using libiscsi direct connection. +%endif + + +%package daemon-driver-storage-mpath +Summary: Storage driver plugin for multipath volumes +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: device-mapper + +%description daemon-driver-storage-mpath +The storage driver backend adding implementation of the storage APIs for +multipath storage using device mapper. + + +%if %{with_storage_gluster} +%package daemon-driver-storage-gluster +Summary: Storage driver plugin for gluster +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + %if 0%{?fedora} +Requires: glusterfs-client >= 2.0.1 + %endif + %if (0%{?fedora} || 0%{?with_storage_gluster}) +Requires: /usr/sbin/gluster + %endif + +%description daemon-driver-storage-gluster +The storage driver backend adding implementation of the storage APIs for gluster +volumes using libgfapi. +%endif + + +%if %{with_storage_rbd} +%package daemon-driver-storage-rbd +Summary: Storage driver plugin for rbd +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +%description daemon-driver-storage-rbd +The storage driver backend adding implementation of the storage APIs for rbd +volumes using the ceph protocol. +%endif + + +%if %{with_storage_sheepdog} +%package daemon-driver-storage-sheepdog +Summary: Storage driver plugin for sheepdog +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: sheepdog + +%description daemon-driver-storage-sheepdog +The storage driver backend adding implementation of the storage APIs for +sheepdog volumes using. +%endif + + +%if %{with_storage_zfs} +%package daemon-driver-storage-zfs +Summary: Storage driver plugin for ZFS +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +# Support any conforming implementation of zfs +Requires: /sbin/zfs +Requires: /sbin/zpool + +%description daemon-driver-storage-zfs +The storage driver backend adding implementation of the storage APIs for +ZFS volumes. +%endif + + +%package daemon-driver-storage +Summary: Storage driver plugin including all backends for the libvirtd daemon +Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} +Requires: libvirt-daemon-driver-storage-disk = %{version}-%{release} +Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release} +Requires: libvirt-daemon-driver-storage-scsi = %{version}-%{release} +Requires: libvirt-daemon-driver-storage-iscsi = %{version}-%{release} +Requires: libvirt-daemon-driver-storage-mpath = %{version}-%{release} +%if %{with_storage_iscsi_direct} +Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release} +%endif +%if %{with_storage_gluster} +Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release} +%endif +%if %{with_storage_rbd} +Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release} +%endif +%if %{with_storage_sheepdog} +Requires: libvirt-daemon-driver-storage-sheepdog = %{version}-%{release} +%endif +%if %{with_storage_zfs} +Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release} +%endif + +%description daemon-driver-storage +The storage driver plugin for the libvirtd daemon, providing +an implementation of the storage APIs using LVM, iSCSI, +parted and more. + + +%if %{with_qemu} +%package daemon-driver-qemu +Summary: QEMU driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Requires: /usr/bin/qemu-img +# For image compression +Requires: gzip +Requires: bzip2 +Requires: lzop +Requires: xz +Requires: systemd-container +Requires: swtpm-tools + +%description daemon-driver-qemu +The qemu driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +QEMU +%endif + + +%if %{with_lxc} +%package daemon-driver-lxc +Summary: LXC driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +# There really is a hard cross-driver dependency here +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: systemd-container + +%description daemon-driver-lxc +The LXC driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +the Linux kernel +%endif + + +%if %{with_vbox} +%package daemon-driver-vbox +Summary: VirtualBox driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} + +%description daemon-driver-vbox +The vbox driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +VirtualBox +%endif + + +%if %{with_libxl} +%package daemon-driver-libxl +Summary: Libxl driver plugin for the libvirtd daemon +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-libs = %{version}-%{release} +Obsoletes: libvirt-daemon-driver-xen < 4.3.0 + +%description daemon-driver-libxl +The Libxl driver plugin for the libvirtd daemon, providing +an implementation of the hypervisor driver APIs using +Libxl +%endif + + + +%if %{with_qemu_tcg} +%package daemon-qemu +Summary: Server side daemon & driver required to run QEMU guests + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-qemu = %{version}-%{release} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: qemu + +%description daemon-qemu +Server side daemon and driver required to manage the virtualization +capabilities of the QEMU TCG emulators +%endif + + +%if %{with_qemu_kvm} +%package daemon-kvm +Summary: Server side daemon & driver required to run KVM guests + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-qemu = %{version}-%{release} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: qemu-kvm + +%description daemon-kvm +Server side daemon and driver required to manage the virtualization +capabilities of the KVM hypervisor +%endif + + +%if %{with_lxc} +%package daemon-lxc +Summary: Server side daemon & driver required to run LXC guests + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-lxc = %{version}-%{release} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} + +%description daemon-lxc +Server side daemon and driver required to manage the virtualization +capabilities of LXC +%endif + + +%if %{with_libxl} +%package daemon-xen +Summary: Server side daemon & driver required to run XEN guests + +Requires: libvirt-daemon = %{version}-%{release} + %if %{with_libxl} +Requires: libvirt-daemon-driver-libxl = %{version}-%{release} + %endif +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} +Requires: xen + +%description daemon-xen +Server side daemon and driver required to manage the virtualization +capabilities of XEN +%endif + +%if %{with_vbox} +%package daemon-vbox +Summary: Server side daemon & driver required to run VirtualBox guests + +Requires: libvirt-daemon = %{version}-%{release} +Requires: libvirt-daemon-driver-vbox = %{version}-%{release} +Requires: libvirt-daemon-driver-interface = %{version}-%{release} +Requires: libvirt-daemon-driver-network = %{version}-%{release} +Requires: libvirt-daemon-driver-nodedev = %{version}-%{release} +Requires: libvirt-daemon-driver-nwfilter = %{version}-%{release} +Requires: libvirt-daemon-driver-secret = %{version}-%{release} +Requires: libvirt-daemon-driver-storage = %{version}-%{release} + +%description daemon-vbox +Server side daemon and driver required to manage the virtualization +capabilities of VirtualBox +%endif + +%package client +Summary: Client side utilities of the libvirt library +Requires: %{name}-libs = %{version}-%{release} +# Needed by virt-pki-validate script. +Requires: gnutls-utils + +# Ensure smooth upgrades +Obsoletes: libvirt-bash-completion < 7.3.0 + +%description client +The client binaries needed to access the virtualization +capabilities of recent versions of Linux (and other OSes). + +%package libs +Summary: Client side libraries +# So remote clients can access libvirt over SSH tunnel +Requires: cyrus-sasl +# Needed by default sasl.conf - no onerous extra deps, since +# 100's of other things on a system already pull in krb5-libs +Requires: cyrus-sasl-gssapi + +%description libs +Shared libraries for accessing the libvirt daemon. + +%if %{with_wireshark} +%package wireshark +Summary: Wireshark dissector plugin for libvirt RPC transactions +Requires: wireshark +Requires: %{name}-libs = %{version}-%{release} + +%description wireshark +Wireshark dissector plugin for better analysis of libvirt RPC traffic. +%endif + +%if %{with_lxc} +%package login-shell +Summary: Login shell for connecting users to an LXC container +Requires: %{name}-libs = %{version}-%{release} + +%description login-shell +Provides the set-uid virt-login-shell binary that is used to +connect a user to an LXC container when they login, by switching +namespaces. +%endif + +%package devel +Summary: Libraries, includes, etc. to compile with the libvirt library +Requires: %{name}-libs = %{version}-%{release} +Requires: pkgconfig + +%description devel +Include header files & development libraries for the libvirt C library. + +%if %{with_sanlock} +%package lock-sanlock +Summary: Sanlock lock manager plugin for QEMU driver +Requires: sanlock >= 2.4 +#for virt-sanlock-cleanup require augeas +Requires: augeas +Requires: %{name}-daemon = %{version}-%{release} +Requires: %{name}-libs = %{version}-%{release} + +%description lock-sanlock +Includes the Sanlock lock manager plugin for the QEMU +driver +%endif + +%package nss +Summary: Libvirt plugin for Name Service Switch +Requires: libvirt-daemon-driver-network = %{version}-%{release} + +%description nss +Libvirt plugin for NSS for translating domain names into IP addresses. + + +%prep + +%autosetup -S git_am -N + +# "make dist" replaces all symlinks with a copy of the linked files; +# we need to replace all of them with the original symlinks +echo "Restoring symlinks" +while read lnk target; do + if [ -e $lnk ]; then + rm -rf $lnk + ln -s $target $lnk + fi +done <%{_sourcedir}/symlinks || exit 1 +git add . +git commit -q -a --allow-empty --author 'rpm-build <rpm-build>' -m symlinks + + +git config gc.auto 0 + +%autopatch + +%build +%if 0%{?fedora} >= %{min_fedora} || 0%{?rhel} >= %{min_rhel} + %define supported_platform 1 +%else + %define supported_platform 0 +%endif + +%if ! %{supported_platform} +echo "This RPM requires either Fedora >= %{min_fedora} or RHEL >= %{min_rhel}" +exit 1 +%endif + +%if %{with_qemu} + %define arg_qemu -Ddriver_qemu=enabled +%else + %define arg_qemu -Ddriver_qemu=disabled +%endif + +%if %{with_openvz} + %define arg_openvz -Ddriver_openvz=enabled +%else + %define arg_openvz -Ddriver_openvz=disabled +%endif + +%if %{with_lxc} + %define arg_lxc -Ddriver_lxc=enabled + %define arg_login_shell -Dlogin_shell=enabled +%else + %define arg_lxc -Ddriver_lxc=disabled + %define arg_login_shell -Dlogin_shell=disabled +%endif + +%if %{with_vbox} + %define arg_vbox -Ddriver_vbox=enabled +%else + %define arg_vbox -Ddriver_vbox=disabled +%endif + +%if %{with_libxl} + %define arg_libxl -Ddriver_libxl=enabled +%else + %define arg_libxl -Ddriver_libxl=disabled +%endif + +%if %{with_esx} + %define arg_esx -Ddriver_esx=enabled -Dcurl=enabled +%else + %define arg_esx -Ddriver_esx=disabled -Dcurl=disabled +%endif + +%if %{with_hyperv} + %define arg_hyperv -Ddriver_hyperv=enabled -Dopenwsman=enabled +%else + %define arg_hyperv -Ddriver_hyperv=disabled -Dopenwsman=disabled +%endif + +%if %{with_vmware} + %define arg_vmware -Ddriver_vmware=enabled +%else + %define arg_vmware -Ddriver_vmware=disabled +%endif + +%if %{with_storage_rbd} + %define arg_storage_rbd -Dstorage_rbd=enabled +%else + %define arg_storage_rbd -Dstorage_rbd=disabled +%endif + +%if %{with_storage_sheepdog} + %define arg_storage_sheepdog -Dstorage_sheepdog=enabled +%else + %define arg_storage_sheepdog -Dstorage_sheepdog=disabled +%endif + +%if %{with_storage_gluster} + %define arg_storage_gluster -Dstorage_gluster=enabled -Dglusterfs=enabled +%else + %define arg_storage_gluster -Dstorage_gluster=disabled -Dglusterfs=disabled +%endif + +%if %{with_storage_zfs} + %define arg_storage_zfs -Dstorage_zfs=enabled +%else + %define arg_storage_zfs -Dstorage_zfs=disabled +%endif + +%if %{with_numactl} + %define arg_numactl -Dnumactl=enabled +%else + %define arg_numactl -Dnumactl=disabled +%endif + +%if %{with_numad} + %define arg_numad -Dnumad=enabled +%else + %define arg_numad -Dnumad=disabled +%endif + +%if %{with_fuse} + %define arg_fuse -Dfuse=enabled +%else + %define arg_fuse -Dfuse=disabled +%endif + +%if %{with_sanlock} + %define arg_sanlock -Dsanlock=enabled +%else + %define arg_sanlock -Dsanlock=disabled +%endif + +%if %{with_firewalld_zone} + %define arg_firewalld_zone -Dfirewalld_zone=enabled +%else + %define arg_firewalld_zone -Dfirewalld_zone=disabled +%endif + +%if %{with_netcf} + %define arg_netcf -Dnetcf=enabled +%else + %define arg_netcf -Dnetcf=disabled +%endif + +%if %{with_wireshark} + %define arg_wireshark -Dwireshark_dissector=enabled +%else + %define arg_wireshark -Dwireshark_dissector=disabled +%endif + +%if %{with_storage_iscsi_direct} + %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=enabled -Dlibiscsi=enabled +%else + %define arg_storage_iscsi_direct -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled +%endif + +%if %{with_libssh} + %define arg_libssh -Dlibssh=enabled +%else + %define arg_libssh -Dlibssh=disabled +%endif + +%if %{with_libssh2} + %define arg_libssh2 -Dlibssh2=enabled +%else + %define arg_libssh2 -Dlibssh2=disabled +%endif + +%if %{with_modular_daemons} + %define arg_remote_mode -Dremote_default_mode=direct +%else + %define arg_remote_mode -Dremote_default_mode=legacy +%endif + +%define when %(date +"%%F-%%T") +%define where %(hostname) +%define who %{?packager}%{!?packager:Unknown} +%define arg_packager -Dpackager="%{who}, %{when}, %{where}" +%define arg_packager_version -Dpackager_version="%{release}" + +%define arg_selinux_mount -Dselinux_mount="/sys/fs/selinux" + +# place macros above and build commands below this comment + +export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec) + +%meson \ + -Drunstatedir=%{_rundir} \ + %{?arg_qemu} \ + %{?arg_openvz} \ + %{?arg_lxc} \ + %{?arg_vbox} \ + %{?arg_libxl} \ + -Dsasl=enabled \ + -Dpolkit=enabled \ + -Ddriver_libvirtd=enabled \ + -Ddriver_remote=enabled \ + -Ddriver_test=enabled \ + %{?arg_esx} \ + %{?arg_hyperv} \ + %{?arg_vmware} \ + -Ddriver_vz=disabled \ + -Ddriver_bhyve=disabled \ + -Ddriver_ch=disabled \ + %{?arg_remote_mode} \ + -Ddriver_interface=enabled \ + -Ddriver_network=enabled \ + -Dstorage_fs=enabled \ + -Dstorage_lvm=enabled \ + -Dstorage_iscsi=enabled \ + %{?arg_storage_iscsi_direct} \ + -Dstorage_scsi=enabled \ + -Dstorage_disk=enabled \ + -Dstorage_mpath=enabled \ + %{?arg_storage_rbd} \ + %{?arg_storage_sheepdog} \ + %{?arg_storage_gluster} \ + %{?arg_storage_zfs} \ + -Dstorage_vstorage=disabled \ + %{?arg_numactl} \ + %{?arg_numad} \ + -Dcapng=enabled \ + %{?arg_fuse} \ + %{?arg_netcf} \ + -Dselinux=enabled \ + %{?arg_selinux_mount} \ + -Dapparmor=disabled \ + -Dapparmor_profiles=disabled \ + -Dsecdriver_apparmor=disabled \ + -Dudev=enabled \ + -Dyajl=enabled \ + %{?arg_sanlock} \ + -Dlibpcap=enabled \ + -Dlibnl=enabled \ + -Daudit=enabled \ + -Ddtrace=enabled \ + -Dfirewalld=enabled \ + %{?arg_firewalld_zone} \ + %{?arg_wireshark} \ + %{?arg_libssh} \ + %{?arg_libssh2} \ + -Dpm_utils=disabled \ + -Dnss=enabled \ + %{arg_packager} \ + %{arg_packager_version} \ + -Dqemu_user=%{qemu_user} \ + -Dqemu_group=%{qemu_group} \ + -Dqemu_moddir=%{qemu_moddir} \ + -Dqemu_datadir=%{qemu_datadir} \ + -Dtls_priority=%{tls_priority} \ + %{?enable_werror} \ + -Dexpensive_tests=enabled \ + -Dinit_script=systemd \ + -Ddocs=enabled \ + -Dtests=enabled \ + -Drpath=disabled \ + %{?arg_login_shell} + +%meson_build + +%install +rm -fr %{buildroot} + +export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/%{name}.spec) + +%meson_install + +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-backend/*.a +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.la +rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/storage-file/*.a +%if %{with_wireshark} +rm -f $RPM_BUILD_ROOT%{wireshark_plugindir}/libvirt.la +%endif + +# We don't want to install /etc/libvirt/qemu/networks in the main %%files list +# because if the admin wants to delete the default network completely, we don't +# want to end up re-incarnating it on every RPM upgrade. +install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/ +cp $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml \ + $RPM_BUILD_ROOT%{_datadir}/libvirt/networks/default.xml +# libvirt saves this file with mode 0600 +chmod 0600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu/networks/default.xml + +# nwfilter files are installed in /usr/share/libvirt and copied to /etc in %%post +# to avoid verification errors on changed files in /etc +install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ +cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \ + $RPM_BUILD_ROOT%{_datadir}/libvirt/nwfilter/ +# libvirt saves these files with mode 600 +chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml + +%if ! %{with_qemu} +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug +%endif +%find_lang %{name} + +%if ! %{with_sanlock} +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug +%endif + +%if ! %{with_lxc} +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug +%endif + +%if ! %{with_qemu} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu +%endif +%if ! %{with_lxc} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc +%endif +%if ! %{with_libxl} +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf +rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug +rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug +%endif + +# Copied into libvirt-docs subpackage eventually +mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs + +%ifarch %{arches_systemtap_64bit} +mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \ + $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp + + %if %{with_qemu} +mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \ + $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp + %endif +%endif + +%check +# Building on slow archs, like emulated s390x in Fedora copr, requires +# raising the test timeout +VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10 + +%define libvirt_daemon_schedule_restart() mkdir -p %{_localstatedir}/lib/rpm-state/libvirt || : \ +/bin/systemctl is-active %1.service 1>/dev/null 2>&1 && \ + touch %{_localstatedir}/lib/rpm-state/libvirt/restart-%1 || : + +%define libvirt_daemon_finish_restart() rm -f %{_localstatedir}/lib/rpm-state/libvirt/restart-%1 \ +rmdir %{_localstatedir}/lib/rpm-state/libvirt 2>/dev/null || : + +%define libvirt_daemon_needs_restart() -f %{_localstatedir}/lib/rpm-state/libvirt/restart-%1 + +%define libvirt_daemon_perform_restart() if test %libvirt_daemon_needs_restart %1 \ +then \ + /bin/systemctl try-restart %1.service >/dev/null 2>&1 || : \ +fi \ +%libvirt_daemon_finish_restart %1 + +# For daemons with only UNIX sockets +%define libvirt_daemon_systemd_post() %systemd_post %1.socket %1-ro.socket %1-admin.socket %1.service +%define libvirt_daemon_systemd_preun() %systemd_preun %1.service %1-ro.socket %1-admin.socket %1.socket + +# For daemons with UNIX and INET sockets +%define libvirt_daemon_systemd_post_inet() %systemd_post %1.socket %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.service +%define libvirt_daemon_systemd_preun_inet() %systemd_preun %1.service %1-ro.socket %1-admin.socket %1-tls.socket %1-tcp.socket %1.socket + +# For daemons with only UNIX sockets and no unprivileged read-only access +%define libvirt_daemon_systemd_post_priv() %systemd_post %1.socket %1-admin.socket %1.service +%define libvirt_daemon_systemd_preun_priv() %systemd_preun %1.service %1-admin.socket %1.socket + +%pre daemon +%libvirt_sysconfig_pre libvirtd virtproxyd virtlogd virtlockd libvirt-guests +# 'libvirt' group is just to allow password-less polkit access to +# libvirtd. The uid number is irrelevant, so we use dynamic allocation +# described at the above link. +getent group libvirt >/dev/null || groupadd -r libvirt + +exit 0 + +%post daemon +%libvirt_daemon_systemd_post_priv virtlogd +%libvirt_daemon_systemd_post_priv virtlockd +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post_inet virtproxyd +%else +%libvirt_daemon_systemd_post_inet libvirtd +%endif + +%systemd_post libvirt-guests.service + +%libvirt_daemon_schedule_restart libvirtd + +%preun daemon +%systemd_preun libvirt-guests.service + +%libvirt_daemon_systemd_preun_inet libvirtd +%libvirt_daemon_systemd_preun_inet virtproxyd +%libvirt_daemon_systemd_preun_priv virtlogd +%libvirt_daemon_systemd_preun_priv virtlockd + +%postun daemon +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + /bin/systemctl reload-or-try-restart virtlockd.service virtlogd.service >/dev/null 2>&1 || : +fi +%systemd_postun libvirt-guests.service + +# In upgrade scenario we must explicitly enable virtlockd/virtlogd +# sockets, if libvirtd is already enabled and start them if +# libvirtd is running, otherwise you'll get failures to start +# guests +%triggerpostun daemon -- libvirt-daemon < 1.3.0 +if [ $1 -ge 1 ] ; then + /bin/systemctl is-enabled libvirtd.service 1>/dev/null 2>&1 && + /bin/systemctl enable virtlogd.socket virtlogd-admin.socket || : + /bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1 && + /bin/systemctl start virtlogd.socket virtlogd-admin.socket || : +fi + +%posttrans daemon +%libvirt_sysconfig_posttrans libvirtd virtproxyd virtlogd virtlockd libvirt-guests +if test %libvirt_daemon_needs_restart libvirtd +then + # See if user has previously modified their install to + # tell libvirtd to use --listen + grep -E '^LIBVIRTD_ARGS=.*--listen' /etc/sysconfig/libvirtd 1>/dev/null 2>&1 + if test $? = 0 + then + # Then lets keep honouring --listen and *not* use + # systemd socket activation, because switching things + # might confuse mgmt tool like puppet/ansible that + # expect the old style libvirtd + /bin/systemctl mask \ + libvirtd.socket \ + libvirtd-ro.socket \ + libvirtd-admin.socket \ + libvirtd-tls.socket \ + libvirtd-tcp.socket >/dev/null 2>&1 || : + else + # Old libvirtd owns the sockets and will delete them on + # shutdown. Can't use a try-restart as libvirtd will simply + # own the sockets again when it comes back up. Thus we must + # do this particular ordering, so that we get libvirtd + # running with socket activation in use + /bin/systemctl is-active libvirtd.service 1>/dev/null 2>&1 + if test $? = 0 + then + /bin/systemctl stop libvirtd.service >/dev/null 2>&1 || : + + /bin/systemctl try-restart \ + libvirtd.socket \ + libvirtd-ro.socket \ + libvirtd-admin.socket >/dev/null 2>&1 || : + + /bin/systemctl start libvirtd.service >/dev/null 2>&1 || : + fi + fi +fi + +%libvirt_daemon_finish_restart libvirtd + +%pre daemon-driver-network +%libvirt_sysconfig_pre virtnetworkd + +%post daemon-driver-network +%if %{with_firewalld_zone} + %firewalld_reload +%endif + +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtnetworkd +%endif +%libvirt_daemon_schedule_restart virtnetworkd + +%preun daemon-driver-network +%libvirt_daemon_systemd_preun virtnetworkd + +%postun daemon-driver-network +%if %{with_firewalld_zone} + %firewalld_reload +%endif + +%posttrans daemon-driver-network +%libvirt_sysconfig_posttrans virtnetworkd +%libvirt_daemon_perform_restart virtnetworkd + +%pre daemon-driver-nwfilter +%libvirt_sysconfig_pre virtnwfilterd + +%post daemon-driver-nwfilter +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtnwfilterd +%endif +%libvirt_daemon_schedule_restart virtnwfilterd + +%preun daemon-driver-nwfilter +%libvirt_daemon_systemd_preun virtnwfilterd + +%posttrans daemon-driver-nwfilter +%libvirt_sysconfig_posttrans virtnwfilterd +%libvirt_daemon_perform_restart virtnwfilterd + +%pre daemon-driver-nodedev +%libvirt_sysconfig_pre virtnodedevd + +%post daemon-driver-nodedev +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtnodedevd +%endif +%libvirt_daemon_schedule_restart virtnodedevd + +%preun daemon-driver-nodedev +%libvirt_daemon_systemd_preun virtnodedevd + +%posttrans daemon-driver-nodedev +%libvirt_sysconfig_posttrans virtnodedevd +%libvirt_daemon_perform_restart virtnodedevd + +%pre daemon-driver-interface +%libvirt_sysconfig_pre virtinterfaced + +%post daemon-driver-interface +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtinterfaced +%endif +%libvirt_daemon_schedule_restart virtinterfaced + +%preun daemon-driver-interface +%libvirt_daemon_systemd_preun virtinterfaced + +%posttrans daemon-driver-interface +%libvirt_sysconfig_posttrans virtinterfaced +%libvirt_daemon_perform_restart virtinterfaced + +%pre daemon-driver-secret +%libvirt_sysconfig_pre virtsecretd + +%post daemon-driver-secret +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtsecretd +%endif +%libvirt_daemon_schedule_restart virtsecretd + +%preun daemon-driver-secret +%libvirt_daemon_systemd_preun virtsecretd + +%posttrans daemon-driver-secret +%libvirt_sysconfig_posttrans virtsecretd +%libvirt_daemon_perform_restart virtsecretd + + +%pre daemon-driver-storage-core +%libvirt_sysconfig_pre virtstoraged + +%post daemon-driver-storage-core +%if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtstoraged +%endif +%libvirt_daemon_schedule_restart virtstoraged + +%preun daemon-driver-storage-core +%libvirt_daemon_systemd_preun virtstoraged + +%posttrans daemon-driver-storage-core +%libvirt_sysconfig_posttrans virtstoraged +%libvirt_daemon_perform_restart virtstoraged + + +%if %{with_qemu} +%pre daemon-driver-qemu +%libvirt_sysconfig_pre virtqemud +# We want soft static allocation of well-known ids, as disk images +# are commonly shared across NFS mounts by id rather than name; see +# https://fedoraproject.org/wiki/Packaging:UsersAndGroups +getent group kvm >/dev/null || groupadd -f -g 36 -r kvm +getent group qemu >/dev/null || groupadd -f -g 107 -r qemu +if ! getent passwd qemu >/dev/null; then + if ! getent passwd 107 >/dev/null; then + useradd -r -u 107 -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu + else + useradd -r -g qemu -G kvm -d / -s /sbin/nologin -c "qemu user" qemu + fi +fi +exit 0 + +%post daemon-driver-qemu + %if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtqemud + %endif +%libvirt_daemon_schedule_restart virtqemud + +%preun daemon-driver-qemu +%libvirt_daemon_systemd_preun virtqemud + +%posttrans daemon-driver-qemu +%libvirt_sysconfig_posttrans virtqemud +%libvirt_daemon_perform_restart virtqemud +%endif + + +%if %{with_lxc} +%pre daemon-driver-lxc +%libvirt_sysconfig_pre virtlxcd + +%post daemon-driver-lxc + %if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtlxcd + %endif +%libvirt_daemon_schedule_restart virtlxcd + +%preun daemon-driver-lxc +%libvirt_daemon_systemd_preun virtlxcd + +%posttrans daemon-driver-lxc +%libvirt_sysconfig_posttrans virtlxcd +%libvirt_daemon_perform_restart virtlxcd +%endif + + +%if %{with_vbox} +%post daemon-driver-vbox + %if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtvboxd + %endif +%libvirt_daemon_schedule_restart virtvboxd + +%pre daemon-driver-vbox +%libvirt_sysconfig_pre virtvboxd + +%preun daemon-driver-vbox +%libvirt_daemon_systemd_preun virtvboxd + +%posttrans daemon-driver-vbox +%libvirt_sysconfig_posttrans virtvboxd +%libvirt_daemon_perform_restart virtvboxd +%endif + + +%if %{with_libxl} +%post daemon-driver-libxl + %if %{with_modular_daemons} +%libvirt_daemon_systemd_post virtxend + %endif +%libvirt_daemon_schedule_restart virtxend + +%pre daemon-driver-libxl +%libvirt_sysconfig_pre virtxend + +%preun daemon-driver-libxl +%libvirt_daemon_systemd_preun virtxend + +%posttrans daemon-driver-libxl +%libvirt_sysconfig_posttrans virtxend +%libvirt_daemon_perform_restart virtxend +%endif + + +%post daemon-config-network +if test $1 -eq 1 && test ! -f %{_sysconfdir}/libvirt/qemu/networks/default.xml ; then + # see if the network used by default network creates a conflict, + # and try to resolve it + # NB: 192.168.122.0/24 is used in the default.xml template file; + # do not modify any of those values here without also modifying + # them in the template. + orig_sub=122 + sub=${orig_sub} + nl=' +' + routes="${nl}$(ip route show | cut -d' ' -f1)${nl}" + case ${routes} in + *"${nl}192.168.${orig_sub}.0/24${nl}"*) + # there was a match, so we need to look for an unused subnet + for new_sub in $(seq 124 254); do + case ${routes} in + *"${nl}192.168.${new_sub}.0/24${nl}"*) + ;; + *) + sub=$new_sub + break; + ;; + esac + done + ;; + *) + ;; + esac + + sed -e "s/${orig_sub}/${sub}/g" \ + < %{_datadir}/libvirt/networks/default.xml \ + > %{_sysconfdir}/libvirt/qemu/networks/default.xml + ln -s ../default.xml %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml + # libvirt saves this file with mode 0600 + chmod 0600 %{_sysconfdir}/libvirt/qemu/networks/default.xml + + # Make sure libvirt picks up the new network defininiton + %libvirt_daemon_schedule_restart libvirtd + %libvirt_daemon_schedule_restart virtnetworkd +fi + +%posttrans daemon-config-network +%libvirt_daemon_perform_restart libvirtd +%libvirt_daemon_perform_restart virtnetworkd + +%post daemon-config-nwfilter +for datadir_file in %{_datadir}/libvirt/nwfilter/*.xml; do + sysconfdir_file=%{_sysconfdir}/libvirt/nwfilter/$(basename "$datadir_file") + if [ ! -f "$sysconfdir_file" ]; then + # libvirt saves these files with mode 600 + install -m 0600 "$datadir_file" "$sysconfdir_file" + fi +done +# Make sure libvirt picks up the new nwfilter defininitons +%libvirt_daemon_schedule_restart libvirtd +%libvirt_daemon_schedule_restart virtnwfilterd + +%posttrans daemon-config-nwfilter +%libvirt_daemon_perform_restart libvirtd +%libvirt_daemon_perform_restart virtnwfilterd + +%if %{with_lxc} +%pre login-shell +getent group virtlogin >/dev/null || groupadd -r virtlogin +exit 0 +%endif + +%files + +%files docs +%doc AUTHORS.rst NEWS.rst README.rst +%doc libvirt-docs/* + +%files daemon + +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/ + +%{_unitdir}/libvirtd.service +%{_unitdir}/libvirtd.socket +%{_unitdir}/libvirtd-ro.socket +%{_unitdir}/libvirtd-admin.socket +%{_unitdir}/libvirtd-tcp.socket +%{_unitdir}/libvirtd-tls.socket +%{_unitdir}/virtproxyd.service +%{_unitdir}/virtproxyd.socket +%{_unitdir}/virtproxyd-ro.socket +%{_unitdir}/virtproxyd-admin.socket +%{_unitdir}/virtproxyd-tcp.socket +%{_unitdir}/virtproxyd-tls.socket +%{_unitdir}/virt-guest-shutdown.target +%{_unitdir}/virtlogd.service +%{_unitdir}/virtlogd.socket +%{_unitdir}/virtlogd-admin.socket +%{_unitdir}/virtlockd.service +%{_unitdir}/virtlockd.socket +%{_unitdir}/virtlockd-admin.socket +%{_unitdir}/libvirt-guests.service +%config(noreplace) %{_sysconfdir}/libvirt/libvirtd.conf +%config(noreplace) %{_sysconfdir}/libvirt/virtproxyd.conf +%config(noreplace) %{_sysconfdir}/libvirt/virtlogd.conf +%config(noreplace) %{_sysconfdir}/libvirt/virtlockd.conf +%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf +%config(noreplace) %{_prefix}/lib/sysctl.d/60-libvirtd.conf + +%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd +%dir %{_datadir}/libvirt/ + +%ghost %dir %{_rundir}/libvirt/ + +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/filesystems/ +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ +%dir %attr(0711, root, root) %{_localstatedir}/cache/libvirt/ + + +%dir %attr(0755, root, root) %{_libdir}/libvirt/ +%dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/ +%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver +%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so + +%{_datadir}/augeas/lenses/libvirtd.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd.aug +%{_datadir}/augeas/lenses/virtlogd.aug +%{_datadir}/augeas/lenses/tests/test_virtlogd.aug +%{_datadir}/augeas/lenses/virtlockd.aug +%{_datadir}/augeas/lenses/tests/test_virtlockd.aug +%{_datadir}/augeas/lenses/virtproxyd.aug +%{_datadir}/augeas/lenses/tests/test_virtproxyd.aug +%{_datadir}/augeas/lenses/libvirt_lockd.aug +%if %{with_qemu} +%{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug +%endif + +%{_datadir}/polkit-1/actions/org.libvirt.unix.policy +%{_datadir}/polkit-1/actions/org.libvirt.api.policy +%{_datadir}/polkit-1/rules.d/50-libvirt.rules + +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/ + +%attr(0755, root, root) %{_libexecdir}/libvirt_iohelper + +%attr(0755, root, root) %{_bindir}/virt-ssh-helper + +%attr(0755, root, root) %{_sbindir}/libvirtd +%attr(0755, root, root) %{_sbindir}/virtproxyd +%attr(0755, root, root) %{_sbindir}/virtlogd +%attr(0755, root, root) %{_sbindir}/virtlockd +%attr(0755, root, root) %{_libexecdir}/libvirt-guests.sh + +%{_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* +%{_mandir}/man8/virtproxyd.8* +%{_mandir}/man7/virkey*.7* + +%{_bindir}/virt-host-validate +%{_bindir}/virt-admin +%{_datadir}/bash-completion/completions/virt-admin + +%files daemon-config-network +%dir %{_datadir}/libvirt/networks/ +%{_datadir}/libvirt/networks/default.xml +%ghost %{_sysconfdir}/libvirt/qemu/networks/default.xml +%ghost %{_sysconfdir}/libvirt/qemu/networks/autostart/default.xml + +%files daemon-config-nwfilter +%dir %{_datadir}/libvirt/nwfilter/ +%{_datadir}/libvirt/nwfilter/*.xml +%ghost %{_sysconfdir}/libvirt/nwfilter/*.xml + +%files daemon-driver-interface +%config(noreplace) %{_sysconfdir}/libvirt/virtinterfaced.conf +%{_datadir}/augeas/lenses/virtinterfaced.aug +%{_datadir}/augeas/lenses/tests/test_virtinterfaced.aug +%{_unitdir}/virtinterfaced.service +%{_unitdir}/virtinterfaced.socket +%{_unitdir}/virtinterfaced-ro.socket +%{_unitdir}/virtinterfaced-admin.socket +%attr(0755, root, root) %{_sbindir}/virtinterfaced +%{_libdir}/%{name}/connection-driver/libvirt_driver_interface.so +%{_mandir}/man8/virtinterfaced.8* + +%files daemon-driver-network +%config(noreplace) %{_sysconfdir}/libvirt/virtnetworkd.conf +%{_datadir}/augeas/lenses/virtnetworkd.aug +%{_datadir}/augeas/lenses/tests/test_virtnetworkd.aug +%{_unitdir}/virtnetworkd.service +%{_unitdir}/virtnetworkd.socket +%{_unitdir}/virtnetworkd-ro.socket +%{_unitdir}/virtnetworkd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtnetworkd +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart +%ghost %dir %{_rundir}/libvirt/network/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/network/ +%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/dnsmasq/ +%attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper +%{_libdir}/%{name}/connection-driver/libvirt_driver_network.so +%{_mandir}/man8/virtnetworkd.8* + +%if %{with_firewalld_zone} +%{_prefix}/lib/firewalld/zones/libvirt.xml +%endif + +%files daemon-driver-nodedev +%config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf +%{_datadir}/augeas/lenses/virtnodedevd.aug +%{_datadir}/augeas/lenses/tests/test_virtnodedevd.aug +%{_unitdir}/virtnodedevd.service +%{_unitdir}/virtnodedevd.socket +%{_unitdir}/virtnodedevd-ro.socket +%{_unitdir}/virtnodedevd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtnodedevd +%{_libdir}/%{name}/connection-driver/libvirt_driver_nodedev.so +%{_mandir}/man8/virtnodedevd.8* + +%files daemon-driver-nwfilter +%config(noreplace) %{_sysconfdir}/libvirt/virtnwfilterd.conf +%{_datadir}/augeas/lenses/virtnwfilterd.aug +%{_datadir}/augeas/lenses/tests/test_virtnwfilterd.aug +%{_unitdir}/virtnwfilterd.service +%{_unitdir}/virtnwfilterd.socket +%{_unitdir}/virtnwfilterd-ro.socket +%{_unitdir}/virtnwfilterd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtnwfilterd +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/nwfilter/ +%ghost %dir %{_rundir}/libvirt/network/ +%{_libdir}/%{name}/connection-driver/libvirt_driver_nwfilter.so +%{_mandir}/man8/virtnwfilterd.8* + +%files daemon-driver-secret +%config(noreplace) %{_sysconfdir}/libvirt/virtsecretd.conf +%{_datadir}/augeas/lenses/virtsecretd.aug +%{_datadir}/augeas/lenses/tests/test_virtsecretd.aug +%{_unitdir}/virtsecretd.service +%{_unitdir}/virtsecretd.socket +%{_unitdir}/virtsecretd-ro.socket +%{_unitdir}/virtsecretd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtsecretd +%{_libdir}/%{name}/connection-driver/libvirt_driver_secret.so +%{_mandir}/man8/virtsecretd.8* + +%files daemon-driver-storage + +%files daemon-driver-storage-core +%config(noreplace) %{_sysconfdir}/libvirt/virtstoraged.conf +%{_datadir}/augeas/lenses/virtstoraged.aug +%{_datadir}/augeas/lenses/tests/test_virtstoraged.aug +%{_unitdir}/virtstoraged.service +%{_unitdir}/virtstoraged.socket +%{_unitdir}/virtstoraged-ro.socket +%{_unitdir}/virtstoraged-admin.socket +%attr(0755, root, root) %{_sbindir}/virtstoraged +%attr(0755, root, root) %{_libexecdir}/libvirt_parthelper +%{_libdir}/%{name}/connection-driver/libvirt_driver_storage.so +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_fs.so +%{_libdir}/%{name}/storage-file/libvirt_storage_file_fs.so +%{_mandir}/man8/virtstoraged.8* + +%files daemon-driver-storage-disk +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_disk.so + +%files daemon-driver-storage-logical +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_logical.so + +%files daemon-driver-storage-scsi +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_scsi.so + +%files daemon-driver-storage-iscsi +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi.so + +%if %{with_storage_iscsi_direct} +%files daemon-driver-storage-iscsi-direct +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_iscsi-direct.so +%endif + +%files daemon-driver-storage-mpath +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_mpath.so + +%if %{with_storage_gluster} +%files daemon-driver-storage-gluster +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_gluster.so +%{_libdir}/%{name}/storage-file/libvirt_storage_file_gluster.so +%endif + +%if %{with_storage_rbd} +%files daemon-driver-storage-rbd +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_rbd.so +%endif + +%if %{with_storage_sheepdog} +%files daemon-driver-storage-sheepdog +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_sheepdog.so +%endif + +%if %{with_storage_zfs} +%files daemon-driver-storage-zfs +%{_libdir}/%{name}/storage-backend/libvirt_storage_backend_zfs.so +%endif + +%if %{with_qemu} +%files daemon-driver-qemu +%config(noreplace) %{_sysconfdir}/libvirt/virtqemud.conf +%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 +%{_unitdir}/virtqemud.socket +%{_unitdir}/virtqemud-ro.socket +%{_unitdir}/virtqemud-admin.socket +%attr(0755, root, root) %{_sbindir}/virtqemud +%dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/ +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/qemu/ +%config(noreplace) %{_sysconfdir}/libvirt/qemu.conf +%config(noreplace) %{_sysconfdir}/libvirt/qemu-lockd.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.qemu +%ghost %dir %{_rundir}/libvirt/qemu/ +%dir %attr(0751, %{qemu_user}, %{qemu_group}) %{_localstatedir}/lib/libvirt/qemu/ +%dir %attr(0750, root, root) %{_localstatedir}/cache/libvirt/qemu/ +%{_datadir}/augeas/lenses/libvirtd_qemu.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug +%{_libdir}/%{name}/connection-driver/libvirt_driver_qemu.so +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/swtpm/ +%dir %attr(0730, tss, tss) %{_localstatedir}/log/swtpm/libvirt/qemu/ +%{_bindir}/virt-qemu-run +%{_mandir}/man1/virt-qemu-run.1* +%{_mandir}/man8/virtqemud.8* +%endif + +%if %{with_lxc} +%files daemon-driver-lxc +%config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf +%{_datadir}/augeas/lenses/virtlxcd.aug +%{_datadir}/augeas/lenses/tests/test_virtlxcd.aug +%{_unitdir}/virtlxcd.service +%{_unitdir}/virtlxcd.socket +%{_unitdir}/virtlxcd-ro.socket +%{_unitdir}/virtlxcd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtlxcd +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/lxc/ +%config(noreplace) %{_sysconfdir}/libvirt/lxc.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.lxc +%ghost %dir %{_rundir}/libvirt/lxc/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/lxc/ +%{_datadir}/augeas/lenses/libvirtd_lxc.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug +%attr(0755, root, root) %{_libexecdir}/libvirt_lxc +%{_libdir}/%{name}/connection-driver/libvirt_driver_lxc.so +%{_mandir}/man8/virtlxcd.8* +%endif + +%if %{with_libxl} +%files daemon-driver-libxl +%config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf +%{_datadir}/augeas/lenses/virtxend.aug +%{_datadir}/augeas/lenses/tests/test_virtxend.aug +%{_unitdir}/virtxend.service +%{_unitdir}/virtxend.socket +%{_unitdir}/virtxend-ro.socket +%{_unitdir}/virtxend-admin.socket +%attr(0755, root, root) %{_sbindir}/virtxend +%config(noreplace) %{_sysconfdir}/libvirt/libxl.conf +%config(noreplace) %{_sysconfdir}/logrotate.d/libvirtd.libxl +%config(noreplace) %{_sysconfdir}/libvirt/libxl-lockd.conf +%{_datadir}/augeas/lenses/libvirtd_libxl.aug +%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug +%dir %attr(0700, root, root) %{_localstatedir}/log/libvirt/libxl/ +%ghost %dir %{_rundir}/libvirt/libxl/ +%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/ +%{_libdir}/%{name}/connection-driver/libvirt_driver_libxl.so +%{_mandir}/man8/virtxend.8* +%endif + +%if %{with_vbox} +%files daemon-driver-vbox +%config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf +%{_datadir}/augeas/lenses/virtvboxd.aug +%{_datadir}/augeas/lenses/tests/test_virtvboxd.aug +%{_unitdir}/virtvboxd.service +%{_unitdir}/virtvboxd.socket +%{_unitdir}/virtvboxd-ro.socket +%{_unitdir}/virtvboxd-admin.socket +%attr(0755, root, root) %{_sbindir}/virtvboxd +%{_libdir}/%{name}/connection-driver/libvirt_driver_vbox.so +%{_mandir}/man8/virtvboxd.8* +%endif + +%if %{with_qemu_tcg} +%files daemon-qemu +%endif + +%if %{with_qemu_kvm} +%files daemon-kvm +%endif + +%if %{with_lxc} +%files daemon-lxc +%endif + +%if %{with_libxl} +%files daemon-xen +%endif + +%if %{with_vbox} +%files daemon-vbox +%endif + +%if %{with_sanlock} +%files lock-sanlock + %if %{with_qemu} +%config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf + %endif + %if %{with_libxl} +%config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf + %endif +%attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so +%{_datadir}/augeas/lenses/libvirt_sanlock.aug +%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug +%dir %attr(0770, root, sanlock) %{_localstatedir}/lib/libvirt/sanlock +%{_sbindir}/virt-sanlock-cleanup +%{_mandir}/man8/virt-sanlock-cleanup.8* +%attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper +%endif + +%files client +%{_mandir}/man1/virsh.1* +%{_mandir}/man1/virt-xml-validate.1* +%{_mandir}/man1/virt-pki-query-dn.1* +%{_mandir}/man1/virt-pki-validate.1* +%{_bindir}/virsh +%{_bindir}/virt-xml-validate +%{_bindir}/virt-pki-query-dn +%{_bindir}/virt-pki-validate + +%{_datadir}/bash-completion/completions/virsh + +%files libs -f %{name}.lang +%license COPYING COPYING.LESSER +%config(noreplace) %{_sysconfdir}/libvirt/libvirt.conf +%config(noreplace) %{_sysconfdir}/libvirt/libvirt-admin.conf +%{_libdir}/libvirt.so.* +%{_libdir}/libvirt-qemu.so.* +%{_libdir}/libvirt-lxc.so.* +%{_libdir}/libvirt-admin.so.* +%dir %{_datadir}/libvirt/ +%dir %{_datadir}/libvirt/schemas/ +%dir %attr(0755, root, root) %{_localstatedir}/lib/libvirt/ + +%{_datadir}/systemtap/tapset/libvirt_probes*.stp +%{_datadir}/systemtap/tapset/libvirt_functions.stp +%if %{with_qemu} +%{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp +%endif + +%{_datadir}/libvirt/schemas/*.rng + +%{_datadir}/libvirt/cpu_map/*.xml + +%{_datadir}/libvirt/test-screenshot.png + +%if %{with_wireshark} +%files wireshark +%{wireshark_plugindir}/libvirt.so +%endif + +%files nss +%{_libdir}/libnss_libvirt.so.2 +%{_libdir}/libnss_libvirt_guest.so.2 + +%if %{with_lxc} +%files login-shell +%attr(4750, root, virtlogin) %{_bindir}/virt-login-shell +%{_libexecdir}/virt-login-shell-helper +%config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf +%{_mandir}/man1/virt-login-shell.1* +%endif + +%files devel +%{_libdir}/libvirt.so +%{_libdir}/libvirt-admin.so +%{_libdir}/libvirt-qemu.so +%{_libdir}/libvirt-lxc.so +%dir %{_includedir}/libvirt +%{_includedir}/libvirt/virterror.h +%{_includedir}/libvirt/libvirt.h +%{_includedir}/libvirt/libvirt-admin.h +%{_includedir}/libvirt/libvirt-common.h +%{_includedir}/libvirt/libvirt-domain.h +%{_includedir}/libvirt/libvirt-domain-checkpoint.h +%{_includedir}/libvirt/libvirt-domain-snapshot.h +%{_includedir}/libvirt/libvirt-event.h +%{_includedir}/libvirt/libvirt-host.h +%{_includedir}/libvirt/libvirt-interface.h +%{_includedir}/libvirt/libvirt-network.h +%{_includedir}/libvirt/libvirt-nodedev.h +%{_includedir}/libvirt/libvirt-nwfilter.h +%{_includedir}/libvirt/libvirt-secret.h +%{_includedir}/libvirt/libvirt-storage.h +%{_includedir}/libvirt/libvirt-stream.h +%{_includedir}/libvirt/libvirt-qemu.h +%{_includedir}/libvirt/libvirt-lxc.h +%{_libdir}/pkgconfig/libvirt.pc +%{_libdir}/pkgconfig/libvirt-admin.pc +%{_libdir}/pkgconfig/libvirt-qemu.pc +%{_libdir}/pkgconfig/libvirt-lxc.pc + +%dir %{_datadir}/libvirt/api/ +%{_datadir}/libvirt/api/libvirt-api.xml +%{_datadir}/libvirt/api/libvirt-admin-api.xml +%{_datadir}/libvirt/api/libvirt-qemu-api.xml +%{_datadir}/libvirt/api/libvirt-lxc-api.xml + + +%changelog +* Thu Mar 31 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-8 +- qemu: fix hotplug for multiqueue vdpa net device (rhbz#2024406) + +* Fri Mar 18 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-7 +- nwfilter: hold filter update lock when creating/deleting bindings (rhbz#2044379) +- qemu,lxc: remove use to nwfilter update lock (rhbz#2044379) +- qemu: support multiqueue for vdpa net device (rhbz#2024406) + +* Thu Mar 3 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-6 +- qemu: support firmware descriptor flash 'mode' for optional NVRAM (rhbz#2057769) + +* Thu Feb 24 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-5 +- Make systemd unit ordering more robust (rhbz#1868537) +- util: Fix machined servicename (rhbz#1868537) + +* Thu Feb 10 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-4 +- qemu_command: Generate memory only after controllers (rhbz#2047271) +- qemu: Validate domain definition even on migration (rhbz#2048435) + +* Wed Feb 2 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-3 +- qemuDomainSetupDisk: Initialize 'targetPaths' (rhbz#2046170) + +* Tue Jan 25 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-2 +- build: Only install libvirt-guests when building libvirtd (rhbz#2042529) +- docs: Add man page for libvirt-guests (rhbz#2042529) +- remove sysconfig files (rhbz#2042529) +- spec: Run pre/post-install stuff on 'daemon-driver-storage-core' (rhbz#2025644) +- qemu: fix inactive snapshot revert (rhbz#2039136) +- Revert "report error when virProcessGetStatInfo() is unable to parse data" (rhbz#2043579) + +* Fri Jan 14 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-1 +- Rebased to libvirt-8.0.0 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#2039246, rhbz#2039652, rhbz#2039651, rhbz#2039131 + +* Mon Jan 10 2022 Jiri Denemark <jdenemar@redhat.com> - 8.0.0-0rc1.1 +- Rebased to libvirt-8.0.0-rc1 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#2034539, rhbz#2027400, rhbz#1945420, rhbz#1851249, rhbz#2032410 + rhbz#2026812, rhbz#2032365, rhbz#2035888, rhbz#2036895, rhbz#2026537 + +* Wed Dec 1 2021 Jiri Denemark <jdenemar@redhat.com> - 7.10.0-1 +- Rebased to libvirt-7.10.0 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#2024098, rhbz#1964223, rhbz#2018488, rhbz#2021437, rhbz#2022589 + rhbz#2023605, rhbz#1431589, rhbz#2024435, rhbz#2016599, rhbz#1945501 + rhbz#2023674 + +* Fri Nov 5 2021 Jiri Denemark <jdenemar@redhat.com> - 7.9.0-1 +- Rebased to libvirt-7.9.0 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#2007659, rhbz#2014487, rhbz#1806856, rhbz#2014139, rhbz#1964223 + rhbz#2007168, rhbz#2012386, rhbz#2013573, rhbz#1897708 + +* Tue Oct 5 2021 Jiri Denemark <jdenemar@redhat.com> - 7.8.0-1 +- Rebased to libvirt-7.8.0 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#1999420, rhbz#2002761, rhbz#1998920, rhbz#1986066, rhbz#1822891 + rhbz#2001627, rhbz#1819160, rhbz#2000861, rhbz#2003092 + +* Wed Sep 22 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-3 +- virshDomainGetVcpuBitmap: Return bitmap when taking the fallback path (rhbz#2004429) + +* Tue Sep 21 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-2 +- Update gating.yaml by adding subject_type +- Revert "RHEL: spec: Do not enable modular daemons yet" (rhbz#1920012) + +* Fri Sep 10 2021 Jiri Denemark <jdenemar@redhat.com> - 7.7.0-1 +- Rebased to libvirt-7.7.0 (rhbz#2001507) +- The rebase also fixes the following bugs: + rhbz#2001326, rhbz#2001391, rhbz#2001322, rhbz#2001389, rhbz#1967187 + rhbz#2001327, rhbz#1977155, rhbz#2001997, rhbz#2001323 +- RHEL: spec: Do not enable modular daemons yet (rhbz#2001507) + +* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 7.6.0-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Wed Aug 4 2021 Jiri Denemark <jdenemar@redhat.com> - 7.6.0-1 +- Rebased to libvirt-7.6.0 (rhbz#1950948) +- The rebase also fixes the following bugs: + rhbz#1986509, rhbz#1984318, rhbz#1810661, rhbz#1977776, rhbz#1948433 + rhbz#1978526, rhbz#1976690 + +* Wed Jul 14 2021 Jiri Denemark <jdenemar@redhat.com> - 7.5.0-1 +- Rebased to libvirt-7.5.0 (rhbz#1950948) +- The rebase also fixes the following bugs: + rhbz#1949388, rhbz#1969354, rhbz#1970277, rhbz#1972145, rhbz#1973094 + rhbz#1975071, rhbz#1972468, rhbz#1975677 + +* Mon Jun 7 2021 Jiri Denemark <jdenemar@redhat.com> - 7.4.0-1 +- Rebased to libvirt-7.4.0 (rhbz#1950948) +- The rebase also fixes the following bugs: + rhbz#1960993 + +* Mon May 24 2021 Jiri Denemark <jdenemar@redhat.com> - 7.3.0-1 +- Rebased to libvirt-7.3.0 (rhbz#1950948) +- The rebase also fixes the following bugs: + rhbz#1898526, rhbz#1910617, rhbz#1910618, rhbz#1943392, rhbz#1946918 + rhbz#1947718, rhbz#1947720, rhbz#1947824, rhbz#1949342, rhbz#1950228 + rhbz#1950301, rhbz#1950601, rhbz#1950948, rhbz#1953939, rhbz#1958302 + rhbz#1962053 +- RHEL: Enable usage of x-blockdev-reopen (rhbz#1953939) +- RHEL: Add gating.yaml for RHEL9 (rhbz#1950601) + +* Thu Apr 22 2021 Jiri Denemark <jdenemar@redhat.com> - 7.0.0-6 +- spec: Do not build qemu driver for Power on RHEL-9 (rhbz#1946529) + +* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 7.0.0-5 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Wed Feb 03 2021 Cole Robinson <aintdiscole@gmail.com> - 7.0.0-4 +- Increase meson test timeout to fix builds on s390x copr + +* Tue Feb 02 2021 Laine Stump <laine@redhat.com> - 7.0.0-3 +- disable netcf in build + +* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 15 2021 Daniel P. Berrangé <berrange@redhat.com> - 7.0.0-1 +- Rebase to 7.0.0 release + +* Fri Dec 04 2020 Cole Robinson <aintdiscole@gmail.com> - 6.10.0-2.1 +- Rebuild for wireshark soname bump + +* Fri Dec 04 2020 Richard W.M. Jones <rjones@redhat.com> - 6.10.0-2 +- Build libvirt-daemon-kvm for riscv64. + +* Tue Dec 01 2020 Cole Robinson <crobinso@redhat.com> - 6.10.0-1 +- Update to version 6.10.0 + +* Wed Nov 4 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.9.0-2 +- Re-apply reverted fix for disabling glusterfs, curl, openswman and libiscsi + +* Tue Nov 03 2020 Cole Robinson <crobinso@redhat.com> - 6.9.0-1 +- Update to version 6.9.0 + +* Mon Nov 2 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-4 +- Really fix meson option for disabling glusterfs +- Fix disabling curl, openswman and libiscsi + +* Mon Nov 2 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-4 +- Fix name of meson option for disabling glusterfs + +* Fri Oct 30 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-3 +- Fix stat() mocking for new glibc + +* Wed Oct 28 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.8.0-2 +- Remove obsolete bash_completion conditional +- Pass args to meson based on with_libssh/with_libssh2 + +* Thu Oct 01 2020 Cole Robinson <crobinso@redhat.com> - 6.8.0-1 +- Update to version 6.8.0 + +* Fri Sep 4 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.7.0-2 +- Fix QEMU start when KVM is not loaded (rhbz#1875327) + +* Tue Sep 01 2020 Cole Robinson <crobinso@redhat.com> - 6.7.0-1 +- Update to version 6.7.0 + +* Fri Aug 21 2020 Merlin Mathesius <mmathesi@redhat.com> - 6.6.0-3 +- Fix so no platforms depend upon ceph for 32-bit architectures +- Include upstream patches to fix GCC 10 warnings + +* Fri Aug 21 2020 Daniel P. Berrangé <berrange@redhat.com> - 6.6.0-2 +- Fix creation of pools on non-btrfs (rhbz#1870197) + +* Tue Aug 04 2020 Cole Robinson <crobinso@redhat.com> - 6.6.0-1 +- Update to version 6.6.0 + +* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.5.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jul 03 2020 Cole Robinson <crobinso@redhat.com> - 6.5.0-1 +- Update to version 6.5.0 + +* Tue Jun 02 2020 Cole Robinson <crobinso@redhat.com> - 6.4.0-1 +- Update to version 6.4.0 + +* Tue May 05 2020 Cole Robinson <crobinso@redhat.com> - 6.3.0-1 +- Update to version 6.3.0 + +* Thu Apr 02 2020 Cole Robinson <crobinso@redhat.com> - 6.2.0-1 +- Update to version 6.2.0 + +* Tue Mar 24 2020 Felipe Borges <feborges@redhat.com> - 6.1.0-2 +- Check for disk type correctly in virDomainDiskTranslateSourcePool + +* Wed Mar 04 2020 Cole Robinson <crobinso@redhat.com> - 6.1.0-1 +- Update to version 6.1.0 + +* Tue Feb 25 2020 Cole Robinson <crobinso@redhat.com> - 6.0.0-3 +- Rebuild for libiscsi soname bump + +* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 15 2020 Cole Robinson <crobinso@redhat.com> - 6.0.0-1 +- Update to version 6.0.0