Author: arekm
Date: Sat Jan 28 14:40:26 2006
New Revision: 6894

Modified:
   geninitrd/trunk/geninitrd
Log:
Always use mdassemble.
By default put UUID based config (so devices can now change without affecting 
an array).
Copy all devices matching /etc/mdadm.conf in case when disks layout is modified 
in system.


Modified: geninitrd/trunk/geninitrd
==============================================================================
--- geninitrd/trunk/geninitrd   (original)
+++ geninitrd/trunk/geninitrd   Sat Jan 28 14:40:26 2006
@@ -1095,20 +1095,18 @@
 initrd_gen_softraid() {
        [ -n "$verbose" ] && echo "Setting up mdadm..."
        
-       if [ ! -x /sbin/initrd-mdadm -a ! -x /sbin/initrd-mdassemble ] ; then
-               echo "/sbin/initrd-mdadm and /sbin/initrd-mdassemble are 
missing !"
+       if [ ! -x /sbin/mdadm -o ! -x /sbin/initrd-mdassemble ] ; then
+               echo "/sbin/mdadm or /sbin/initrd-mdassemble is missing !"
                exit 1
        fi
 
-       if [ -x /sbin/initrd-mdassemble ] ; then
-           do_mdassemble=1
-           inst /sbin/initrd-mdassemble "$MNTIMAGE/bin/mdassemble"
-       else
-           do_mdassemble=0
-           inst /sbin/initrd-mdadm "$MNTIMAGE/bin/mdadm"
-       fi
-           
+       inst /sbin/initrd-mdassemble "$MNTIMAGE/bin/mdassemble"
+
        # LVM on RAID case
+       dev_list_extra=$(awk '/^DEVICE / { for (i=2; i<=NF; i++) { printf "%s 
", $i; }; } ' /etc/mdadm.conf)
+       for ex_dev in $dev_list_extra; do
+               echo "DEVICE $ex_dev" >> "$MNTIMAGE/etc/mdadm.conf"
+       done
         do_md0=1
        for nr in `seq 1 $rootdev_nr`; do
            eval cr_rootdev="\$rootdev${nr}"
@@ -1117,26 +1115,26 @@
 
            [ "$cr_rootdev" = "/dev/md0" ] && do_md0=0
            
-           if [ "$do_mdassemble" -eq 1 ] ; then
-               echo "DEVICE $cr_dev_list" >> "$MNTIMAGE/etc/mdadm.conf"
-               cr_dev_list_md="$(echo "$cr_dev_list" | xargs | awk ' { gsub(/ 
+/,",",$0); print $0; }')"
-               echo "ARRAY $cr_rootdev devices=$cr_dev_list_md" >> 
"$MNTIMAGE/etc/mdadm.conf"
-           else
-               echo "mdadm --assemble $cr_rootdev $cr_dev_list" >> "$s"
-           fi
+           echo "DEVICE $cr_dev_list" >> "$MNTIMAGE/etc/mdadm.conf"
+           cr_dev_list_md="$(echo "$cr_dev_list" | xargs | awk ' { gsub(/ 
+/,",",$0); print $0; }')"
+           cr_md_conf=$(/sbin/mdadm --detail --brief --config=/etc/mdadm.conf 
$cr_rootdev)
+           if [ -n "$cr_md_conf" ]; then
+                   echo "$cr_md_conf" >> "$MNTIMAGE/etc/mdadm.conf"
+           else
+                   echo "ARRAY $cr_rootdev devices=$cr_dev_list_md" >> 
"$MNTIMAGE/etc/mdadm.conf"
+           fi
 
-           for f in $cr_dev_list $cr_rootdev ; do
+           for f in $cr_dev_list $cr_rootdev $dev_list_extra; do
                # mkdir in case of devfs name
                mkdir -p $MNTIMAGE/`my_dirname $f`
+               [ -e "$MNTIMAGE/$f" ] && continue
                [ -n "$verbose" ] && echo "copying $f"
                # this works fine with and without devfs
                cp -HR $f $MNTIMAGE/$f
            done
        done
 
-       if [ "$do_mdassemble" -eq 1 ] ; then
-           echo "mdassemble" >> "$s"
-       fi
+       echo "mdassemble" >> "$s"
 
        # needed to determine md-version
        if [ "$do_md0" -eq 1 ] ; then
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to