From 4eceb70905b5a18e2a5d43539d7e7be18efcee5d Mon Sep 17 00:00:00 2001 From: Nis Martensen 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 . Closes: #782522 Closes: #810748 Gbp-Pq: Topic debian Gbp-Pq: Name Skip-filesystem-check-if-already-done-by-the-initram.patch --- 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 91581aed..cca4b7dc 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -357,6 +357,7 @@ static int add_mount( _cleanup_strv_free_ char **wanted_by = NULL, **required_by = NULL; _cleanup_fclose_ FILE *f = NULL; int r; + struct stat sb; assert(what); assert(where); @@ -434,9 +435,13 @@ static int add_mount( return r; if (passno != 0) { - r = generator_write_fsck_deps(f, 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, dest, what, where, fstype); + if (r < 0) + return r; + } } r = generator_write_blockdev_dependency(f, what); diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in index bea6c168..49df0316 100644 --- a/units/systemd-fsck-root.service.in +++ b/units/systemd-fsck-root.service.in @@ -16,6 +16,7 @@ Before=local-fs.target shutdown.target Wants=systemd-fsckd.socket After=systemd-fsckd.socket ConditionPathIsReadWrite=!/ +ConditionPathExists=!/run/initramfs/fsck-root [Service] Type=oneshot -- 2.30.2