Message ID | 1252578235119-git-send-email-lirans@il.ibm.com |
---|---|
State | Superseded |
Headers | show |
On 10 sept. 2009, at 12:23, lirans@il.ibm.com wrote: > 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. > > diff --git a/monitor.c b/monitor.c > index 8d5165c..c8a6228 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[4] = '\0'; You still have a buffer overflow here.
diff --git a/monitor.c b/monitor.c index 8d5165c..c8a6228 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[4] = '\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).