184 lines
6.6 KiB
Diff
184 lines
6.6 KiB
Diff
|
From b020ddee84458afd8de70d9f296b91fa2b6a95fd Mon Sep 17 00:00:00 2001
|
||
|
Message-Id: <b020ddee84458afd8de70d9f296b91fa2b6a95fd@dist-git>
|
||
|
From: Peter Krempa <pkrempa@redhat.com>
|
||
|
Date: Fri, 15 Jul 2022 14:16:54 +0200
|
||
|
Subject: [PATCH] qemu: Always assume support for
|
||
|
QEMU_CAPS_MIGRATION_PARAM_XBZRLE_CACHE_SIZE
|
||
|
|
||
|
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>
|
||
|
(cherry picked from commit 06e0ba3da71ec6c58024efe57d0f55d3d1352d60)
|
||
|
|
||
|
This commit is not strictly needed for fixing the following BZ, but it
|
||
|
removes a code which will be never executed in RHEL 9 and backporting it
|
||
|
avoids conflicts with the actual bug fix.
|
||
|
|
||
|
https://bugzilla.redhat.com/show_bug.cgi?id=2107892
|
||
|
|
||
|
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
||
|
---
|
||
|
src/qemu/qemu_driver.c | 56 +++++++++-----------------------
|
||
|
src/qemu/qemu_migration_params.c | 18 ----------
|
||
|
2 files changed, 16 insertions(+), 58 deletions(-)
|
||
|
|
||
|
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
||
|
index 17e4c23199..256e126ae1 100644
|
||
|
--- a/src/qemu/qemu_driver.c
|
||
|
+++ b/src/qemu/qemu_driver.c
|
||
|
@@ -13172,10 +13172,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);
|
||
|
|
||
|
@@ -13191,8 +13189,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 "
|
||
|
@@ -13200,22 +13196,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;
|
||
|
|
||
|
@@ -13234,10 +13222,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);
|
||
|
|
||
|
@@ -13253,8 +13239,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 "
|
||
|
@@ -13263,25 +13247,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;
|
||
|
|
||
|
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
|
||
|
index 6ea0bde13a..0bce358ac3 100644
|
||
|
--- a/src/qemu/qemu_migration_params.c
|
||
|
+++ b/src/qemu/qemu_migration_params.c
|
||
|
@@ -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;
|
||
|
}
|
||
|
|
||
|
--
|
||
|
2.35.1
|
||
|
|