From 79a3754210db6229d817be963d5d2575a61eae55 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 14 Aug 2007 01:28:47 +0000 Subject: [PATCH] Added support for -incoming option in prepare for restore --- ChangeLog | 5 +++++ src/qemu_conf.c | 13 ++++++++++++- src/qemu_conf.h | 2 ++ src/qemu_driver.c | 4 ++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 648cd10b4b..5705e77906 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Aug 13 21:26:48 EST 2007 Daniel P. Berrange + + * src/qemu_conf.c, src/qemu_conf.h, src/qemu_driver.c: Add support + for passing -incoming option to QEMU for migration/restore. + Mon Aug 13 21:18:48 EST 2007 Daniel P. Berrange * src/util.h, src/util.c: Allow a file descriptor to be supplied diff --git a/src/qemu_conf.c b/src/qemu_conf.c index 79dd18002b..2bbd07253c 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -1518,7 +1518,8 @@ int qemudBuildCommandLine(virConnectPtr conn, (vm->def->os.initrd[0] ? 2 : 0) + /* initrd */ (vm->def->os.cmdline[0] ? 2 : 0) + /* cmdline */ (vm->def->graphicsType == QEMUD_GRAPHICS_VNC ? 2 : - (vm->def->graphicsType == QEMUD_GRAPHICS_SDL ? 0 : 1)); /* graphics */ + (vm->def->graphicsType == QEMUD_GRAPHICS_SDL ? 0 : 1)) + /* graphics */ + (vm->migrateFrom[0] ? 3 : 0); /* migrateFrom */ snprintf(memory, sizeof(memory), "%d", vm->def->memory/1024); snprintf(vcpus, sizeof(vcpus), "%d", vm->def->vcpus); @@ -1767,6 +1768,15 @@ int qemudBuildCommandLine(virConnectPtr conn, /* SDL is the default. no args needed */ } + if (vm->migrateFrom[0]) { + if (!((*argv)[++n] = strdup("-S"))) + goto no_memory; + if (!((*argv)[++n] = strdup("-incoming"))) + goto no_memory; + if (!((*argv)[++n] = strdup(vm->migrateFrom))) + goto no_memory; + } + (*argv)[++n] = NULL; return 0; @@ -1884,6 +1894,7 @@ qemudAssignVMDef(virConnectPtr conn, return NULL; } + vm->stdin = -1; vm->stdout = -1; vm->stderr = -1; vm->monitor = -1; diff --git a/src/qemu_conf.h b/src/qemu_conf.h index 60a38b7ada..4a9b1ae415 100644 --- a/src/qemu_conf.h +++ b/src/qemu_conf.h @@ -199,6 +199,7 @@ struct qemud_vm_def { /* Guest VM runtime state */ struct qemud_vm { + int stdin; int stdout; int stderr; int monitor; @@ -212,6 +213,7 @@ struct qemud_vm { char configFile[PATH_MAX]; char autostartLink[PATH_MAX]; + char migrateFrom[PATH_MAX]; struct qemud_vm_def *def; /* The current definition */ struct qemud_vm_def *newDef; /* New definition to activate at shutdown */ diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 15b94b8465..e649060087 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -656,9 +656,9 @@ static int qemudStartVMDaemon(virConnectPtr conn, errno, strerror(errno)); if (virExecNonBlock(conn, argv, &vm->pid, - -1, &vm->stdout, &vm->stderr) == 0) { + vm->stdin, &vm->stdout, &vm->stderr) == 0) { vm->id = driver->nextvmid++; - vm->state = VIR_DOMAIN_RUNNING; + vm->state = vm->migrateFrom[0] ? VIR_DOMAIN_PAUSED : VIR_DOMAIN_RUNNING; driver->ninactivevms--; driver->nactivevms++;