On IRC we found out that this is related to mdadm not being able to
deal when the device node referred to by mdadm.conf is a symlink:

  /dev/md1 is not a block device

this seems to be a special case for devfs only.

In the case of the bug submitter, /dev/md1 is root, /dev/md2 is
swap, /dev/md3 is /home. /dev/md1 does not exist, /dev/md2 and
/dev/md3 are symlinks to /dev/md/X respectively. This seems to
suggest that these symlinks are created after the initrd assembled
the /dev/md/1 array (root-on-RAID).

The symlinks can be removed, but no hardlinks may be put in place
("Operation not permitted", exit code 1). However, mknod node
creation in /dev seems to work. Thus, we could just remove the
symlinks and let mdadm create them automatically. The following in
mdadm-raid should thus work okay:

  if [ -e /dev/.devfsd ]; then
    find /dev -type l -name md\* -maxdepth 1 \
      | while read link; do
          [ -b /dev/md/${link##/dev/md} ] && rm $link
        done
  fi

I am not sure whether the check for -b is necessary, but I feel
uneasy just killing all /dev/mdXX symlinks.

Moshe has tested this and confirmed it to work. Now I need to figure
out whether this is only devfs, or could happen in other cases too
(see debian-devel).

-- 
 .''`.     martin f. krafft <[EMAIL PROTECTED]>
: :'  :    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!
 
"i wish i hadn't slept all day, it's really lowered my productivity"
                                                   -- robert mcqueen

Attachment: signature.asc
Description: Digital signature

Reply via email to