summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranck Bui <fbui@suse.com>2020-06-11 09:41:14 +0200
committerFranck Bui <fbui@suse.com>2020-07-01 16:34:42 +0200
commit045c5faf5a3ef51cd39f738694e06c11a73f54b7 (patch)
treedfdaafcb042119a4770c5547f0a2f8f140ed11bb
parent830ffbce1bea0a270878db30ef331742e782d5ed (diff)
downloadsystemd-045c5faf5a3ef51cd39f738694e06c11a73f54b7.tar.gz
fstab-generator: extra dependencies specified in fstab should be applied to the mount unit
If an entry in fstab uses "x-systemd.automount" option and also asks for additionnal dependencies via x-systemd.requires or such, then the dependencies were applied to the automount unit. But this unlikely to do the right thing and is inconsistent with what's done for network mounts. Indeed when an fstab entries has "_netdev,x-systemd.automount" options, the dependencies against the network requested by "_netdev" are (correctly) applied to the mount unit only and the automount unit remains ordered against local-fs.target. The same logic should be followed when extra deps are specified via the mount options as automount units should always be ordered against local-fs.target. Note: in general explicit deps specified via mount options should be used with care and should be used to specify dependencies on other mount units only as it can easily create ordering cycles otherwise like it's been seen in https://github.com/systemd/systemd-stable/issues/69. Mount units (as well as automount ones) are ordered before local-fs.target by default which is a low-level target that most other units depend on.
-rw-r--r--man/systemd.mount.xml12
-rw-r--r--src/fstab-generator/fstab-generator.c17
2 files changed, 11 insertions, 18 deletions
diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
index 07feccb54a..33d861a33f 100644
--- a/man/systemd.mount.xml
+++ b/man/systemd.mount.xml
@@ -204,7 +204,11 @@
system that merges multiple mount points). See
<varname>After=</varname> and <varname>Requires=</varname> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for details.</para></listitem>
+ for details.</para>
+
+ <para>Note that this option always applies to the created mount unit
+ only regardless whether <option>x-systemd.automount</option> has been
+ specified.</para></listitem>
</varlistentry>
<varlistentry>
@@ -223,7 +227,11 @@
unit.
See <varname>Before=</varname> and <varname>After=</varname> in
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
- for details.</para></listitem>
+ for details.</para>
+
+ <para>Note that these options always apply to the created mount unit
+ only regardless whether <option>x-systemd.automount</option> has been
+ specified.</para></listitem>
</varlistentry>
<varlistentry>
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
index 77b90e1a9b..39e91a9c6b 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -406,7 +406,7 @@ static int add_mount(
SET_FLAG(flags, NOFAIL, true);
}
- if (!(flags & AUTOMOUNT) && opts) {
+ if (opts) {
r = write_after(f, opts);
if (r < 0)
return r;
@@ -530,21 +530,6 @@ static int add_mount(
"Documentation=man:fstab(5) man:systemd-fstab-generator(8)\n",
source);
- if (opts) {
- r = write_after(f, opts);
- if (r < 0)
- return r;
- r = write_requires_after(f, opts);
- if (r < 0)
- return r;
- r = write_before(f, opts);
- if (r < 0)
- return r;
- r = write_requires_mounts_for(f, opts);
- if (r < 0)
- return r;
- }
-
fprintf(f,
"\n"
"[Automount]\n"