Mailinglist Archive: opensuse-bugs (4060 mails)

< Previous Next >
[Bug 445490] boot stops on mounting a software RAID - Invalid root filesystem
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Thu, 11 Jun 2009 01:32:51 -0600
  • Message-id: <20090611073251.98F0324550C@xxxxxxxxxxxxxxxxxxxxxx>

User andreas.osterburg@xxxxxxxxxx added comment

Andreas Osterburg <andreas.osterburg@xxxxxxxxxx> changed:

What |Removed |Added
CC| |andreas.osterburg@xxxxxxxxx
| |t
Info Provider|mmccarthy@xxxxxxxxxx |

--- Comment #60 from Andreas Osterburg <andreas.osterburg@xxxxxxxxxx>
2009-06-11 01:32:46 MDT ---
After upgrading to the latest kernel on openSUSE 11.1 the same problem
The problem behind is very simple and the solution, too.

The main problem is, that all udev rules are fired when a new MD
array is assembled, but this does not necessarily has to be started in these

The critical section is within the udev-rules-file "64-md-raid.rules"


IMPORT{program}="vol_id --export $tempnode"

vol_id will be called on an array that is assembled, but not started,
so the determination of the filesystem type fails (env-Var ID_FS_TYPE)
(and then the remaining parts in iniramfs fail)
It can be seen when you call "mdadm --detail $tempnode" and pipe it to
/dev/console within these rules (separate script needed)
It says "status: clean, Not Started"

The solution is simple: Wait until the array is started.

My quick solution is the following:

A new udev program called "" which waits, until the array is ready.
Run it before vol_id will be called (file is attached).

So add the following rule before the vol_id rule:

IMPORT{program}=" $tempnode"

(the dirtiest hack is to wait 3 seconds [IMPORT{program}="/bin/sleep 3"])

4 steps are needed to fix:

1. Put to /lib/udev
2. Modify /lib/udev/rules.d/64-md-raid.rules
3. run "mkinitrd"
4. reboot ;-)

Configure bugmail:
------- You are receiving this mail because: -------
You are on the CC list for the bug.

< Previous Next >