From 9fb01d49d6fa9772caed7eaa184072ff365b7d80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= <aidecoe@aidecoe.name>
Date: Fri, 29 Jun 2012 13:58:20 +0200
Subject: [PATCH] new option: rd.skipfsck to skip fsck for rootfs and /usr
---
dracut.cmdline.7.asc | 4 ++++
modules.d/95rootfs-block/mount-root.sh | 4 +++-
modules.d/98usrmount/mount-usr.sh | 15 ++++++++-------
3 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
index 5669700..3bfb53a 100644
--- a/dracut.cmdline.7.asc
+++ b/dracut.cmdline.7.asc
@@ -75,6 +75,10 @@ resume=/dev/disk/by-uuid/3f5ad593-4546-4a94-a374-bcfb68aa11f7
resume=UUID=3f5ad593-4546-4a94-a374-bcfb68aa11f7
----
+**rd.skipfsck**::
+ skip fsck for rootfs and _/usr_. If you're mounting _/usr_ read-only and
+ the init system performs fsck before remount, you might want to use this
+ option to avoid duplication.
**rd.usrmount.ro**:
force mounting _/usr_ read-only. Use this option if your init system
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
index 2cae526..9109638 100755
--- a/modules.d/95rootfs-block/mount-root.sh
+++ b/modules.d/95rootfs-block/mount-root.sh
@@ -103,7 +103,9 @@ mount_root() {
# printf '%s %s %s %s 1 1 \n' "$esc_root" "$NEWROOT" "$rootfs" "$rflags" >/etc/fstab
ran_fsck=0
- if [ -z "$fastboot" -a "$READONLY" != "yes" ] && ! strstr "${rflags},${rootopts}" _netdev; then
+ if [ -z "$fastboot" -a "$READONLY" != "yes" ] && \
+ ! strstr "${rflags},${rootopts}" _netdev && \
+ ! getargbool 0 rd.skipfsck; then
umount "$NEWROOT"
fsck_single "${root#block:}" "$rootfs" "$rflags" "$fsckoptions"
_ret=$?
diff --git a/modules.d/98usrmount/mount-usr.sh b/modules.d/98usrmount/mount-usr.sh
index 748ac01..5798777 100755
--- a/modules.d/98usrmount/mount-usr.sh
+++ b/modules.d/98usrmount/mount-usr.sh
@@ -60,14 +60,15 @@ mount_usr()
if [ "x$_usr_found" != "x" ]; then
# we have to mount /usr
- if [ "0" != "${_passno:-0}" ]; then
- fsck_usr "$_dev" "$_fs" "$_opts"
- else
- :
+ _fsck_ret=0
+ if ! getargbool 0 rd.skipfsck; then
+ if [ "0" != "${_passno:-0}" ]; then
+ fsck_usr "$_dev" "$_fs" "$_opts"
+ _fsck_ret=$?
+ echo $_fsck_ret >/run/initramfs/usr-fsck
+ fi
fi
- _ret=$?
- echo $_ret >/run/initramfs/usr-fsck
- if [ $_ret -ne 255 ]; then
+ if [ $_fsck_ret -ne 255 ]; then
if getargbool 0 rd.usrmount.ro; then
info "Mounting /usr (read-only forced)"
mount -r "$NEWROOT/usr" 2>&1 | vinfo