chiark / gitweb /
swap: order file-based swap devices after remount-rootfs
[elogind.git] / src / swap.c
index 6de79280c9f9d528c7c31faf0bb0af109dbfdf89..0d3cb2f40622c608865313ff23876f5139bc5c17 100644 (file)
@@ -199,9 +199,15 @@ static int swap_add_device_links(Swap *s) {
         else
                 return 0;
 
-        return unit_add_node_link(UNIT(s), s->what,
-                                  !p->noauto && p->nofail &&
-                                  s->meta.manager->running_as == MANAGER_SYSTEM);
+        if (is_device_path(s->what))
+                return unit_add_node_link(UNIT(s), s->what,
+                                          !p->noauto && p->nofail &&
+                                          s->meta.manager->running_as == MANAGER_SYSTEM);
+        else
+                /* File based swap devices need to be ordered after
+                 * remount-rootfs.service, since they might need a
+                 * writable file system. */
+                return unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_REMOUNT_ROOTFS_SERVICE, NULL, true);
 }
 
 static int swap_add_default_dependencies(Swap *s) {
@@ -289,7 +295,7 @@ static int swap_load(Unit *u) {
                 if ((r = swap_add_target_links(s)) < 0)
                         return r;
 
-                if ((r = unit_add_default_cgroup(u)) < 0)
+                if ((r = unit_add_default_cgroups(u)) < 0)
                         return r;
 
                 if (s->meta.default_dependencies)