[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