OK, so if the sleep 15 works, then the problem is that the system isn't
waiting until all of the USB buses and devices are enumerated until
continuing.   This is nominally the job of /etc/init.d/udev, which is
run out of /etc/rcS.d as /etc/rcS.d/S10udev.   This init script runs
"/sbin/udevadm trigger" and "/sbin/udevadm settle" which is supposed to
wait for all of the devices nodes to be created before continuing ---
and I've wasted many an hour trying to debug udev problems on laptops
where it hangs forever on "/sbin/udevadm settle", to the point that I
have a very _low_ opinion of udev, its utility, and certainly its
robustness.    In your case, the problem is "/sbin/udevadm settle" isn't
waiting long enough for your USB disk to be created, and so the root
filesystem is checked out of /etc/rcS.d/S20checkroot.sh, and the rest of
the filesystems are checked out of /etc/rcS.d/S30checkfs.sh --- and so
the "sleep 15" in checkfs.sh works around the problem.   (Note: I am
giving you the sequence of events out of Ubuntu Hardy; I have not tried
messing with Ubuntu Interpid, and I don't know if any changes in Upstart
vs. sysvinit may have changed the order in which things run.)

However, to be fair --- this is a hard problem for udev to solve, since
USB by definition is designed to be hot-pluggable, and so USB devices
can appear at any time.  Hence, there is no guarantee when the USB hub
is done enumerating, and so there isn't a good external event that would
tell "/sbin/udevadm settle" that it's OK to continue.   I'm not sure,
but I'm guessing that it's something probably added a delay to the USB
hub initialization sequence (maybe to work around some bug where a
hardware device needed some settling time after the hub is powered up),
and this caused the USB enumeration code to not notice your USB disk
until some number of seconds later.  This is only a theory, and I don't
know whether or not the delay was added in user space or the kernel ---
but one thing is clear; this isn't an e2fsprogs bug, but rather a bug in
either the kernel or in udev, or one of udev's supporting scripts.

-- 
fsck dies on boot with XFS USB drive
https://bugs.launchpad.net/bugs/276045
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to