[libvirt PATCH 0/5] Avoid deprecated commands for migration parameters

Jiri Denemark (5): qemu: Probe for a few params supported by migrate-set-parameters qemu: Avoid deprecated migrate_set_speed QMP command qemu: Avoid deprecated migrate_set_downtime QMP command qemu: Avoid deprecated query-migrate-cache-size QMP command qemu: Avoid deprecated migrate-set-cache-size QMP command src/qemu/qemu_capabilities.c | 8 ++ src/qemu/qemu_capabilities.h | 5 + src/qemu/qemu_driver.c | 92 +++++++++++++++---- src/qemu/qemu_migration.c | 53 +++++++++-- src/qemu/qemu_migration_params.c | 3 +- .../caps_2.10.0.aarch64.xml | 2 + .../caps_2.10.0.ppc64.xml | 2 + .../caps_2.10.0.s390x.xml | 2 + .../caps_2.10.0.x86_64.xml | 2 + .../caps_2.11.0.s390x.xml | 3 + .../caps_2.11.0.x86_64.xml | 3 + .../caps_2.12.0.aarch64.xml | 3 + .../caps_2.12.0.ppc64.xml | 3 + .../caps_2.12.0.s390x.xml | 3 + .../caps_2.12.0.x86_64.xml | 3 + .../qemucapabilitiesdata/caps_2.8.0.s390x.xml | 2 + .../caps_2.8.0.x86_64.xml | 2 + .../qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 2 + .../qemucapabilitiesdata/caps_2.9.0.s390x.xml | 2 + .../caps_2.9.0.x86_64.xml | 2 + .../qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 3 + .../caps_3.0.0.riscv32.xml | 3 + .../caps_3.0.0.riscv64.xml | 3 + .../qemucapabilitiesdata/caps_3.0.0.s390x.xml | 3 + .../caps_3.0.0.x86_64.xml | 3 + .../qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 3 + .../caps_3.1.0.x86_64.xml | 3 + .../caps_4.0.0.aarch64.xml | 3 + .../qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 3 + .../caps_4.0.0.riscv32.xml | 3 + .../caps_4.0.0.riscv64.xml | 3 + .../qemucapabilitiesdata/caps_4.0.0.s390x.xml | 3 + .../caps_4.0.0.x86_64.xml | 3 + .../caps_4.1.0.x86_64.xml | 3 + .../caps_4.2.0.aarch64.xml | 3 + .../qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 3 + .../qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 + .../caps_4.2.0.x86_64.xml | 3 + .../caps_5.0.0.aarch64.xml | 3 + .../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 3 + .../caps_5.0.0.riscv64.xml | 3 + .../caps_5.0.0.x86_64.xml | 3 + .../caps_5.1.0.x86_64.xml | 3 + tests/qemumonitorjsontest.c | 6 +- 44 files changed, 240 insertions(+), 32 deletions(-) -- 2.27.0

