]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fstab-generator: enable fsck for block device mounts specified in systemd.mount-extra= 28544/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 27 Jul 2023 21:07:17 +0000 (06:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 28 Jul 2023 00:28:26 +0000 (09:28 +0900)
Like we do for root= or so.

Another possible option is adding support of fifth (sixth?) field in
systemd.mount-extra=. But that may be overkill, hence let's do that
later if someone request that.

Fixes fsck part of issue #28541.

src/fstab-generator/fstab-generator.c
test/test-fstab-generator/test-19-mounts-from-cmdline.expected.sysroot/foo-also_in_initrd.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected.sysroot/foo-not_in_initrd.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected.sysroot/usr.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_fstype.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/hoge-without_options.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysroot-foo-also_in_initrd.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysroot.mount
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-root.service [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-usr.service [new file with mode: 0644]
test/test-fstab-generator/test-19-mounts-from-cmdline.expected/sysusr-usr.mount

index 103c55c7c758436a1036b3bdcea659c76e82e1e2..7ff5db14d2e75d587d0ab2a831ac6af0fc94c349 100644 (file)
@@ -888,6 +888,9 @@ static int parse_fstab_one(
         if (is_swap)
                 return add_swap(source, what, options, flags);
 
+        if (passno < 0)
+                passno = is_device_path(what);
+
         assert(where_original); /* 'where' is not necessary for swap entry. */
 
         if (!is_path(where_original)) {
@@ -1302,7 +1305,7 @@ static int add_mounts_from_cmdline(void) {
                               m->where,
                               m->fstype,
                               m->options,
-                              /* passno = */ 0,
+                              /* passno = */ -1,
                               /* prefix_sysroot = */ !m->for_initrd && in_initrd(),
                               /* accept_root = */ true,
                               /* use_swap_enabled = */ false);
index 8cc17c5d92458a7765aa2040f999382c7a70e59a..ed72fb283fe966680449bb6d17830ae29486aec9 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=local-fs.target
+Requires=systemd-fsck@dev-sdx6.service
+After=systemd-fsck@dev-sdx6.service
 After=blockdev@dev-sdx6.target
 
 [Mount]
index 8a5e28ebbf5d505392295f1e0fb6071466e214e4..11b52788dfed7e31c4419dfed30d46aaacb435ab 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=local-fs.target
+Requires=systemd-fsck@dev-sdx7.service
+After=systemd-fsck@dev-sdx7.service
 After=blockdev@dev-sdx7.target
 
 [Mount]
index ff01ec4fde7f233aba101142708ac322b405cc0d..bfdede543ab9dfd2a96ee55bcca10ddcd32c1740 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=local-fs.target
+Wants=systemd-fsck@dev-sdx5.service
+After=systemd-fsck@dev-sdx5.service
 After=blockdev@dev-sdx5.target
 
 [Mount]
index 4d7d975cc0df4ad6c85c6e08bf56211477fc7c71..a7c6ee9913915a244859d60c96d0a6e8f8935b42 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=local-fs.target
+Requires=systemd-fsck@dev-sdx3.service
+After=systemd-fsck@dev-sdx3.service
 After=blockdev@dev-sdx3.target
 
 [Mount]
index 4f16d2e40b602d51399cff9c224344613e32bf02..157ae2b6a44624aad510246491cc0c9140765f11 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=local-fs.target
+Requires=systemd-fsck@dev-sdx2.service
+After=systemd-fsck@dev-sdx2.service
 After=blockdev@dev-sdx2.target
 
 [Mount]
index 8baf1568b154508426b6529ea97d674629b6cd56..098961dc9e0188fbe7b8e4220eba28e2c21dd984 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=initrd-fs.target
+Requires=systemd-fsck@dev-sdx6.service
+After=systemd-fsck@dev-sdx6.service
 After=blockdev@dev-sdx6.target
 
 [Mount]
index c8547fa5394bf1e6e697e841f8f03f96c9a1ce80..f46b71a1f0fb22e033e8a89b07d966f03fd73463 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=initrd-root-fs.target
+Requires=systemd-fsck-root.service
+After=systemd-fsck-root.service
 After=blockdev@dev-sdx1.target
 
 [Mount]
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-root.service b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-root.service
new file mode 100644 (file)
index 0000000..1473488
--- /dev/null
@@ -0,0 +1,17 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Description=File System Check on /dev/sdx1
+Documentation=man:systemd-fsck-root.service(8)
+
+DefaultDependencies=no
+BindsTo=dev-sdx1.device
+Conflicts=shutdown.target
+After=initrd-root-device.target local-fs-pre.target dev-sdx1.device
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/systemd/systemd-fsck /dev/sdx1
+TimeoutSec=infinity
diff --git a/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-usr.service b/test/test-fstab-generator/test-19-mounts-from-cmdline.expected/systemd-fsck-usr.service
new file mode 100644 (file)
index 0000000..512e7b1
--- /dev/null
@@ -0,0 +1,17 @@
+# Automatically generated by systemd-fstab-generator
+
+[Unit]
+Description=File System Check on /dev/sdx5
+Documentation=man:systemd-fsck-usr.service(8)
+
+DefaultDependencies=no
+BindsTo=dev-sdx5.device
+Conflicts=shutdown.target
+After=local-fs-pre.target dev-sdx5.device
+Before=shutdown.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/systemd/systemd-fsck /dev/sdx5
+TimeoutSec=infinity
index f1fedb3775467c8a679e4f9f406538b938b7d8d8..bfee6a4ff71cca441c980cc2d704e28293ce794d 100644 (file)
@@ -4,6 +4,8 @@
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 SourcePath=/proc/cmdline
 Before=initrd-usr-fs.target
+Requires=systemd-fsck-usr.service
+After=systemd-fsck-usr.service
 After=blockdev@dev-sdx5.target
 
 [Mount]