summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-09-25 08:34:30 -0400
committerMartin Pitt <martin.pitt@ubuntu.com>2016-10-01 22:53:17 +0200
commitdd5e7000cb54f94fdf4756a28144ab32d6e214c8 (patch)
tree2be801b8af593138fa1ec3fd75099ab845839f67
parent93a0884126146361ca078ec627da2cf766205a1c (diff)
core: complain if Before= dep on .device is declared
[Unit] Before=foobar.device [Service] ExecStart=/bin/true Type=oneshot $ systemd-analyze verify before-device.service before-device.service: Dependency Before=foobar.device ignored (.device units cannot be delayed)
-rw-r--r--TODO2
-rw-r--r--src/core/unit.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/TODO b/TODO
index 64d530b7d7..ff9e9be9fb 100644
--- a/TODO
+++ b/TODO
@@ -139,8 +139,6 @@ Features:
* PID 1 should send out sd_notify("WATCHDOG=1") messages (for usage in the --user mode, and when run via nspawn)
-* consider throwing a warning if a service declares it wants to be "Before=" a .device unit.
-
* there's probably something wrong with having user mounts below /sys,
as we have for debugfs. for exmaple, src/core/mount.c handles mounts
prefixed with /sys generally special.
diff --git a/src/core/unit.c b/src/core/unit.c
index 5d284a359d..693f75c928 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -2225,6 +2225,11 @@ int unit_add_dependency(Unit *u, UnitDependency d, Unit *other, bool add_referen
return 0;
}
+ if (d == UNIT_BEFORE && other->type == UNIT_DEVICE) {
+ log_unit_warning(u, "Dependency Before=%s ignored (.device units cannot be delayed)", other->id);
+ return 0;
+ }
+
r = set_ensure_allocated(&u->dependencies[d], NULL);
if (r < 0)
return r;