[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v13 00/10] migration: Modify 'migrate' and 'migrate-incoming' QAP
From: |
Het Gala |
Subject: |
[PATCH v13 00/10] migration: Modify 'migrate' and 'migrate-incoming' QAPI commands for migration |
Date: |
Thu, 12 Oct 2023 15:10:42 +0000 |
This is v13 patchset of modified 'migrate' and 'migrate-incoming' QAPI design
for upstream review.
Would like to thank all the maintainers that actively participated in the v12
patchset discussion and gave insightful suggestions to improve the patches.
Link to previous upstream community patchset links:
v1: https://lists.gnu.org/archive/html/qemu-devel/2022-12/msg04339.html
v2: https://lists.gnu.org/archive/html/qemu-devel/2023-02/msg02106.html
v3: https://lists.gnu.org/archive/html/qemu-devel/2023-02/msg02473.html
v4: https://lists.gnu.org/archive/html/qemu-devel/2023-05/msg03064.html
v5: https://lists.gnu.org/archive/html/qemu-devel/2023-05/msg04845.html
v6: https://lists.gnu.org/archive/html/qemu-devel/2023-06/msg01251.html
v7: https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg02027.html
v8: https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg02770.html
v9: https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg04216.html
v10: https://lists.gnu.org/archive/html/qemu-devel/2023-07/msg05022.html
v11: https://lists.gnu.org/archive/html/qemu-devel/2023-10/msg00740.html
v12: https://lists.gnu.org/archive/html/qemu-devel/2023-10/msg02422.html
v12 -> v13 changelog:
-------------------
- qcow2 181 test was only failing. Fixed the code to pass that test
- Added HMP side error propagation in case user entered invalid or wrong uri
for migration.
Abstract:
---------
Current QAPI 'migrate' command design (for initiating a migration
stream) contains information regarding different migrate transport mechanism
(tcp / unix / exec), dest-host IP address, and binding port number in form of
a string. Thus the design does seem to have some design issues. Some of the
issues, stated below are:
1. Use of string URIs is a data encoding scheme within a data encoding scheme.
QEMU code should directly be able to work with the results from QAPI,
without resorting to do a second level of parsing (eg. socket_parse()).
2. For features / parameters related to migration, the migration tunables needs
to be defined and updated upfront. For example, 'migrate-set-capability'
and 'migrate-set-parameter' is required to enable multifd capability and
multifd-number of channels respectively. Instead, 'Multifd-channels' can
directly be represented as a single additional parameter to 'migrate'
QAPI. 'migrate-set-capability' and 'migrate-set-parameter' commands could
be used for runtime tunables that need setting after migration has already
started.
The current patchset focuses on solving the first problem of multi-level
encoding of URIs. The patch defines 'migrate' command as a QAPI discriminated
union for the various transport backends (like socket, exec and rdma), and on
basis of transport backends, different migration parameters are defined.
(uri) string --> (channel) Channel-type
Transport-type
Migration parameters based on transport type
------------------------------------------------------------------------------
Het Gala (10):
migration: New QAPI type 'MigrateAddress'
migration: convert migration 'uri' into 'MigrateAddress'
migration: convert socket backend to accept MigrateAddress
migration: convert rdma backend to accept MigrateAddress
migration: convert exec backend to accept MigrateAddress.
migration: New migrate and migrate-incoming argument 'channels'
migration: modify migration_channels_and_uri_compatible() for new QAPI
syntax
migration: Implement MigrateChannelList to qmp migration flow.
migration: Implement MigrateChannelList to hmp migration flow.
migration: modify test_multifd_tcp_none() to use new QAPI syntax.
migration/exec.c | 74 +++++++++----
migration/exec.h | 8 +-
migration/migration-hmp-cmds.c | 27 ++++-
migration/migration.c | 189 +++++++++++++++++++++++++++------
migration/migration.h | 3 +-
migration/rdma.c | 33 ++----
migration/rdma.h | 6 +-
migration/socket.c | 39 ++-----
migration/socket.h | 7 +-
qapi/migration.json | 150 +++++++++++++++++++++++++-
system/vl.c | 2 +-
tests/qtest/migration-test.c | 7 +-
12 files changed, 419 insertions(+), 126 deletions(-)
--
2.22.3
- [PATCH v13 00/10] migration: Modify 'migrate' and 'migrate-incoming' QAPI commands for migration,
Het Gala <=
- [PATCH v13 01/10] migration: New QAPI type 'MigrateAddress', Het Gala, 2023/10/12
- [PATCH v13 03/10] migration: convert socket backend to accept MigrateAddress, Het Gala, 2023/10/12
- [PATCH v13 02/10] migration: convert migration 'uri' into 'MigrateAddress', Het Gala, 2023/10/12
- [PATCH v13 04/10] migration: convert rdma backend to accept MigrateAddress, Het Gala, 2023/10/12
- [PATCH v13 05/10] migration: convert exec backend to accept MigrateAddress., Het Gala, 2023/10/12
- [PATCH v13 07/10] migration: modify migration_channels_and_uri_compatible() for new QAPI syntax, Het Gala, 2023/10/12
- [PATCH v13 06/10] migration: New migrate and migrate-incoming argument 'channels', Het Gala, 2023/10/12
- [PATCH v13 08/10] migration: Implement MigrateChannelList to qmp migration flow., Het Gala, 2023/10/12
- [PATCH v13 10/10] migration: modify test_multifd_tcp_none() to use new QAPI syntax., Het Gala, 2023/10/12
- [PATCH v13 09/10] migration: Implement MigrateChannelList to hmp migration flow., Het Gala, 2023/10/12