forked from rpms/libvirt
libvirt-8.10.0-2.el9
- qemu_process: Document qemuProcessPrepare{Domain,Host}() order (rhbz#2150760) - qemu_extdevice: Init paths in qemuExtDevicesPrepareDomain() (rhbz#2150760) - qemu_extdevice: Expose qemuExtDevicesInitPaths() (rhbz#2150760) - qemu: Init ext devices paths on reconnect (rhbz#2150760) Resolves: rhbz#2150760
This commit is contained in:
parent
fcd64c60e5
commit
6a12fe27ae
41
libvirt-qemu-Init-ext-devices-paths-on-reconnect.patch
Normal file
41
libvirt-qemu-Init-ext-devices-paths-on-reconnect.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From aeb0e68bdfee244d14bdd5177b1f559bff76f473 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <aeb0e68bdfee244d14bdd5177b1f559bff76f473@dist-git>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Mon, 5 Dec 2022 13:08:39 +0100
|
||||||
|
Subject: [PATCH] qemu: Init ext devices paths on reconnect
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Paths for external devices (well, so far only vTPM) are not
|
||||||
|
stored in the status XML. Therefore, we need to regenerate them
|
||||||
|
after we've been restarted and reconnecting to a running domain.
|
||||||
|
Otherwise these will remain NULL which may later lead to a NULL
|
||||||
|
dereference.
|
||||||
|
|
||||||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2150760
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit 7a2034127010598b91fa576f72f330baf50c1085)
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_process.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
||||||
|
index 19b9242623..c542be5036 100644
|
||||||
|
--- a/src/qemu/qemu_process.c
|
||||||
|
+++ b/src/qemu/qemu_process.c
|
||||||
|
@@ -8896,6 +8896,9 @@ qemuProcessReconnect(void *opaque)
|
||||||
|
if (qemuDomainMasterKeyReadFile(priv) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
+ if (qemuExtDevicesInitPaths(driver, obj->def) < 0)
|
||||||
|
+ goto error;
|
||||||
|
+
|
||||||
|
/* If we are connecting to a guest started by old libvirt there is no
|
||||||
|
* allowReboot in status XML and we need to initialize it. */
|
||||||
|
qemuProcessPrepareAllowReboot(obj);
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
55
libvirt-qemu_extdevice-Expose-qemuExtDevicesInitPaths.patch
Normal file
55
libvirt-qemu_extdevice-Expose-qemuExtDevicesInitPaths.patch
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
From 32fd470a01fc0e9890a2c5e5a347322254c90b0d Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <32fd470a01fc0e9890a2c5e5a347322254c90b0d@dist-git>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Mon, 5 Dec 2022 13:08:25 +0100
|
||||||
|
Subject: [PATCH] qemu_extdevice: Expose qemuExtDevicesInitPaths()
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This function is going to be called outside of qemu_extdevice.c.
|
||||||
|
Expose it to the rest of the driver.
|
||||||
|
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit 3458c3ff8c2c5fa071243b85aa5f3d48b31b1b28)
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2150760
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_extdevice.c | 2 +-
|
||||||
|
src/qemu/qemu_extdevice.h | 5 +++++
|
||||||
|
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c
|
||||||
|
index 34454891f6..d5c3e8ed71 100644
|
||||||
|
--- a/src/qemu/qemu_extdevice.c
|
||||||
|
+++ b/src/qemu/qemu_extdevice.c
|
||||||
|
@@ -64,7 +64,7 @@ qemuExtDeviceLogCommand(virQEMUDriver *driver,
|
||||||
|
* stored and we can remove directories and files in case of domain XML
|
||||||
|
* changes.
|
||||||
|
*/
|
||||||
|
-static int
|
||||||
|
+int
|
||||||
|
qemuExtDevicesInitPaths(virQEMUDriver *driver,
|
||||||
|
virDomainDef *def)
|
||||||
|
{
|
||||||
|
diff --git a/src/qemu/qemu_extdevice.h b/src/qemu/qemu_extdevice.h
|
||||||
|
index 86e7133a2a..d4ac9f395c 100644
|
||||||
|
--- a/src/qemu/qemu_extdevice.h
|
||||||
|
+++ b/src/qemu/qemu_extdevice.h
|
||||||
|
@@ -30,6 +30,11 @@ int qemuExtDeviceLogCommand(virQEMUDriver *driver,
|
||||||
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
|
||||||
|
G_GNUC_WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
+int
|
||||||
|
+qemuExtDevicesInitPaths(virQEMUDriver *driver,
|
||||||
|
+ virDomainDef *def)
|
||||||
|
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT;
|
||||||
|
+
|
||||||
|
int qemuExtDevicesPrepareDomain(virQEMUDriver *driver,
|
||||||
|
virDomainObj *vm)
|
||||||
|
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
@ -0,0 +1,50 @@
|
|||||||
|
From 1d90c111815d3c96446b83f2f389363f44592a7a Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <1d90c111815d3c96446b83f2f389363f44592a7a@dist-git>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Mon, 5 Dec 2022 12:27:24 +0100
|
||||||
|
Subject: [PATCH] qemu_extdevice: Init paths in qemuExtDevicesPrepareDomain()
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The path generation phase belongs conceptually into domain
|
||||||
|
preparation phase and not host preparation. Move
|
||||||
|
qemuExtDevicesInitPaths() call from qemuExtDevicesPrepareHost()
|
||||||
|
into qemuExtDevicesPrepareDomain().
|
||||||
|
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit f1958a3e5e465c389ce3c8cae2a26c5b00775440)
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2150760
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_extdevice.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c
|
||||||
|
index 3eaf6571a2..34454891f6 100644
|
||||||
|
--- a/src/qemu/qemu_extdevice.c
|
||||||
|
+++ b/src/qemu/qemu_extdevice.c
|
||||||
|
@@ -97,6 +97,9 @@ qemuExtDevicesPrepareDomain(virQEMUDriver *driver,
|
||||||
|
int ret = 0;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
+ if (qemuExtDevicesInitPaths(driver, vm->def) < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
for (i = 0; i < vm->def->nvideos; i++) {
|
||||||
|
virDomainVideoDef *video = vm->def->videos[i];
|
||||||
|
|
||||||
|
@@ -134,9 +137,6 @@ qemuExtDevicesPrepareHost(virQEMUDriver *driver,
|
||||||
|
virDomainDef *def = vm->def;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
- if (qemuExtDevicesInitPaths(driver, def) < 0)
|
||||||
|
- return -1;
|
||||||
|
-
|
||||||
|
for (i = 0; i < def->ntpms; i++) {
|
||||||
|
virDomainTPMDef *tpm = def->tpms[i];
|
||||||
|
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
@ -0,0 +1,54 @@
|
|||||||
|
From e7f2bfc6db3b35dc9b76ce56abec636ed9c7f85a Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <e7f2bfc6db3b35dc9b76ce56abec636ed9c7f85a@dist-git>
|
||||||
|
From: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Date: Mon, 5 Dec 2022 12:18:50 +0100
|
||||||
|
Subject: [PATCH] qemu_process: Document qemuProcessPrepare{Domain,Host}()
|
||||||
|
order
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The domain startup process is split into multiple phases. One of
|
||||||
|
them is preparing the domain (at that point live) XML, private
|
||||||
|
data, various paths, etc - see qemuProcessPrepareDomain(); the
|
||||||
|
other prepares the host - see qemuProcessPrepareHost(). It's
|
||||||
|
obvious that the domain XML preparation function must be called
|
||||||
|
before the host preparation function (e.g. the host preparation
|
||||||
|
might try to create a file which path is generated in the domain
|
||||||
|
preparation phase). Nevertheless, let's document this
|
||||||
|
expectation.
|
||||||
|
|
||||||
|
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
|
||||||
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
||||||
|
(cherry picked from commit 107ebe62f4d9cf620608b2a58ba874a5fc83d41a)
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2150760
|
||||||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu/qemu_process.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
|
||||||
|
index e1c18dde90..19b9242623 100644
|
||||||
|
--- a/src/qemu/qemu_process.c
|
||||||
|
+++ b/src/qemu/qemu_process.c
|
||||||
|
@@ -6634,6 +6634,8 @@ qemuProcessPrepareChardevSource(virDomainDef *def,
|
||||||
|
* start the domain but create a valid qemu command. If some code shouldn't be
|
||||||
|
* executed in this case, make sure to check this flag.
|
||||||
|
*
|
||||||
|
+ * This function MUST be called before qemuProcessPrepareHost().
|
||||||
|
+ *
|
||||||
|
* TODO: move all XML modification from qemuBuildCommandLine into this function
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
@@ -7151,6 +7153,8 @@ qemuProcessPrepareHostBackendChardevHotplug(virDomainObj *vm,
|
||||||
|
* update live XML) to prepare environment for a domain which is about to start
|
||||||
|
* and it's the only place to do those modifications.
|
||||||
|
*
|
||||||
|
+ * This function MUST be called only after qemuProcessPrepareDomain().
|
||||||
|
+ *
|
||||||
|
* TODO: move all host modification from qemuBuildCommandLine into this function
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
13
libvirt.spec
13
libvirt.spec
@ -230,7 +230,7 @@
|
|||||||
Summary: Library providing a simple virtualization API
|
Summary: Library providing a simple virtualization API
|
||||||
Name: libvirt
|
Name: libvirt
|
||||||
Version: 8.10.0
|
Version: 8.10.0
|
||||||
Release: 1%{?dist}%{?extra_release}
|
Release: 2%{?dist}%{?extra_release}
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: https://libvirt.org/
|
URL: https://libvirt.org/
|
||||||
|
|
||||||
@ -239,6 +239,11 @@ URL: https://libvirt.org/
|
|||||||
%endif
|
%endif
|
||||||
Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
|
Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz
|
||||||
Source1: symlinks
|
Source1: symlinks
|
||||||
|
Patch1: libvirt-qemu_process-Document-qemuProcessPrepare-Domain-Host-order.patch
|
||||||
|
Patch2: libvirt-qemu_extdevice-Init-paths-in-qemuExtDevicesPrepareDomain.patch
|
||||||
|
Patch3: libvirt-qemu_extdevice-Expose-qemuExtDevicesInitPaths.patch
|
||||||
|
Patch4: libvirt-qemu-Init-ext-devices-paths-on-reconnect.patch
|
||||||
|
|
||||||
|
|
||||||
Requires: libvirt-daemon = %{version}-%{release}
|
Requires: libvirt-daemon = %{version}-%{release}
|
||||||
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
Requires: libvirt-daemon-config-network = %{version}-%{release}
|
||||||
@ -2422,6 +2427,12 @@ exit 0
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Dec 6 2022 Jiri Denemark <jdenemar@redhat.com> - 8.10.0-2
|
||||||
|
- qemu_process: Document qemuProcessPrepare{Domain,Host}() order (rhbz#2150760)
|
||||||
|
- qemu_extdevice: Init paths in qemuExtDevicesPrepareDomain() (rhbz#2150760)
|
||||||
|
- qemu_extdevice: Expose qemuExtDevicesInitPaths() (rhbz#2150760)
|
||||||
|
- qemu: Init ext devices paths on reconnect (rhbz#2150760)
|
||||||
|
|
||||||
* Thu Dec 1 2022 Jiri Denemark <jdenemar@redhat.com> - 8.10.0-1
|
* Thu Dec 1 2022 Jiri Denemark <jdenemar@redhat.com> - 8.10.0-1
|
||||||
- Rebased to libvirt-8.10.0 (rhbz#2124466)
|
- Rebased to libvirt-8.10.0 (rhbz#2124466)
|
||||||
- The rebase also fixes the following bugs:
|
- The rebase also fixes the following bugs:
|
||||||
|
Loading…
Reference in New Issue
Block a user