Thanks to Marco d'Itri's followup to #294404, I have implemented
a fix to the problem that mdadm and udev don't like each other. It
is a slighly modified version from Marco's suggestion. Patch
attached.
The idea is that mdadm checks whether /dev/md0 or /dev/md/0 is
present and if not, that it creates it with MAKEDEV. If /dev/.udevdb
is a directory, it first exports WRITE_ON_UDEV to make MAKEDEV
actually write to /dev and not to /dev/.static/dev.
I have also undone vorlon's changes and added some code to ensure
that mdadm-raid gets called at S25 instead of S04. Separate patch
attached. Vorlon's patch included a change to config.c (see [0])
which I cannot figure out. Do you know what problem it tries to
solve? He describes it as:
"tweaks mdadm --scan's behavior to prefer the in-kernel device
names as listed in /proc/partitions if these are present as device
nodes on the filesystem."
0. http://bugs.debian.org/cgi-bin/bugreport.cgi/mdadm-294404.diff?bug=294404&msg=60&att=1
This works so far. Now a new problem has arisen, which I am
investigating (gdb downloading right now). The device nodes are
properly created during the boot phase *before* mdadm is run.
However, mdadm fails to run with the -s flag:
debian:/dev# mdadm -A -s
md: md0 stopped.
mdadm: no devices found for /dev/md0
debian:/dev# ls -l /dev/md0
brw-rw---- 1 root disk 9, 0 2005-05-21 11:02 /dev/md0
debian:/dev/# cat /etc/mdadm/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=68a1895a:3cae93a0:35e3b385:eb38616f
devices=/dev/sda2,/dev/sda3
device nodes for /dev/sda{2,3} exist and /proc/partitions knows
about these partitions too.
Assembling the device manually works:
debian:/dev# mdadm -A /dev/md0 /dev/sda[23]
[...]
Note that /dev/md0 does not change (m/c time remain unchanged).
Since vorlon said that this is not surprising as the kernel would
actually register the device when called without -s, I tried to
remove the /dev/md0 device node: this causes the above command to
fail.
So, to recap:
- device nodes are being created at the right point in time
- manual assembly of raid devices works
- automated assembly using /etc/mdadm/mdadm.conf does not work
Let's go, gdb.
Relevant straces:
http://madduck.net/~madduck/scratch/mdadm.strace.bz2
http://madduck.net/~madduck/scratch/mdadm-manual.strace.bz2
--
.''`. martin f. krafft <madduck@debian.org>
: :' : proud Debian developer, admin, user, and author
`. `'`
`- Debian - when you have better things to do than fixing a system
Invalid/expired PGP subkeys? Use subkeys.pgp.net as keyserver!
man muss noch chaos in sich haben
um einen tanzenden stern zu gebähren.
-- friedrich nietzsche
Attachment:
signature.asc
Description: Digital signature