These parameters were originally set via dedicated commands which are now deprecated. We want to use migrate-set-parameters instead if possible. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_capabilities.c | 8 ++++++++ src/qemu/qemu_capabilities.h | 5 +++++ tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 2 ++ tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 2 ++ tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml | 3 +++ tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 3 +++ tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 3 +++ tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml | 3 +++ tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 3 +++ tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 3 +++ 40 files changed, 118 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index aa90eab229..43438cb9fb 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -587,6 +587,11 @@ VIR_ENUM_IMPL(virQEMUCaps, "cpu.migratable", "query-cpu-model-expansion.migratable", "fw_cfg", + "migration-param.bandwidth", + "migration-param.downtime", + + /* 375 */ + "migration-param.cache-size", ); @@ -1508,6 +1513,9 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = { { "query-named-block-nodes/arg-type/flat", QEMU_CAPS_QMP_QUERY_NAMED_BLOCK_NODES_FLAT }, { "blockdev-snapshot/$allow-write-only-overlay", QEMU_CAPS_BLOCKDEV_SNAPSHOT_ALLOW_WRITE_ONLY }, { "blockdev-add/arg-type/+file/aio/^io_uring", QEMU_CAPS_AIO_IO_URING }, + { "migrate-set-parameters/arg-type/max-bandwidth", QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH }, + { "migrate-set-parameters/arg-type/downtime-limit", QEMU_CAPS_MIGRATION_PARAM_DOWNTIME }, + { "migrate-set-parameters/arg-type/xbzrle-cache-size", QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE }, }; typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 0839c50bc4..9dbdc90395 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -568,6 +568,11 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */ QEMU_CAPS_CPU_MIGRATABLE, /* -cpu ...,migratable=on|off */ QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION_MIGRATABLE, /* query-cpu-model-expansion supports migratable:false */ QEMU_CAPS_FW_CFG, /* -fw_cfg command line option */ + QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH, /* max-bandwidth field in migrate-set-parameters */ + QEMU_CAPS_MIGRATION_PARAM_DOWNTIME, /* downtime-limit field in migrate-set-parameters */ + + /* 375 */ + QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE, /* xbzrle-cache-size field in migrate-set-parameters */ QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index 0848b1e18b..b0fcbc4218 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -143,6 +143,8 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index 82a37edd9c..edf01d2e2f 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -143,6 +143,8 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index 7a1ad3d173..98a3c0eec2 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -109,6 +109,8 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml index cca369de2c..98b1a94349 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml @@ -187,6 +187,8 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2010000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100287</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml index 1108aa46d0..cda180031a 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml @@ -116,6 +116,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100288</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml index 0dc0252c8e..3756411210 100644 --- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml @@ -193,6 +193,9 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2011000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100288</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml index 78070c0401..e9ec102ac0 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml @@ -159,6 +159,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2012000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml index 45d3baf080..ce8b7383a4 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml @@ -160,6 +160,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml index f9b92d11f2..d334833145 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml @@ -128,6 +128,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2012000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml index 6387b5b77e..17b5e5e207 100644 --- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml @@ -203,6 +203,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2011090</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100289</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml index 083562f641..8c63aeec07 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml @@ -98,6 +98,8 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2007093</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100246</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml index 5426e8a54b..4e022e2d84 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -163,6 +163,8 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2008000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100246</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml index fe49896e72..e72611e0a8 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml @@ -135,6 +135,8 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml index 32861f67ba..b48dc98501 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml @@ -103,6 +103,8 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml index 66eed229b4..d7b2d0633d 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -181,6 +181,8 @@ <flag name='pvscsi'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> <version>2009000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100247</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml index 95f982eadf..bcc12e1741 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.ppc64.xml @@ -162,6 +162,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>2012050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml index 35d08c67ec..3e23e8d1f5 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv32.xml @@ -98,6 +98,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml index 42635c2e6d..1744b83d65 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.riscv64.xml @@ -98,6 +98,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml index 96d8953496..1d2c3b16eb 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.s390x.xml @@ -131,6 +131,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml index 58863ffdc2..474c3608fa 100644 --- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml @@ -209,6 +209,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100239</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml index 3a21eb3aab..85b4f26702 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.ppc64.xml @@ -167,6 +167,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000091</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml index 4cb80d0b59..db7462e81a 100644 --- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml @@ -212,6 +212,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>3000092</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml index b1047ca044..3407cdac54 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.aarch64.xml @@ -173,6 +173,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml index a4916c2279..f6930c7ec3 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.ppc64.xml @@ -181,6 +181,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml index ec7c6b05e1..8632737463 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv32.xml @@ -174,6 +174,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml index d8924a10e8..80f1a146f5 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.riscv64.xml @@ -174,6 +174,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml index 671c28cb82..7a6dafbdd2 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.s390x.xml @@ -139,6 +139,9 @@ <flag name='storage.werror'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml index a8a0284829..a763fb371d 100644 --- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml @@ -217,6 +217,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100240</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml index 18d39faf90..b6a3f95b2c 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -223,6 +223,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4001000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml index 11d487eefe..e0562705e9 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.aarch64.xml @@ -185,6 +185,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml index 4d44cd4ac6..5edf71f98b 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml @@ -186,6 +186,9 @@ <flag name='tcg'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4001050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml index 6db5926aaa..75e26b2009 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.s390x.xml @@ -149,6 +149,9 @@ <flag name='virtio.packed'/> <flag name='tcg'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4002000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>39100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml index d3592ea5c4..e8e03dd534 100644 --- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.xml @@ -231,6 +231,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>4002000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml index 7f993b38e1..1c4064b992 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -194,6 +194,9 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>61700241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml index 409120262e..1df9c0b54a 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -202,6 +202,9 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>42900241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml index fb4956f144..d0a9605b64 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml @@ -190,6 +190,9 @@ <flag name='virtio-blk-pci.scsi.default.disabled'/> <flag name='pvscsi'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>0</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml index d4afc2e3f6..8afe4279b9 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -237,6 +237,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>5000000</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100241</microcodeVersion> diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml index f798a7c361..74f10ddcd3 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -237,6 +237,9 @@ <flag name='cpu.migratable'/> <flag name='query-cpu-model-expansion.migratable'/> <flag name='fw_cfg'/> + <flag name='migration-param.bandwidth'/> + <flag name='migration-param.downtime'/> + <flag name='migration-param.cache-size'/> <version>5000050</version> <kvmVersion>0</kvmVersion> <microcodeVersion>43100242</microcodeVersion> -- 2.27.0

