conf: Assign newDef of active domain as persistent conf if it is NULL

Libvirt loads the domain conf from status XML if it's running when
starting up. The problem is there is no record of the original conf.
(dom->newDef is NULL here).

So libvirt won't be able to restore the domain conf to original one
when destroying/shutdown. E.g.

1) attach a device without "--persistent"
2) restart libvirtd
3) destroy domain
4) start domain

One will see the the disk still exists.

This patch is to fix the peoblem by assigning persistent domain conf
to dom->newDef if it's NULL and the domain is running.
This commit is contained in:
Osier Yang 2011-09-01 21:33:29 +08:00
parent 891c6fd74f
commit b4c3be5943

View File

@ -11092,9 +11092,15 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps,
if ((dom = virDomainFindByUUID(doms, def->uuid))) {
dom->autostart = autostart;
if (virDomainObjIsActive(dom) &&
!dom->newDef) {
virDomainObjAssignDef(dom, def, false);
} else {
virDomainDefFree(def);
}
VIR_FREE(configFile);
VIR_FREE(autostartLink);
virDomainDefFree(def);
return dom;
}