diff mbox

[1/2] migration: add qemu_loadvm_section_header() helper

Message ID 1475722460-22185-1-git-send-email-lizhijian@cn.fujitsu.com (mailing list archive)
State New, archived
Headers show

Commit Message

Li Zhijian Oct. 6, 2016, 2:54 a.m. UTC
no fuctional changes

Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
---
 migration/savevm.c | 51 ++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 17 deletions(-)
diff mbox

Patch

diff --git a/migration/savevm.c b/migration/savevm.c
index 33a2911..c36a675 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1729,48 +1729,65 @@  void loadvm_free_handlers(MigrationIncomingState *mis)
     }
 }
 
+
 static int
-qemu_loadvm_section_start_full(QEMUFile *f, MigrationIncomingState *mis)
+qemu_loadvm_section_header(QEMUFile *f, MigrationIncomingState *mis,
+                           SaveStateEntry **se,
+                           uint32_t *version_id, uint32_t *section_id)
 {
-    uint32_t instance_id, version_id, section_id;
-    SaveStateEntry *se;
-    LoadStateEntry *le;
+    uint32_t instance_id;
     char idstr[256];
-    int ret;
 
     /* Read section start */
-    section_id = qemu_get_be32(f);
+    *section_id = qemu_get_be32(f);
     if (!qemu_get_counted_string(f, idstr)) {
         error_report("Unable to read ID string for section %u",
-                     section_id);
+                     *section_id);
         return -EINVAL;
     }
     instance_id = qemu_get_be32(f);
-    version_id = qemu_get_be32(f);
+    *version_id = qemu_get_be32(f);
 
-    trace_qemu_loadvm_state_section_startfull(section_id, idstr,
-            instance_id, version_id);
+    trace_qemu_loadvm_state_section_startfull(*section_id, idstr,
+            instance_id, *version_id);
     /* Find savevm section */
-    se = find_se(idstr, instance_id);
-    if (se == NULL) {
+    *se = find_se(idstr, instance_id);
+    if (*se == NULL) {
         error_report("Unknown savevm section or instance '%s' %d",
                      idstr, instance_id);
         return -EINVAL;
     }
 
     /* Validate version */
-    if (version_id > se->version_id) {
+    if (*version_id > (*se)->version_id) {
         error_report("savevm: unsupported version %d for '%s' v%d",
-                     version_id, idstr, se->version_id);
+                     *version_id, idstr, (*se)->version_id);
         return -EINVAL;
     }
 
     /* Validate if it is a device's state */
-    if (xen_enabled() && se->is_ram) {
+    if (xen_enabled() && (*se)->is_ram) {
         error_report("loadvm: %s RAM loading not allowed on Xen", idstr);
         return -EINVAL;
     }
 
+    return 0;
+}
+
+static int
+qemu_loadvm_section_start_full(QEMUFile *f, MigrationIncomingState *mis)
+{
+    uint32_t version_id, section_id;
+    SaveStateEntry *se;
+    LoadStateEntry *le;
+    char idstr[256];
+    int ret;
+
+    ret = qemu_loadvm_section_header(f, mis, &se, &version_id, &section_id);
+    if (ret) {
+        return ret;
+    }
+
     /* Add entry */
     le = g_malloc0(sizeof(*le));
 
@@ -1781,8 +1798,8 @@  qemu_loadvm_section_start_full(QEMUFile *f, MigrationIncomingState *mis)
 
     ret = vmstate_load(f, le->se, le->version_id);
     if (ret < 0) {
-        error_report("error while loading state for instance 0x%x of"
-                     " device '%s'", instance_id, idstr);
+        error_report("error while loading state for"
+                     " device '%s'", idstr);
         return ret;
     }
     if (!check_section_footer(f, le)) {