mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 22:55:23 +00:00
Factor out def assignment to existing domain from virDomainAssignDef
We need to be able to assign new def to an existing virDomainObj which is already locked. This patch factors out the relevant code from virDomainAssignDef into virDomainObjAssignDef.
This commit is contained in:
parent
de5a60e1cc
commit
575cf9a9ce
@ -808,6 +808,26 @@ static virDomainObjPtr virDomainObjNew(virCapsPtr caps)
|
||||
return domain;
|
||||
}
|
||||
|
||||
void virDomainObjAssignDef(virDomainObjPtr domain,
|
||||
const virDomainDefPtr def,
|
||||
bool live)
|
||||
{
|
||||
if (!virDomainObjIsActive(domain)) {
|
||||
if (live) {
|
||||
/* save current configuration to be restored on domain shutdown */
|
||||
if (!domain->newDef)
|
||||
domain->newDef = domain->def;
|
||||
domain->def = def;
|
||||
} else {
|
||||
virDomainDefFree(domain->def);
|
||||
domain->def = def;
|
||||
}
|
||||
} else {
|
||||
virDomainDefFree(domain->newDef);
|
||||
domain->newDef = def;
|
||||
}
|
||||
}
|
||||
|
||||
virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
|
||||
virDomainObjListPtr doms,
|
||||
const virDomainDefPtr def,
|
||||
@ -817,21 +837,7 @@ virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
|
||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||
|
||||
if ((domain = virDomainFindByUUID(doms, def->uuid))) {
|
||||
if (!virDomainObjIsActive(domain)) {
|
||||
if (live) {
|
||||
/* save current configuration to be restored on domain shutdown */
|
||||
if (!domain->newDef)
|
||||
domain->newDef = domain->def;
|
||||
domain->def = def;
|
||||
} else {
|
||||
virDomainDefFree(domain->def);
|
||||
domain->def = def;
|
||||
}
|
||||
} else {
|
||||
virDomainDefFree(domain->newDef);
|
||||
domain->newDef = def;
|
||||
}
|
||||
|
||||
virDomainObjAssignDef(domain, def, live);
|
||||
return domain;
|
||||
}
|
||||
|
||||
|
@ -954,6 +954,9 @@ virDomainObjPtr virDomainAssignDef(virCapsPtr caps,
|
||||
virDomainObjListPtr doms,
|
||||
const virDomainDefPtr def,
|
||||
bool live);
|
||||
void virDomainObjAssignDef(virDomainObjPtr domain,
|
||||
const virDomainDefPtr def,
|
||||
bool live);
|
||||
void virDomainRemoveInactive(virDomainObjListPtr doms,
|
||||
virDomainObjPtr dom);
|
||||
|
||||
|
@ -215,6 +215,7 @@ virDomainSnapshotObjUnref;
|
||||
virDomainSnapshotDefParseString;
|
||||
virDomainSnapshotDefFormat;
|
||||
virDomainSnapshotAssignDef;
|
||||
virDomainObjAssignDef;
|
||||
|
||||
|
||||
# domain_event.h
|
||||
|
Loading…
Reference in New Issue
Block a user