This series has been successfully tested. Boot up two VMs, one in
source and the other in destination with -incoming defer. Using the
migrate_set_parameter, enable the postcopy-ram, after that check with
info migrate_parameters this is correct.
(qemu) migrate_set_parameter postcopy-ram on
(qemu) info migrate_parameters
...
events: off
postcopy-ram: on
x-colo: off
...
Do migration plus the postcopy and check with info migrate there's a
real postcopy process while migrating
(qemu) migrate -d tcp:${DST_IP}:8888
(qemu) info migrate
Status: postcopy-active
Time (ms): total=3410, setup=34, down=53
RAM info:
Throughput (Mbps): 1000.82
Sizes (KiB): pagesize=4, total=16798280,
transferred=357703, remain=6293884,
precopy=128792, multifd=0, postcopy=228566
Pages: normal=88199, zero=440747, rate_per_sec=34875
Others: dirty_syncs=2, postcopy_req=644
(qemu) info migrate -a
Status: postcopy-active
Sockets: [
tcp::::8888
]
Globals:
store-global-state: on
only-migratable: off
send-configuration: on
send-section-footer: on
send-switchover-start: on
clear-bitmap-shift: 18
Finally migration ends seamlessly.
(qemu) info migrate
Status: completed
Tested-by: Mario Casquero <mcasquer@redhat.com>
On Tue, Jun 3, 2025 at 3:39 AM Fabiano Rosas <farosas@suse.de> wrote:
>
> Hi,
>
> Thanks for the reviews in the last round. Your feedback has allowed me
> to reduce the complexity of the series and the code considerably.
>
> Changes in this v2:
>
> - Followed the suggestion to unify the TLS strings as StrOrNull. This
> allows the complete removal of the MigrateSetParameters
> type. Therefore, no need for playing tricks with base types.
>
> - I figured out that block_bitmap_mapping was set as optional in
> qmp_query_migrate_parameters in error. Fixing that allows to
> simplify that function somewhat.
>
> - The suggestion of not checking the has_* fields when setting the
> parameters also led to great simplification. Now there's no need to
> open-code the setting of every single parameter.
>
> - Deprecated the capabilities commands.
>
> - Removed some redundant documentation from migration.json. Now
> there's only 1 (one) place where migration parameters need to be
> documented.
>
> The series:
> - passes CI: https://gitlab.com/farosas/qemu/-/pipelines/1849885920
> - passes the migration tests in the ASAN build.
> - passes the migration compat tests against each of the 3 last QEMU versions.
> - passes the iotest 300 (related to block_bitmap_mapping).
>
> v1:
> https://lore.kernel.org/r/20250411191443.22565-1-farosas@suse.de
>
> Fabiano Rosas (21):
> migration: Normalize tls arguments
> migration: Remove MigrateSetParameters
> qapi/migration: Don't document MigrationParameter
> migration: Run a post update routine after setting parameters
> migration: Add a flag to track block-bitmap-mapping input
> migration: Remove checks for s->parameters has_* fields
> migration: Set block_bitmap_mapping unconditionally in
> query-migrate-parameters
> migration: Do away with usage of QERR_INVALID_PARAMETER_VALUE
> migration: Extract code to mark all parameters as present
> migration: Use QAPI_CLONE_MEMBERS in query_migrate_parameters
> migration: Use QAPI_CLONE_MEMBERS in migrate_params_test_apply
> migration: Use QAPI_CLONE_MEMBERS in migrate_params_apply
> migration: Use visitors in migrate_params_test_apply
> migration: Cleanup hmp_info_migrate_parameters
> migration: Add capabilities into MigrationParameters
> qapi/migration: Mark that query/set-migrate-parameters support
> capabilities
> migration: Remove s->capabilities
> qapi/migration: Deprecate capabilities commands
> migration: Allow migrate commands to provide the migration config
> libqtest: Add a function to check whether a QMP command supports a
> feature
> tests/qtest/migration: Add a test for config passing
>
> docs/about/deprecated.rst | 12 +
> migration/migration-hmp-cmds.c | 484 ++++++++----
> migration/migration.c | 50 +-
> migration/migration.h | 9 +-
> migration/options.c | 1090 +++++++++++++---------------
> migration/options.h | 29 +-
> migration/page_cache.c | 6 +-
> migration/ram.c | 5 +-
> migration/savevm.c | 8 +-
> migration/tls.c | 2 +-
> qapi/migration.json | 573 ++++++---------
> qapi/pragma.json | 3 +-
> system/vl.c | 3 +-
> tests/qtest/libqtest.c | 42 ++
> tests/qtest/libqtest.h | 12 +
> tests/qtest/migration/framework.h | 2 +
> tests/qtest/migration/misc-tests.c | 39 +
> 17 files changed, 1243 insertions(+), 1126 deletions(-)
>
> --
> 2.35.3
>
>