From 62627524607f214e724a48fcac575737f49a271c Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Thu, 21 Jul 2022 15:00:28 +0200 Subject: [PATCH] qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers 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 Reviewed-by: Michal Privoznik --- 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 5d1e5f987b..d83db3a824 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]) {