[Bug 1215911] Re: wait-for-root fails to wait for plain /dev/sdaX partitions.
Launchpad Bug Tracker
1215911 at bugs.launchpad.net
Fri Oct 25 06:14:55 UTC 2013
This bug was fixed in the package initramfs-tools - 0.103ubuntu0.8
---------------
initramfs-tools (0.103ubuntu0.8) raring; urgency=low
* src/wait-for-root.c: udev_monitor_receive_device() might still
return NULL even with a blocking socket if recvmsg() fails with
ENOBUFS. Retry every second in that case. Thanks to Tetsuo Handa for
debugging this and the patch! (LP: #1215911)
-- Chris J Arges <chris.j.arges at canonical.com> Thu, 05 Sep 2013 16:20:14 -0500
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to initramfs-tools in Ubuntu.
https://bugs.launchpad.net/bugs/1215911
Title:
wait-for-root fails to wait for plain /dev/sdaX partitions.
Status in “initramfs-tools” package in Ubuntu:
Fix Released
Status in “initramfs-tools” source package in Precise:
Fix Released
Status in “initramfs-tools” source package in Quantal:
Fix Released
Status in “initramfs-tools” source package in Raring:
Fix Released
Bug description:
SRU Justification:
[Impact]
* Boot failures can occur with the wait-for-root utility in P/Q/R due to a race condition.
* Because of this issue unattended reboots and boots can randomly fail.
* The original bug was submitted against Precise LTS.
[Test Case]
* Reboot machine and look for "ALERT! /dev/sda1 does not exist. Dropping to a shell!". Entering exit from prompt should boot system normally.
* We expect that continuous reboots should allow for the machine to boot normally without this alert.
[Regression Potential]
* This patch has already been uploaded into Saucy, and tested.
--
Moving the discussion from http://www.spinics.net/lists/hotplug/msg05769.html
to launchpad, for I think that this bug needs to be handled in initramfs-tools
package rather than in udev package.
----------
I'm experiencing random boot failures with wait-for-root utility in Ubuntu
12.04 ( ubuntu-12.04-server-amd64.iso ) on a HP ProLiant DL360p Gen8 server.
For example, wait-for-root waited for only 0.13 seconds before giving
up at
FSTYPE=$(wait-for-root "${ROOT}" ${ROOTDELAY:-30})
line in scripts/local in the initramfs, and immediately enters into
panic "ALERT! ${ROOT} does not exist. Dropping to a shell!"
line.
This is a race condition and manually entering "exit" from the panic prompt
boots the system normally. This is a critical bug for this environment because
it will randomly fail to perform unattended reboot (e.g. automatic reboot after
saving kdump).
----------
I examined main() in wait-for-root using debug fprintf() and it turned out that
udev_monitor_receive_device() is sometimes immediately returning NULL (although
wait-for-root is using blocking socket).
I examined udev_monitor_receive_device() in libudev.so.0 using debug fprintf()
and it turned out that recvmsg() in udev_monitor_receive_device() (which is in
libudev-monitor.c in udev package) is returning ENOBUFS error before recvmsg()
returns information of the root partition.
The wait-for-root utility in initramfs-tools package is not expecting recvmsg()
to return ENOBUFS error. But since ENOBUFS is an inevitable error, I think that
wait-for-root (i.e. the caller of udev_monitor_receive_device()) should handle
this error.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1215911/+subscriptions
More information about the foundations-bugs
mailing list