[Bug 1215911] Re: wait-for-root fails to wait for plain /dev/sdaX partitions.
Martin Pitt
martin.pitt at ubuntu.com
Mon Aug 26 13:09:04 UTC 2013
Tetsuo Handa [2013-08-26 12:59 -0000]:
> By the way, is there any possibility that "the message of a block device which
> the wait-for-root is waiting for" cannot be received after ENOBUFS?
I have never actually seen ENOBUFS, or uevents being missed due to it,
so I think the chance of that is quite small. But I can't assert that
all messages will be received after an ENOBUFS. But as you said,
waiting longer in that case is a safer fallback than not waiting at
all. My hope is that that ENOBUFS situation clears itself up
automatically after some time, otherwise your whole system would be
screwed (as you could never receive any uevent).
Martin
--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)
--
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
Bug description:
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