Patchwork [3/3,v2] Enable migration without shared storage from the monitor

login
register
mail settings
Submitter lirans@il.ibm.com
Date Sept. 10, 2009, 1:57 p.m.
Message ID <12525910683654-git-send-email-lirans@il.ibm.com>
Download mbox | patch
Permalink /patch/33318/
State Superseded
Headers show

Comments

lirans@il.ibm.com - Sept. 10, 2009, 1:57 p.m.
This patch adds the option to activate non-shared storage migration from the
monitor.
The migration command is as follows:
(qemu) migrate -d tcp:0:4444 # for ordinary live migration
(qemu) migrate -d blk tcp:0:4444 # for live migration with complete storage copy
(qemu) migrate -d blk inc tcp:0:4444 # for live migration with incremental storage copy, storage is cow based.

Patch

diff --git a/monitor.c b/monitor.c
index 8d5165c..ea17609 100644
--- a/monitor.c
+++ b/monitor.c
@@ -37,6 +37,7 @@ 
 #include "readline.h"
 #include "console.h"
 #include "block.h"
+#include "block-migration.h"
 #include "audio/audio.h"
 #include "disas.h"
 #include "balloon.h"
@@ -2507,6 +2508,24 @@  static void monitor_handle_command(Monitor *mon, const char *cmdline)
                         goto add_str;
                     }
                 }
+
+		if (*typestr == '!') {
+		    char flag[4];
+		    char * cmd_flag;
+		    typestr++;
+                    memcpy(flag, typestr, 3);
+		    typestr += 3;
+		    flag[3] = '\0';
+		    
+		    cmd_flag = strstr(p, flag);
+		    if (cmd_flag != p) {
+                        /* no optional string: NULL argument */
+		        str = NULL;
+                        goto add_str;
+                    }
+		    
+                }
+		
                 ret = get_str(buf, sizeof(buf), &p);
                 if (ret < 0) {
                     switch(c) {
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index dea0704..e466774 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -463,8 +463,8 @@  STEXI
 Inject an NMI on the given CPU (x86 only).
 ETEXI
 
-    { "migrate", "-ds", do_migrate,
-      "[-d] uri", "migrate to URI (using -d to not wait for completion)" },
+    { "migrate", "-ds!blks!incs", do_migrate,
+        "[-d] [blk] [inc] uri", "migrate to URI (using -d - to not wait \n\t\tfor completion,\n\t\t [blk] -  for migration without shared storage,\n\t\t [inc] - for incremental migration if base image is identical)" },
 STEXI
 @item migrate [-d] @var{uri}
 Migrate to @var{uri} (using -d to not wait for completion).