From 20509ade3d025fe76bcdc036dfd49aa44f63d470 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Fri, 30 Mar 2012 00:20:36 -0400 Subject: autodetect: simplify mdadm autodetection Everything we need to know about the devices is already in sysfs attributes for the md devices. Read any found nodes for raid levels and sort them into our whitelist. This removes the need for root in order to "scan" arrays. More code churn on top of d11ba00. Signed-off-by: Dave Reisner --- install/autodetect | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/install/autodetect b/install/autodetect index 47c8c23..b6ec28a 100644 --- a/install/autodetect +++ b/install/autodetect @@ -2,7 +2,6 @@ build() { local -a md_devs - local dev insufficient_perms MODULE_FILE=$workdir/autodetect_modules @@ -38,28 +37,11 @@ build() { add_if_avail "$usrfstype" fi - # look for raid devices - shopt -s nullglob - for dev in /sys/class/block/*/md/dev-*; do - dev=/dev/${dev#*/dev-} - - [[ -r $dev ]] || insufficient_perms=1 - - md_devs+=("$dev") - done - shopt -u nullglob - - # scan members of raid devices if found - if (( ${#md_devs[*]} )); then - (( !QUIET )) && plain "found %d raid members to scan" "${#md_devs[*]}" - if (( ! insufficient_perms )); then - mdadm -Esv "${md_devs[@]}" | - sed -n 's/.*level=\([^ ]\+\) .*/\1/p' | - sed 's/\/raid456/g' | sort -u >>"$MODULE_FILE" - else - warning "Insufficient permission to perform autodetection for mdadm devices" - raid_autodetect_failed=1 - fi + # scan for md raid devices + md_devs=(/sys/class/block/md*/md/level) + if [[ -e $md_devs ]]; then + (( !QUIET )) && plain "found %d mdadm arrays to scan" "${#md_devs[*]}" + sort -u "${md_devs[@]}" >>"$MODULE_FILE" fi if (( !QUIET )) && [[ -s $MODULE_FILE ]]; then -- cgit v1.2.3-24-g4f1b