From: Lennart Poettering Date: Thu, 1 Jun 2023 13:00:27 +0000 (+0200) Subject: {crypt|verity}setup: replace dep on systemd-tmpfiles-setup-dev.service by modprobe... X-Git-Tag: v254-rc1~305^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ce49a479d296648033611a4ce5fde929efb49354;p=thirdparty%2Fsystemd.git {crypt|verity}setup: replace dep on systemd-tmpfiles-setup-dev.service by modprobe@loop.service Both should have the same effect: the /dev/loop-control devices should become available. systemd-tmpfiles-setup-dev.service creates the device node "dry" based on modalias data, while modprobe@loop.service creates it fully, because the module backing it is loaded properly. This should shorten the deps chain a bit, simplify things and allows us to focus on the stuff we actually need (i.e. the loopback infra) instead of all entrypoints anyone might possibly need (i.e. the device nodes) --- diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index e00d4d41266..a22d9323421 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -506,13 +506,13 @@ static int create_disk( "After=%s\n", d, d); else - /* For loopback devices, add systemd-tmpfiles-setup-dev.service - dependency to ensure that loopback support is available in - the kernel (/dev/loop-control needs to exist) */ + /* For loopback devices make sure to explicitly load loop.ko, as this code might run very + * early where device nodes created via systemd-tmpfiles-setup-dev.service might not be + * around yet. Hence let's sync on the module itself. */ fprintf(f, "RequiresMountsFor=%s\n" - "Requires=systemd-tmpfiles-setup-dev.service\n" - "After=systemd-tmpfiles-setup-dev.service\n", + "Wants=modprobe@loop.service\n" + "After=modprobe@loop.service\n", u_escaped); r = generator_write_timeouts(arg_dest, device, name, options, &filtered); diff --git a/src/veritysetup/veritysetup-generator.c b/src/veritysetup/veritysetup-generator.c index 68ef5d458f4..93aa265ba12 100644 --- a/src/veritysetup/veritysetup-generator.c +++ b/src/veritysetup/veritysetup-generator.c @@ -402,11 +402,12 @@ static int create_disk( } if (need_loop) - /* For loopback devices, add systemd-tmpfiles-setup-dev.service dependency to ensure that - * loopback support is available in the kernel (/dev/loop-control needs to exist) */ + /* For loopback devices make sure to explicitly load loop.ko, as this code might run very + * early where device nodes created via systemd-tmpfiles-setup-dev.service might not be + * around yet. Hence let's sync on the module itself. */ fprintf(f, - "Requires=systemd-tmpfiles-setup-dev.service\n" - "After=systemd-tmpfiles-setup-dev.service\n"); + "Wants=modprobe@loop.service\n" + "After=modprobe@loop.service\n"); r = generator_write_veritysetup_service_section(f, name, du_escaped, hu_escaped, roothash, options); if (r < 0)