From: Peter Krempa Date: Fri, 24 Apr 2026 12:53:13 +0000 (+0200) Subject: qemu: migration: Use 'virTypedParamsValidateTemplate' for migration params X-Git-Tag: v12.4.0-rc1~95 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=a650af5002a7477cab649c44fff58bbbc909b8a8;p=thirdparty%2Flibvirt.git qemu: migration: Use 'virTypedParamsValidateTemplate' for migration params Refactor the code to use the new helper for validating migration params and making them later available for introspection. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 794493525a..569ee46831 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11148,7 +11148,7 @@ qemuDomainMigrateBegin3Params(virDomainPtr domain, virDomainObj *vm; virCheckFlags(QEMU_MIGRATION_FLAGS, NULL); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return NULL; if (virTypedParamsGetString(params, nparams, @@ -11257,7 +11257,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, const char *nbdURI = NULL; virCheckFlags(QEMU_MIGRATION_FLAGS, -1); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return -1; if (virTypedParamsGetString(params, nparams, @@ -11395,7 +11395,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn, g_autoptr(qemuMigrationParams) migParams = NULL; virCheckFlags(QEMU_MIGRATION_FLAGS, -1); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return -1; if (virTypedParamsGetString(params, nparams, @@ -11499,7 +11499,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, int ret = -1; virCheckFlags(QEMU_MIGRATION_FLAGS, -1); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return ret; if (virTypedParamsGetString(params, nparams, @@ -11645,7 +11645,7 @@ qemuDomainMigrateFinish3Params(virConnectPtr dconn, const char *dname = NULL; virCheckFlags(QEMU_MIGRATION_FLAGS, NULL); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return NULL; if (virTypedParamsGetString(params, nparams, @@ -11714,7 +11714,7 @@ qemuDomainMigrateConfirm3Params(virDomainPtr domain, virCheckFlags(QEMU_MIGRATION_FLAGS, -1); - if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS) < 0) + if (virTypedParamsValidateTemplate(params, nparams, qemuMigrationParametersValidation) < 0) return -1; if (!(vm = qemuDomainObjFromDomain(domain))) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 2c36ce8332..4a43ab83b0 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -84,6 +84,35 @@ VIR_ENUM_IMPL(qemuMigrationJobPhase, "finish_resume", ); +const virTypedParamValidationTemplate qemuMigrationParametersValidation[] = { + { VIR_MIGRATE_PARAM_URI, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_DEST_NAME, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_DEST_XML, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_BANDWIDTH, VIR_TYPED_PARAM_ULLONG }, + { VIR_MIGRATE_PARAM_GRAPHICS_URI, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_LISTEN_ADDRESS, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_MIGRATE_DISKS, VIR_TYPED_PARAM_STRING | VIR_TYPED_PARAM_MULTIPLE }, + { VIR_MIGRATE_PARAM_MIGRATE_DISKS_DETECT_ZEROES, VIR_TYPED_PARAM_STRING | VIR_TYPED_PARAM_MULTIPLE }, + { VIR_MIGRATE_PARAM_MIGRATE_DISKS_TARGET_ZERO, VIR_TYPED_PARAM_STRING | VIR_TYPED_PARAM_MULTIPLE }, + { VIR_MIGRATE_PARAM_DISKS_PORT, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION, VIR_TYPED_PARAM_STRING | VIR_TYPED_PARAM_MULTIPLE }, + { VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE, VIR_TYPED_PARAM_ULLONG }, + { VIR_MIGRATE_PARAM_PERSIST_XML, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY, VIR_TYPED_PARAM_ULLONG }, + { VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL, VIR_TYPED_PARAM_INT }, + { VIR_MIGRATE_PARAM_TLS_DESTINATION, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_DISKS_URI, VIR_TYPED_PARAM_STRING }, + { VIR_MIGRATE_PARAM_BANDWIDTH_AVAIL_SWITCHOVER, VIR_TYPED_PARAM_ULLONG }, + { "", 0 } +}; + static bool ATTRIBUTE_NONNULL(1) qemuMigrationJobIsAllowed(virDomainObj *vm) diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 59f32d2ebf..7e9410e1f7 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -65,38 +65,8 @@ 0) /* All supported migration parameters and their types. */ -#define QEMU_MIGRATION_PARAMETERS \ - VIR_MIGRATE_PARAM_URI, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_DEST_NAME, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_DEST_XML, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_BANDWIDTH, VIR_TYPED_PARAM_ULLONG, \ - VIR_MIGRATE_PARAM_GRAPHICS_URI, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_LISTEN_ADDRESS, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_MIGRATE_DISKS, VIR_TYPED_PARAM_STRING | \ - VIR_TYPED_PARAM_MULTIPLE, \ - VIR_MIGRATE_PARAM_MIGRATE_DISKS_DETECT_ZEROES, VIR_TYPED_PARAM_STRING | \ - VIR_TYPED_PARAM_MULTIPLE, \ - VIR_MIGRATE_PARAM_MIGRATE_DISKS_TARGET_ZERO, VIR_TYPED_PARAM_STRING | \ - VIR_TYPED_PARAM_MULTIPLE, \ - VIR_MIGRATE_PARAM_DISKS_PORT, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION, VIR_TYPED_PARAM_STRING | \ - VIR_TYPED_PARAM_MULTIPLE, \ - VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE, VIR_TYPED_PARAM_ULLONG, \ - VIR_MIGRATE_PARAM_PERSIST_XML, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY, VIR_TYPED_PARAM_ULLONG, \ - VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL, VIR_TYPED_PARAM_INT, \ - VIR_MIGRATE_PARAM_TLS_DESTINATION, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_DISKS_URI, VIR_TYPED_PARAM_STRING, \ - VIR_MIGRATE_PARAM_BANDWIDTH_AVAIL_SWITCHOVER, VIR_TYPED_PARAM_ULLONG, \ - NULL +extern const virTypedParamValidationTemplate qemuMigrationParametersValidation[]; typedef enum { QEMU_MIGRATION_PHASE_NONE = 0,