mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Add helper for removing transient definition
The code for replacing domain's transient definition with the persistent one is repeated in several places and we'll need to add one more. Let's make a nice helper for it. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
10aec4b046
commit
97a87333a0
@ -2981,6 +2981,25 @@ virDomainObjSetDefTransient(virCapsPtr caps,
|
||||
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.
|
||||
|
@ -2577,6 +2577,7 @@ void virDomainObjAssignDef(virDomainObjPtr domain,
|
||||
int virDomainObjSetDefTransient(virCapsPtr caps,
|
||||
virDomainXMLOptionPtr xmlopt,
|
||||
virDomainObjPtr domain);
|
||||
void virDomainObjRemoveTransientDef(virDomainObjPtr domain);
|
||||
virDomainDefPtr
|
||||
virDomainObjGetPersistentDef(virCapsPtr caps,
|
||||
virDomainXMLOptionPtr xmlopt,
|
||||
|
@ -421,6 +421,7 @@ virDomainObjGetShortName;
|
||||
virDomainObjGetState;
|
||||
virDomainObjNew;
|
||||
virDomainObjParseNode;
|
||||
virDomainObjRemoveTransientDef;
|
||||
virDomainObjSetDefTransient;
|
||||
virDomainObjSetMetadata;
|
||||
virDomainObjSetState;
|
||||
|
@ -811,13 +811,7 @@ libxlDomainCleanup(libxlDriverPrivatePtr driver,
|
||||
VIR_FREE(xml);
|
||||
}
|
||||
|
||||
if (vm->newDef) {
|
||||
virDomainDefFree(vm->def);
|
||||
vm->def = vm->newDef;
|
||||
vm->def->id = -1;
|
||||
vm->newDef = NULL;
|
||||
}
|
||||
|
||||
virDomainObjRemoveTransientDef(vm);
|
||||
virObjectUnref(cfg);
|
||||
}
|
||||
|
||||
|
@ -246,12 +246,7 @@ static void virLXCProcessCleanup(virLXCDriverPtr driver,
|
||||
VIR_FREE(xml);
|
||||
}
|
||||
|
||||
if (vm->newDef) {
|
||||
virDomainDefFree(vm->def);
|
||||
vm->def = vm->newDef;
|
||||
vm->def->id = -1;
|
||||
vm->newDef = NULL;
|
||||
}
|
||||
virDomainObjRemoveTransientDef(vm);
|
||||
virObjectUnref(cfg);
|
||||
}
|
||||
|
||||
|
@ -6039,12 +6039,7 @@ void qemuProcessStop(virQEMUDriverPtr driver,
|
||||
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)
|
||||
|
@ -588,14 +588,9 @@ testDomainShutdownState(virDomainPtr domain,
|
||||
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;
|
||||
}
|
||||
|
@ -1135,12 +1135,7 @@ static int umlStartVMDaemon(virConnectPtr conn,
|
||||
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
|
||||
@ -1182,12 +1177,7 @@ static void umlShutdownVMDaemon(struct uml_driver *driver,
|
||||
/* 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)
|
||||
|
Loading…
Reference in New Issue
Block a user