[PATCH v3 00/51] migration: Unify capabilities and parameters

Fabiano Rosas posted 51 patches 1 month, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20251215220041.12657-1-farosas@suse.de
Maintainers: Markus Armbruster <armbru@redhat.com>, Michael Roth <michael.roth@amd.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Eric Blake <eblake@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <lvivier@redhat.com>
docs/about/deprecated.rst                 |   10 +
include/qapi/type-helpers.h               |   29 +
migration/migration-hmp-cmds.c            |  503 ++++++---
migration/migration.c                     |   52 +-
migration/migration.h                     |   14 +-
migration/options.c                       | 1183 ++++++++++-----------
migration/options.h                       |   30 +-
migration/page_cache.c                    |    6 +-
migration/ram.c                           |    5 +-
migration/savevm.c                        |    8 +-
migration/tls.c                           |    2 +-
qapi/migration.json                       |  569 ++++------
qapi/pragma.json                          |    1 +
system/vl.c                               |  111 +-
tests/qtest/migration/compression-tests.c |  179 ++--
tests/qtest/migration/cpr-tests.c         |  137 +--
tests/qtest/migration/file-tests.c        |  209 ++--
tests/qtest/migration/framework.c         |  158 +--
tests/qtest/migration/framework.h         |   29 +-
tests/qtest/migration/migration-qmp.c     |   64 +-
tests/qtest/migration/migration-qmp.h     |   21 +-
tests/qtest/migration/migration-util.c    |   72 +-
tests/qtest/migration/migration-util.h    |    9 +-
tests/qtest/migration/misc-tests.c        |  132 +--
tests/qtest/migration/postcopy-tests.c    |   80 +-
tests/qtest/migration/precopy-tests.c     |  535 +++++-----
tests/qtest/migration/tls-tests.c         |  897 +++++++---------
tests/qtest/virtio-net-failover.c         |   24 +-
28 files changed, 2512 insertions(+), 2557 deletions(-)
[PATCH v3 00/51] migration: Unify capabilities and parameters
Posted by Fabiano Rosas 1 month, 3 weeks ago
Hi, the scope of this series is the same as the previous versions, but
to be explicit, these are various parts of which it's comprised:

1) Remove duplication of migration parameters documentation in
   migration.json.

2) Merge migration capabilities and parameters in MigrationState (as
   visible internally in migration code).

3) Deprecate migration capabilities QMP commands. Functionality
   previously provided by "capabilities" commands are now provided by
   "parameters" commands.

4) Introduce new 'config' argument to migration commands taking the
   entire set of options to use for a migration. Obsoletes the usage
   of migrate-set-parameters, except for "runtime" options, which are
   as of yet uncovered by this proposal.

5) Adapt all migration-test(s) to use the new config API exclusively.

Notable changes in this v3:

- Added the setter for the new StrOrNull qdev property
- Move the visitor code into a new QAPI_MERGE macro
- Converted all tests to use config
  - Unfortunate side-quest: rework the TLS test hooks to support
    setting options before migrate_start.

CI run: https://gitlab.com/farosas/qemu/-/pipelines/2216127826

v2:
https://lore.kernel.org/r/20250630195913.28033-1-farosas@suse.de

v1:
https://lore.kernel.org/r/20250603013810.4772-1-farosas@suse.de

RFC:
https://lore.kernel.org/r/20250411191443.22565-1-farosas@suse.de

