From: Jiri Denemark Date: Thu, 21 Jul 2022 13:00:28 +0000 (+0200) Subject: qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers X-Git-Tag: v8.6.0-rc1~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62627524607f214e724a48fcac575737f49a271c;p=thirdparty%2Flibvirt.git 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 --- 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]) {