return ret;
}
+
+/*
+ * Remove the running configuration and replace it with the persistent one.
+ *
+ * @param domain domain object pointer
+ */
+void
+virDomainObjRemoveTransientDef(virDomainObjPtr domain)
+{
+ if (!domain->newDef)
+ return;
+
+ virDomainDefFree(domain->def);
+ domain->def = domain->newDef;
+ domain->def->id = -1;
+ domain->newDef = NULL;
+}
+
+
/*
* Return the persistent domain configuration. If domain is transient,
* return the running config.
int virDomainObjSetDefTransient(virCapsPtr caps,
virDomainXMLOptionPtr xmlopt,
virDomainObjPtr domain);
+void virDomainObjRemoveTransientDef(virDomainObjPtr domain);
virDomainDefPtr
virDomainObjGetPersistentDef(virCapsPtr caps,
virDomainXMLOptionPtr xmlopt,
virDomainObjGetState;
virDomainObjNew;
virDomainObjParseNode;
+virDomainObjRemoveTransientDef;
virDomainObjSetDefTransient;
virDomainObjSetMetadata;
virDomainObjSetState;
VIR_FREE(xml);
}
- if (vm->newDef) {
- virDomainDefFree(vm->def);
- vm->def = vm->newDef;
- vm->def->id = -1;
- vm->newDef = NULL;
- }
-
+ virDomainObjRemoveTransientDef(vm);
virObjectUnref(cfg);
}
VIR_FREE(xml);
}
- if (vm->newDef) {
- virDomainDefFree(vm->def);
- vm->def = vm->newDef;
- vm->def->id = -1;
- vm->newDef = NULL;
- }
+ virDomainObjRemoveTransientDef(vm);
virObjectUnref(cfg);
}
VIR_FREE(xml);
}
- if (vm->newDef) {
- virDomainDefFree(vm->def);
- vm->def = vm->newDef;
- vm->def->id = -1;
- vm->newDef = NULL;
- }
+ virDomainObjRemoveTransientDef(vm);
endjob:
if (asyncJob != QEMU_ASYNC_JOB_NONE)
virDomainObjPtr privdom,
virDomainShutoffReason reason)
{
- if (privdom->newDef) {
- virDomainDefFree(privdom->def);
- privdom->def = privdom->newDef;
- privdom->newDef = NULL;
- }
-
+ virDomainObjRemoveTransientDef(privdom);
virDomainObjSetState(privdom, VIR_DOMAIN_SHUTOFF, reason);
- privdom->def->id = -1;
+
if (domain)
domain->id = -1;
}
if (ret < 0) {
virDomainConfVMNWFilterTeardown(vm);
umlCleanupTapDevices(vm);
- if (vm->newDef) {
- virDomainDefFree(vm->def);
- vm->def = vm->newDef;
- vm->def->id = -1;
- vm->newDef = NULL;
- }
+ virDomainObjRemoveTransientDef(vm);
}
/* NB we don't mark it running here - we do that async
/* Stop autodestroy in case guest is restarted */
umlProcessAutoDestroyRemove(driver, vm);
- if (vm->newDef) {
- virDomainDefFree(vm->def);
- vm->def = vm->newDef;
- vm->def->id = -1;
- vm->newDef = NULL;
- }
+ virDomainObjRemoveTransientDef(vm);
driver->nactive--;
if (!driver->nactive && driver->inhibitCallback)