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


Reply via email to