From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Jianjun Duan <duanj@linux.vnet.ibm.com>,
veroniabahaa@gmail.com, peter.maydell@linaro.org,
mdroth@linux.vnet.ibm.com, mst@redhat.com, quintela@redhat.com,
mark.cave-ayland@ilande.co.uk, qemu-devel@nongnu.org,
mreitz@redhat.com, blauwirbel@gmail.com, amit.shah@redhat.com,
qemu-ppc@nongnu.org, kraxel@redhat.com, kwolf@redhat.com,
dmitry@daynix.com, rth@twiddle.net, leon.alrae@imgtec.com,
aurelien@aurel32.net, david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [QEMU PATCH v5 4/6] migration: migrate QTAILQ
Date: Thu, 6 Oct 2016 16:21:41 +0100 [thread overview]
Message-ID: <20161006152140.GD3087@work-vm> (raw)
In-Reply-To: <561d3bf0-6df6-fabb-3c58-446bc0761b26@redhat.com>
* Paolo Bonzini (pbonzini@redhat.com) wrote:
>
>
> On 06/10/2016 13:56, Dr. David Alan Gilbert wrote:
> >> > Yes, it's sickening but that's what you do to honor backwards compatibility.
> > Actually, that's not *that* bad an idea.
> >
> > Lets go with Jianjun's structure for the moment; we can always expand on it.
> >
> > It seems we have ~3 concepts that feel partially independent:
> >
> > a) The format of the loop on the wire (eg one byte per iteration, 0 terminates)
> > b) The way the list is represented (QTAILQ, simple array, device specific linked-list)
> > c) The data gathered in each iteration
> > d) The allocation of (c)
> >
> > This patch has a,b,d all wrapped up together in the get/put functions -
> > where I was hoping to find a way to separate them a bit so that we
> > could say; I want a loop, with this format, into this data structure, using this allocator.
>
> Yes, the sickening part is when the format of the loop intersects with
> the format of the datastructure.
Yes.
> I agree with moving the allocator out of VMStateInfo and back into
> VMStateField, but only as long as VMStateAllocator could replace other
> VMS_* flags.
>
> I'm not sure about the value in separating (a) and (b), but we can do
> things one step at a time.
The other observation is that in many of the cases the loop body uses
some state present in the outer state or in a value read prior to the
start of the loop.
For example virtio_blk_load_device uses the vdev pointer inside
the loop during the initialisation of each loaded request (I can see
some hacky ways of avoiding it but it's messy).
> By the way, regarding this:
>
> > The other possibility is just to bump the version and make the SCSI
> > request flag a separate byte after the "is there another entry" byte.
>
> There is another way to do it that is much more backwards-compatible.
> Choose a "default" value of retry corresponding to what QEMU encodes as
> a "1". If it's different, use a subsection to encode that. Migration
> from old to new will fail if the wrong value of retry is used, because
> it will see a 2 where the QTAILQ loop expects a zero or one. Migration
> from new to old will fail if the wrong value of retry is used, because
> it will see a subsection header where the QTAILQ loop expects a zero or one.
>
> I think this is acceptable, and it would only affect migration of USB
> storage devices.
Yes, it might be worth it in some of these cases; although I do try
and avoid breaking format at almost all costs.
Dave
> Paolo
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2016-10-06 15:21 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-03 18:24 [Qemu-devel] [QEMU PATCH v5 0/6] migration: ensure hotplug and migration work together Jianjun Duan
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 1/6] migration: alternative way to set instance_id in SaveStateEntry Jianjun Duan
2016-10-05 10:12 ` Dr. David Alan Gilbert
2016-10-05 16:44 ` Jianjun Duan
2016-10-07 2:54 ` David Gibson
2016-10-07 8:07 ` Dr. David Alan Gilbert
2016-10-10 5:31 ` David Gibson
2016-10-11 16:17 ` Michael Roth
2016-10-11 23:37 ` David Gibson
2016-11-15 23:45 ` Michael Roth
2016-10-05 16:46 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 2/6] migration: spapr_drc: defined VMStateDescription struct Jianjun Duan
2016-10-05 11:38 ` Dr. David Alan Gilbert
2016-10-07 3:17 ` David Gibson
2016-10-07 3:12 ` David Gibson
2016-10-07 17:17 ` Jianjun Duan
2016-10-10 5:09 ` David Gibson
2016-10-10 16:48 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 3/6] migration: extend VMStateInfo Jianjun Duan
2016-10-07 12:08 ` Dr. David Alan Gilbert
2016-10-07 16:35 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-10-07 18:42 ` Dr. David Alan Gilbert
2016-10-10 5:02 ` David Gibson
2016-10-12 11:59 ` [Qemu-devel] " Halil Pasic
2016-10-12 12:07 ` Paolo Bonzini
2016-10-12 12:30 ` Halil Pasic
2016-10-12 14:59 ` Dr. David Alan Gilbert
2016-10-13 10:33 ` Halil Pasic
2016-10-13 11:12 ` Dr. David Alan Gilbert
2016-10-12 17:27 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-10-13 8:22 ` Paolo Bonzini
2016-10-13 10:48 ` Halil Pasic
2016-10-13 11:20 ` Paolo Bonzini
2016-10-13 16:23 ` Jianjun Duan
2016-10-13 16:32 ` Halil Pasic
2016-10-13 16:35 ` Jianjun Duan
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 4/6] migration: migrate QTAILQ Jianjun Duan
2016-10-05 16:56 ` Dr. David Alan Gilbert
2016-10-05 17:19 ` Jianjun Duan
2016-10-06 19:01 ` Dr. David Alan Gilbert
2016-10-06 19:49 ` Jianjun Duan
2016-10-07 3:25 ` David Gibson
2016-10-07 14:31 ` Paolo Bonzini
2016-10-07 14:34 ` Dr. David Alan Gilbert
2016-10-07 16:31 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-10-07 16:32 ` Paolo Bonzini
2016-10-07 17:25 ` Jianjun Duan
2016-10-07 17:34 ` Dr. David Alan Gilbert
2016-10-07 17:43 ` Jianjun Duan
2016-10-08 11:37 ` Paolo Bonzini
2016-10-08 19:28 ` Halil Pasic
2016-10-10 21:29 ` Jianjun Duan
2016-10-11 7:33 ` Paolo Bonzini
2016-10-10 21:40 ` Jianjun Duan
2016-10-06 11:05 ` [Qemu-devel] " Paolo Bonzini
2016-10-06 11:56 ` Dr. David Alan Gilbert
2016-10-06 12:23 ` Paolo Bonzini
2016-10-06 15:21 ` Dr. David Alan Gilbert [this message]
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 5/6] migration: spapr: migrate ccs_list in spapr state Jianjun Duan
2016-10-07 3:36 ` David Gibson
2016-10-07 14:52 ` Michael Roth
2016-10-10 5:05 ` David Gibson
2016-10-03 18:24 ` [Qemu-devel] [QEMU PATCH v5 6/6] migration: spapr: migrate pending_events of " Jianjun Duan
2016-10-03 18:35 ` [Qemu-devel] [QEMU PATCH v5 0/6] migration: ensure hotplug and migration work together no-reply
2016-10-03 19:00 ` no-reply
2016-10-03 19:11 ` Jianjun Duan
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=20161006152140.GD3087@work-vm \
--to=dgilbert@redhat.com \
--cc=amit.shah@redhat.com \
--cc=aurelien@aurel32.net \
--cc=blauwirbel@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=dmitry@daynix.com \
--cc=duanj@linux.vnet.ibm.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=leon.alrae@imgtec.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=veroniabahaa@gmail.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.