]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
{crypt|verity}setup: replace dep on systemd-tmpfiles-setup-dev.service by modprobe...
authorLennart Poettering <lennart@poettering.net>
Thu, 1 Jun 2023 13:00:27 +0000 (15:00 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 1 Jun 2023 16:49:43 +0000 (18:49 +0200)
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)

src/cryptsetup/cryptsetup-generator.c
src/veritysetup/veritysetup-generator.c

index e00d4d41266d707c43a1fd6f451a1b368508bbf1..a22d9323421725ff2521fb1d4b52fff279ab5172 100644 (file)
@@ -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);
index 68ef5d458f4c5e87ab12c80cde461579e531bd73..93aa265ba1255157202b1ffedd83d2ba7057b299 100644 (file)
@@ -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)