diff --git a/mdadm.changes b/mdadm.changes index d80cd0f..4af4caf 100644 --- a/mdadm.changes +++ b/mdadm.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sat Feb 21 15:37:55 CET 2009 - mmarek@suse.cz + +- mkinitrd-setup.sh: filter out duplicate devices (bnc#461673, + patch by Xin Wei Hu) + ------------------------------------------------------------------- Tue Feb 17 17:01:23 CET 2009 - mmarek@suse.cz diff --git a/mdadm.spec b/mdadm.spec index f448718..03db28b 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -20,7 +20,7 @@ Name: mdadm Version: 3.0 -Release: 17 +Release: 19 %define ver 3.0-devel2 BuildRequires: sgmltool PreReq: %fillup_prereq %insserv_prereq @@ -162,6 +162,9 @@ rm -rf $RPM_BUILD_ROOT /lib/mkinitrd/scripts/boot-md.sh %changelog +* Sat Feb 21 2009 mmarek@suse.cz +- mkinitrd-setup.sh: filter out duplicate devices (bnc#461673, + patch by Xin Wei Hu) * Tue Feb 17 2009 mmarek@suse.cz - disable auto-assemly in boot.md completely as it can collide with dmraid (bnc#474652). If someone wants to auto-assemble md arrays diff --git a/mkinitrd-setup.sh b/mkinitrd-setup.sh index 0729999..29e177b 100644 --- a/mkinitrd-setup.sh +++ b/mkinitrd-setup.sh @@ -11,10 +11,21 @@ for bd in $blockdev ; do if [ -n "$mdconf" ] ; then md_tmpblockdev=$(mdadm -Dbv $bd 2> /dev/null | sed -n "1D;s/,/ /g;s/^ *devices=\(.*\)/\1/p") md_dev=${bd##/dev/} - mdblockdev="$mdblockdev $md_tmpblockdev" - eval md_conf_${md_dev}=\"$mdconf\" - md_devs="$md_devs $md_dev" - root_md=1 + dup_found=0 + for dup in $md_devs; do + if [ x"$dup" = x"$md_dev" ]; then + dup_found=1 + break + fi + done + if [ $dup_found -eq 0 ]; then + mdblockdev="$mdblockdev $md_tmpblockdev" + eval md_conf_${md_dev}=\"$mdconf\" + md_devs="$md_devs $md_dev" + root_md=1 + else + echo "setup-md.sh: $md_dev found multiple times" >&2 + fi else mdblockdev="$mdblockdev $bd" fi