Fabiano Rosas (51):
  migration: Fix leak of block_bitmap_mapping
  migration: Fix leak of cpr_exec_command
  migration: Add a qdev property for StrOrNull
  tests/qtest/migration: Add a NULL parameters test for TLS
  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: 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
  qapi: Add QAPI_MERGE
  migration: Use QAPI_MERGE in migrate_params_test_apply
  migration: Cleanup hmp_info_migrate_parameters
  migration: Add capabilities into MigrationParameters
  migration: Remove s->capabilities
  qapi/migration: Deprecate capabilities commands
  migration: Store the initial values used for s->parameters
  migration: Allow migrate commands to provide the migration config
  migration: Allow incoming cmdline to take config
  tests/qtest/migration: Pass MigrateCommon into test functions
  tests/qtest/migration: Pass MigrateStart into cancel tests
  tests/qtest/migration: Fix misuse of listen_uri
  tests/qtest/migration: Stop invoking migrate_incoming from hooks
  tests/qtest/migration: Add config QDict
  tests/qtest/migration: Add temporary code to toggle usage of config
  tests/qtest/migration: Add a function for default capabilities
  tests/qtest/migration: Adapt convergence routines to config
  tests/qtest/migration: Adapt the incoming cmdline for config passing
  tests/qtest/migration: Use migrate_incoming_qmp where possible
  tests/qtest/migration: Add a config parameter to migrate_qmp functions
  tests/qtest/migration: Move tls hook data out of specific hooks
  tests/qtest/migration: Add new hook with data
  tests/qtest/migration: TLS x509: Refactor to use full hook
  tests/qtest/migration: TLS x509: Add init/cleanup routines
  tests/qtest/migration: TLS PSK: Refactor to use full hook
  tests/qtest/migration: TLS PSK: Add init/cleanup routines
  tests/qtest/migration: Remove multifd compression hook
  tests/qtest/migration: Convert postcopy tests to use config
  tests/qtest/migration: Convert TLS PSK tests to use config
  tests/qtest/migration: Convert TLS x509 tests to use config
  tests/qtest/migration: Convert compression tests to use config
  tests/qtest/migration: Convert file tests to use config
  tests/qtest/migration: Convert misc-tests to use config
  tests/qtest/migration: Convert precopy tests to use config
  tests/qtest/migration: Remove migrate_set_capabilities and code around
    it
  tests/qtest/migration: Further simplify TLS tests

 docs/about/deprecated.rst                 |   10 +
 include/qapi/type-helpers.h               |   29 +
 migration/migration-hmp-cmds.c            |  503 ++++++---
 migration/migration.c                     |   52 +-
 migration/migration.h                     |   14 +-
 migration/options.c                       | 1183 ++++++++++-----------
 migration/options.h                       |   30 +-
 migration/page_cache.c                    |    6 +-
 migration/ram.c                           |    5 +-
 migration/savevm.c                        |    8 +-
 migration/tls.c                           |    2 +-
 qapi/migration.json                       |  569 ++++------
 qapi/pragma.json                          |    1 +
 system/vl.c                               |  111 +-
 tests/qtest/migration/compression-tests.c |  179 ++--
 tests/qtest/migration/cpr-tests.c         |  137 +--
 tests/qtest/migration/file-tests.c        |  209 ++--
 tests/qtest/migration/framework.c         |  158 +--
 tests/qtest/migration/framework.h         |   29 +-
 tests/qtest/migration/migration-qmp.c     |   64 +-
 tests/qtest/migration/migration-qmp.h     |   21 +-
 tests/qtest/migration/migration-util.c    |   72 +-
 tests/qtest/migration/migration-util.h    |    9 +-
 tests/qtest/migration/misc-tests.c        |  132 +--
 tests/qtest/migration/postcopy-tests.c    |   80 +-
 tests/qtest/migration/precopy-tests.c     |  535 +++++-----
 tests/qtest/migration/tls-tests.c         |  897 +++++++---------
 tests/qtest/virtio-net-failover.c         |   24 +-
 28 files changed, 2512 insertions(+), 2557 deletions(-)

