[libvirt PATCH] qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers

Jiri Denemark posted 1 patch 1 year, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/c2ac268f8f516b87fabeaa954679955d3afd18ce.1658408749.git.jdenemar@redhat.com
src/qemu/qemu_migration.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
[libvirt PATCH] qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers
Posted by Jiri Denemark 1 year, 9 months ago
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>
---
 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]) {
-- 
2.35.1
Re: [libvirt PATCH] qemu_migration: Use EnterMonitorAsync in qemuDomainGetMigrationBlockers
Posted by Michal Prívozník 1 year, 9 months ago
On 7/21/22 15:05, Jiri Denemark wrote:
> 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>
> ---
>  src/qemu/qemu_migration.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Michal