From: "Michael S. Tsirkin" <mst@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: Gleb Natapov <gleb@redhat.com>, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: optional feature
Date: Wed, 16 Sep 2009 18:11:44 +0300 [thread overview]
Message-ID: <20090916151143.GB5513@redhat.com> (raw)
In-Reply-To: <m3iqfjkkjo.fsf@neno.mitica>
On Wed, Sep 16, 2009 at 04:53:47PM +0200, Juan Quintela wrote:
> > It is more modular. With optional features A B C, versioning can not
> > support saving only A and C but not B. This is bad for example for
> > backporting features between versions: if C happened to be introduced
> > after B, backporting C will force backporting B.
>
> No problem again.
> You backport, and you add to the state both B and C. You just don't
> care about B values. I leave you a name for them:
>
> reserved0
> reserved1
> reserved2
>
> And you are done.
Not really. When you save, B has an invalid value.
Load it in upstream qemu, boom.
> And what is worse, what happens when you have to upgrade B and C with
> new fields? Now you have:
>
> A, B, B', C, C'
>
> And what options are valid? How you differentiate between B and B', C
> and C', a version number?
Each is a new feature.
If B' relaces B, then do not store B, store only B'.
> We are back at stage 1?
>
> And how many features do you support? Exponential again.
Nothing exponential. Test with each feature on and off, you are done.
> With linear version numbers you are going to have:
>
> A
> A+B
> A+B+C
> A+B'+C
> A+B'+C'
This is exponential in the number of combinations you need to code up.
> (you can switch the 2 last ones depending the order in which changes
> happen). And that is it, no exponential cases again. we added 4
> features and we have 4 new versions. It looks very linear to me.
> And we can still load all the previous versions.
>
> > But you can support it if you put each one in a migration container.
>
> My opinion: We don't even want to think about this.
>
>
> > if you are not saving irq state, it's better
> > to skip the array that create a 0 size array.
>
> Why?
Because of what I said below: it does not work for non-arrays.
> > The former works for non-array fields, the later does not,
> > and you have to invent a separate valid bit.
>
> VMStateDescription, think of it as a contract. Would you like that the
> other part would be able to insert whole paragraphs when he wants?
> Without ever telling you that it changed (i.e. same version).
Yes, it has to tell me, each option should be tagged.
I see a new paragraph, I do not recognize it, I abort.
> I don't think so. I am sure I would preffer that it will told me
> clearly that contract changed (new version), and the changes are this,
> this and this.
It does not though. The connection between versions and
sets of features is scattered over the code.
Instead, the format should be self-documenting.
> Later, Juan.
next prev parent reply other threads:[~2009-09-16 15:13 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-16 10:46 [Qemu-devel] optional feature (was Re: The State of the SaveVM format) Michael S. Tsirkin
2009-09-16 11:04 ` [Qemu-devel] Re: optional feature Juan Quintela
2009-09-16 11:18 ` Gleb Natapov
2009-09-16 11:48 ` Juan Quintela
2009-09-16 11:52 ` Michael S. Tsirkin
2009-09-16 12:14 ` Juan Quintela
2009-09-16 12:18 ` Michael S. Tsirkin
2009-09-16 12:26 ` Juan Quintela
2009-09-16 12:37 ` Michael S. Tsirkin
2009-09-16 13:01 ` Juan Quintela
2009-09-16 13:03 ` Michael S. Tsirkin
2009-09-16 13:34 ` Juan Quintela
2009-09-16 14:02 ` Michael S. Tsirkin
2009-09-16 11:57 ` Gleb Natapov
2009-09-16 12:23 ` Juan Quintela
2009-09-16 12:35 ` Gleb Natapov
2009-09-16 12:40 ` Michael S. Tsirkin
2009-09-16 13:22 ` Juan Quintela
2009-09-16 14:08 ` Anthony Liguori
2009-09-16 14:12 ` Michael S. Tsirkin
2009-09-16 14:21 ` Anthony Liguori
2009-09-16 14:34 ` Michael S. Tsirkin
2009-09-16 14:53 ` Juan Quintela
2009-09-16 15:11 ` Michael S. Tsirkin [this message]
2009-09-16 15:25 ` Juan Quintela
2009-09-16 15:45 ` Anthony Liguori
2009-09-16 15:58 ` Anthony Liguori
2009-09-16 13:51 ` Anthony Liguori
2009-09-16 11:41 ` Michael S. Tsirkin
2009-09-16 12:13 ` Juan Quintela
2009-09-16 12:29 ` Michael S. Tsirkin
2009-09-16 13:31 ` Juan Quintela
2009-09-16 14:07 ` Michael S. Tsirkin
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=20090916151143.GB5513@redhat.com \
--to=mst@redhat.com \
--cc=gleb@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).