VIR_DEBUG("Domain %s was paused while its monitor was disconnected;"
" changing state to paused", vm->def->name);
virDomainObjSetState(vm, VIR_DOMAIN_PAUSED, VIR_DOMAIN_PAUSED_UNKNOWN);
+ } else if (state == VIR_DOMAIN_SHUTOFF && running) {
+ VIR_DEBUG("Domain %s finished booting; changing state to running",
+ vm->def->name);
+ virDomainObjSetState(vm, VIR_DOMAIN_RUNNING, VIR_DOMAIN_RUNNING_BOOTED);
}
return 0;
if (qemuProcessUpdateState(driver, obj) < 0)
goto error;
+ if (virDomainObjGetState(obj, NULL) == VIR_DOMAIN_SHUTOFF) {
+ VIR_DEBUG("Domain '%s' wasn't fully started yet, killing it",
+ obj->def->name);
+ goto error;
+ }
+
/* If upgrading from old libvirtd we won't have found any
* caps in the domain status, so re-query them
*/
vm->def->id = driver->nextvmid++;
priv->fakeReboot = false;
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, VIR_DOMAIN_SHUTOFF_UNKNOWN);
/* Run an early hook to set-up missing devices */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
#endif
}
+ VIR_DEBUG("Writing early domain status to disk");
+ if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0) {
+ ret = -1;
+ goto cleanup;
+ }
+
VIR_DEBUG("Waiting for handshake from child");
if (virCommandHandshakeWait(cmd) < 0) {
ret = -1;