2012-04-16 13:55:53 +00:00
|
|
|
From 6625b74e90a0b6918c90c408215e76719e459883 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Daniel Drake <dsd@laptop.org>
|
|
|
|
Date: Wed, 11 Apr 2012 23:00:43 +0100
|
|
|
|
Subject: [PATCH] rootfs-block: avoid remount when options don't change
|
|
|
|
|
|
|
|
Mounting, unmounting and then mounting a disk partition takes some
|
|
|
|
time.
|
|
|
|
|
|
|
|
On embedded systems such as OLPC XO where we disable fsck and fstab
|
|
|
|
reading, the root options are not going to change throughout the
|
|
|
|
mount_root() function, so remounting is time consuming and without
|
|
|
|
change.
|
|
|
|
|
|
|
|
Detect and optimize for this case so that the filesystem is only
|
|
|
|
mounted once.
|
|
|
|
---
|
|
|
|
modules.d/95rootfs-block/mount-root.sh | 12 ++++++++----
|
2012-05-04 11:03:29 +00:00
|
|
|
1 Datei geändert, 8 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)
|
2012-04-16 13:55:53 +00:00
|
|
|
|
|
|
|
diff --git a/modules.d/95rootfs-block/mount-root.sh b/modules.d/95rootfs-block/mount-root.sh
|
|
|
|
index 2c89431..aef99ae 100755
|
|
|
|
--- a/modules.d/95rootfs-block/mount-root.sh
|
|
|
|
+++ b/modules.d/95rootfs-block/mount-root.sh
|
|
|
|
@@ -98,20 +98,24 @@ mount_root() {
|
|
|
|
# them; rflags is guaranteed to not be empty
|
|
|
|
rflags="${rootopts:+"${rootopts},"}${rflags}"
|
|
|
|
|
|
|
|
- umount "$NEWROOT"
|
|
|
|
-
|
|
|
|
# backslashes are treated as escape character in fstab
|
|
|
|
# esc_root=$(echo ${root#block:} | sed 's,\\,\\\\,g')
|
|
|
|
# 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
|
|
|
|
+ umount "$NEWROOT"
|
|
|
|
fsck_single "${root#block:}" "$rootfs" "$fsckoptions"
|
|
|
|
_ret=$?
|
|
|
|
[ $_ret -ne 255 ] && echo $_ret >/run/initramfs/root-fsck
|
|
|
|
+ ran_fsck=1
|
|
|
|
fi
|
|
|
|
|
|
|
|
- info "Remounting ${root#block:} with -o ${rflags}"
|
|
|
|
- mount -t "$rootfs" -o "$rflags" "${root#block:}" "$NEWROOT" 2>&1 | vinfo
|
|
|
|
+ if [ -n "$rootopts" -o "$ran_fsck" = "1" ]; then
|
|
|
|
+ info "Remounting ${root#block:} with -o ${rflags}"
|
|
|
|
+ umount "$NEWROOT" &>/dev/null
|
|
|
|
+ mount -t "$rootfs" -o "$rflags" "${root#block:}" "$NEWROOT" 2>&1 | vinfo
|
|
|
|
+ fi
|
|
|
|
|
|
|
|
[ -f "$NEWROOT"/forcefsck ] && rm -f "$NEWROOT"/forcefsck 2>/dev/null
|
|
|
|
[ -f "$NEWROOT"/.autofsck ] && rm -f "$NEWROOT"/.autofsck 2>/dev/null
|