From: Anthony Liguori <anthony@codemonkey.ws>
To: dlaor@redhat.com
Cc: Kevin Wolf <kwolf@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
quintela@redhat.com, Ryan Harper <ryanh@linux.vnet.ibm.com>,
mst@redhat.com, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>,
Christoph Hellwig <hch@lst.de>
Subject: Re: [Qemu-devel] [RFC PATCH 0/4] Fix subsection ambiguity in the migration format
Date: Sun, 31 Jul 2011 15:55:30 -0500 [thread overview]
Message-ID: <4E35C142.9050602@codemonkey.ws> (raw)
In-Reply-To: <4E35BE5C.9040607@redhat.com>
On 07/31/2011 03:43 PM, Dor Laor wrote:
> On 07/31/2011 09:46 PM, Christoph Hellwig wrote:
>> On Sun, Jul 31, 2011 at 02:45:07PM +0300, Dor Laor wrote:
>>>> No, definitely not. I think most people using non-x86 architectures
>>>> don't use the vmsave/vmload/migration features at all, but would
>>>> be annoyed if the perfectly functional device models they were
>>>> using got deleted...
>>>
>>> I didn't mean to erase the entire device, just the code for save/load
>>> which
>>> as you say, might not be used at all.
>>
>> Like the one in virtio?
>
> /me caught off guard. I wonder why it wasn't converted to VMSTATE
> before? virtio is one of the key devices, it's not just random forgotten
> one that might not care about migration.
>
> It's worth to utilize this discussion to realize whether vmstate is
> significant enough.
VMState does two things. It provides a common code path for save/load.
This is wonderful and it absolutely has prevent numerous bugs from
happening. Undeniably, it's made migration better and more robust
because of that.
It also provides a declarative description of the serialization state.
The declarative language has gotten complex and it's still not quite
covering everything we do (there's a lot of one-off marshalling handlers
to handle corner cases).
I think we've basically gotten as much as we can with the declarative
approach. I think we have to take the next logical step which is to use
the declarative descriptions (or imperative marshallers) to generate a
richer internal representation that we can manipulate in a high level
fashion.
We could keep trying to make everything declarative but that in and of
itself does not get us to the next step with improving migration. And
it shouldn't gate us either.
> From my brief browsing it looks like vmstate helps to reduce some plain
> errors with double save/load coding, ease the field encoding and handles
> subsections (which imho is the most important).
I think we need to really step back and look at the larger picture.
What do we really need to "fix" migration? I've given this a ton of
thought, and I think there's really two classes of problems:
1) Creating the same guest visible device model in two, potentially
different, versions of QEMU.
2) Given an identical guest visible device model, coping with variations
in the internal implementation and state serialization.
Subsections and versions are solutions to (2), but limited to the scope
of an individual device (and really, individual fields). We completely
punt (1) to management tools.
You need a comprehensive object model to solve (1). I'm convinced of
that. To solve (2), we need to be able to separate compatibility from
internal implementation.
To me, this means migrating to an internal data structure and then
manipulating that data structure before/after transferring it over the wire.
>
> It's true that we need to introduce capabilities to the live migration
> protocol and some other goodies but we might be able to do that with
> the existing method of gradual enhancement for VMSTATE to whatever form
> it may be.
I've already written this up:
http://wiki.qemu.org/Features/Migration/Next
Regards,
Anthony Liguori
>
next prev parent reply other threads:[~2011-07-31 20:55 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-30 15:46 [Qemu-devel] [RFC PATCH 0/4] Fix subsection ambiguity in the migration format Paolo Bonzini
2011-06-30 15:46 ` [Qemu-devel] [RFC PATCH 1/4] add support for machine models to specify their " Paolo Bonzini
2011-06-30 18:11 ` Michael S. Tsirkin
2011-07-01 6:10 ` Paolo Bonzini
2011-07-29 13:08 ` Anthony Liguori
2011-07-29 14:35 ` Paolo Bonzini
2011-06-30 15:46 ` [Qemu-devel] [RFC PATCH 2/4] add pc-0.14 machine Paolo Bonzini
2011-08-05 19:26 ` Bruce Rogers
2011-08-05 19:41 ` Anthony Liguori
2011-06-30 15:46 ` [Qemu-devel] [RFC PATCH 3/4] savevm: define new unambiguous migration format Paolo Bonzini
2011-07-29 13:12 ` Anthony Liguori
2011-07-29 14:35 ` Paolo Bonzini
2011-06-30 15:46 ` [Qemu-devel] [RFC PATCH 4/4] Partially revert "savevm: fix corruption in vmstate_subsection_load()." Paolo Bonzini
2011-07-25 21:10 ` [Qemu-devel] [RFC PATCH 0/4] Fix subsection ambiguity in the migration format Paolo Bonzini
2011-07-25 23:23 ` Anthony Liguori
2011-07-26 9:42 ` Daniel P. Berrange
2011-07-26 9:48 ` Stefan Hajnoczi
2011-07-26 12:51 ` Stefan Hajnoczi
2011-07-26 13:00 ` Anthony Liguori
2011-07-26 12:07 ` Juan Quintela
2011-07-26 12:37 ` Anthony Liguori
2011-07-26 20:13 ` Juan Quintela
2011-07-26 21:46 ` Anthony Liguori
2011-07-26 22:22 ` Peter Maydell
2011-07-26 23:08 ` Anthony Liguori
2011-07-29 14:03 ` Kevin Wolf
2011-07-29 14:28 ` Anthony Liguori
2011-07-29 15:18 ` Kevin Wolf
2011-07-29 22:28 ` Anthony Liguori
2011-07-31 10:48 ` Dor Laor
2011-07-31 11:37 ` Peter Maydell
2011-07-31 11:45 ` Dor Laor
2011-07-31 18:46 ` Christoph Hellwig
2011-07-31 20:43 ` Dor Laor
2011-07-31 20:55 ` Anthony Liguori [this message]
2011-07-31 23:10 ` Christoph Hellwig
2011-08-01 0:15 ` Anthony Liguori
2011-08-01 7:54 ` Christoph Hellwig
2011-08-01 13:53 ` Anthony Liguori
2011-08-04 14:59 ` Luiz Capitulino
2011-07-31 20:43 ` Anthony Liguori
2011-07-31 20:57 ` Dor Laor
2011-07-31 21:03 ` Anthony Liguori
2011-07-31 21:25 ` Dor Laor
2011-07-31 21:49 ` Anthony Liguori
2011-07-29 13:14 ` Anthony Liguori
2011-07-29 14:49 ` Paolo Bonzini
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=4E35C142.9050602@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=dlaor@redhat.com \
--cc=hch@lst.de \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=ryanh@linux.vnet.ibm.com \
--cc=stefanha@linux.vnet.ibm.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).