core: simplify requirements in unit_get_private_var_tmp() to just After=
As in the previous commit, checking for both requirements and ordering seems
unnecessary. In practical cases, the mount will be pulled in by the rest
of the transaction, so ordering is the part that matters. (The setup is
racy without the ordering.) If we drop the second check, the admin can
just use After=tmp.mount to achieve the desired behaviour, without needing
to explicitly pull in the unit. This is easier to configure and more robust.
This changes the implementation introduced in
6156bec7a4.
Also actually describe the implemented behaviour in the man page.
This commit is contained in:
@@ -76,7 +76,13 @@
|
||||
<listitem><para>Units with <varname>PrivateTmp=disconnected</varname> automatically gain dependencies
|
||||
of type <varname>Wants=</varname> and <varname>After=</varname> on the mount required to access
|
||||
<filename>/var/</filename>, unless <varname>DefaultDependencies=no</varname> and/or
|
||||
<varname>RootDirectory=/RootImage=</varname> are specified.</para></listitem>
|
||||
<varname>RootDirectory=</varname>/<varname>RootImage=</varname> are specified. If
|
||||
<varname>DefaultDependencies=no</varname> is specified, and a
|
||||
<varname>RequiresMountsFor=/var/</varname>, <varname>WantsMountsFor=/var/</varname>,
|
||||
<varname>After=var.mount</varname>, <varname>RootDirectory=</varname>/<varname>RootImage=</varname> are
|
||||
not specified, the private mount on <filename>/tmp/</filename> is reused for
|
||||
<filename>/var/tmp/</filename> by setting <varname>$TMPDIR</varname> appropriately.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem><para>Units whose standard output or error output is connected to <option>journal</option> or
|
||||
<option>kmsg</option> (or their combinations with console output, see below) automatically acquire
|
||||
|
||||
+2
-10
@@ -4373,17 +4373,9 @@ static PrivateTmp unit_get_private_var_tmp(const Unit *u, const ExecContext *c)
|
||||
if (hashmap_contains(u->mounts_for[t], "/var/"))
|
||||
return PRIVATE_TMP_DISCONNECTED;
|
||||
|
||||
/* Check the same but for After= with Requires=/Requisite=/Wants= or friends. */
|
||||
/* Check the same but for After=. */
|
||||
Unit *m = manager_get_unit(u->manager, "var.mount");
|
||||
if (!m)
|
||||
return PRIVATE_TMP_NO;
|
||||
|
||||
if (!unit_has_dependency(u, UNIT_ATOM_AFTER, m))
|
||||
return PRIVATE_TMP_NO;
|
||||
|
||||
if (unit_has_dependency(u, UNIT_ATOM_PULL_IN_START, m) ||
|
||||
unit_has_dependency(u, UNIT_ATOM_PULL_IN_VERIFY, m) ||
|
||||
unit_has_dependency(u, UNIT_ATOM_PULL_IN_START_IGNORED, m))
|
||||
if (m && unit_has_dependency(u, UNIT_ATOM_AFTER, m))
|
||||
return PRIVATE_TMP_DISCONNECTED;
|
||||
|
||||
return PRIVATE_TMP_NO;
|
||||
|
||||
Reference in New Issue
Block a user