fi
}
-# Add raid devices
+# mdadm - manage MD devices aka Linux Software RAID
init_mdadm() {
if [ ! -x /sbin/mdadm -o ! -f /etc/mdadm.conf ]; then
return
fi
modprobe -s md
- local rc=0
+ local rc=0 golvm=0 have_md=0
if [ ! -f /proc/mdstat ]; then
return
fi
- local golvm=0
+ # assume we have md if at least one ARRAY line is present
if grep -qE "^([[:blank:]]|)ARRAY[[:blank:]]" /etc/mdadm.conf; then
- show "Starting up RAID devices"; busy
- /sbin/mdadm --assemble --scan --auto=yes
- rc=$?
- if [ "$rc" -eq 0 -o "$rc" -eq 2 ]; then
- # rc is used later too, so set sane value
- rc=0
- deltext; ok
- golvm=1
- else
- deltext; fail
- fi
+ have_md=1
+ fi
+ # configured to do auto scanning
+ if [ $have_md = 0 ] && grep -qE "^([[:blank:]]|)DEVICE[[:blank:]]partitions" /etc/mdadm.conf; then
+ have_md=1
+ fi
+ # none found
+ if [ $have_md = 0 ]; then
+ return
+ fi
+
+ show "Starting up RAID devices"; busy
+ /sbin/mdadm --assemble --scan --auto=yes
+ rc=$?
+ if [ "$rc" -eq 0 -o "$rc" -eq 2 ]; then
+ # rc is used later too, so set sane value
+ rc=0
+ deltext; ok
+ golvm=1
+ else
+ deltext; fail
fi
# A non-zero return means there were problems