
于 2011年09月01日 21:44, Osier Yang 写道:
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. --- src/conf/domain_conf.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 00212db..cbb99d3 100644 --- a/src/conf/domain_conf.c +++ 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; }
With my testing, this patch solve the problem well. Could someone review/ACK this? Thanks Osier