All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: amit.shah@redhat.com
Subject: [Qemu-devel] [PATCH 05/11] vmstate: Create optional sections
Date: Wed, 17 Jun 2015 03:50:27 +0200	[thread overview]
Message-ID: <1434505833-11234-6-git-send-email-quintela@redhat.com> (raw)
In-Reply-To: <1434505833-11234-1-git-send-email-quintela@redhat.com>

To make sections optional, we need to do it at the beggining of the code.

Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 include/migration/vmstate.h |  2 ++
 migration/savevm.c          |  8 ++++++++
 migration/vmstate.c         | 11 +++++++++++
 trace-events                |  1 +
 4 files changed, 22 insertions(+)

diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index 7153b1e..38de790 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -815,6 +815,8 @@ int vmstate_load_state(QEMUFile *f, const VMStateDescription *vmsd,
 void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
                         void *opaque, QJSON *vmdesc);

+bool vmstate_save_needed(const VMStateDescription *vmsd, void *opaque);
+
 int vmstate_register_with_alias_id(DeviceState *dev, int instance_id,
                                    const VMStateDescription *vmsd,
                                    void *base, int alias_id,
diff --git a/migration/savevm.c b/migration/savevm.c
index 2091882..b018f30 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -834,6 +834,11 @@ void qemu_savevm_state_complete(QEMUFile *f)
         if ((!se->ops || !se->ops->save_state) && !se->vmsd) {
             continue;
         }
+        if (se->vmsd && !vmstate_save_needed(se->vmsd, se->opaque)) {
+            trace_savevm_section_skip(se->idstr, se->section_id);
+            continue;
+        }
+
         trace_savevm_section_start(se->idstr, se->section_id);

         json_start_object(vmdesc, NULL);
@@ -947,6 +952,9 @@ static int qemu_save_device_state(QEMUFile *f)
         if ((!se->ops || !se->ops->save_state) && !se->vmsd) {
             continue;
         }
+        if (se->vmsd && !vmstate_save_needed(se->vmsd, se->opaque)) {
+            continue;
+        }

         save_section_header(f, se, QEMU_VM_SECTION_FULL);

diff --git a/migration/vmstate.c b/migration/vmstate.c
index 6138d1a..e8ccf22 100644
--- a/migration/vmstate.c
+++ b/migration/vmstate.c
@@ -276,6 +276,17 @@ static void vmsd_desc_field_end(const VMStateDescription *vmsd, QJSON *vmdesc,
     json_end_object(vmdesc);
 }

+
+bool vmstate_save_needed(const VMStateDescription *vmsd, void *opaque)
+{
+    if (vmsd->needed && !vmsd->needed(opaque)) {
+        /* optional section not needed */
+        return false;
+    }
+    return true;
+}
+
+
 void vmstate_save_state(QEMUFile *f, const VMStateDescription *vmsd,
                         void *opaque, QJSON *vmdesc)
 {
diff --git a/trace-events b/trace-events
index 52b7efa..bcdce29 100644
--- a/trace-events
+++ b/trace-events
@@ -1191,6 +1191,7 @@ qemu_loadvm_state_section_partend(uint32_t section_id) "%u"
 qemu_loadvm_state_section_startfull(uint32_t section_id, const char *idstr, uint32_t instance_id, uint32_t version_id) "%u(%s) %u %u"
 savevm_section_start(const char *id, unsigned int section_id) "%s, section_id %u"
 savevm_section_end(const char *id, unsigned int section_id, int ret) "%s, section_id %u -> %d"
+savevm_section_skip(const char *id, unsigned int section_id) "%s, section_id %u"
 savevm_state_begin(void) ""
 savevm_state_header(void) ""
 savevm_state_iterate(void) ""
-- 
2.4.3

  parent reply	other threads:[~2015-06-17  1:50 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-17  1:50 [Qemu-devel] [PATCH 00/11] Migraiton events + optional sections Juan Quintela
2015-06-17  1:50 ` [Qemu-devel] [PATCH 01/11] runstate: Add runstate store Juan Quintela
2015-06-17 18:39   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` [Qemu-devel] [PATCH 02/11] runstate: migration allows more transitions now Juan Quintela
2015-06-17 18:41   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` [Qemu-devel] [PATCH 03/11] migration: create new section to store global state Juan Quintela
2015-06-17 19:00   ` Dr. David Alan Gilbert
2015-07-01  7:53     ` Juan Quintela
2015-06-17  1:50 ` [Qemu-devel] [PATCH 04/11] global_state: Make section optional Juan Quintela
2015-06-18 11:36   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` Juan Quintela [this message]
2015-06-17  1:50 ` [Qemu-devel] [PATCH 06/11] migration: Add configuration section Juan Quintela
2015-06-18 10:27   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` [Qemu-devel] [PATCH 07/11] migration: Use cmpxchg correctly Juan Quintela
2015-06-18 10:33   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` [Qemu-devel] [PATCH 08/11] migration: Use always helper to set state Juan Quintela
2015-06-18 10:46   ` Dr. David Alan Gilbert
2015-07-01  7:33     ` Juan Quintela
2015-06-17  1:50 ` [Qemu-devel] [PATCH 09/11] migration: No need to call trace_migrate_set_state() Juan Quintela
2015-06-18 10:47   ` Dr. David Alan Gilbert
2015-06-17  1:50 ` [Qemu-devel] [PATCH 10/11] migration: create migration event Juan Quintela
2015-06-17 19:45   ` Eric Blake
2015-07-01  7:22     ` Juan Quintela
2015-06-17  1:50 ` [Qemu-devel] [PATCH 11/11] migration: Add migration events on target side Juan Quintela
2015-06-18 10:53   ` Dr. David Alan Gilbert
2015-06-18 12:19     ` Eric Blake
2015-06-18 12:51       ` Dr. David Alan Gilbert

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=1434505833-11234-6-git-send-email-quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=amit.shah@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.