]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
lxc: Allow to undefine a running domain
authorOsier Yang <jyang@redhat.com>
Fri, 19 Aug 2011 13:47:33 +0000 (21:47 +0800)
committerOsier Yang <jyang@redhat.com>
Fri, 19 Aug 2011 13:47:33 +0000 (21:47 +0800)
src/lxc/lxc_driver.c

index bb560b63d84ffcd85aec20ea33b7fc7d998c6802..a596945ef0d0487a43b52add5bd7ff83d8af48f4 100644 (file)
@@ -479,12 +479,6 @@ static int lxcDomainUndefineFlags(virDomainPtr dom,
         goto cleanup;
     }
 
-    if (virDomainObjIsActive(vm)) {
-        lxcError(VIR_ERR_OPERATION_INVALID,
-                 "%s", _("Cannot delete active domain"));
-        goto cleanup;
-    }
-
     if (!vm->persistent) {
         lxcError(VIR_ERR_OPERATION_INVALID,
                  "%s", _("Cannot undefine transient domain"));
@@ -500,8 +494,13 @@ static int lxcDomainUndefineFlags(virDomainPtr dom,
                                      VIR_DOMAIN_EVENT_UNDEFINED,
                                      VIR_DOMAIN_EVENT_UNDEFINED_REMOVED);
 
-    virDomainRemoveInactive(&driver->domains, vm);
-    vm = NULL;
+    if (virDomainObjIsActive(vm)) {
+        vm->persistent = 0;
+    } else {
+        virDomainRemoveInactive(&driver->domains, vm);
+        vm = NULL;
+    }
+
     ret = 0;
 
 cleanup: