From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Jianjun Duan <duanj@linux.vnet.ibm.com>
Cc: Sascha Silbe <silbe@linux.vnet.ibm.com>,
qemu-devel@nongnu.org, veroniabahaa@gmail.com,
peter.maydell@linaro.org, quintela@redhat.com, mst@redhat.com,
mark.cave-ayland@ilande.co.uk, mdroth@linux.vnet.ibm.com,
mreitz@redhat.com, blauwirbel@gmail.com, dmitry@daynix.com,
qemu-ppc@nongnu.org, kraxel@redhat.com, pbonzini@redhat.com,
amit.shah@redhat.com, kwolf@redhat.com,
david@gibson.dropbear.id.au, leon.alrae@imgtec.com,
aurelien@aurel32.net, rth@twiddle.net
Subject: Re: [Qemu-devel] [QEMU RFC PATCH v3 4/6] Migration: migrate QTAILQ
Date: Tue, 7 Jun 2016 15:43:13 +0100 [thread overview]
Message-ID: <20160607144313.GC2257@work-vm> (raw)
In-Reply-To: <57505AA6.6080201@linux.vnet.ibm.com>
* Jianjun Duan (duanj@linux.vnet.ibm.com) wrote:
> Hi Sascha,
>
> On 06/02/2016 08:01 AM, Sascha Silbe wrote:
> > Dear Jianjun,
> >
> > Jianjun Duan <duanj@linux.vnet.ibm.com> writes:
> >
> > [include/migration/vmstate.h]
> >> @@ -185,6 +185,8 @@ enum VMStateFlags {
> >> * to determine the number of entries in the array. Only valid in
> >> * combination with one of VMS_VARRAY*. */
> >> VMS_MULTIPLY_ELEMENTS = 0x4000,
> >> + /* For fields which need customized handling, such as QTAILQ in queue.h*/
> >> + VMS_CSTM = 0x8000,
> >
> > Can you describe (in the comment) how this customised handling is
> > performed, please? I.e. describe what exactly happens if the flag is
> > set, from the point of view of an API consumer.
>
> I will add more comments. When this flag is set VMStateInfo.get/put will
> be used in vmstate_load/save_state instead of recursive call. And the
> user should implement VMStateInfo.get/put to handle the concerned data
> structure.
> > Also, why do you need this flag at all? The only change I can see is
> > that you pass additional information to VMStateInfo.get() / .put(),
> > using NULL if it's not set. Why don't you just always pass the
> > additional information? If the additional information is not needed by
> > get() / put() the parameter will be unused anyway.
> You can do it without creating this flag. Instead just to check if info
> is set in the field. However I think it is more readable and more robust
> to check this flag in vmstate_load/get_state.
Apologies for not getting around to this sooner; I was on holiday when you first
sent it.
But:
a) Is there a reason to use the 'bool' between each element; can't you count the
length of the queue, send the length and then send the contents? In that case
it should look a lot more like an ARRAY case on the wire.
b) I think you should really try and split it into two parts:
1) A VMSTATE_ARRAY_CUSTOM (?) - so it's an array of elements but we've got a special
way of allocating/counting/reading the elements
2) A version of that which is for a QTAILQ.
It's important that whatever ends up on the migration stream doesn't reflect
that it happens to be implemented as a QTAILQ; so if you decide to change
it later the migration compatibility doesn't break.
c) Use new trace_ names for get_qtailq rather than misusing trace_vmstate_load_state*
d) Add a trace_ for put_qtailq as well - that way when it goes horribly wrong we can
turn the tracing on on both sides :-)
e) Is there anyway to make QTAILQ_RAW_INSERT_TAIL any more readable?
I don't think I understand why you can't use the standard QTAILQ macros.
f) You might need to fix up Amit's scripts/vmstate-static-checker.py
Dave
> > Sascha
> >
>
> Thanks,
> Jianjun
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2016-06-07 14:43 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-31 18:02 [Qemu-devel] [QEMU RFC PATCH v3 0/6]Migration: ensure hotplug and migration work together Jianjun Duan
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 1/6] Migration: Defined VMStateDescription struct for spapr_drc Jianjun Duan
2016-06-02 4:07 ` David Gibson
2016-06-03 0:28 ` Jianjun Duan
2016-06-03 1:48 ` David Gibson
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 2/6] vmstate: Define VARRAY with VMS_ALLOC Jianjun Duan
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 3/6] Migration: extend VMStateInfo Jianjun Duan
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 4/6] Migration: migrate QTAILQ Jianjun Duan
2016-05-31 19:54 ` Paolo Bonzini
2016-05-31 21:53 ` Jianjun Duan
2016-06-01 15:29 ` Paolo Bonzini
2016-06-01 17:06 ` Jianjun Duan
2016-06-01 18:32 ` Paolo Bonzini
2016-06-02 3:58 ` David Gibson
2016-06-02 15:01 ` Sascha Silbe
2016-06-02 16:11 ` Jianjun Duan
2016-06-07 14:43 ` Dr. David Alan Gilbert [this message]
2016-06-07 16:31 ` Paolo Bonzini
2016-06-07 16:33 ` Michael S. Tsirkin
2016-06-07 16:34 ` Dr. David Alan Gilbert
2016-06-07 16:35 ` Paolo Bonzini
2016-06-07 16:46 ` Dr. David Alan Gilbert
2016-06-07 16:43 ` [Qemu-devel] [Qemu-ppc] " Jianjun Duan
2016-06-03 17:12 ` [Qemu-devel] " Jianjun Duan
2016-06-06 13:47 ` Paolo Bonzini
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 5/6] Migration: migrate ccs_list in spapr state Jianjun Duan
2016-05-31 18:02 ` [Qemu-devel] [QEMU RFC PATCH v3 6/6] Migration: migrate pending_events of " 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=20160607144313.GC2257@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=silbe@linux.vnet.ibm.com \
--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 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).