diff mbox

[19/21] postcopy: introduce -postcopy and -postcopy-flags option

Message ID 82230efa37b7e5498a8c315d646d404e7f86e68e.1325055140.git.yamahata@valinux.co.jp
State New
Headers show

Commit Message

Isaku Yamahata Dec. 29, 2011, 1:25 a.m. UTC
This patch prepares for postcopy livemigration.
It introduces -postcopy option and its internal flag, migration_postcopy.
It introduces -postcopy-flags for chaging the behavior of incoming postcopy
mainly for benchmark/debug.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>

postcopy: introduce -postcopy-flags option

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
 migration.h     |    3 +++
 qemu-options.hx |   22 ++++++++++++++++++++++
 vl.c            |    8 ++++++++
 3 files changed, 33 insertions(+), 0 deletions(-)
diff mbox

Patch

diff --git a/migration.h b/migration.h
index 2e79779..29f468c 100644
--- a/migration.h
+++ b/migration.h
@@ -105,4 +105,7 @@  void migrate_add_blocker(Error *reason);
  */
 void migrate_del_blocker(Error *reason);
 
+extern bool incoming_postcopy;
+extern unsigned long incoming_postcopy_flags;
+
 #endif
diff --git a/qemu-options.hx b/qemu-options.hx
index a60191f..5c5b8f3 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2497,6 +2497,28 @@  STEXI
 Prepare for incoming migration, listen on @var{port}.
 ETEXI
 
+DEF("postcopy", 0, QEMU_OPTION_postcopy,
+    "-postcopy	postcopy incoming migration when -incoming is specified\n",
+    QEMU_ARCH_ALL)
+STEXI
+@item -postcopy
+@findex -postcopy
+start incoming migration in postcopy mode.
+ETEXI
+
+DEF("postcopy-flags", HAS_ARG, QEMU_OPTION_postcopy_flags,
+    "-postcopy-flags unsigned-int(flags)\n"
+    "	                flags for postcopy incoming migration\n"
+    "                   when -incoming and -postcopy are specified.\n"
+    "                   This is for benchmark/debug purpose (default: 0)\n",
+    QEMU_ARCH_ALL)
+STEXI
+@item -postcopy-flags int
+@findex -postcopy-flags
+Specify flags for incoming postcopy migration when -incoming and -postcopy are
+specified. This is for benchamrk/debug purpose. (default: 0)
+ETEXI
+
 DEF("nodefaults", 0, QEMU_OPTION_nodefaults, \
     "-nodefaults     don't create default devices\n", QEMU_ARCH_ALL)
 STEXI
diff --git a/vl.c b/vl.c
index a4c9489..5430b8c 100644
--- a/vl.c
+++ b/vl.c
@@ -188,6 +188,8 @@  int mem_prealloc = 0; /* force preallocation of physical target memory */
 int nb_nics;
 NICInfo nd_table[MAX_NICS];
 int autostart;
+bool incoming_postcopy = false; /* When -incoming is specified, postcopy mode */
+unsigned long incoming_postcopy_flags = 0; /* flags for postcopy incoming mode */
 static int rtc_utc = 1;
 static int rtc_date_offset = -1; /* -1 means no change */
 QEMUClock *rtc_clock;
@@ -2969,6 +2971,12 @@  int main(int argc, char **argv, char **envp)
             case QEMU_OPTION_incoming:
                 incoming = optarg;
                 break;
+            case QEMU_OPTION_postcopy:
+                incoming_postcopy = true;
+                break;
+            case QEMU_OPTION_postcopy_flags:
+                incoming_postcopy_flags = strtoul(optarg, NULL, 0);
+                break;
             case QEMU_OPTION_nodefaults:
                 default_serial = 0;
                 default_parallel = 0;