All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
	Laurent Vivier <lvivier@redhat.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/6] migration: move global_state.optional out
Date: Wed, 07 Jun 2017 19:42:57 +0200	[thread overview]
Message-ID: <87k24nd78e.fsf@secure.mitica> (raw)
In-Reply-To: <1496745042-2379-3-git-send-email-peterx@redhat.com> (Peter Xu's message of "Tue, 6 Jun 2017 18:30:38 +0800")

Peter Xu <peterx@redhat.com> wrote:
> Put it into MigrationState then we can use the properties to specify
> whether to enable storing global state.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  include/migration/migration.h |  6 ++++++
>  migration/migration.c         | 21 +++++++++++++++++----
>  2 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/include/migration/migration.h b/include/migration/migration.h
> index bd0186c..8aa1ea6 100644
> --- a/include/migration/migration.h
> +++ b/include/migration/migration.h
> @@ -162,6 +162,12 @@ struct MigrationState
>      /* Do we have to clean up -b/-i from old migrate parameters */
>      /* This feature is deprecated and will be removed */
>      bool must_remove_block_options;
> +
> +    /*
> +     * Global switch on whether we need to store the global state
> +     * during migration.
> +     */
> +    bool store_global_state;
>  };
>  
>  void migrate_set_state(int *state, int old_state, int new_state);
> diff --git a/migration/migration.c b/migration/migration.c
> index 483b027..0653f49 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -140,13 +140,13 @@ void migration_incoming_state_destroy(void)
>  
>  
>  typedef struct {
> -    bool optional;
>      uint32_t size;
>      uint8_t runstate[100];
>      RunState state;
>      bool received;
>  } GlobalState;
>  
> +/* This is only used if MigrationState.store_global_state is set. */
>  static GlobalState global_state;
>  
>  int global_state_store(void)
> @@ -179,7 +179,7 @@ static RunState global_state_get_runstate(void)
>  
>  void global_state_set_optional(void)
>  {
> -    global_state.optional = true;
> +    migrate_get_current()->store_global_state = false;

Part of the advantage (for me) of using qapi was not to have to export
a function to set this.  I.e.  isn't a way to call

qemu_opt_get_bool(migration_opts, "store_global_state", true)

qapi_<magic>_set_bool(migration_opts, "store_global_state",false);
?

So, I don't have to eport global_state_set_optional()?


My goal would be that when I need to add a new propertly, I add it to
migration_properties and to MigrationState and call it a day?

>  static bool global_state_needed(void *opaque)
> @@ -188,8 +188,7 @@ static bool global_state_needed(void *opaque)
>      char *runstate = (char *)s->runstate;
>  
>      /* If it is not optional, it is mandatory */
> -
> -    if (s->optional == false) {
> +    if (migrate_get_current()->store_global_state) {

Being able to query without having a function would also be nice.

Later, Juan.

>          return true;
>      }
>  
> @@ -2109,6 +2108,19 @@ void migrate_fd_connect(MigrationState *s)
>      s->migration_thread_running = true;
>  }
>  
> +static Property migration_properties[] = {
> +    DEFINE_PROP_BOOL("store-global-state", MigrationState,
> +                     store_global_state, true),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void migration_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +
> +    dc->props = migration_properties;
> +}
> +
>  static void migration_instance_init(Object *obj)
>  {
>      MigrationState *ms = MIGRATION_OBJ(obj);
> @@ -2133,6 +2145,7 @@ static void migration_instance_init(Object *obj)
>  static const TypeInfo migration_type = {
>      .name = TYPE_MIGRATION,
>      .parent = TYPE_DEVICE,
> +    .class_init = migration_class_init,
>      .class_size = sizeof(MigrationClass),
>      .instance_size = sizeof(MigrationState),
>      .instance_init = migration_instance_init,

  reply	other threads:[~2017-06-07 17:43 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-06 10:30 [Qemu-devel] [PATCH 0/6] migration: objectify MigrationState Peter Xu
2017-06-06 10:30 ` [Qemu-devel] [PATCH 1/6] migration: let MigrationState be a qdev Peter Xu
2017-06-07 16:52   ` Juan Quintela
2017-06-06 10:30 ` [Qemu-devel] [PATCH 2/6] migration: move global_state.optional out Peter Xu
2017-06-07 17:42   ` Juan Quintela [this message]
2017-06-08 10:41     ` Peter Xu
2017-06-08 11:12       ` Juan Quintela
2017-06-08 12:44         ` Peter Xu
2017-06-08 13:24           ` Juan Quintela
2017-06-06 10:30 ` [Qemu-devel] [PATCH 3/6] migration: use compat bit for global_state Peter Xu
2017-06-07 17:44   ` Juan Quintela
2017-06-06 10:30 ` [Qemu-devel] [PATCH 4/6] migration: move only_migratable to MigrationState Peter Xu
2017-06-06 10:30 ` [Qemu-devel] [PATCH 5/6] migration: move skip_configuration out Peter Xu
2017-06-07 17:48   ` Juan Quintela
2017-06-06 10:30 ` [Qemu-devel] [PATCH 6/6] migration: move skip_section_footers Peter Xu
2017-06-07 17:52   ` Juan Quintela

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=87k24nd78e.fsf@secure.mitica \
    --to=quintela@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.