With the new /usr mounting, if the device path that ends up in /proc/mounts ends...
authorRobin H. Johnson <robbat2@gentoo.org>
Mon, 20 Feb 2012 06:58:10 +0000 (22:58 -0800)
committerRobin H. Johnson <robbat2@gentoo.org>
Mon, 20 Feb 2012 06:58:10 +0000 (22:58 -0800)
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
ChangeLog
defaults/linuxrc

index e5c391b996cafd32cf1940d453eeb67f650147f5..4d9f8666dbb0d21f0be5a4bec5c70f996c1ff7fe 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,11 @@
 # Distributed under the GPL v2
 # $Id$
 
+  20 Feb 2012; Robin H. Johnson <robbat2@gentoo.org> defaults/linuxrc:
+  With the new /usr mounting, if the device path that ends up in /proc/mounts
+  ends up being different than in /etc/fstab due to symlinks, mount -a will
+  always exit 32. Avoid by resolving symlinks like util-linux does.
+
   14 Feb 2012; Robin H. Johnson <robbat2@gentoo.org> gen_compile.sh,
   gen_initramfs.sh:
   dmraid is entirely broken if you try to use the system static
index 693257f3a6961381b1bca6ade711219fa9e967f5..528f58d9f81cf63c1d0be33e9da33d83be5e5234 100755 (executable)
@@ -544,6 +544,9 @@ do
                if [ "${REAL_ROOT}" = '/dev/nfs' ]; then
                        findnfsmount
                else
+                       # If $REAL_ROOT is a symlink
+                       # Resolve it like util-linux mount does
+                       [ -L ${REAL_ROOT} ] && REAL_ROOT=`readlink ${REAL_ROOT}`
                        # mount ro so fsck doesn't barf later
                        if [ "${REAL_ROOTFLAGS}" = '' ]; then
                                good_msg "Using mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE}"
@@ -777,6 +780,8 @@ fi
 
 for fs in $fslist; do
        dev=$(get_mount_device $fs)
+       # Resolve it like util-linux mount does
+       [ -L ${dev} ] && dev=`readlink ${dev}`
        # In this case, it's probably part of the filesystem
        # and not a mountpoint
        [ -z "$dev" ] && continue