]> git.pld-linux.org Git - projects/geninitrd.git/commitdiff
Always use mdassemble. 6894
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 28 Jan 2006 13:40:26 +0000 (13:40 +0000)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Sat, 28 Jan 2006 13:40:26 +0000 (13:40 +0000)
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.

svn-id: @6894

geninitrd

index 294c8ca437898bb441f6c8c59452df2ddae7f8c4..f0ebe3087973c8102a78399cfbc442359ea9f3ad 100755 (executable)
--- a/geninitrd
+++ b/geninitrd
@@ -1095,20 +1095,18 @@ EOF
 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 @@ initrd_gen_softraid() {
 
            [ "$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
-
-           for f in $cr_dev_list $cr_rootdev ; do
+           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 $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
This page took 1.0345 seconds and 4 git commands to generate.