]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Always assume support for QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE
authorPeter Krempa <pkrempa@redhat.com>
Fri, 15 Jul 2022 12:16:54 +0000 (14:16 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 15 Jul 2022 13:57:10 +0000 (15:57 +0200)
The 'xbzrle-cache-size' parameter was added in qemu-2.11 thus all
supported qemu versions now use the new code path.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c
src/qemu/qemu_migration_params.c

index 0a5239e1367db2e43f53d383c4fa7adb8161bbca..75c7a8a6b225600ffdb42c7e144189189efa73bf 100644 (file)
@@ -13161,10 +13161,8 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom,
 {
     virQEMUDriver *driver = dom->conn->privateData;
     virDomainObj *vm;
-    qemuDomainObjPrivate *priv;
     g_autoptr(qemuMigrationParams) migParams = NULL;
     int ret = -1;
-    int rc;
 
     virCheckFlags(0, -1);
 
@@ -13180,8 +13178,6 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom,
     if (virDomainObjCheckActive(vm) < 0)
         goto endjob;
 
-    priv = vm->privateData;
-
     if (!qemuMigrationCapsGet(vm, QEMU_MIGRATION_CAP_XBZRLE)) {
         virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
                        _("Compressed migration is not supported by "
@@ -13189,22 +13185,14 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom,
         goto endjob;
     }
 
-    if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) {
-        if (qemuMigrationParamsFetch(driver, vm, VIR_ASYNC_JOB_NONE,
-                                     &migParams) < 0)
-            goto endjob;
+    if (qemuMigrationParamsFetch(driver, vm, VIR_ASYNC_JOB_NONE,
+                                 &migParams) < 0)
+        goto endjob;
 
-        if (qemuMigrationParamsGetULL(migParams,
-                                      QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE,
-                                      cacheSize) < 0)
-            goto endjob;
-    } else {
-        qemuDomainObjEnterMonitor(driver, vm);
-        rc = qemuMonitorGetMigrationCacheSize(priv->mon, cacheSize);
-        qemuDomainObjExitMonitor(vm);
-        if (rc < 0)
-            goto endjob;
-    }
+    if (qemuMigrationParamsGetULL(migParams,
+                                  QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE,
+                                  cacheSize) < 0)
+        goto endjob;
 
     ret = 0;
 
@@ -13223,10 +13211,8 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
 {
     virQEMUDriver *driver = dom->conn->privateData;
     virDomainObj *vm;
-    qemuDomainObjPrivate *priv;
     g_autoptr(qemuMigrationParams) migParams = NULL;
     int ret = -1;
-    int rc;
 
     virCheckFlags(0, -1);
 
@@ -13242,8 +13228,6 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
     if (virDomainObjCheckActive(vm) < 0)
         goto endjob;
 
-    priv = vm->privateData;
-
     if (!qemuMigrationCapsGet(vm, QEMU_MIGRATION_CAP_XBZRLE)) {
         virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
                        _("Compressed migration is not supported by "
@@ -13252,25 +13236,17 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
     }
 
     VIR_DEBUG("Setting compression cache to %llu B", cacheSize);
-    if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) {
-        if (!(migParams = qemuMigrationParamsNew()))
-            goto endjob;
+    if (!(migParams = qemuMigrationParamsNew()))
+        goto endjob;
 
-        if (qemuMigrationParamsSetULL(migParams,
-                                      QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE,
-                                      cacheSize) < 0)
-            goto endjob;
+    if (qemuMigrationParamsSetULL(migParams,
+                                  QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE,
+                                  cacheSize) < 0)
+        goto endjob;
 
-        if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
-                                     migParams, 0) < 0)
-            goto endjob;
-    } else {
-        qemuDomainObjEnterMonitor(driver, vm);
-        rc = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize);
-        qemuDomainObjExitMonitor(vm);
-        if (rc < 0)
-            goto endjob;
-    }
+    if (qemuMigrationParamsApply(driver, vm, VIR_ASYNC_JOB_NONE,
+                                 migParams, 0) < 0)
+        goto endjob;
 
     ret = 0;
 
index 6ea0bde13aa8af0aba900b4d8d5f2b59f3cd51e2..0bce358ac310943dcecf23eccfc4b399370a7106 100644 (file)
@@ -886,10 +886,8 @@ qemuMigrationParamsApply(virQEMUDriver *driver,
                          unsigned long apiFlags)
 {
     qemuDomainObjPrivate *priv = vm->privateData;
-    bool xbzrleCacheSize_old = false;
     g_autoptr(virJSONValue) params = NULL;
     g_autoptr(virJSONValue) caps = NULL;
-    qemuMigrationParam xbzrle = QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE;
     bool postcopyResume = !!(apiFlags & VIR_MIGRATE_POSTCOPY_RESUME);
     int ret = -1;
 
@@ -917,19 +915,6 @@ qemuMigrationParamsApply(virQEMUDriver *driver,
         }
     }
 
-    /* If QEMU is too old to support xbzrle-cache-size migration parameter,
-     * we need to set it via migrate-set-cache-size and tell
-     * qemuMonitorSetMigrationParams to ignore this parameter.
-     */
-    if (migParams->params[xbzrle].set &&
-        !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) {
-        if (qemuMonitorSetMigrationCacheSize(priv->mon,
-                                             migParams->params[xbzrle].value.ull) < 0)
-            goto cleanup;
-        xbzrleCacheSize_old = true;
-        migParams->params[xbzrle].set = false;
-    }
-
     if (!(params = qemuMigrationParamsToJSON(migParams, postcopyResume)))
         goto cleanup;
 
@@ -942,9 +927,6 @@ qemuMigrationParamsApply(virQEMUDriver *driver,
  cleanup:
     qemuDomainObjExitMonitor(vm);
 
-    if (xbzrleCacheSize_old)
-        migParams->params[xbzrle].set = true;
-
     return ret;
 }