---
src/xen/xm_internal.c | 18 ++++++++++--------
1 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index 95387c9..5c8a017 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -1218,8 +1218,6 @@ int xenXMDomainUndefine(virDomainPtr domain) {
return (-1);
}
- if (domain->id != -1)
- return (-1);
if (domain->conn->flags & VIR_CONNECT_RO)
return (-1);
@@ -1235,13 +1233,17 @@ int xenXMDomainUndefine(virDomainPtr domain) {
if (unlink(entry->filename) < 0)
goto cleanup;
- /* Remove the name -> filename mapping */
- if (virHashRemoveEntry(priv->nameConfigMap, domain->name) < 0)
- goto cleanup;
+ if (virDomainObjIsActive(vm)) {
+ vm->persistent = 0;
+ } else {
+ /* Remove the name -> filename mapping */
+ if (virHashRemoveEntry(priv->nameConfigMap, domain->name) < 0)
+ goto cleanup;
- /* Remove the config record itself */
- if (virHashRemoveEntry(priv->configCache, entry->filename) < 0)
- goto cleanup;
+ /* Remove the config record itself */
+ if (virHashRemoveEntry(priv->configCache, entry->filename) < 0)
+ goto cleanup;
+ }
ret = 0;
--
1.7.6