From af10d71cc2363814b58de50106522be026e73fe6 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 10 Oct 2007 19:46:17 +0000 Subject: [PATCH] Reset migration source after failed VM start --- ChangeLog | 5 +++++ src/qemu_driver.c | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index ea1a17963b..ec241182c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Oct 10 15:44:53 EST 2007 Daniel P. Berrange + + * src/qemu_driver.c: Reset migration source after failed attempt + to start a VM. (Jim Paris) + Wed Oct 10 13:48:53 EST 2007 Daniel P. Berrange * src/xm_internal.c: Fixed procesing of vncunused, and vncdisplay diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 87b66ad98d..bff17b0d10 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -2083,6 +2083,7 @@ static int qemudDomainRestore(virConnectPtr conn, struct qemud_vm_def *def; struct qemud_vm *vm; int fd; + int ret; char *xml; struct qemud_save_header header; @@ -2161,18 +2162,17 @@ static int qemudDomainRestore(virConnectPtr conn, /* Set the migration source and start it up. */ snprintf(vm->migrateFrom, sizeof(vm->migrateFrom), "stdio"); vm->stdin = fd; - - if (qemudStartVMDaemon(conn, driver, vm) < 0) { + ret = qemudStartVMDaemon(conn, driver, vm); + close(fd); + vm->migrateFrom[0] = '\0'; + vm->stdin = -1; + if (ret < 0) { qemudReportError(conn, NULL, NULL, VIR_ERR_OPERATION_FAILED, "failed to start VM"); if (!vm->configFile[0]) qemudRemoveInactiveVM(driver, vm); - close(fd); return -1; } - close(fd); - vm->migrateFrom[0] = '\0'; - vm->stdin = -1; /* If it was running before, resume it now. */ if (header.was_running) {