-- 
2.51.0
Re: [PATCH v3 00/51] migration: Unify capabilities and parameters
Posted by Peter Xu 1 month, 3 weeks ago
On Mon, Dec 15, 2025 at 06:59:46PM -0300, Fabiano Rosas wrote:
> Hi, the scope of this series is the same as the previous versions, but
> to be explicit, these are various parts of which it's comprised:
> 
> 1) Remove duplication of migration parameters documentation in
>    migration.json.
> 
> 2) Merge migration capabilities and parameters in MigrationState (as
>    visible internally in migration code).
> 
> 3) Deprecate migration capabilities QMP commands. Functionality
>    previously provided by "capabilities" commands are now provided by
>    "parameters" commands.
> 
> 4) Introduce new 'config' argument to migration commands taking the
>    entire set of options to use for a migration. Obsoletes the usage
>    of migrate-set-parameters, except for "runtime" options, which are
>    as of yet uncovered by this proposal.
> 
> 5) Adapt all migration-test(s) to use the new config API exclusively.
> 
> Notable changes in this v3:
> 
> - Added the setter for the new StrOrNull qdev property
> - Move the visitor code into a new QAPI_MERGE macro
> - Converted all tests to use config
>   - Unfortunate side-quest: rework the TLS test hooks to support
>     setting options before migrate_start.
> 
> CI run: https://gitlab.com/farosas/qemu/-/pipelines/2216127826
> 
> v2:
> https://lore.kernel.org/r/20250630195913.28033-1-farosas@suse.de
> 
> v1:
> https://lore.kernel.org/r/20250603013810.4772-1-farosas@suse.de
> 
> RFC:
> https://lore.kernel.org/r/20250411191443.22565-1-farosas@suse.de
> 
> Fabiano Rosas (51):
>   migration: Fix leak of block_bitmap_mapping
>   migration: Fix leak of cpr_exec_command
>   migration: Add a qdev property for StrOrNull
>   tests/qtest/migration: Add a NULL parameters test for TLS
>   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: 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
>   qapi: Add QAPI_MERGE
>   migration: Use QAPI_MERGE in migrate_params_test_apply
>   migration: Cleanup hmp_info_migrate_parameters
>   migration: Add capabilities into MigrationParameters
>   migration: Remove s->capabilities
>   qapi/migration: Deprecate capabilities commands
>   migration: Store the initial values used for s->parameters
>   migration: Allow migrate commands to provide the migration config
>   migration: Allow incoming cmdline to take config
>   tests/qtest/migration: Pass MigrateCommon into test functions
>   tests/qtest/migration: Pass MigrateStart into cancel tests
>   tests/qtest/migration: Fix misuse of listen_uri
>   tests/qtest/migration: Stop invoking migrate_incoming from hooks
>   tests/qtest/migration: Add config QDict
>   tests/qtest/migration: Add temporary code to toggle usage of config
>   tests/qtest/migration: Add a function for default capabilities
>   tests/qtest/migration: Adapt convergence routines to config
>   tests/qtest/migration: Adapt the incoming cmdline for config passing
>   tests/qtest/migration: Use migrate_incoming_qmp where possible
>   tests/qtest/migration: Add a config parameter to migrate_qmp functions
>   tests/qtest/migration: Move tls hook data out of specific hooks
>   tests/qtest/migration: Add new hook with data
>   tests/qtest/migration: TLS x509: Refactor to use full hook
>   tests/qtest/migration: TLS x509: Add init/cleanup routines
>   tests/qtest/migration: TLS PSK: Refactor to use full hook
>   tests/qtest/migration: TLS PSK: Add init/cleanup routines
>   tests/qtest/migration: Remove multifd compression hook
>   tests/qtest/migration: Convert postcopy tests to use config
>   tests/qtest/migration: Convert TLS PSK tests to use config
>   tests/qtest/migration: Convert TLS x509 tests to use config
>   tests/qtest/migration: Convert compression tests to use config
>   tests/qtest/migration: Convert file tests to use config
>   tests/qtest/migration: Convert misc-tests to use config
>   tests/qtest/migration: Convert precopy tests to use config
>   tests/qtest/migration: Remove migrate_set_capabilities and code around
>     it
>   tests/qtest/migration: Further simplify TLS tests

I'll keep reviewing the rest test changes.. while I've queued patches
1-13,25,26 for the upcoming pull for qemu 11.0.  Please shoot if there's
any concerns.

Thanks,

-- 
Peter Xu