qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org, Laurent Vivier <lvivier@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 04/10] migration: let MigrationState be a qdev
Date: Mon, 26 Jun 2017 10:50:35 +0800	[thread overview]
Message-ID: <20170626025035.GH3936@pxdev.xzpeter.org> (raw)
In-Reply-To: <20170623221819.GE10776@localhost.localdomain>

On Fri, Jun 23, 2017 at 07:18:19PM -0300, Eduardo Habkost wrote:
> On Fri, Jun 23, 2017 at 12:46:40PM +0800, Peter Xu wrote:
> > Let the old man "MigrationState" join the object family. Direct benefit
> > is that we can start to use all the property features derived from
> > current QDev, like: HW_COMPAT_* bits, command line setup for migration
> > parameters (so will never need to set them up each time using HMP/QMP,
> > this is really, really attractive for test writters), etc.
> > 
> > I see no reason to disallow this happen yet. So let's start from this
> > one, to see whether it would be anything good.
> > 
> > Now we init the MigrationState struct statically in main() to make sure
> > it's initialized after global properties are applied, since we'll use
> > them during creation of the object.
> > 
> > No functional change at all.
> > 
> > Reviewed-by: Juan Quintela <quintela@redhat.com>
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  include/migration/misc.h |  1 +
> >  migration/migration.c    | 78 ++++++++++++++++++++++++++++++++++--------------
> >  migration/migration.h    | 19 ++++++++++++
> >  vl.c                     |  6 ++++
> >  4 files changed, 81 insertions(+), 23 deletions(-)
> > 
> [...]
> > diff --git a/vl.c b/vl.c
> > index cdd2ec8..9b04ba7 100644
> > --- a/vl.c
> > +++ b/vl.c
> > @@ -4596,6 +4596,12 @@ int main(int argc, char **argv, char **envp)
> >       */
> >      register_global_properties(current_machine);
> >  
> > +    /*
> > +     * Migration object can only be created after global properties
> > +     * are applied correctly.
> > +     */
> > +    migration_object_init();
> > +
> 
> Do we really need this? Can't be we just do:
> 
>     if (!current_migration) {
>         current_migration = MIGRATION_OBJ(object_new(TYPE_MIGRATION));
>     }
> 
> inside migration_get_current()?

I did this change on purpose (after AccelClass.global_props is
introduced). The comment above tried to explain it but looks like it's
still not clear enough... The reason is that currently the creation of
migration object is depending on the global properties, so we need to
create the object after register_global_properties(), while the old
migrate_get_current() cannot really be sure of this ordering: it just
creates the object on the first call of the function, but the first
call can be even before register_global_properties(). If so, we'll
have a problem (e.g. Xen compat properties will be missing).

Now this restriction is strictly followed if we create the migrate
object here. If anyone calls migrate_get_current() before
register_global_properties(), there will be an assert, and that should
be treated as a programming error.

Thanks,

-- 
Peter Xu

  reply	other threads:[~2017-06-26  2:50 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-23  4:46 [Qemu-devel] [PATCH v5 00/10] migration: objectify MigrationState Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 01/10] machine: export register_compat_prop() Peter Xu
2017-06-23 21:24   ` Eduardo Habkost
2017-06-26  2:36     ` Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 02/10] accel: introduce AccelClass.global_props Peter Xu
2017-06-23 21:31   ` Eduardo Habkost
2017-06-26  2:39     ` Peter Xu
2017-06-27  0:50       ` Eduardo Habkost
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 03/10] vl: clean up global property registerations Peter Xu
2017-06-23 21:35   ` Eduardo Habkost
2017-06-26  2:40     ` Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 04/10] migration: let MigrationState be a qdev Peter Xu
2017-06-23 22:18   ` Eduardo Habkost
2017-06-26  2:50     ` Peter Xu [this message]
2017-06-27  0:54       ` Eduardo Habkost
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 05/10] migration: move global_state.optional out Peter Xu
2017-06-23 22:19   ` Eduardo Habkost
2017-06-26  2:51     ` Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 06/10] migration: move only_migratable to MigrationState Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 07/10] migration: move skip_configuration out Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 08/10] migration: move skip_section_footers Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 09/10] migration: merge enforce_config_section somewhat Peter Xu
2017-06-23  4:46 ` [Qemu-devel] [PATCH v5 10/10] migration: hmp: dump globals Peter Xu

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=20170626025035.GH3936@pxdev.xzpeter.org \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=lvivier@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).