Patchwork [v7,06/11] Add MigrationParams structure

login
register
mail settings
Submitter Orit Wasserman
Date Jan. 26, 2012, 2:24 p.m.
Message ID <1327587897-31192-7-git-send-email-owasserm@redhat.com>
Download mbox | patch
Permalink /patch/137953/
State New
Headers show

Comments

Orit Wasserman - Jan. 26, 2012, 2:24 p.m.
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
---
 block-migration.c |    8 ++++----
 migration.c       |   16 +++++++++-------
 migration.h       |    9 +++++++--
 qemu-common.h     |    1 +
 savevm.c          |   12 ++++++++----
 sysemu.h          |    4 ++--
 vmstate.h         |    2 +-
 7 files changed, 32 insertions(+), 20 deletions(-)

Patch

diff --git a/block-migration.c b/block-migration.c
index 4467468..69f8c9e 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -708,13 +708,13 @@  static int block_load(QEMUFile *f, void *opaque, int version_id)
     return 0;
 }
 
-static void block_set_params(int blk_enable, int shared_base, void *opaque)
+static void block_set_params(const MigrationParams *params, void *opaque)
 {
-    block_mig_state.blk_enable = blk_enable;
-    block_mig_state.shared_base = shared_base;
+    block_mig_state.blk_enable = params->blk;
+    block_mig_state.shared_base = params->shared;
 
     /* shared base means that blk_enable = 1 */
-    block_mig_state.blk_enable |= shared_base;
+    block_mig_state.blk_enable |= params->shared;
 }
 
 void blk_mig_init(void)
diff --git a/migration.c b/migration.c
index 37af438..c90740a 100644
--- a/migration.c
+++ b/migration.c
@@ -367,7 +367,7 @@  void migrate_fd_connect(MigrationState *s)
                                       migrate_fd_close);
 
     DPRINTF("beginning savevm\n");
-    ret = qemu_savevm_state_begin(s->mon, s->file, s->blk, s->shared);
+    ret = qemu_savevm_state_begin(s->mon, s->file, &s->params);
     if (ret < 0) {
         DPRINTF("failed, %d\n", ret);
         migrate_fd_error(s);
@@ -376,15 +376,15 @@  void migrate_fd_connect(MigrationState *s)
     migrate_fd_put_ready(s);
 }
 
-static MigrationState *migrate_init(Monitor *mon, int detach, int blk, int inc)
+static MigrationState *migrate_init(Monitor *mon, int detach,
+                                    const MigrationParams *params)
 {
     MigrationState *s = migrate_get_current();
     int64_t bandwidth_limit = s->bandwidth_limit;
 
     memset(s, 0, sizeof(*s));
     s->bandwidth_limit = bandwidth_limit;
-    s->blk = blk;
-    s->shared = inc;
+    s->params = *params;
 
     /* s->mon is used for two things:
        - pass fd in fd migration
@@ -416,13 +416,15 @@  void migrate_del_blocker(Error *reason)
 int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
 {
     MigrationState *s = migrate_get_current();
+    MigrationParams params;
     const char *p;
     int detach = qdict_get_try_bool(qdict, "detach", 0);
-    int blk = qdict_get_try_bool(qdict, "blk", 0);
-    int inc = qdict_get_try_bool(qdict, "inc", 0);
     const char *uri = qdict_get_str(qdict, "uri");
     int ret;
 
+    params.blk = qdict_get_try_bool(qdict, "blk", 0);
+    params.shared = qdict_get_try_bool(qdict, "inc", 0);
+
     if (s->state == MIG_STATE_ACTIVE) {
         monitor_printf(mon, "migration already in progress\n");
         return -1;
@@ -438,7 +440,7 @@  int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data)
         return -1;
     }
 
-    s = migrate_init(mon, detach, blk, inc);
+    s = migrate_init(mon, detach, &params);
 
     if (strstart(uri, "tcp:", &p)) {
         ret = tcp_start_outgoing_migration(s, p);
diff --git a/migration.h b/migration.h
index c8cadbc..6362136 100644
--- a/migration.h
+++ b/migration.h
@@ -19,6 +19,11 @@ 
 #include "notify.h"
 #include "error.h"
 
+struct MigrationParams {
+    int blk;
+    int shared;
+};
+
 typedef struct MigrationState MigrationState;
 
 struct MigrationState
@@ -32,10 +37,10 @@  struct MigrationState
     int (*close)(MigrationState *s);
     int (*write)(MigrationState *s, const void *buff, size_t size);
     void *opaque;
-    int blk;
-    int shared;
+    MigrationParams params;
 };
 
+
 void process_incoming_migration(QEMUFile *f);
 
 int qemu_start_incoming_migration(const char *uri);
diff --git a/qemu-common.h b/qemu-common.h
index 6ab7dfb..63557c5 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -17,6 +17,7 @@  typedef struct DeviceState DeviceState;
 
 struct Monitor;
 typedef struct Monitor Monitor;
+typedef struct MigrationParams MigrationParams;
 
 /* we put basic includes here to avoid repeating them in device drivers */
 #include <stdlib.h>
diff --git a/savevm.c b/savevm.c
index 41852d9..2d36d0c 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1554,8 +1554,8 @@  bool qemu_savevm_state_blocked(Monitor *mon)
     return false;
 }
 
-int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable,
-                            int shared)
+int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f,
+                            const MigrationParams *params)
 {
     SaveStateEntry *se;
     int ret;
@@ -1564,7 +1564,7 @@  int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable,
         if(se->set_params == NULL) {
             continue;
 	}
-	se->set_params(blk_enable, shared, se->opaque);
+        se->set_params(params, se->opaque);
     }
     
     qemu_put_be32(f, QEMU_VM_FILE_MAGIC);
@@ -1702,13 +1702,17 @@  void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f)
 static int qemu_savevm_state(Monitor *mon, QEMUFile *f)
 {
     int ret;
+    MigrationParams params = {
+        .blk = 0,
+        .shared = 0
+    };
 
     if (qemu_savevm_state_blocked(mon)) {
         ret = -EINVAL;
         goto out;
     }
 
-    ret = qemu_savevm_state_begin(mon, f, 0, 0);
+    ret = qemu_savevm_state_begin(mon, f, &params);
     if (ret < 0)
         goto out;
 
diff --git a/sysemu.h b/sysemu.h
index caff268..f0300d7 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -66,8 +66,8 @@  void do_info_snapshots(Monitor *mon);
 void qemu_announce_self(void);
 
 bool qemu_savevm_state_blocked(Monitor *mon);
-int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f, int blk_enable,
-                            int shared);
+int qemu_savevm_state_begin(Monitor *mon, QEMUFile *f,
+                            const MigrationParams *params);
 int qemu_savevm_state_iterate(Monitor *mon, QEMUFile *f);
 int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f);
 void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f);
diff --git a/vmstate.h b/vmstate.h
index 9d3c49c..f5ef7eb 100644
--- a/vmstate.h
+++ b/vmstate.h
@@ -26,7 +26,7 @@ 
 #ifndef QEMU_VMSTATE_H
 #define QEMU_VMSTATE_H 1
 
-typedef void SaveSetParamsHandler(int blk_enable, int shared, void * opaque);
+typedef void SaveSetParamsHandler(const MigrationParams *params, void * opaque);
 typedef void SaveStateHandler(QEMUFile *f, void *opaque);
 typedef int SaveLiveStateHandler(Monitor *mon, QEMUFile *f, int stage,
                                  void *opaque);