Peter Xu <pet...@redhat.com> writes:

> On Fri, May 03, 2024 at 09:13:27AM -0400, Steven Sistare wrote:
>> On 5/3/2024 8:49 AM, Fabiano Rosas wrote:
>> > Markus Armbruster <arm...@redhat.com> writes:
>> > 
>> > > Commit 074dbce5fcce (migration: New migrate and migrate-incoming
>> > > argument 'channels') and its fixup commit 57fd4b4e1075 made command
>> > > migrate argument @uri optional and mutually exclusive with @channels.
>> > > 
>> > > But documentation still talks about "the migration URI" in several
>> > > places.
>> > > 
>> > > * MigrationCapability @mapped-ram:
>> > > 
>> > >      # @mapped-ram: Migrate using fixed offsets in the migration file for
>> > >      #     each RAM page.  Requires a migration URI that supports 
>> > > seeking,
>> > >      #     such as a file.  (since 9.0)
>> > > 
>> > >    I guess it requires the migration destination (@uri or @channels) to
>> > >    support seeking.
>> > 
>> > This is ambiguous. The migration destination is usually the VM at the
>> > end of the migration, not the medium to where the migration stream is
>> > written to.
>> > 
>> > One option is to just add the mention to channel all around: "Requires a
>> > migration URI or channel that supports seeking".
>> > 
>> > > 
>> > > * MigMode @cpr-reboot:
>> > > 
>> > >      # @cpr-reboot: The migrate command stops the VM and saves state to 
>> > > the
>> > >      #     URI.  After quitting QEMU, the user resumes by running QEMU
>> > >      #     -incoming.
>> > >      #
>> > >      #     This mode allows the user to quit QEMU, optionally update and
>> > >      #     reboot the OS, and restart QEMU.  If the user reboots, the URI
>> > >      #     must persist across the reboot, such as by using a file.
>> > > 
>> > >    I guess this saves to the migration destination (@uri or @channels).
>> > > 
>> > > * Migration Parameter @tls-hostname and its two buddies
>> > > 
>> > >      # @tls-hostname: migration target's hostname for validating the
>> > >      #     server's x509 certificate identity.  If empty, QEMU will use 
>> > > the
>> > >      #     hostname from the migration URI, if any.  A non-empty value is
>> > >      #     required when using x509 based TLS credentials and the 
>> > > migration
>> > >      #     URI does not include a hostname, such as fd: or exec: based
>> > >      #     migration.  (Since 2.7)
>> > >      #
>> > >      #     Note: empty value works only since 2.9.
>> > > 
>> > >    What's the default when we're using @channels instead of @uri?
>> > 
>> > The same, both URI and channels get put in the same structure before
>> > taking the hostname.
>> > 
>> > > 
>> > > * migrate-recover
>> > > 
>> > >      ##
>> > >      # @migrate-recover:
>> > >      #
>> > >      # Provide a recovery migration stream URI.
>> > >      #
>> > >      # @uri: the URI to be used for the recovery of migration stream.
>> > > 
>> > >    Should this command be extended to accept @channels?
>> > 
>> > Yes.
>> > 
>> > > 
>> > > * docs/devel/migration/CPR.rst
>> > > 
>> > >    Didn't look closely.  Let's discuss the others first, then come back
>> > >    to this one.
>> > > 
>> > > * HMP migrate
>> > > 
>> > >    Fine, because this still only supports URI syntax.
>> > > 
>> > > * CLI option "-incoming defer"
>> > > 
>> > >          "-incoming defer\n" \
>> > >          "                wait for the URI to be specified via 
>> > > migrate_incoming\n",
>> > > 
>> > >    and
>> > > 
>> > >      ``-incoming defer``
>> > >          Wait for the URI to be specified via migrate\_incoming. The 
>> > > monitor
>> > >          can be used to change settings (such as migration parameters) 
>> > > prior
>> > >          to issuing the migrate\_incoming to allow the migration to 
>> > > begin.
>> > > 
>> > >    I figure we should call it "the migration source" instead of "the URI"
>> > >    here.
>> > 
>> > I think it's worse. We need a proper way to refer exclusively to "the
>> > thing that the user passes as an argument to the migrate command".
>> 
>> Agreed.  My thoughts:
>> 
>> "migration URI" -> "migration URI/channel"
>> or
>> "migration URI" -> "migration stream"
>
> "stream" might imply more on the protocol itself to me, e.g. how the
> migration headers are defined, rather than the entity / fabric we use to
> send the data stream?
>
> Maybe we can simply do s/URI/channel/? As "channel" can also imply the URI
> in this case as yet another (old) format to specify the migration channels.
> It's like we always use QIOChannels underneath whatever way we specify the
> channels (either URI or the new "channels" API).

I'm fine with just "channel". "URI/channel" is ok as well.

Do we intend to deprecate the URI usage via QMP? Or are going to support
the two ways indefinitely? Keep URI for HMP-only?

If the MigrationAddress API ends up being the only one, then maybe it
makes sense to stop using URI all over.

>
> I also copied qemu-devel starting from now.
>
> Thanks,

Reply via email to