Here is a patch (against the ubuntu package, just as example)
which instead of doing a dumb retry loop, waits for udev.

=== modified file 'debian/changelog'
--- debian/changelog    2010-04-26 15:17:47 +0000
+++ debian/changelog    2010-12-08 21:44:32 +0000
@@ -1,3 +1,15 @@
+initramfs-tools (0.92bubuntu79) natty; urgency=low
+
+  * When using multipath, it is possible that mountroot() will race
+    with udev's renaming of /dev/disk/by-uuid/{rootfs-uuid} from
+    /dev/sd?? to /dev/mapper/something.  After multipath has grabbed
+    the /dev/sd?? and until udev completes the rename, mounting
+    /dev/disk/by-uuid/{rootfs-uuid} will fail with -EBUSY.  In that
+    case, call 'udevsettle' to wait until udev has finished all its
+    related actions. (Closes LP: #686832)
+
+ -- Serge Hallyn <serge.hal...@ubuntu.com>  Fri, 19 Nov 2010 12:19:43 -0600
+
 initramfs-tools (0.92bubuntu78) lucid; urgency=low
 
   * hooks/compcache: Escape $-expansions inside <<EOF (thanks, Eugene San;

=== modified file 'scripts/local'
--- scripts/local       2009-12-21 23:06:53 +0000
+++ scripts/local       2010-11-20 01:03:26 +0000
@@ -69,10 +69,19 @@
        # FIXME This has no error checking
        [ -n "${FSTYPE}" ] && modprobe ${FSTYPE}
 
-       # FIXME This has no error checking
        # Mount root
-       mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt}
-       mountroot_status="$?"
+       tries=0
+       ret=1
+       while [ $tries -lt 2 -a $ret -ne 0 ]; do
+               mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} 
${rootmnt}
+               ret=$?
+               if [ $ret -ne 0 ]; then
+                       echo "failed attempt $tries to mount $ROOT as root"
+                       udevadm settle
+                       tries=$((tries+1))
+               fi
+       done
+       mountroot_status=$ret
        if [ "$LOOP" ]; then
                if [ "$mountroot_status" != 0 ]; then
                        if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then




-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20101209212028.ga24...@hallyn.com

Reply via email to