migration: Refactor MigrationState creation
Signed-off-by: Juan Quintela <[email protected]>
Reviewed-by: Anthony Liguori <[email protected]>
diff --git a/migration.c b/migration.c
index daf3ef6..78d0f61 100644
--- a/migration.c
+++ b/migration.c
@@ -263,7 +263,7 @@
/* shared migration helpers */
-void migrate_fd_monitor_suspend(MigrationState *s, Monitor *mon)
+static void migrate_fd_monitor_suspend(MigrationState *s, Monitor *mon)
{
s->mon = mon;
if (monitor_suspend(mon) == 0) {
@@ -404,12 +404,12 @@
}
}
-int migrate_fd_get_status(MigrationState *s)
+static int migrate_fd_get_status(MigrationState *s)
{
return s->state;
}
-void migrate_fd_cancel(MigrationState *s)
+static void migrate_fd_cancel(MigrationState *s)
{
if (s->state != MIG_STATE_ACTIVE)
return;
@@ -423,7 +423,7 @@
migrate_fd_cleanup(s);
}
-void migrate_fd_release(MigrationState *s)
+static void migrate_fd_release(MigrationState *s)
{
DPRINTF("releasing state\n");
@@ -488,3 +488,24 @@
return MIG_STATE_ERROR;
}
}
+
+MigrationState *migrate_new(Monitor *mon, int64_t bandwidth_limit,
+ int detach, int blk, int inc)
+{
+ MigrationState *s = g_malloc0(sizeof(*s));
+
+ s->cancel = migrate_fd_cancel;
+ s->get_status = migrate_fd_get_status;
+ s->release = migrate_fd_release;
+ s->blk = blk;
+ s->shared = inc;
+ s->mon = NULL;
+ s->bandwidth_limit = bandwidth_limit;
+ s->state = MIG_STATE_ACTIVE;
+
+ if (!detach) {
+ migrate_fd_monitor_suspend(s, mon);
+ }
+
+ return s;
+}