[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v11 2/4] migration: Create socket-address parame
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v11 2/4] migration: Create socket-address parameter |
Date: |
Wed, 30 Jan 2019 09:55:30 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 |
On 1/30/19 6:06 AM, Juan Quintela wrote:
> It will be used to store the uri parameters. We want this only for
> tcp, so we don't set it for other uris. We need it to know what port
> is migration running.
>
> Signed-off-by: Juan Quintela <address@hidden>
>
> --
>
> +++ b/hmp.c
> @@ -166,6 +166,26 @@ void hmp_info_mice(Monitor *mon, const QDict *qdict)
> qapi_free_MouseInfoList(mice_list);
> }
>
> +static char *SocketAddress_to_str(SocketAddress *addr)
> +{
> + switch (addr->type) {
> + case SOCKET_ADDRESS_TYPE_INET:
> + return g_strdup_printf("tcp:%s:%s",
> + addr->u.inet.host,
> + addr->u.inet.port);
> + break;
> + case SOCKET_ADDRESS_TYPE_UNIX:
> + return g_strdup_printf("unix:%s",
> + addr->u.q_unix.path);
> + break;
> + case SOCKET_ADDRESS_TYPE_FD:
> + return g_strdup_printf("fd:%s", addr->u.fd.str);
> + break;
> + default:
> + abort();
Is abort()ing on SOCKET_ADDRESS_TYPE_VSOCK intentional?
> + }
> +}
> +
> void hmp_info_migrate(Monitor *mon, const QDict *qdict)
> {
> MigrationInfo *info;
> @@ -306,6 +326,17 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict)
> g_free(str);
> visit_free(v);
> }
> + if (info->has_socket_address) {
> + SocketAddressList *addr;
> +
> + monitor_printf(mon, "socket address: [\n");
> +
> + for (addr = info->socket_address; addr; addr = addr->next) {
> + char *s = SocketAddress_to_str(addr->value);
> + monitor_printf(mon, "\t%s\n", s);
> + }
> + monitor_printf(mon, "]\n");
> + }
Leaks 's'.
> qapi_free_MigrationInfo(info);
> qapi_free_MigrationCapabilityStatusList(caps);
> }
> diff --git a/migration/migration.c b/migration/migration.c
> index 37e06b76dc..ef1d53cde2 100644
> --- a/migration/migration.c
> +++ b/qapi/migration.json
> @@ -6,6 +6,7 @@
> ##
>
> { 'include': 'common.json' }
> +{ 'include': 'sockets.json' }
>
> ##
> # @MigrationStats:
> @@ -199,6 +200,8 @@
> # @compression: migration compression statistics, only returned if
> compression
> # feature is on and status is 'active' or 'completed' (Since 3.1)
> #
> +# @socket-address: Only used for tcp, to know what the real port is (Since
> 3.1)
> +#
s/3.1/4.0/
> # Since: 0.14.0
> ##
> { 'struct': 'MigrationInfo',
> @@ -213,7 +216,8 @@
> '*error-desc': 'str',
> '*postcopy-blocktime' : 'uint32',
> '*postcopy-vcpu-blocktime': ['uint32'],
> - '*compression': 'CompressionStats'} }
> + '*compression': 'CompressionStats',
> + '*socket-address': ['SocketAddress'] } }
>
> ##
> # @query-migrate:
> diff --git a/qapi/sockets.json b/qapi/sockets.json
> index fc81d8d5e8..d7f77984af 100644
> --- a/qapi/sockets.json
> +++ b/qapi/sockets.json
> @@ -152,3 +152,16 @@
> 'unix': 'UnixSocketAddress',
> 'vsock': 'VsockSocketAddress',
> 'fd': 'String' } }
> +
> +##
> +# @DummyStruct:
> +#
> +# Both block-core and migration needs SocketAddressList
> +# I am open to comments about how to share it
> +#
> +# @dummy-list: A dummy list
> +#
> +# Since: 3.1
s/3.1/4.0/
This matches how we force list types elsewhere for use in C code even
when the type is not exposed through QMP. But do you still need to force
the generation, given that ['SocketAddress'] used in MigrationInfo is
visible through QMP?
> +##
> +{ 'struct': 'DummyStruct',
> + 'data': { 'dummy-list': ['SocketAddress'] } }
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature