chiark / gitweb /
units: automatically order all mount units after network.target
authorLennart Poettering <lennart@poettering.net>
Wed, 27 Mar 2013 01:51:33 +0000 (02:51 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 27 Mar 2013 01:56:32 +0000 (02:56 +0100)
Previously it was necessary to pull in remote-fs-pre.target to order the
mount units against network.target since the ordering was done
transitively via remote-fs-pre.target.

As network implementations shouldn't need to know about the specific
use-case of network mounts we instead now simply order network.target
against all mounts too. This should make it unnecessary for network
managing services to import remote-fs-pre.target explicitly, as
network.target will now suffice.

src/core/mount.c

index c4074ebd2e6cc04ce416d70bbf1588eee73c7756..3c63a391db2da04198d849aebed40edbbbf1d04a 100644 (file)
@@ -441,7 +441,7 @@ static int mount_add_quota_links(Mount *m) {
 static int mount_add_default_dependencies(Mount *m) {
         int r;
         MountParameters *p;
 static int mount_add_default_dependencies(Mount *m) {
         int r;
         MountParameters *p;
-        const char *after, *setup;
+        const char *after, *after2, *setup;
 
         assert(m);
 
 
         assert(m);
 
@@ -458,9 +458,11 @@ static int mount_add_default_dependencies(Mount *m) {
 
         if (mount_is_network(p)) {
                 after = SPECIAL_REMOTE_FS_PRE_TARGET;
 
         if (mount_is_network(p)) {
                 after = SPECIAL_REMOTE_FS_PRE_TARGET;
+                after2 = SPECIAL_NETWORK_TARGET;
                 setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
         } else {
                 after = SPECIAL_LOCAL_FS_PRE_TARGET;
                 setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
         } else {
                 after = SPECIAL_LOCAL_FS_PRE_TARGET;
+                after2 = NULL;
                 setup = NULL;
         }
 
                 setup = NULL;
         }
 
@@ -468,6 +470,12 @@ static int mount_add_default_dependencies(Mount *m) {
         if (r < 0)
                 return r;
 
         if (r < 0)
                 return r;
 
+        if (after2) {
+                r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after2, NULL, true);
+                if (r < 0)
+                        return r;
+        }
+
         if (setup) {
                 r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true);
                 if (r < 0)
         if (setup) {
                 r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true);
                 if (r < 0)