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 ----------------------------------------------------------------------------- Author Het Gala (5): migration: Updated QAPI format for 'migrate' qemu monitor command migration: HMP side changes for modified 'migrate' QAPI design migration: Avoid multiple parsing of uri in migration code flow migration: Modified 'migrate-incoming' QAPI and HMP side changes on the destination interface. migration: Established connection for listener sockets on the dest interface migration/migration.c | 133 +++++++++++++++++++++++++++++---------- migration/socket.c | 31 +-------- migration/socket.h | 5 +- monitor/hmp-cmds.c | 101 ++++++++++++++++++++++++++++- qapi/migration.json | 143 ++++++++++++++++++++++++++++++++++++++++-- softmmu/vl.c | 2 +- 6 files changed, 344 insertions(+), 71 deletions(-) -- 2.22.3