diff options
author | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-13 03:14:31 +0000 |
---|---|---|
committer | aliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-10-13 03:14:31 +0000 |
commit | 34c9dd8eea38e94d97e22ac12c2f2aaa0dca59d8 (patch) | |
tree | 059b44291d3bc9196d68c8ecdf8a7b940ef99ff2 /migration.c | |
parent | 210f41ba932efb4c32139568930b72d1c2d075be (diff) |
Introduce TCP live migration protocol
This patch introduces a tcp protocol for live migration. It can be used as
follows:
qemu-system-x86_64 -hda ~/images/linux-test.img -monitor stdio
<vm runs for a while>
(qemu) migrate tcp:localhost:1025
On the same system:
qemu-system-x86_64 -hda ~/images/linux-test.img -incoming
tcp:localhost:1025
The monitor can be interacted with while waiting for an incoming live
migration.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5478 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'migration.c')
-rw-r--r-- | migration.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/migration.c b/migration.c index 732fe3fe4c..684cbae898 100644 --- a/migration.c +++ b/migration.c @@ -22,12 +22,32 @@ static MigrationState *current_migration; void qemu_start_incoming_migration(const char *uri) { - fprintf(stderr, "unknown migration protocol: %s\n", uri); + const char *p; + + if (strstart(uri, "tcp:", &p)) + tcp_start_incoming_migration(p); + else + fprintf(stderr, "unknown migration protocol: %s\n", uri); } void do_migrate(int detach, const char *uri) { - term_printf("unknown migration protocol: %s\n", uri); + MigrationState *s = NULL; + const char *p; + + if (strstart(uri, "tcp:", &p)) + s = tcp_start_outgoing_migration(p, max_throttle, detach); + else + term_printf("unknown migration protocol: %s\n", uri); + + if (s == NULL) + term_printf("migration failed\n"); + else { + if (current_migration) + current_migration->release(current_migration); + + current_migration = s; + } } void do_migrate_cancel(void) |