All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/9] migration: create savevm_state
Date: Mon, 18 May 2015 10:15:01 +0100	[thread overview]
Message-ID: <20150518091501.GA2201@work-vm> (raw)
In-Reply-To: <1431620920-19710-2-git-send-email-quintela@redhat.com>

* Juan Quintela (quintela@redhat.com) wrote:
> This way, we will put savevm global state here, instead of lots of variables.
> 
> Signed-off-by: Juan Quintela <quintela@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  savevm.c | 53 +++++++++++++++++++++++++++++------------------------
>  1 file changed, 29 insertions(+), 24 deletions(-)
> 
> diff --git a/savevm.c b/savevm.c
> index 3b0e222..1014e3e 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -235,10 +235,15 @@ typedef struct SaveStateEntry {
>      int is_ram;
>  } SaveStateEntry;
> 
> -
> -static QTAILQ_HEAD(savevm_handlers, SaveStateEntry) savevm_handlers =
> -    QTAILQ_HEAD_INITIALIZER(savevm_handlers);
> -static int global_section_id;
> +typedef struct SaveState {
> +    QTAILQ_HEAD(, SaveStateEntry) handlers;
> +    int global_section_id;
> +} SaveState;
> +
> +static SaveState savevm_state = {
> +    .handlers = QTAILQ_HEAD_INITIALIZER(savevm_state.handlers),
> +    .global_section_id = 0,
> +};
> 
>  static void dump_vmstate_vmsd(FILE *out_file,
>                                const VMStateDescription *vmsd, int indent,
> @@ -383,7 +388,7 @@ static int calculate_new_instance_id(const char *idstr)
>      SaveStateEntry *se;
>      int instance_id = 0;
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (strcmp(idstr, se->idstr) == 0
>              && instance_id <= se->instance_id) {
>              instance_id = se->instance_id + 1;
> @@ -397,7 +402,7 @@ static int calculate_compat_instance_id(const char *idstr)
>      SaveStateEntry *se;
>      int instance_id = 0;
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!se->compat) {
>              continue;
>          }
> @@ -425,7 +430,7 @@ int register_savevm_live(DeviceState *dev,
> 
>      se = g_malloc0(sizeof(SaveStateEntry));
>      se->version_id = version_id;
> -    se->section_id = global_section_id++;
> +    se->section_id = savevm_state.global_section_id++;
>      se->ops = ops;
>      se->opaque = opaque;
>      se->vmsd = NULL;
> @@ -457,7 +462,7 @@ int register_savevm_live(DeviceState *dev,
>      }
>      assert(!se->compat || se->instance_id == 0);
>      /* add at the end of list */
> -    QTAILQ_INSERT_TAIL(&savevm_handlers, se, entry);
> +    QTAILQ_INSERT_TAIL(&savevm_state.handlers, se, entry);
>      return 0;
>  }
> 
> @@ -491,9 +496,9 @@ void unregister_savevm(DeviceState *dev, const char *idstr, void *opaque)
>      }
>      pstrcat(id, sizeof(id), idstr);
> 
> -    QTAILQ_FOREACH_SAFE(se, &savevm_handlers, entry, new_se) {
> +    QTAILQ_FOREACH_SAFE(se, &savevm_state.handlers, entry, new_se) {
>          if (strcmp(se->idstr, id) == 0 && se->opaque == opaque) {
> -            QTAILQ_REMOVE(&savevm_handlers, se, entry);
> +            QTAILQ_REMOVE(&savevm_state.handlers, se, entry);
>              if (se->compat) {
>                  g_free(se->compat);
>              }
> @@ -515,7 +520,7 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id,
> 
>      se = g_malloc0(sizeof(SaveStateEntry));
>      se->version_id = vmsd->version_id;
> -    se->section_id = global_section_id++;
> +    se->section_id = savevm_state.global_section_id++;
>      se->opaque = opaque;
>      se->vmsd = vmsd;
>      se->alias_id = alias_id;
> @@ -543,7 +548,7 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id,
>      }
>      assert(!se->compat || se->instance_id == 0);
>      /* add at the end of list */
> -    QTAILQ_INSERT_TAIL(&savevm_handlers, se, entry);
> +    QTAILQ_INSERT_TAIL(&savevm_state.handlers, se, entry);
>      return 0;
>  }
> 
> @@ -552,9 +557,9 @@ void vmstate_unregister(DeviceState *dev, const VMStateDescription *vmsd,
>  {
>      SaveStateEntry *se, *new_se;
> 
> -    QTAILQ_FOREACH_SAFE(se, &savevm_handlers, entry, new_se) {
> +    QTAILQ_FOREACH_SAFE(se, &savevm_state.handlers, entry, new_se) {
>          if (se->vmsd == vmsd && se->opaque == opaque) {
> -            QTAILQ_REMOVE(&savevm_handlers, se, entry);
> +            QTAILQ_REMOVE(&savevm_state.handlers, se, entry);
>              if (se->compat) {
>                  g_free(se->compat);
>              }
> @@ -606,7 +611,7 @@ bool qemu_savevm_state_blocked(Error **errp)
>  {
>      SaveStateEntry *se;
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (se->vmsd && se->vmsd->unmigratable) {
>              error_setg(errp, "State blocked by non-migratable device '%s'",
>                         se->idstr);
> @@ -623,7 +628,7 @@ void qemu_savevm_state_begin(QEMUFile *f,
>      int ret;
> 
>      trace_savevm_state_begin();
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!se->ops || !se->ops->set_params) {
>              continue;
>          }
> @@ -633,7 +638,7 @@ void qemu_savevm_state_begin(QEMUFile *f,
>      qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
>      qemu_put_be32(f, QEMU_VM_FILE_VERSION);
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          int len;
> 
>          if (!se->ops || !se->ops->save_live_setup) {
> @@ -676,7 +681,7 @@ int qemu_savevm_state_iterate(QEMUFile *f)
>      int ret = 1;
> 
>      trace_savevm_state_iterate();
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!se->ops || !se->ops->save_live_iterate) {
>              continue;
>          }
> @@ -727,7 +732,7 @@ void qemu_savevm_state_complete(QEMUFile *f)
> 
>      cpu_synchronize_all_states();
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!se->ops || !se->ops->save_live_complete) {
>              continue;
>          }
> @@ -752,7 +757,7 @@ void qemu_savevm_state_complete(QEMUFile *f)
>      vmdesc = qjson_new();
>      json_prop_int(vmdesc, "page_size", TARGET_PAGE_SIZE);
>      json_start_array(vmdesc, "devices");
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          int len;
> 
>          if ((!se->ops || !se->ops->save_state) && !se->vmsd) {
> @@ -803,7 +808,7 @@ uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size)
>      SaveStateEntry *se;
>      uint64_t ret = 0;
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!se->ops || !se->ops->save_live_pending) {
>              continue;
>          }
> @@ -822,7 +827,7 @@ void qemu_savevm_state_cancel(void)
>      SaveStateEntry *se;
> 
>      trace_savevm_state_cancel();
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (se->ops && se->ops->cancel) {
>              se->ops->cancel(se->opaque);
>          }
> @@ -872,7 +877,7 @@ static int qemu_save_device_state(QEMUFile *f)
> 
>      cpu_synchronize_all_states();
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          int len;
> 
>          if (se->is_ram) {
> @@ -906,7 +911,7 @@ static SaveStateEntry *find_se(const char *idstr, int instance_id)
>  {
>      SaveStateEntry *se;
> 
> -    QTAILQ_FOREACH(se, &savevm_handlers, entry) {
> +    QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
>          if (!strcmp(se->idstr, idstr) &&
>              (instance_id == se->instance_id ||
>               instance_id == se->alias_id))
> -- 
> 2.4.0
> 
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2015-05-18  9:15 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-14 16:28 [Qemu-devel] [PATCH 0/9] Optional toplevel sections Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 1/9] migration: create savevm_state Juan Quintela
2015-05-18  9:15   ` Dr. David Alan Gilbert [this message]
2015-05-14 16:28 ` [Qemu-devel] [PATCH 2/9] migration: Use normal VMStateDescriptions for Subsections Juan Quintela
2015-05-18  9:54   ` Dr. David Alan Gilbert
2015-05-14 16:28 ` [Qemu-devel] [PATCH 3/9] runstate: Add runstate store Juan Quintela
2015-05-18 10:35   ` Dr. David Alan Gilbert
2015-06-17  0:28     ` Juan Quintela
2015-05-18 10:38   ` Denis V. Lunev
2015-05-18 14:50     ` Eric Blake
2015-06-17  0:55     ` Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 4/9] runstate: create runstate_index function Juan Quintela
2015-05-18  9:58   ` Dr. David Alan Gilbert
2015-05-18 14:55     ` Eric Blake
2015-06-17  0:31       ` Juan Quintela
2015-06-17  0:55     ` Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 5/9] runstate: migration allows more transitions now Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 6/9] migration: create new section to store global state Juan Quintela
2015-05-18 10:23   ` Dr. David Alan Gilbert
2015-06-17  1:10     ` Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 7/9] global_state: Make section optional Juan Quintela
2015-05-18 11:03   ` Dr. David Alan Gilbert
2015-06-17  1:25     ` Juan Quintela
2015-05-14 16:28 ` [Qemu-devel] [PATCH 8/9] vmstate: Create optional sections Juan Quintela
2015-05-18 11:23   ` Dr. David Alan Gilbert
2015-05-19  9:17   ` Dr. David Alan Gilbert
2015-05-14 16:28 ` [Qemu-devel] [PATCH 9/9] migration: Add configuration section Juan Quintela
2015-05-18 11:39   ` Dr. David Alan Gilbert
2015-06-17  1:39     ` 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=20150518091501.GA2201@work-vm \
    --to=dgilbert@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 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.