From: Eric Blake <eblake@redhat.com>
To: quintela@redhat.com
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, laine@redhat.com,
lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [RFC 0/7] Optional toplevel sections
Date: Wed, 15 Oct 2014 10:37:05 -0600 [thread overview]
Message-ID: <543EA2B1.7010200@redhat.com> (raw)
In-Reply-To: <877g01fhob.fsf@elfo.elfo>
[-- Attachment #1: Type: text/plain, Size: 3267 bytes --]
On 10/15/2014 09:59 AM, Juan Quintela wrote:
>> Do we need a new monitor command that says to put the
>> guest into the same state that migration said it should be in (and the
>> command fails if migration was from an older source that did not send
>> the subsection)?
>
> I think that you don't need the command.
> Target is started "paused" (-S) or "running" (nothing).
Libvirt will _always_ pass -S. This is because there is a need for
additional handshaking from destination back to source to let the source
know that the destination is ready to take over operation.
>
>
> source old: target old: no changes
> source old: target new: the same as now, no changes
> source new: target new: we set the right state. And if it is not
> "running" we don't run on destination, independent of what is happening.
> source new: target old: if source is in state "running" or "paused", no
> change. If source is in error state, we sent
> the section and migration gets aborted (target
> don't understand it)
>
> source new: target new, running with old machine type:
> if state is "running" or "paused", nothing is sent.
> if state is "error", target is set to "error".
>
> So, I think that we get all the cases possible right, no?
Only if the existing 'cont' is changed to do something other than put
the destination into 'running', which doesn't sound good; or if we add
some new way for the destination to resume to the state passed in migration.
>
>
>> How can libvirt introspect that the destination qemu is new enough to
>> understand the subsections, and/or that the source qemu is new enough to
>> send the subsections?
>
> A new qemu_option value would make for you?
Or even the existence of a new QMP command in parallel to 'cont' that
has semantics of 'please restore this guest to the state it had on
incoming migration'.
> If you use libvirt, and you *don't* need to do anything special to run
> after migration, you shouldn't use -S. And I would emit an event saying
> "migration was finished".
>
No, libvirt will ALWAYS use -S. So what we need is the hooks for using
-S and still relying on the migration stream rather than the current
status quo of a blind 'cont' (or nothing, if libvirt knows the source
was also in the paused state). In fact, it is more confusing than that:
libvirt has a live migration mode that will auto-fallback to paused
migration if live migration wasn't converging fast enough. That is, on
the source, we intentionally pause the source to quit waiting for
convergence, but on the destination we then 'cont' to wake the guest
back up. In _that_ scenario, the migration stream will contain data
that the guest is paused, but we WANT the destination to be running.
> But what I want to know is _what_ events are you interested in?
Really, an event that the destination is ready to be woken up, and some
indication of the destination having received state in the migration
stream (so that it will wake up to the correct state).
>
> Later, Juan.
>
>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 539 bytes --]
next prev parent reply other threads:[~2014-10-15 16:37 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-15 7:55 [Qemu-devel] [RFC 0/7] Optional toplevel sections Juan Quintela
2014-10-15 7:55 ` [Qemu-devel] [PATCH 1/7] migration: Create optional sections Juan Quintela
2014-10-15 7:55 ` [Qemu-devel] [PATCH 2/7] runstate: Add runstate store Juan Quintela
2014-10-20 10:24 ` Dr. David Alan Gilbert
2014-10-20 10:52 ` Juan Quintela
2014-10-20 15:18 ` Eric Blake
2014-10-22 11:18 ` Dr. David Alan Gilbert
2014-10-22 11:40 ` Markus Armbruster
2014-10-22 15:52 ` Eric Blake
2014-10-15 7:55 ` [Qemu-devel] [PATCH 3/7] runstate: create runstate_index function Juan Quintela
2014-10-15 7:55 ` [Qemu-devel] [PATCH 4/7] runstate: migration allows more transitions now Juan Quintela
2014-10-15 14:42 ` Eric Blake
2014-10-15 15:50 ` Juan Quintela
2014-11-03 12:46 ` Amit Shah
2014-10-15 7:55 ` [Qemu-devel] [PATCH 5/7] migration: create now section to store global state Juan Quintela
2014-10-20 10:52 ` Dr. David Alan Gilbert
2014-10-20 11:11 ` Kevin Wolf
2014-10-15 7:55 ` [Qemu-devel] [PATCH 6/7] global_state: Make section optional Juan Quintela
2014-10-15 7:55 ` [Qemu-devel] [PATCH 7/7] vmstate: Create optional sections Juan Quintela
2014-10-15 14:45 ` Eric Blake
2014-10-15 14:57 ` [Qemu-devel] [RFC 0/7] Optional toplevel sections Eric Blake
2014-10-15 15:59 ` Juan Quintela
2014-10-15 16:37 ` Eric Blake [this message]
2014-10-17 13:41 ` Paolo Bonzini
2014-10-20 14:59 ` Dr. David Alan Gilbert
2014-10-20 11:29 ` Kevin Wolf
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=543EA2B1.7010200@redhat.com \
--to=eblake@redhat.com \
--cc=kwolf@redhat.com \
--cc=laine@redhat.com \
--cc=lcapitulino@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).