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;
}
--
1.7.6