]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Limit usage of qemuMonitorMigrationParams
authorJiri Denemark <jdenemar@redhat.com>
Thu, 15 Mar 2018 10:39:50 +0000 (11:39 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Tue, 17 Apr 2018 08:46:23 +0000 (10:46 +0200)
Use this internal structure only in qemu_migration_params.c and change
other non-test users to use the high level qemuMigrationParams struct.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c
src/qemu/qemu_migration_params.c
src/qemu/qemu_migration_params.h

index bd7970066f4c8a93dc02d366abfc26bee3cb2ed1..4ec6f1190214efbb64c9922bdb8fc9a24782e4e8 100644 (file)
@@ -13533,8 +13533,7 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom,
 {
     virQEMUDriverPtr driver = dom->conn->privateData;
     virDomainObjPtr vm;
-    qemuDomainObjPrivatePtr priv;
-    qemuMonitorMigrationParams migparams = { 0 };
+    qemuMigrationParamsPtr migParams = NULL;
     int ret = -1;
 
     virCheckFlags(0, -1);
@@ -13554,27 +13553,24 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom,
         goto endjob;
     }
 
-    priv = vm->privateData;
-    qemuDomainObjEnterMonitor(driver, vm);
+    if (qemuMigrationParamsFetch(driver, vm, QEMU_ASYNC_JOB_NONE,
+                                 &migParams) < 0)
+        goto endjob;
 
-    if (qemuMonitorGetMigrationParams(priv->mon, &migparams) == 0) {
-        if (migparams.downtimeLimit_set) {
-            *downtime = migparams.downtimeLimit;
-            ret = 0;
-        } else {
-            virReportError(VIR_ERR_OPERATION_INVALID, "%s",
-                           _("Querying migration downtime is not supported by "
-                             "QEMU binary"));
-        }
+    if (qemuMigrationParamsGetDowntimeLimit(migParams, downtime) == 1) {
+        virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+                       _("Querying migration downtime is not supported by "
+                         "QEMU binary"));
+        goto endjob;
     }
 
-    if (qemuDomainObjExitMonitor(driver, vm) < 0)
-        ret = -1;
+    ret = 0;
 
  endjob:
     qemuDomainObjEndJob(driver, vm);
 
  cleanup:
+    qemuMigrationParamsFree(migParams);
     virDomainObjEndAPI(&vm);
     return ret;
 }
index 94de0458f52ed703f7811e64074d5be9392f6c70..cadb402b0fa0d62ef4229e1f85c9d9b1a54bfa8a 100644 (file)
@@ -553,6 +553,22 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver,
 }
 
 
+/**
+ * Returns  0 on success,
+ *          1 if the parameter is not supported by QEMU.
+ */
+int
+qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams,
+                                    unsigned long long *value)
+{
+    if (!migParams->params.downtimeLimit_set)
+        return 1;
+
+    *value = migParams->params.downtimeLimit;
+    return 0;
+}
+
+
 /**
  * qemuMigrationParamsCheck:
  *
index 0a30dcd6238bb43e77890f93afbf561399138d02..cc9a14601b3b4a00c1fd5dbb25b618614c0cf145 100644 (file)
@@ -79,6 +79,10 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver,
                          int asyncJob,
                          qemuMigrationParamsPtr *migParams);
 
+int
+qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams,
+                                    unsigned long long *value);
+
 int
 qemuMigrationParamsCheck(virQEMUDriverPtr driver,
                          virDomainObjPtr vm,