forked from rpms/libvirt
1dc8926705
- qemu: introduce capability QEMU_CAPS_MIGRATION_BLOCKED_REASONS (rhbz#2092833) - qemu: new function to retrieve migration blocker reasons from QEMU (rhbz#2092833) - qemu: query QEMU for migration blockers before our own harcoded checks (rhbz#2092833) - qemu: remove hardcoded migration fail for vDPA devices if we can ask QEMU (rhbz#2092833) - qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers (rhbz#2092833) - qemu: don't try to query QEMU about migration blockers during offline migration (rhbz#2092833) - qemu_migration: Acquire correct job in qemuMigrationSrcIsAllowed (rhbz#2092833) - virsh: Require --xpath for *dumpxml (rhbz#2103524) - qemu: skip hardcoded hostdev migration check if QEMU can do it for us (rhbz#1497907) Resolves: rhbz#1497907, rhbz#2092833, rhbz#2103524
65 lines
2.5 KiB
Diff
65 lines
2.5 KiB
Diff
From 25fe3cf8990b654fd568f580b8885102b3f92789 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <25fe3cf8990b654fd568f580b8885102b3f92789@dist-git>
|
|
From: Jiri Denemark <jdenemar@redhat.com>
|
|
Date: Thu, 21 Jul 2022 15:00:28 +0200
|
|
Subject: [PATCH] qemu_migration: Use EnterMonitorAsync in
|
|
qemuDomainGetMigrationBlockers
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The code is run with an async job and thus needs to make sure a nested
|
|
job is acquired before entering the monitor.
|
|
|
|
While touching the code in qemuMigrationSrcIsAllowed I also fixed the
|
|
grammar which was accidentally broken by v8.5.0-140-g2103807e33.
|
|
|
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
|
|
(cherry picked from commit 62627524607f214e724a48fcac575737f49a271c)
|
|
Resolves: https://bugzilla.redhat.com/2092833
|
|
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
|
|
---
|
|
src/qemu/qemu_migration.c | 11 ++++++++---
|
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
|
|
index 2f77e45abf..735eb02673 100644
|
|
--- a/src/qemu/qemu_migration.c
|
|
+++ b/src/qemu/qemu_migration.c
|
|
@@ -1418,12 +1418,15 @@ qemuMigrationSrcIsAllowedHostdev(const virDomainDef *def)
|
|
static int
|
|
qemuDomainGetMigrationBlockers(virQEMUDriver *driver,
|
|
virDomainObj *vm,
|
|
+ int asyncJob,
|
|
char ***blockers)
|
|
{
|
|
qemuDomainObjPrivate *priv = vm->privateData;
|
|
int rc;
|
|
|
|
- qemuDomainObjEnterMonitor(driver, vm);
|
|
+ if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
|
|
+ return -1;
|
|
+
|
|
rc = qemuMonitorGetMigrationBlockers(priv->mon, blockers);
|
|
qemuDomainObjExitMonitor(vm);
|
|
|
|
@@ -1458,10 +1461,12 @@ qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
|
|
bool blockedReasonsCap = virQEMUCapsGet(priv->qemuCaps,
|
|
QEMU_CAPS_MIGRATION_BLOCKED_REASONS);
|
|
|
|
- /* Ask qemu if it have a migration blocker */
|
|
+ /* Ask qemu if it has a migration blocker */
|
|
if (blockedReasonsCap) {
|
|
g_auto(GStrv) blockers = NULL;
|
|
- if (qemuDomainGetMigrationBlockers(driver, vm, &blockers) < 0)
|
|
+ if (qemuDomainGetMigrationBlockers(driver, vm,
|
|
+ VIR_ASYNC_JOB_MIGRATION_OUT,
|
|
+ &blockers) < 0)
|
|
return false;
|
|
|
|
if (blockers && blockers[0]) {
|
|
--
|
|
2.35.1
|
|
|