chiark / gitweb /
mount: move device links handling from generator
[elogind.git] / src / core / mount.c
index 58a3f1160ff5fa3e145d8a683273e4a0afef57c1..d436a8460647df4ec11245250a3e4b26322afbb4 100644 (file)
@@ -338,6 +338,12 @@ static bool mount_is_bind(MountParameters *p) {
         return false;
 }
 
+static bool mount_is_auto(MountParameters *p) {
+        assert(p);
+
+        return !mount_test_option(p->options, "noauto");
+}
+
 static bool needs_quota(MountParameters *p) {
         assert(p);
 
@@ -356,6 +362,7 @@ static bool needs_quota(MountParameters *p) {
 
 static int mount_add_device_links(Mount *m) {
         MountParameters *p;
+        bool device_wants_mount = false;
         int r;
 
         assert(m);
@@ -376,7 +383,10 @@ static int mount_add_device_links(Mount *m) {
         if (path_equal(m->where, "/"))
                 return 0;
 
-        r = unit_add_node_link(UNIT(m), p->what, false);
+        if (mount_is_auto(p) && UNIT(m)->manager->running_as == SYSTEMD_SYSTEM)
+                device_wants_mount = true;
+
+        r = unit_add_node_link(UNIT(m), p->what, device_wants_mount);
         if (r < 0)
                 return r;
 
@@ -1543,7 +1553,8 @@ static int mount_add_one(
                 if (r < 0)
                         goto fail;
 
-                if (!path_equal(where, "/")) {
+                if (!path_equal(where, "/") &&
+                    !path_equal(where, "/usr")) {
                         r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
                         if (r < 0)
                                 goto fail;