The same functionality can be achieved using migrate-set-parameters QMP command with max-bandwidth parameter. https://bugzilla.redhat.com/show_bug.cgi?id=1829545 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_driver.c | 18 ++++++++++--- src/qemu/qemu_migration.c | 53 ++++++++++++++++++++++++++++++------- tests/qemumonitorjsontest.c | 2 +- 3 files changed, 58 insertions(+), 15 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 88517ba6a7..779f28dbbb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14047,6 +14047,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, qemuDomainObjPrivatePtr priv; bool postcopy = !!(flags & VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY); g_autoptr(qemuMigrationParams) migParams = NULL; + bool bwParam; unsigned long long max; int ret = -1; @@ -14085,12 +14086,20 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, VIR_DEBUG("Setting migration bandwidth to %luMbs", bandwidth); - if (postcopy) { + bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); + + if (postcopy || bwParam) { + qemuMigrationParam param; + if (!(migParams = qemuMigrationParamsNew())) goto endjob; - if (qemuMigrationParamsSetULL(migParams, - QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH, + if (postcopy) + param = QEMU_MIGRATION_PARAM_MAX_POSTCOPY_BANDWIDTH; + else + param = QEMU_MIGRATION_PARAM_MAX_BANDWIDTH; + + if (qemuMigrationParamsSetULL(migParams, param, bandwidth * 1024 * 1024) < 0) goto endjob; @@ -14104,9 +14113,10 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, rc = qemuMonitorSetMigrationSpeed(priv->mon, bandwidth); if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) goto endjob; + } + if (!postcopy) priv->migMaxBandwidth = bandwidth; - } ret = 0; diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 7ee5b5eda8..13427c1203 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3495,6 +3495,7 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, unsigned int cookieFlags = 0; bool abort_on_error = !!(flags & VIR_MIGRATE_ABORT_ON_ERROR); bool events = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_EVENT); + bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); bool cancel = false; unsigned int waitFlags; virDomainDefPtr persistDef = NULL; @@ -3582,6 +3583,11 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, goto error; } + if (bwParam && + qemuMigrationParamsSetULL(migParams, QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, + migrate_speed * 1024 * 1024) < 0) + goto error; + if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, migParams) < 0) goto error; @@ -3644,7 +3650,8 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, goto exit_monitor; } - if (qemuMonitorSetMigrationSpeed(priv->mon, migrate_speed) < 0) + if (!bwParam && + qemuMonitorSetMigrationSpeed(priv->mon, migrate_speed) < 0) goto exit_monitor; /* connect to the destination qemu if needed */ @@ -5299,24 +5306,41 @@ qemuMigrationSrcToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv = vm->privateData; + bool bwParam = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_BANDWIDTH); int rc; int ret = -1; int pipeFD[2] = { -1, -1 }; unsigned long saveMigBandwidth = priv->migMaxBandwidth; char *errbuf = NULL; virErrorPtr orig_err = NULL; + g_autoptr(qemuMigrationParams) migParams = NULL; if (qemuMigrationSetDBusVMState(driver, vm) < 0) return -1; /* Increase migration bandwidth to unlimited since target is a file. * Failure to change migration speed is not fatal. */ - if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { - qemuMonitorSetMigrationSpeed(priv->mon, - QEMU_DOMAIN_MIG_BANDWIDTH_MAX); - priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; - if (qemuDomainObjExitMonitor(driver, vm) < 0) + if (bwParam) { + if (!(migParams = qemuMigrationParamsNew())) + return -1; + + if (qemuMigrationParamsSetULL(migParams, + QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, + QEMU_DOMAIN_MIG_BANDWIDTH_MAX * 1024 * 1024) < 0) + return -1; + + if (qemuMigrationParamsApply(driver, vm, asyncJob, migParams) < 0) return -1; + + priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; + } else { + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { + qemuMonitorSetMigrationSpeed(priv->mon, + QEMU_DOMAIN_MIG_BANDWIDTH_MAX); + priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX; + if (qemuDomainObjExitMonitor(driver, vm) < 0) + return -1; + } } if (!virDomainObjIsActive(vm)) { @@ -5397,11 +5421,20 @@ qemuMigrationSrcToFile(virQEMUDriverPtr driver, virDomainObjPtr vm, virErrorPreserveLast(&orig_err); /* Restore max migration bandwidth */ - if (virDomainObjIsActive(vm) && - qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { - qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth); + if (virDomainObjIsActive(vm)) { + if (bwParam) { + if (qemuMigrationParamsSetULL(migParams, + QEMU_MIGRATION_PARAM_MAX_BANDWIDTH, + saveMigBandwidth * 1024 * 1024) == 0) + ignore_value(qemuMigrationParamsApply(driver, vm, asyncJob, + migParams)); + } else { + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) == 0) { + qemuMonitorSetMigrationSpeed(priv->mon, saveMigBandwidth); + ignore_value(qemuDomainObjExitMonitor(driver, vm)); + } + } priv->migMaxBandwidth = saveMigBandwidth; - ignore_value(qemuDomainObjExitMonitor(driver, vm)); } VIR_FORCE_CLOSE(pipeFD[0]); diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 6d5a1d5fe2..e8a0508c53 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -3220,7 +3220,7 @@ mymain(void) DO_TEST_GEN_DEPRECATED(qemuMonitorJSONChangeMedia, true); DO_TEST_GEN(qemuMonitorJSONSaveVirtualMemory); DO_TEST_GEN(qemuMonitorJSONSavePhysicalMemory); - DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationSpeed, false); + DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationSpeed, true); DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationDowntime, false); DO_TEST_GEN(qemuMonitorJSONMigrate); DO_TEST_GEN(qemuMonitorJSONDump); -- 2.27.0

