Comment 0 for bug 696435

Alkis Georgopoulos (alkisg) wrote :

When using an nbd root, wait-for-root blocks for 30 seconds before booting continues successfully.

Using Ubuntu Natty, related packages versions:
    nbd-client 1:2.9.16-6ubuntu1
    initramfs-tools 0.98.1ubuntu9

The wait-for-root call from /usr/share/initramfs-tools/scripts/local:
 while [ -z "${FSTYPE}" ]; do
  FSTYPE=$(wait-for-root "${ROOT}" ${ROOTDELAY:-30})

  # Run failure hooks, hoping one of them can fix up the system
  # and we can restart the wait loop. If they all fail, abort
  # and move on to the panic handler and shell.
  if [ -z "${FSTYPE}" ] && ! try_failure_hooks; then
   break
  fi
 done

I replaced wait-for-root with a sh script that did `set >&2`, here are the relevant environment variables at the time wait-for-root was called:
ROOT='/dev/nbd0'
ROOTDELAY=''
ROOTFLAGS=''
ROOTFSTYPE=''
nbdroot='192.168.0.1,2011'

It's probably worth noting that "nbd0: unknown partition table" was displayed asynchronously 1-2 seconds after wait-for-root was invoked and while it was still waiting. But I tried adding a "sleep 5" as the last line of local-top/nbd, so that the nbd message was displayed a lot before wait-for-root was called, and it didn't make a difference. So I don't think a race condition is involved in this problem.

Temporarily I'm passing rootdelay=1 in the kernel command line to work around the problem.