Introduce qemuMigrationParamsForSave() to create a
qemuMigrationParams object initialized with appropriate migration
capabilities and parameters for a save operation.
Note that mapped-ram capability also requires the multifd capability.
For now, the number of multifd channels is set to 1. Future work
to support parallel save/restore can set the number of channels to
a user-specified value.
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
src/qemu/qemu_migration.c | 2 +-
src/qemu/qemu_migration_params.c | 21 +++++++++++++++++++++
src/qemu/qemu_migration_params.h | 3 +++
3 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index e1399806d5..8753fb5358 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -7139,7 +7139,7 @@ qemuMigrationSrcToFile(virQEMUDriver *driver, virDomainObj *vm,
/* Increase migration bandwidth to unlimited since target is a file.
* Failure to change migration speed is not fatal. */
- if (!(migParams = qemuMigrationParamsNew()))
+ if (!(migParams = qemuMigrationParamsForSave(false)))
return -1;
if (qemuMigrationParamsSetULL(migParams,
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
index 4fc9199f1c..d48cdd5506 100644
--- a/src/qemu/qemu_migration_params.c
+++ b/src/qemu/qemu_migration_params.c
@@ -792,6 +792,27 @@ qemuMigrationParamsFromFlags(virTypedParameterPtr params,
}
+qemuMigrationParams *
+qemuMigrationParamsForSave(bool sparse)
+{
+ g_autoptr(qemuMigrationParams) saveParams = NULL;
+
+ if (!(saveParams = qemuMigrationParamsNew()))
+ return NULL;
+
+ if (sparse) {
+ if (virBitmapSetBit(saveParams->caps, QEMU_MIGRATION_CAP_MAPPED_RAM) < 0)
+ return NULL;
+ if (virBitmapSetBit(saveParams->caps, QEMU_MIGRATION_CAP_MULTIFD) < 0)
+ return NULL;
+ saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].value.i = 1;
+ saveParams->params[QEMU_MIGRATION_PARAM_MULTIFD_CHANNELS].set = true;
+ }
+
+ return g_steal_pointer(&saveParams);
+}
+
+
int
qemuMigrationParamsDump(qemuMigrationParams *migParams,
virTypedParameterPtr *params,
diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_params.h
index 2379950ce9..88a1bc1a66 100644
--- a/src/qemu/qemu_migration_params.h
+++ b/src/qemu/qemu_migration_params.h
@@ -87,6 +87,9 @@ qemuMigrationParamsFromFlags(virTypedParameterPtr params,
unsigned int flags,
qemuMigrationParty party);
+qemuMigrationParams *
+qemuMigrationParamsForSave(bool sparse);
+
int
qemuMigrationParamsDump(qemuMigrationParams *migParams,
virTypedParameterPtr *params,
--
2.43.0