All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Het Gala <het.gala@nutanix.com>
Cc: qemu-devel@nongnu.org,  prerna.saxena@nutanix.com,
	 quintela@redhat.com, dgilbert@redhat.com,  pbonzini@redhat.com,
	 berrange@redhat.com, eblake@redhat.com,
	 manish.mishra@nutanix.com, aravind.retnakaran@nutanix.com
Subject: Re: [PATCH v5 1/9] migration: introduced 'MigrateAddress' in QAPI for migration wire protocol.
Date: Thu, 25 May 2023 19:34:52 +0200	[thread overview]
Message-ID: <87sfbkjow3.fsf@pond.sub.org> (raw)
In-Reply-To: <20230519094617.7078-2-het.gala@nutanix.com> (Het Gala's message of "Fri, 19 May 2023 09:46:09 +0000")

Het Gala <het.gala@nutanix.com> writes:

> This patch introduces well defined MigrateAddress struct and its related child
> objects.
>
> The existing argument of 'migrate' and 'migrate-incoming' QAPI - 'uri' is of
> string type. The current migration flow follows double encoding scheme for
> fetching migration parameters such as 'uri' and this is not an ideal design.
>
> Motive for intoducing struct level design is to prevent double encoding of QAPI
> arguments, as Qemu should be able to directly use the QAPI arguments without
> any level of encoding.
>
> Suggested-by: Aravind Retnakaran <aravind.retnakaran@nutanix.com>
> Signed-off-by: Het Gala <het.gala@nutanix.com>
> Reviewed-by: Juan Quintela <quintela@redhat.com>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  qapi/migration.json | 41 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 179af0c4d8..c500744bb7 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -1407,6 +1407,47 @@
>  ##
>  { 'command': 'migrate-continue', 'data': {'state': 'MigrationStatus'} }
>  
> +##
> +# @MigrateTransport:

I'd prefer MigrationTransport, because "migration" is a noun, while
migrate is a verb.  Verbs are for commands.  For types we use nouns.

More of the same below, not noting it again.

Actually, I'd prefer MigrationAddressType, because it's purpose is to
serve as discriminator type in union MigrationAddress.

> +#
> +# The supported communication transport mechanisms for migration
> +#
> +# @socket: Supported communication type between two devices for migration.
> +#          Socket is able to cover all of 'tcp', 'unix', 'vsock' and
> +#          'fd' already

Migration is between hosts, not "two devices".

The second sentence confuses me.  What are you trying to say?

Also, missing period at the end.

> +#
> +# @exec: Supported communication type to redirect migration stream into file.
> +#
> +# @rdma: Supported communication type to redirect rdma type migration stream.

What about:

   ##
   # @MigrationTransport:
   #
   # The migration stream transport mechanisms
   #
   # @socket: Migrate via socket
   #
   # @rdma: Migrate via RDMA
   #
   # @file: Direct the migration stream to a file

> +#
> +# Since 8.1
> +##
> +{ 'enum': 'MigrateTransport',
> +  'data': ['socket', 'exec', 'rdma'] }
> +
> +##
> +# @MigrateExecCommand:

Documentation of @args is missing.

> + #
> + # Since 8.1
> + ##

Unwanted indentation.

> +{ 'struct': 'MigrateExecCommand',
> +   'data': {'args': [ 'str' ] } }
> +
> +##
> +# @MigrateAddress:
> +#
> +# The options available for communication transport mechanisms for migration

Not happy with this sentence (writing good documentation is hard).

Is the address used for the destination only, or for the source as well?

If destination only, could it be used for the source at least in theory?

I'm asking because I need to understand more about intended use to be
able to suggest doc improvements.

> +#
> +# Since 8.1
> +##
> +{ 'union': 'MigrateAddress',
> +  'base': { 'transport' : 'MigrateTransport'},
> +  'discriminator': 'transport',
> +  'data': {
> +    'socket': 'SocketAddress',
> +    'exec': 'MigrateExecCommand',
> +    'rdma': 'InetSocketAddress' } }
> +

Aside: a more powerful type system would let us extend SocketAddress
with additional variants instead of wrapping it in a union.

>  ##
>  # @migrate:
>  #



  reply	other threads:[~2023-05-25 17:35 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-19  9:46 [PATCH v5 0/9] migration: Modify 'migrate' and 'migrate-incoming' QAPI commands for migration Het Gala
2023-05-19  9:46 ` [PATCH v5 1/9] migration: introduced 'MigrateAddress' in QAPI for migration wire protocol Het Gala
2023-05-25 17:34   ` Markus Armbruster [this message]
2023-05-29  9:37     ` Het Gala
2023-05-30  6:58       ` Markus Armbruster
2023-05-30  7:32         ` Het Gala
2023-05-30  7:56           ` Markus Armbruster
2023-05-30  8:56             ` Het Gala
2023-05-30 10:34               ` Daniel P. Berrangé
2023-05-30  8:57           ` Daniel P. Berrangé
2023-05-30  9:02             ` Het Gala
2023-05-30 11:38           ` Het Gala
2023-05-30 12:10           ` Daniel P. Berrangé
2023-06-01  8:56             ` Het Gala
2023-05-19  9:46 ` [PATCH v5 2/9] migration: convert uri parameter into 'MigrateAddress' struct Het Gala
2023-05-19  9:46 ` [PATCH v5 3/9] migration: convert socket backend to accept MigrateAddress struct Het Gala
2023-05-19  9:46 ` [PATCH v5 4/9] migration: convert rdma " Het Gala
2023-05-19  9:46 ` [PATCH v5 5/9] migration: convert exec " Het Gala
2023-05-19  9:52   ` Het Gala
2023-05-19  9:46 ` [PATCH v5 6/9] migration: modified migration QAPIs to accept 'channels' argument for migration Het Gala
2023-05-25 17:50   ` Markus Armbruster
2023-05-29 11:33     ` Het Gala
2023-05-30  7:13       ` Markus Armbruster
2023-05-30  8:45         ` Het Gala
2023-05-30  9:17           ` Markus Armbruster
2023-05-19  9:46 ` [PATCH v5 7/9] migration: modify migration_channels_and_uri_compatible() to incorporate newer migration QAPI syntax Het Gala
2023-05-19  9:46 ` [PATCH v5 8/9] migration: Introduced MigrateChannelList struct to migration code flow Het Gala
2023-05-25 18:02   ` Markus Armbruster
2023-05-29 11:35     ` Het Gala
2023-05-19  9:46 ` [PATCH v5 9/9] migration: adding test case for modified QAPI syntax Het Gala
2023-05-19  9:49   ` Het Gala

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sfbkjow3.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=aravind.retnakaran@nutanix.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=het.gala@nutanix.com \
    --cc=manish.mishra@nutanix.com \
    --cc=pbonzini@redhat.com \
    --cc=prerna.saxena@nutanix.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.