On Mon, Jul 27, 2026 at 02:14:27PM +0200, Maciej S. Szmigiero wrote: > On 27.07.2026 02:46, Dr. David Alan Gilbert wrote: > > * Dongli Zhang ([email protected]) wrote: > > > Currently the cpr-transfer source QEMU instance cannot be driven entirely > > > via HMP. The source must use QMP in order to specify both the > > > main migration channel and the CPR channel. > > > > > > Extend the HMP migrate command with an optional CPR channel URI. When the > > > migration mode is cpr-transfer, HMP uses this URI to build a > > > CPR MigrationChannel in addition to the main migration channel. The new > > > option is rejected unless the migration mode is cpr-transfer, so existing > > > HMP migrate usage is unchanged. > > > > > > For example, source QEMU HMP commands can be something like below. The > > > "-c unix:/tmp/cpr.sock" is for CPR URI. > > > > > > (qemu) migrate_set_parameter mode cpr-transfer > > > (qemu) migrate -c unix:/tmp/cpr.sock tcp:0:50002 > > > > > > Signed-off-by: Dongli Zhang <[email protected]> > > > --- > > > v1->v2: > > > - Use the '-c' option in the HMP command reference. > > > - Use "a second uri can only be used in cpr-transfer mode" as error > > > message. > > > > Thanks for making those changes; minor note below. > > > > > hmp-commands.hx | 12 ++++++++---- > > > migration/migration-hmp-cmds.c | 19 +++++++++++++++++++ > > > 2 files changed, 27 insertions(+), 4 deletions(-) > > > > > > diff --git a/hmp-commands.hx b/hmp-commands.hx > > > index 7ae2468a3d..7f43cf537f 100644 > > > --- a/hmp-commands.hx > > > +++ b/hmp-commands.hx > > > @@ -928,16 +928,17 @@ ERST > > > { > > > .name = "migrate", > > > - .args_type = "detach:-d,resume:-r,uri:s", > > > - .params = "[-d] [-r] uri", > > > + .args_type = "detach:-d,resume:-r,uri-cpr:-cs,uri:s", > > > + .params = "[-d] [-r] [-c uri-cpr] uri", > > > .help = "migrate to URI (using -d to not wait for > > > completion)" > > > - "\n\t\t\t -r to resume a paused postcopy migration", > > > + "\n\t\t\t -r to resume a paused postcopy migration" > > > + "\n\t\t\t -c to specify a CPR URI for cpr-transfer mode", > > > .cmd = hmp_migrate, > > > }, > > > SRST > > > -``migrate [-d] [-r]`` *uri* > > > +``migrate [-d] [-r] [-c uri-cpr]`` *uri* > > > Migrate the VM to *uri*. > > > ``-d`` > > > @@ -945,6 +946,9 @@ SRST > > > query an ongoing migration process, use "info migrate". > > > ``-r`` > > > Resume a paused postcopy migration. > > > + ``-c`` *uri-cpr* > > > + Specify the CPR URI for cpr-transfer mode. It must be a UNIX domain > > > + socket. > > > ERST > > > { > > > diff --git a/migration/migration-hmp-cmds.c > > > b/migration/migration-hmp-cmds.c > > > index b04fc4489f..4ca2c962c2 100644 > > > --- a/migration/migration-hmp-cmds.c > > > +++ b/migration/migration-hmp-cmds.c > > > @@ -837,9 +837,11 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) > > > bool detach = qdict_get_try_bool(qdict, "detach", false); > > > bool resume = qdict_get_try_bool(qdict, "resume", false); > > > const char *uri = qdict_get_str(qdict, "uri"); > > > + const char *uri_cpr = qdict_get_try_str(qdict, "uri-cpr"); > > > Error *err = NULL; > > > g_autoptr(MigrationChannelList) caps = NULL; > > > g_autoptr(MigrationChannel) channel = NULL; > > > + g_autoptr(MigrationChannel) channel_cpr = NULL; > > > if (!migrate_uri_parse(uri, &channel, &err)) { > > > hmp_handle_error(mon, err); > > > @@ -847,6 +849,23 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) > > > } > > > QAPI_LIST_PREPEND(caps, g_steal_pointer(&channel)); > > > + if (uri_cpr) { > > > + if (migrate_mode() != MIG_MODE_CPR_TRANSFER) { > > > + error_setg(&err, > > > + "a second uri can only be used in cpr-transfer > > > mode"); > > > > That should probably be changed to something like > > "-c can only be used in cpr-transfer mode" > > > > but other than that, > > > > Reviewed-by: Dr. David Alan Gilbert <[email protected]> > > (Feel free to take it via cpr or migration). > > Acked-by: Maciej S. Szmigiero <[email protected]> # for CPR > > I am fine with this going in through migration tree if that's not > a problem since there's currently nothing else for CPR.
Yep I'll pick this up for 11.2, thanks all. -- Peter Xu
