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
This commit is contained in:
Lennart Poettering 2019-01-26 14:46:48 +01:00 committed by GitHub
commit a90d944359
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View File

@ -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>

View File

@ -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)