diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-01-26 14:46:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-26 14:46:48 +0100 |
commit | a90d9443596235cbe394f82fe93c7adfd03ccce7 (patch) | |
tree | 42773c73c62660ce9eae2f10f2195f970927de09 | |
parent | f2500feadf8f6dc72cb35d72f5e7d0162e5401ad (diff) | |
parent | 321cd1c17c511c771cab86d5244032b999aed261 (diff) | |
download | systemd-a90d9443596235cbe394f82fe93c7adfd03ccce7.tar.gz |
Merge pull request #11562 from yuwata/fix-11558
core/mount: do not add Before=local-fs.target or remote-fs.target if nofail mount option is set
-rw-r--r-- | man/systemd.mount.xml | 8 | ||||
-rw-r--r-- | src/core/mount.c | 10 |
2 files changed, 13 insertions, 5 deletions
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 6d8c873ca5..7355b135e9 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -131,11 +131,15 @@ <filename>umount.target</filename> in order to be stopped during shutdown.</para></listitem> <listitem><para>Mount units referring to local file systems automatically gain - an <varname>After=</varname> dependency on <filename>local-fs-pre.target</filename>.</para></listitem> + an <varname>After=</varname> dependency on <filename>local-fs-pre.target</filename>, and a + <varname>Before=</varname> dependency on <filename>local-fs.target</filename> unless + <option>nofail</option> mount option is set.</para></listitem> <listitem><para>Network mount units automatically acquire <varname>After=</varname> dependencies on <filename>remote-fs-pre.target</filename>, - <filename>network.target</filename> and <filename>network-online.target</filename>. Towards the latter a + <filename>network.target</filename> and <filename>network-online.target</filename>, and gain a + <varname>Before=</varname> dependency on <filename>remote-fs.target</filename> unless + <option>nofail</option> mount option is set. Towards the latter a <varname>Wants=</varname> unit is added as well.</para></listitem> </itemizedlist> diff --git a/src/core/mount.c b/src/core/mount.c index 6df5d60ee1..be02e05f09 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -453,6 +453,7 @@ static int mount_add_default_dependencies(Mount *m) { const char *after, *before; UnitDependencyMask mask; MountParameters *p; + bool nofail; int r; assert(m); @@ -471,6 +472,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 @@ -501,9 +503,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) |