[Bug 1215911] Re: wait-for-root fails to wait for plain /dev/sdaX partitions.
Tetsuo Handa
1215911 at bugs.launchpad.net
Mon Aug 26 12:59:56 UTC 2013
Thank you.
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 think that any messages of block devices which are generated while the socket
buffer is full cannot be received using recvmsg(). I worry that "the message of
a block device which the wait-for-root is waiting for" is by chance generated
as one of such messages.
If such case occurs, waiting at udev_monitor_receive_device() will not return
"the message of a block device which the wait-for-root is waiting for", and
wait-for-root will uselessly waits until interrupted by SIGALRM. (The boot
would succeed anyway because the device file would have been created by the
time interrupted by SIGALRM. But really useless delay...)
--
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