From: Lennart Poettering Date: Wed, 8 Apr 2020 14:08:35 +0000 (+0200) Subject: core: automatically add dependency on systemd-remount-fs.service if StateDirectory... X-Git-Tag: archive/raspbian/246.1-1+rpi1~1^2^2~34 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fffa16c3b24bd3602eb2c9a9ecbe112c21dcdaf3;p=systemd.git core: automatically add dependency on systemd-remount-fs.service if StateDirectory= is used And similar for other settings that require a writable /var/. Rationale: if these options are used for early-boot services (such as systemd-pstore.service) we need /var/ writable. And if /var/ is on the root fs, then systemd-remount-fs.service is the service that ensures that /var/ is writable. This allows us to remove explicit deps in services such as systemd-pstore.service. (cherry picked from commit f3b7a79b973a28af4f7a592a8b2e199cc194218b) Gbp-Pq: Name core-automatically-add-dependency-on-systemd-remount-fs.s.patch --- diff --git a/src/core/unit.c b/src/core/unit.c index 2ddd0b39..5967d4a7 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1046,6 +1046,16 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { if (!MANAGER_IS_SYSTEM(u->manager)) return 0; + /* For the following three directory types we need write access, and /var/ is possibly on the root + * fs. Hence order after systemd-remount-fs.service, to ensure things are writable. */ + if (!strv_isempty(c->directories[EXEC_DIRECTORY_STATE].paths) || + !strv_isempty(c->directories[EXEC_DIRECTORY_CACHE].paths) || + !strv_isempty(c->directories[EXEC_DIRECTORY_LOGS].paths)) { + r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_REMOUNT_FS_SERVICE, true, UNIT_DEPENDENCY_FILE); + if (r < 0) + return r; + } + if (c->private_tmp) { const char *p;