chiark / gitweb /
units: introduce remote-fs-setup.target to pull in dependencies from remote mounts
[elogind.git] / src / core / mount.c
index 0adf04e9bf4aaac25c5f256e42a01c9a336f0632..c4074ebd2e6cc04ce416d70bbf1588eee73c7756 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;
-        const char *after;
+        const char *after, *setup;
 
         assert(m);
 
@@ -456,15 +456,24 @@ static int mount_add_default_dependencies(Mount *m) {
         if (path_equal(m->where, "/"))
                 return 0;
 
-        if (mount_is_network(p))
+        if (mount_is_network(p)) {
                 after = SPECIAL_REMOTE_FS_PRE_TARGET;
-        else
+                setup = SPECIAL_REMOTE_FS_SETUP_TARGET;
+        } else {
                 after = SPECIAL_LOCAL_FS_PRE_TARGET;
+                setup = NULL;
+        }
 
-        r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, after, NULL, true);
+        r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, 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)
+                        return r;
+        }
+
         r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
         if (r < 0)
                 return r;