[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 15/21] migration: factor out parameters into Migrati
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH 15/21] migration: factor out parameters into MigrationParams |
Date: |
Thu, 29 Dec 2011 10:25:54 +0900 |
Introduce MigrationParams for parameters of migration.
Signed-off-by: Isaku Yamahata <address@hidden>
---
block-migration.c | 8 ++++----
hw/hw.h | 2 +-
migration.c | 16 +++++++++-------
migration.h | 8 ++++++--
qemu-common.h | 1 +
savevm.c | 12 ++++++++----
sysemu.h | 4 ++--
7 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/block-migration.c b/block-migration.c
index 2b7edbc..c320913 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -706,13 +706,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/hw/hw.h b/hw/hw.h
index a59b770..c17f837 100644
--- a/hw/hw.h
+++ b/hw/hw.h
@@ -250,7 +250,7 @@ static inline void qemu_get_sbe64s(QEMUFile *f, int64_t *pv)
int64_t qemu_ftell(QEMUFile *f);
int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence);
-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);
diff --git a/migration.c b/migration.c
index 057dde7..2cef246 100644
--- a/migration.c
+++ b/migration.c
@@ -365,7 +365,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);
@@ -374,15 +374,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
@@ -414,13 +414,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;
@@ -436,7 +438,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, ¶ms);
if (strstart(uri, "tcp:", &p)) {
ret = tcp_start_outgoing_migration(s, p);
diff --git a/migration.h b/migration.h
index 0a5e66f..2e79779 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,8 +37,7 @@ 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);
diff --git a/qemu-common.h b/qemu-common.h
index b2de015..725922b 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -240,6 +240,7 @@ typedef struct SSIBus SSIBus;
typedef struct EventNotifier EventNotifier;
typedef struct VirtIODevice VirtIODevice;
typedef struct QEMUSGList QEMUSGList;
+typedef struct MigrationParams MigrationParams;
typedef uint64_t pcibus_t;
diff --git a/savevm.c b/savevm.c
index 891c4fd..2d8e09f 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1564,8 +1564,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;
@@ -1574,7 +1574,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);
@@ -1712,13 +1712,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, ¶ms);
if (ret < 0)
goto out;
diff --git a/sysemu.h b/sysemu.h
index 3806901..d606525 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);
--
1.7.1.1
- [Qemu-devel] [PATCH 07/21] arch_init/ram_save_live: factor out ram_save_limit, (continued)
- [Qemu-devel] [PATCH 07/21] arch_init/ram_save_live: factor out ram_save_limit, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 11/21] savevm: export qemu_peek_buffer, qemu_peek_byte, qemu_file_skip, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 04/21] arch_init: refactor host_from_stream_offset(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 06/21] arch_init: refactor ram_save_block(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 17/21] update-linux-headers.sh: teach umem.h to update-linux-headers.sh, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 08/21] arch_init/ram_load: refactor ram_load, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 03/21] arch_init/ram_save: introduce constant for ram save version = 4, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 05/21] arch_init/ram_save_live: factor out RAM_SAVE_FLAG_MEM_SIZE case, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 10/21] exec.c: export last_ram_offset(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 20/21] postcopy outgoing: add -p and -n option to migrate command, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 15/21] migration: factor out parameters into MigrationParams,
Isaku Yamahata <=
- [Qemu-devel] [PATCH 12/21] savevm: qemu_pending_size() to return pending buffered size, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 18/21] configure: add CONFIG_POSTCOPY option, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 16/21] umem.h: import Linux umem.h, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 14/21] migration: export migrate_fd_completed() and migrate_fd_cleanup(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 19/21] postcopy: introduce -postcopy and -postcopy-flags option, Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 09/21] exec.c: factor out qemu_get_ram_ptr(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 01/21] arch_init: export sort_ram_list() and ram_save_block(), Isaku Yamahata, 2011/12/28
- [Qemu-devel] [PATCH 21/21] postcopy: implement postcopy livemigration, Isaku Yamahata, 2011/12/28