]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Create a wrapper around qemuMonitorSetCapabilities
authorJiri Denemark <jdenemar@redhat.com>
Mon, 16 Oct 2017 10:52:36 +0000 (12:52 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 20 Oct 2017 07:08:45 +0000 (09:08 +0200)
The new function is called qemuProcessInitMonitor and it will enter/exit
the monitor so that the caller doesn't have to deal with this.

The goal of this patch is to simplify the code in qemuConnectMonitor
which would otherwise be a bit hairy after the following patch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_process.c

index 66e81bbe51d954377178060781ed422dffc1922a..8d551d071564a3a118ddba885fcfd1993052b184 100644 (file)
@@ -1730,12 +1730,31 @@ qemuProcessMonitorLogFree(void *opaque)
     virObjectUnref(logCtxt);
 }
 
+
+static int
+qemuProcessInitMonitor(virQEMUDriverPtr driver,
+                       virDomainObjPtr vm,
+                       qemuDomainAsyncJob asyncJob)
+{
+    int ret;
+
+    if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
+        return -1;
+
+    ret = qemuMonitorSetCapabilities(QEMU_DOMAIN_PRIVATE(vm)->mon);
+
+    if (qemuDomainObjExitMonitor(driver, vm) < 0)
+        ret = -1;
+
+    return ret;
+}
+
+
 static int
 qemuConnectMonitor(virQEMUDriverPtr driver, virDomainObjPtr vm, int asyncJob,
                    qemuDomainLogContextPtr logCtxt)
 {
     qemuDomainObjPrivatePtr priv = vm->privateData;
-    int ret = -1;
     qemuMonitorPtr mon = NULL;
     unsigned long long timeout = 0;
 
@@ -1794,13 +1813,12 @@ qemuConnectMonitor(virQEMUDriverPtr driver, virDomainObjPtr vm, int asyncJob,
         return -1;
     }
 
+    if (qemuProcessInitMonitor(driver, vm, asyncJob) < 0)
+        return -1;
 
     if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
         return -1;
 
-    if (qemuMonitorSetCapabilities(priv->mon) < 0)
-        goto cleanup;
-
     if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT) &&
         qemuMonitorSetMigrationCapability(priv->mon,
                                           QEMU_MONITOR_MIGRATION_CAPS_EVENTS,
@@ -1809,12 +1827,10 @@ qemuConnectMonitor(virQEMUDriverPtr driver, virDomainObjPtr vm, int asyncJob,
         virQEMUCapsClear(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT);
     }
 
-    ret = 0;
-
- cleanup:
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
-        ret = -1;
-    return ret;
+        return -1;
+
+    return 0;
 }