The same functionality can be achieved using migrate-set-parameters QMP command with downtime-limit parameter. https://bugzilla.redhat.com/show_bug.cgi?id=1829543 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_driver.c | 27 +++++++++++++++++++++++---- tests/qemumonitorjsontest.c | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 779f28dbbb..c9a2081487 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -13853,7 +13853,9 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; + g_autoptr(qemuMigrationParams) migParams = NULL; int ret = -1; + int rc; virCheckFlags(0, -1); @@ -13872,10 +13874,27 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, priv = vm->privateData; VIR_DEBUG("Setting migration downtime to %llums", downtime); - qemuDomainObjEnterMonitor(driver, vm); - ret = qemuMonitorSetMigrationDowntime(priv->mon, downtime); - if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_DOWNTIME)) { + if (!(migParams = qemuMigrationParamsNew())) + goto endjob; + + if (qemuMigrationParamsSetULL(migParams, + QEMU_MIGRATION_PARAM_DOWNTIME_LIMIT, + downtime) < 0) + goto endjob; + + if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_NONE, + migParams) < 0) + goto endjob; + } else { + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorSetMigrationDowntime(priv->mon, downtime); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) + goto endjob; + } + + ret = 0; endjob: qemuDomainObjEndJob(driver, vm); diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index e8a0508c53..1c58c333d5 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -3221,7 +3221,7 @@ mymain(void) DO_TEST_GEN(qemuMonitorJSONSaveVirtualMemory); DO_TEST_GEN(qemuMonitorJSONSavePhysicalMemory); DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationSpeed, true); - DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationDowntime, false); + DO_TEST_GEN_DEPRECATED(qemuMonitorJSONSetMigrationDowntime, true); DO_TEST_GEN(qemuMonitorJSONMigrate); DO_TEST_GEN(qemuMonitorJSONDump); DO_TEST_GEN(qemuMonitorJSONGraphicsRelocate); -- 2.27.0

