On Tue, Nov 19, 2024 at 04:41:07PM -0500, Steven Sistare wrote: > On 11/19/2024 4:29 PM, Peter Xu wrote: > > On Tue, Nov 19, 2024 at 04:03:08PM -0500, Steven Sistare wrote: > > > On 11/19/2024 3:51 PM, Peter Xu wrote: > > > > On Tue, Nov 19, 2024 at 03:32:55PM -0500, Steven Sistare wrote: > > > > > This begs the question, should we allow channels to be specified in > > > > > hmp migrate > > > > > commands and for -incoming, in a very simple way? Like with a prefix > > > > > naming > > > > > the channel. And eliminate the -cpr-uri argument. Examples: > > > > > > > > > > (qemu) migrate -d main:tcp:0:44444,cpr:unix:cpr.sock > > > > > > > > > > qemu -incoming main:tcp:0:44444,cpr:unix:cpr.sock > > > > > qemu -incoming main:defer,cpr:unix:cpr.sock > > > > > > > > IMHO keeping the old syntax working would still be nice to not break > > > > scripts. > > > > > > The channel tag would be optional, so backwards compatible. Its > > > unambiguous > > > as long as the channel names are not also protocol names. > > > > Ah that's ok then. Or maybe use "="? > > > > "main=XXX,cpr=XXX" > > > > Then if no "=" it's the old? > > Sure, that works. > > > > > I was thinking we could simply add one more parameter for taking > > > > cpr uri, like: > > > > > > > > { > > > > .name = "migrate", > > > > .args_type = "detach:-d,resume:-r,uri:s,cpr:s?", > > > > .params = "[-d] [-r] 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 Setup cpr_uri to migrate with > > > > cpr-transfer", > > > > .cmd = hmp_migrate, > > > > }, > > > > > > That's fine. > > > > > > I do like the incoming syntax, though, instead of -cpr-uri. What do you > > > think? > > > > That'll definitely be lovely if possible, though would any monitor be alive > > at all before taking a cpr stream, with this series alone? I thought you > > dropped the precreate, then QEMU isn't able to run the monitor loop until > > cpr-uri is loaded. > > No monitor or precreate changes. I would parse -incoming, extract and use > the cpr > channel early, and use the main channel later as usual. It's just a > different way of > specifying cpr-uri. I like it because the specification language is more > consistent, > referring to a "cpr channel" both on the outgoing and incoming side: > > This mode requires a second migration channel named "cpr", included in > the channel arguments of the migrate command on the outgoing side, and > in the QEMU -incoming parameter on the incoming side. The channel must > be a type, such as unix socket, that supports SCM_RIGHTS.
Ah, that's ok at least to me. I hope defer could still work (for Libvirt), though. Probably something like main=defer,cpr=XXX. -- Peter Xu