On 09/01/2011 07:44 AM, Osier Yang wrote:
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.
I was hoping danpb would weigh in on this one, but it looks right to me, definitely solves the test in your commit message, and is appropriate for 0.9.5.
ACK.
+++ b/src/conf/domain_conf.c @@ -10533,9 +10533,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; }
-- Eric Blake eblake@xxxxxxxxxx +1-801-349-2682 Libvirt virtualization library http://libvirt.org -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list