@@ -14032,7 +14032,9 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
14032
14032
virQEMUDriverPtr driver = dom->conn->privateData;
14033
14033
virDomainObjPtr vm;
14034
14034
qemuDomainObjPrivatePtr priv;
14035
+ g_autoptr(qemuMigrationParams) migParams = NULL;
14035
14036
int ret = -1;
14037
+ int rc;
14036
14038
14037
14039
virCheckFlags(0, -1);
14038
14040
@@ -14057,13 +14059,27 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom,
14057
14059
goto endjob;
14058
14060
}
14059
14061
14060
- qemuDomainObjEnterMonitor(driver, vm);
14061
-
14062
14062
VIR_DEBUG("Setting compression cache to %llu B", cacheSize);
14063
- ret = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize);
14063
+ if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE)) {
14064
+ if (!(migParams = qemuMigrationParamsNew()))
14065
+ goto endjob;
14064
14066
14065
- if (qemuDomainObjExitMonitor(driver, vm) < 0)
14066
- ret = -1;
14067
+ if (qemuMigrationParamsSetULL(migParams,
14068
+ QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE,
14069
+ cacheSize) < 0)
14070
+ goto endjob;
14071
+
14072
+ if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_NONE,
14073
+ migParams) < 0)
14074
+ goto endjob;
14075
+ } else {
14076
+ qemuDomainObjEnterMonitor(driver, vm);
14077
+ rc = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize);
14078
+ if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0)
14079
+ goto endjob;
14080
+ }
14081
+
14082
+ ret = 0;
14067
14083
14068
14084
endjob:
14069
14085
qemuDomainObjEndJob(driver, vm);
0 commit comments