diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c index 5c8a017757..95387c9229 100644 --- a/src/xen/xm_internal.c +++ b/src/xen/xm_internal.c @@ -1218,6 +1218,8 @@ int xenXMDomainUndefine(virDomainPtr domain) { return (-1); } + if (domain->id != -1) + return (-1); if (domain->conn->flags & VIR_CONNECT_RO) return (-1); @@ -1233,17 +1235,13 @@ int xenXMDomainUndefine(virDomainPtr domain) { if (unlink(entry->filename) < 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 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;