chiark / gitweb /
mount: don't pull in nofail mounts by default, but use them if they are around
[elogind.git] / src / mount.c
index 0b67fbed5d5d035a4c95cb7ad9d2951ef28ebae1..781c7a8721f24172f36c2c5256b3a9eb3de9936e 100644 (file)
@@ -70,9 +70,6 @@ static void mount_init(Unit *u) {
          * already trying to comply its last one. */
         m->exec_context.same_pgrp = true;
 
-        /* Make sure we unmount when the devices we require go away */
-        m->meta.stop_retroactively = true;
-
         m->timer_watch.type = WATCH_INVALID;
 
         m->control_command_id = _MOUNT_EXEC_COMMAND_INVALID;
@@ -268,7 +265,7 @@ static int mount_add_target_links(Mount *m) {
         MountParameters *p;
         Unit *tu;
         int r;
-        bool noauto, handle, automount;
+        bool noauto, nofail, handle, automount;
 
         assert(m);
 
@@ -280,6 +277,7 @@ static int mount_add_target_links(Mount *m) {
                 return 0;
 
         noauto = !!mount_test_option(p->options, MNTOPT_NOAUTO);
+        nofail = !!mount_test_option(p->options, "nofail");
         handle = !!mount_test_option(p->options, "comment=systemd.mount") ||
                 m->meta.manager->mount_auto;
         automount = !!mount_test_option(p->options, "comment=systemd.automount");
@@ -312,6 +310,7 @@ static int mount_add_target_links(Mount *m) {
                 /* Automatically add mount points that aren't natively
                  * configured to local-fs.target */
                 if (!noauto &&
+                    !nofail &&
                     handle &&
                     m->from_etc_fstab &&
                     m->meta.manager->running_as == MANAGER_SYSTEM)
@@ -401,7 +400,7 @@ static int mount_add_default_dependencies(Mount *m) {
                 if ((r = unit_add_dependency_by_name(UNIT(m), UNIT_BEFORE, SPECIAL_QUOTACHECK_SERVICE, NULL, true)) < 0)
                         return r;
 
-                if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTED_BY, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
+                if ((r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true)) < 0)
                         return r;
         }