From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Germano Veit Michel <germano@redhat.com>
Cc: qemu-devel@nongnu.org, amit.shah@redhat.com, quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH] migration: expose qemu_announce_self() via qmp
Date: Tue, 17 Jan 2017 11:41:57 +0000 [thread overview]
Message-ID: <20170117114156.GE2053@work-vm> (raw)
In-Reply-To: <CANHSq5CmdwQUFxXGRsyWUNs-_AN19zEhXwZtj6p807Cr3Us3ng@mail.gmail.com>
* Germano Veit Michel (germano@redhat.com) wrote:
> qemu_announce_self() is triggered by qemu at the end of migrations
> to update the network regarding the path to the guest l2addr.
>
> however it is also useful when there is a network change such as
> an active bond slave swap. Essentially, it's the same as a migration
> from a network perspective - the guest moves to a different point
> in the network topology.
>
> this exposes the function via qmp.
>
> Signed-off-by: Germano Veit Michel <germano@redhat.com>
Hi Germano,
I think there are a couple of problems which mean it's
not quite this simple.
a) The 'count' variable in qemu_announce_self_once is static
initialised; so I think qemu will only ever run the announce
series once; so it would do it after migrate, but then I think
if you did a qemu_announce_self again I think it would send
one packet and then not repeat it.
Similarly if you called qemu_announce_self from qmp twice I'm
not sure the 2nd time would only send the one packet.
b) The static *time in qemu_announce_self means I'm worried about
what happens if someone was to call qmp_announce_self before the
previous round of qmp_announce_self had finished; I think you'd
end up with 2 timers racing on one pointer.
Dave
> ---
> migration/savevm.c | 5 +++++
> qapi-schema.json | 18 ++++++++++++++++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/migration/savevm.c b/migration/savevm.c
> index f9c06e9..7a817dc 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -143,6 +143,11 @@ void qemu_announce_self(void)
> qemu_announce_self_once(&timer);
> }
>
> +void qmp_announce_self(Error **errp)
> +{
> + qemu_announce_self();
> +}
> +
> /***********************************************************/
> /* savevm/loadvm support */
>
> diff --git a/qapi-schema.json b/qapi-schema.json
> index ce20f16..6854266 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -4786,3 +4786,21 @@
> # Since: 2.7
> ##
> { 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'] }
> +
> +##
> +# @announce-self:
> +#
> +# Trigger generation of broadcast RARP frames to update network switches.
> +# This can be useful when network bonds fail-over the active slave.
> +#
> +# Arguments: None.
> +#
> +# Example:
> +#
> +# -> { "execute": "announce-self" }
> +# <- { "return": {} }
> +#
> +# Since: 2.9
> +##
> +{ 'command': 'announce-self' }
> +
> --
> 2.9.3
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
prev parent reply other threads:[~2017-01-17 11:42 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-17 5:26 [Qemu-devel] [PATCH] migration: expose qemu_announce_self() via qmp Germano Veit Michel
2017-01-17 11:41 ` Dr. David Alan Gilbert [this message]
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=20170117114156.GE2053@work-vm \
--to=dgilbert@redhat.com \
--cc=amit.shah@redhat.com \
--cc=germano@redhat.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.