Control: found -1 228-4 Attached a version of the patch that should work for testing/unstable. Again intended as a replacement for the existing patch.
Concerning the relationship to #782522, I think we are fine: With initramfs-tools, fsck flag files for / and /usr will be created and their presence will be honored, both with the old and the new patch, and both in jessie and testing/unstable. With dracut in testing/unstable, fsck flag files are not needed to avoid double fsck of / or /usr, since systemd will automatically do the right thing. For /usr, this already works in jessie (assuming 810748 were fixed), and for / it works in unstable since 220-1: https://github.com/systemd/systemd/commit/4dda4e637e4c17a14db6cd265f36f5e8a5050367 This leaves the case with double fsck for / with dracut in jessie. However, there is no regression since the bug was never solved, and there is an easy workaround: When the fs_passno field in /etc/fstab is set to 0 for the root file system, it won't be checked from the main system. Only the initramfs does not know that and will check anyway. Back to this bug, 810748. I agree that it may not be serious for systemd, also due to the existing workaround. But when you look at it from a dracut perspective, it means that a supposedly supported use case (/usr mounted from initramfs) does not work. And it is kind of difficult to learn about the workaround when your system does not boot. ;-) So it may still be worth fixing for jessie. What do you think?
From: Nis Martensen <nis.marten...@web.de> Date: Tue, 19 Jan 2016 22:01:43 +0100 Subject: [PATCH] Skip filesystem check if already done by the initramfs Newer versions of initramfs-tools already fsck and mount / and /usr in the initramfs. Skip the filesystem check in this case. Based on a previous patch by Michael Biebl <bi...@debian.org>. Closes: #782522 --- src/fstab-generator/fstab-generator.c | 11 ++++++++--- units/systemd-fsck-root.service.in | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index f7c8d11..2770ee6 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -244,6 +244,7 @@ static int add_mount( *filtered = NULL; _cleanup_fclose_ FILE *f = NULL; int r; + struct stat sb; assert(what); assert(where); @@ -310,9 +311,13 @@ static int add_mount( } if (passno != 0) { - r = generator_write_fsck_deps(f, arg_dest, what, where, fstype); - if (r < 0) - return r; + if (streq(where, "/usr") && stat("/run/initramfs/fsck-usr", &sb) == 0) + ; /* skip /usr fsck if it has already been checked in the initramfs */ + else { + r = generator_write_fsck_deps(f, arg_dest, what, where, fstype); + if (r < 0) + return r; + } } fprintf(f, diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in index 3617abf..1caa7bd 100644 --- a/units/systemd-fsck-root.service.in +++ b/units/systemd-fsck-root.service.in @@ -11,6 +11,7 @@ Documentation=man:systemd-fsck-root.service(8) DefaultDependencies=no Before=local-fs.target shutdown.target ConditionPathIsReadWrite=!/ +ConditionPathExists=!/run/initramfs/fsck-root [Service] Type=oneshot