2.6.28-rc2: initrd fails to create bloc devices

From: Andrey Borzenkov
Date: Thu Oct 30 2008 - 14:48:31 EST


I am using Mandriva which has mkinitrd based on RedHat (current version
in 6.0.63). With 2.6.28 it sporadically fails (or I should rather say,
it sporadically manages) to created block devices in initrd which of
course prevents kernel from finding root later.

The control flow is

1. mkblkdevs (I assume, it is for any built-in driver)
2. load modules, needed for disk access/file system
3. mkblkdevs again
4. mount real root etc etc etc

First mkblkdevs will initially traverse /sys/block and create all it
finds there. It is empty in my case (no built-in driver).

Second mkblkdev will notice that device tree was already initialized
and will not descend into /sys/block but rather listen and process to
hotplug events generated in step 2. At least that is how I interpret
nash code.

So it looks like something has changed between 2.6.27 and 2.6.28 regarding
event delivery. It looks like race condition. I do not see any pattern
except after several attempts it would suddenly boot.

I tried both IDE and PATA, both show the same problem.

Any idea?

-andrey

Attachment: signature.asc
Description: This is a digitally signed message part.