]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysroot: Order systemd-fsck-root after systemd-makefs
authorWill Fancher <elvishjerricco@gmail.com>
Sat, 17 Dec 2022 20:06:21 +0000 (15:06 -0500)
committerLennart Poettering <lennart@poettering.net>
Fri, 23 Dec 2022 17:34:09 +0000 (18:34 +0100)
src/shared/generator.c

index 7eed3b76c17b00d66443aac263e0faaf4dd99d30..da3eaadbf4e3550e0373d7f6ecda2919cd39ad73 100644 (file)
@@ -467,6 +467,14 @@ int generator_hook_up_mkfs(
 
         log_debug("Creating %s", unit_file);
 
+        const char *fsck_unit;
+        if (in_initrd() && path_equal(where, "/sysroot"))
+                fsck_unit = SPECIAL_FSCK_ROOT_SERVICE;
+        else if (in_initrd() && path_equal(where, "/sysusr/usr"))
+                fsck_unit = SPECIAL_FSCK_USR_SERVICE;
+        else
+                fsck_unit = "systemd-fsck@%i.service";
+
         escaped = cescape(node);
         if (!escaped)
                 return log_oom();
@@ -492,7 +500,7 @@ int generator_hook_up_mkfs(
                 "After=%%i.device\n"
                 /* fsck might or might not be used, so let's be safe and order
                  * ourselves before both systemd-fsck@.service and the mount unit. */
-                "Before=shutdown.target systemd-fsck@%%i.service %s\n"
+                "Before=shutdown.target %s %s\n"
                 "\n"
                 "[Service]\n"
                 "Type=oneshot\n"
@@ -500,6 +508,7 @@ int generator_hook_up_mkfs(
                 "ExecStart="SYSTEMD_MAKEFS_PATH " %s %s\n"
                 "TimeoutSec=0\n",
                 program_invocation_short_name,
+                fsck_unit,
                 where_unit,
                 type,
                 escaped);