geninitrd/trunk/geninitrd
arekm
cvs at pld-linux.org
Sat Jan 28 14:40:30 CET 2006
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
More information about the pld-cvs-commit
mailing list