(flags & VIR_DOMAIN_START_AUTODESTROY),
VIR_DOMAIN_RUNNING_BOOTED) < 0) {
virDomainAuditStart(vm, "booted", false);
- virDomainObjListRemove(driver->domains, vm);
- vm = NULL;
+ if (!vm->persistent) {
+ virDomainObjListRemove(driver->domains, vm);
+ vm = NULL;
+ }
goto cleanup;
}
def = NULL;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) {
- qemuDomainRemoveInactive(driver, vm);
+ if (!vm->persistent)
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
start_flags) < 0) {
virDomainAuditStart(vm, "booted", false);
qemuDomainObjEndJob(driver, vm);
- qemuDomainRemoveInactive(driver, vm);
+ if (!vm->persistent)
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
goto cleanup;
def = NULL;
- if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_BOOTED) < 0)
+ if (testDomainStartState(privconn, dom, VIR_DOMAIN_RUNNING_BOOTED) < 0) {
+ if (!dom->persistent) {
+ virDomainObjListRemove(privconn->domains, dom);
+ dom = NULL;
+ }
goto cleanup;
+ }
event = virDomainEventLifecycleNewFromObj(dom,
VIR_DOMAIN_EVENT_STARTED,
if (umlStartVMDaemon(conn, driver, vm,
(flags & VIR_DOMAIN_START_AUTODESTROY)) < 0) {
virDomainAuditStart(vm, "booted", false);
- virDomainObjListRemove(driver->domains,
- vm);
- vm = NULL;
+ if (!vm->persistent) {
+ virDomainObjListRemove(driver->domains, vm);
+ vm = NULL;
+ }
goto cleanup;
}
virDomainAuditStart(vm, "booted", true);
vmdef = NULL;
if (vmwareStartVM(driver, vm) < 0) {
- virDomainObjListRemove(driver->domains, vm);
- vm = NULL;
+ if (!vm->persistent) {
+ virDomainObjListRemove(driver->domains, vm);
+ vm = NULL;
+ }
goto cleanup;
}