]> xenbits.xensource.com Git - libvirt.git/commitdiff
virSystemdCreateMachine: Set dependencies for slices
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 21 Feb 2014 09:16:36 +0000 (10:16 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 24 Feb 2014 09:21:00 +0000 (10:21 +0100)
https://bugzilla.redhat.com/show_bug.cgi?id=1031696

When creating a new domain, we let systemd know about it by calling
CreateMachine() function via dbus. Systemd then creates a scope and
places domain into it. However, later when the host is shutting
down, systemd computes the shutdown order to see what processes can
be shut down in parallel. And since we were not setting
dependencies at all, the slices (and thus domains) were most likely
killed before libvirt-guests.service. So user domains that had to
be saved, shut off, whatever were in fact killed.  This problem can
be solved by letting systemd know that scopes we're creating must
not be killed before libvirt-guests.service.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virsystemd.c

index 503fff752bb39660ab1d5651ddf75afdbb5eb0f2..9247c92d031e6ffe58490b114f302c1362e20d97 100644 (file)
@@ -243,8 +243,10 @@ int virSystemdCreateMachine(const char *name,
                           iscontainer ? "container" : "vm",
                           (unsigned int)pidleader,
                           rootdir ? rootdir : "",
-                          1, "Slice", "s",
-                          slicename) < 0)
+                          3,
+                          "Slice", "s", slicename,
+                          "After", "as", 1, "libvirtd.service",
+                          "Before", "as", 1, "libvirt-guests.service") < 0)
         goto cleanup;
 
     ret = 0;