struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool start_paused,
int stdin_fd,
const char *stdin_path);
struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool start_paused,
int stdin_fd,
const char *stdin_path) {
const char **argv = NULL, **tmp;
ret = 0;
}
- vm->state = migrateFrom ? VIR_DOMAIN_PAUSED : VIR_DOMAIN_RUNNING;
+ if (migrateFrom)
+ start_paused = true;
+ vm->state = start_paused ? VIR_DOMAIN_PAUSED : VIR_DOMAIN_RUNNING;
for (i = 0 ; argv[i] ; i++)
VIR_FREE(argv[i]);
goto cleanup;
}
- if (migrateFrom == NULL) {
+ if (!start_paused) {
DEBUG0("Starting domain CPUs");
/* Allow the CPUS to start executing */
if (qemuMonitorStartCPUs(priv->mon, conn) < 0) {
virDomainPtr dom = NULL;
virDomainEventPtr event = NULL;
- virCheckFlags(0, NULL);
+ virCheckFlags(VIR_DOMAIN_START_PAUSED, NULL);
qemuDriverLock(driver);
if (!(def = virDomainDefParseString(driver->caps, xml,
if (qemuDomainObjBeginJobWithDriver(driver, vm) < 0)
goto cleanup; /* XXXX free the 'vm' we created ? */
- if (qemudStartVMDaemon(conn, driver, vm, NULL, -1, NULL) < 0) {
+ if (qemudStartVMDaemon(conn, driver, vm, NULL,
+ (flags & VIR_DOMAIN_START_PAUSED) != 0,
+ -1, NULL) < 0) {
if (qemuDomainObjEndJob(vm) > 0)
virDomainRemoveInactive(&driver->domains,
vm);
}
/* Set the migration source and start it up. */
- ret = qemudStartVMDaemon(conn, driver, vm, "stdio", fd, path);
+ ret = qemudStartVMDaemon(conn, driver, vm, "stdio", true, fd, path);
if (intermediate_pid != -1) {
/* Wait for intermediate process to exit */
goto cleanup;
}
- ret = qemudStartVMDaemon(conn, driver, vm, NULL, -1, NULL);
+ ret = qemudStartVMDaemon(conn, driver, vm, NULL, false, -1, NULL);
if (ret != -1) {
virDomainEventPtr event =
virDomainEventNewFromObj(vm,
/* Start the QEMU daemon, with the same command-line arguments plus
* -incoming unix:/path/to/file or exec:nc -U /path/to/file
*/
- internalret = qemudStartVMDaemon(dconn, driver, vm, migrateFrom, -1, NULL);
+ internalret = qemudStartVMDaemon(dconn, driver, vm, migrateFrom, true,
+ -1, NULL);
VIR_FREE(migrateFrom);
if (internalret < 0) {
/* Note that we don't set an error here because qemudStartVMDaemon
* -incoming tcp:0.0.0.0:port
*/
snprintf (migrateFrom, sizeof (migrateFrom), "tcp:0.0.0.0:%d", this_port);
- if (qemudStartVMDaemon (dconn, driver, vm, migrateFrom, -1, NULL) < 0) {
+ if (qemudStartVMDaemon (dconn, driver, vm, migrateFrom, true,
+ -1, NULL) < 0) {
/* Note that we don't set an error here because qemudStartVMDaemon
* should have already done that.
*/
goto endjob;
rc = qemudStartVMDaemon(snapshot->domain->conn, driver, vm, NULL,
- -1, NULL);
+ false, -1, NULL);
if (qemuDomainSnapshotSetInactive(vm, driver->snapshotDir) < 0)
goto endjob;
if (rc < 0)