]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core/mount: do not add Before=local-fs.target or remote-fs.target if nofail mount...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 26 Jan 2019 11:00:04 +0000 (12:00 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 26 Jan 2019 11:00:18 +0000 (12:00 +0100)
Follow-up for d54bab90e64f70c1ecf9b0683a98adb8485ed09e.

Fixes #11558.

src/core/mount.c

index 4c5a02948c61a9bed1291d501dd168b0774bd8ad..976af48ab0a807a5086b1d21f678a6ab902879da 100644 (file)
@@ -426,6 +426,7 @@ static int mount_add_default_dependencies(Mount *m) {
         const char *after, *before;
         UnitDependencyMask mask;
         MountParameters *p;
+        bool nofail;
         int r;
 
         assert(m);
@@ -444,6 +445,7 @@ static int mount_add_default_dependencies(Mount *m) {
                 return 0;
 
         mask = m->from_fragment ? UNIT_DEPENDENCY_FILE : UNIT_DEPENDENCY_MOUNTINFO_DEFAULT;
+        nofail = m->from_fragment ? fstab_test_yes_no_option(m->parameters_fragment.options, "nofail\0" "fail\0") : false;
 
         if (mount_is_network(p)) {
                 /* We order ourselves after network.target. This is
@@ -474,9 +476,11 @@ static int mount_add_default_dependencies(Mount *m) {
                 before = SPECIAL_LOCAL_FS_TARGET;
         }
 
-        r = unit_add_dependency_by_name(UNIT(m), UNIT_BEFORE, before, true, mask);
-        if (r < 0)
-                return r;
+        if (!nofail) {
+                r = unit_add_dependency_by_name(UNIT(m), UNIT_BEFORE, before, true, mask);
+                if (r < 0)
+                        return r;
+        }
 
         r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, true, mask);
         if (r < 0)