The same functionality can be achieved using query-migrate-parameters QMP command and checking the xbzrle-cache-size parameter. https://bugzilla.redhat.com/show_bug.cgi?id=1829544 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_driver.c | 21 +++++++++++++++++---- tests/qemumonitorjsontest.c | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c9a2081487..820a54ab2b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -13967,7 +13967,9 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; + g_autoptr(qemuMigrationParams) migParams = NULL; int ret = -1; + int rc; virCheckFlags(0, -1); @@ -13992,12 +13994,23 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr dom, goto endjob; } - qemuDomainObjEnterMonitor(driver, vm); + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE)) { + if (qemuMigrationParamsFetch(driver, vm, QEMU_ASYNC_JOB_NONE, + &migParams) < 0) + goto endjob; - ret = qemuMonitorGetMigrationCacheSize(priv->mon, cacheSize); + if (qemuMigrationParamsGetULL(migParams, + QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, + cacheSize) < 0) + goto endjob; + } else { + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorGetMigrationCacheSize(priv->mon, cacheSize); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) + goto endjob; + } - if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + ret = 0; endjob: qemuDomainObjEndJob(driver, vm); diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 1c58c333d5..d2cd054dbf 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -1888,7 +1888,7 @@ testQemuMonitorJSONqemuMonitorJSONGetMigrationCacheSize(const void *opaque) if (!(test = qemuMonitorTestNewSchema(xmlopt, data->schema))) return -1; - qemuMonitorTestSkipDeprecatedValidation(test, false); + qemuMonitorTestSkipDeprecatedValidation(test, true); if (qemuMonitorTestAddItem(test, "query-migrate-cache-size", "{" -- 2.27.0

The same functionality can be achieved using migrate-set-parameters QMP command with xbzrle-cache-size parameter. https://bugzilla.redhat.com/show_bug.cgi?id=1845012 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_driver.c | 26 +++++++++++++++++++++----- src/qemu/qemu_migration_params.c | 3 +-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 820a54ab2b..460d6703f6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -14028,7 +14028,9 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; + g_autoptr(qemuMigrationParams) migParams = NULL; int ret = -1; + int rc; virCheckFlags(0, -1); @@ -14053,13 +14055,27 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, goto endjob; } - qemuDomainObjEnterMonitor(driver, vm); - VIR_DEBUG("Setting compression cache to %llu B", cacheSize); - ret = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize); + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE)) { + if (!(migParams = qemuMigrationParamsNew())) + goto endjob; - if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + if (qemuMigrationParamsSetULL(migParams, + QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, + cacheSize) < 0) + goto endjob; + + if (qemuMigrationParamsApply(driver, vm, QEMU_ASYNC_JOB_NONE, + migParams) < 0) + goto endjob; + } else { + qemuDomainObjEnterMonitor(driver, vm); + rc = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) + goto endjob; + } + + ret = 0; endjob: qemuDomainObjEndJob(driver, vm); diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c index 810199370f..4be1d93ba5 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -869,8 +869,7 @@ qemuMigrationParamsApply(virQEMUDriverPtr driver, * qemuMonitorSetMigrationParams to ignore this parameter. */ if (migParams->params[xbzrle].set && - (!priv->job.migParams || - !priv->job.migParams->params[xbzrle].set)) { + !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE)) { if (qemuMonitorSetMigrationCacheSize(priv->mon, migParams->params[xbzrle].value.ull) < 0) goto cleanup; -- 2.27.0

On Wed, Jun 10, 2020 at 20:24:31 +0200, Jiri Denemark wrote:
The same functionality can be achieved using migrate-set-parameters QMP command with xbzrle-cache-size parameter.
https://bugzilla.redhat.com/show_bug.cgi?id=1845012
Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_driver.c | 26 +++++++++++++++++++++----- src/qemu/qemu_migration_params.c | 3 +-- 2 files changed, 22 insertions(+), 7 deletions(-)
[...]
@@ -14053,13 +14055,27 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr dom, goto endjob; }
- qemuDomainObjEnterMonitor(driver, vm); - VIR_DEBUG("Setting compression cache to %llu B", cacheSize); - ret = qemuMonitorSetMigrationCacheSize(priv->mon, cacheSize); + if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE)) {
Since QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE is relevant to XBZRLE only, including the fact that the field in the migration parameters is called 'xbzrle-cache-size' the XBZRLE part should be also part of the capability and it's status XML string. [...]
+ if (qemuMigrationParamsSetULL(migParams, + QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE, + cacheSize) < 0) + goto endjob;

On Wed, Jun 10, 2020 at 20:24:26 +0200, Jiri Denemark wrote:
Jiri Denemark (5): qemu: Probe for a few params supported by migrate-set-parameters qemu: Avoid deprecated migrate_set_speed QMP command qemu: Avoid deprecated migrate_set_downtime QMP command qemu: Avoid deprecated query-migrate-cache-size QMP command qemu: Avoid deprecated migrate-set-cache-size QMP command
Series: Reviewed-by: Peter Krempa <pkrempa@redhat.com> provided that you add 'XBZRLE' to QEMU_CAPS_MIGRATION_PARAM_CACHE_SIZE and it's status XML string.
participants (2)
-
Jiri Denemark
-
Peter Krempa