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:
+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