chiark / gitweb /
mount: add automatic start ordering dependencies for mounts
authorLennart Poettering <lennart@poettering.net>
Mon, 12 Jul 2010 20:55:27 +0000 (22:55 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 12 Jul 2010 20:55:27 +0000 (22:55 +0200)
13 files changed:
src/automount.c
src/mount.c
src/swap.c
units/dev-hugepages.automount
units/dev-hugepages.mount
units/dev-mqueue.automount
units/dev-mqueue.mount
units/proc-sys-fs-binfmt_misc.automount
units/proc-sys-fs-binfmt_misc.mount
units/sys-kernel-debug.automount
units/sys-kernel-debug.mount
units/sys-kernel-security.automount
units/sys-kernel-security.mount

index 934aa5f..00f3736 100644 (file)
@@ -146,6 +146,23 @@ static int automount_add_mount_links(Automount *a) {
         return 0;
 }
 
+static int automount_add_default_dependencies(Automount *a) {
+        int r;
+
+        assert(a);
+
+        if (a->meta.manager->running_as == MANAGER_SYSTEM) {
+
+                if ((r = unit_add_dependency_by_name(UNIT(a), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
+                        return r;
+
+                if ((r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+                        return r;
+        }
+
+        return 0;
+}
+
 static int automount_verify(Automount *a) {
         bool b;
         char *e;
@@ -201,9 +218,8 @@ static int automount_load(Unit *u) {
                 if ((r = unit_add_dependency(u, UNIT_BEFORE, UNIT(a->mount), true)) < 0)
                         return r;
 
-                if (a->meta.default_dependencies &&
-                    a->meta.manager->running_as == MANAGER_SYSTEM)
-                        if ((r = unit_add_two_dependencies_by_name(UNIT(a), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+                if (a->meta.default_dependencies)
+                        if ((r = automount_add_default_dependencies(a)) < 0)
                                 return r;
         }
 
index 30390de..5b0bc6b 100644 (file)
@@ -274,6 +274,24 @@ static int mount_add_target_links(Mount *m) {
         }
 }
 
+static int mount_add_default_dependencies(Mount *m) {
+        int r;
+
+        assert(m);
+
+        if (m->meta.manager->running_as == MANAGER_SYSTEM) {
+
+                if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
+                        return r;
+
+                if (!path_equal(m->where, "/"))
+                        if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+                                return r;
+        }
+
+        return 0;
+}
+
 static int mount_verify(Mount *m) {
         bool b;
         char *e;
@@ -368,10 +386,8 @@ static int mount_load(Unit *u) {
                 if ((r = unit_add_default_cgroup(u)) < 0)
                         return r;
 
-                if (m->meta.default_dependencies &&
-                    m->meta.manager->running_as == MANAGER_SYSTEM &&
-                    !path_equal(m->where, "/"))
-                        if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+                if (m->meta.default_dependencies)
+                        if ((r = mount_add_default_dependencies(m)) < 0)
                                 return r;
         }
 
index 9203514..de468a0 100644 (file)
@@ -120,6 +120,24 @@ static int swap_add_target_links(Swap *s) {
         return unit_add_dependency(UNIT(s), UNIT_BEFORE, tu, true);
 }
 
+static int swap_add_default_dependencies(Swap *s) {
+        int r;
+
+        assert(s);
+
+        if (s->meta.manager->running_as == MANAGER_SYSTEM) {
+
+                if ((r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0)
+                        return r;
+
+                /* Note that by default we don't disable swap devices
+                 * on shutdown. i.e. there is no umount.target
+                 * conflicts here. */
+        }
+
+        return 0;
+}
+
 static int swap_verify(Swap *s) {
         bool b;
         char *e;
@@ -185,6 +203,10 @@ static int swap_load(Unit *u) {
 
                 if ((r = swap_add_target_links(s)) < 0)
                         return r;
+
+                if (s->meta.default_dependencies)
+                        if ((r = swap_add_default_dependencies(s)) < 0)
+                                return r;
         }
 
         return swap_verify(s);
index 4e7f8ff..ab8fa7c 100644 (file)
@@ -7,7 +7,7 @@
 
 [Unit]
 Description=Huge Pages File System Automount Point
-Before=sysinit.target
+DefaultDependencies=no
 
 [Automount]
 Where=/dev/hugepages
index 2aa1c23..e6014e5 100644 (file)
@@ -7,6 +7,7 @@
 
 [Unit]
 Description=Huge Pages File System
+DefaultDependencies=no
 
 [Mount]
 What=hugetlbfs
index 4df53dc..ba45b28 100644 (file)
@@ -7,7 +7,7 @@
 
 [Unit]
 Description=POSIX Message Queue File System Automount Point
-Before=sysinit.target
+DefaultDependencies=no
 
 [Automount]
 Where=/dev/mqueue
index 28c757a..8519df5 100644 (file)
@@ -7,6 +7,7 @@
 
 [Unit]
 Description=POSIX Message Queue File System
+DefaultDependencies=no
 
 [Mount]
 What=mqueue
index 82369c5..29ae05b 100644 (file)
@@ -7,7 +7,7 @@
 
 [Unit]
 Description=Arbitrary Executable File Formats File System Automount Point
-Before=sysinit.target
+DefaultDependencies=no
 
 [Automount]
 Where=/proc/sys/fs/binfmt_misc
index 0d6b196..1829c21 100644 (file)
@@ -7,6 +7,7 @@
 
 [Unit]
 Description=Arbitrary Executable File Formats File System
+DefaultDependencies=no
 
 [Mount]
 What=binfmt_misc
index 4da3f20..3a6306f 100644 (file)
@@ -7,7 +7,7 @@
 
 [Unit]
 Description=Debug File System Automount Point
-Before=sysinit.target
+DefaultDependencies=no
 
 [Automount]
 Where=/sys/kernel/debug
index 7bf0815..53d1072 100644 (file)
@@ -7,6 +7,7 @@
 
 [Unit]
 Description=Debug File System
+DefaultDependencies=no
 
 [Mount]
 What=debugfs
index 5d8356e..a428e0b 100644 (file)
@@ -7,7 +7,7 @@
 
 [Unit]
 Description=Security File System Automount Point
-Before=sysinit.target
+DefaultDependencies=no
 
 [Automount]
 Where=/sys/kernel/security
index db9d672..770207f 100644 (file)
@@ -7,6 +7,7 @@
 
 [Unit]
 Description=Security File System
+DefaultDependencies=no
 
 [Mount]
 What=securityfs