[arch-releng] [PATCH 1/2] Renamed mdraid_is_raid to device_is_raid

pyther at pyther.net pyther at pyther.net
Sun Jan 23 18:06:21 EST 2011


device_is_raid now uses dev major number to determine if a device is a
raid device. A major ID of 8 is a /dev/sd? device whereas a major ID of
9 is a 'metadata' (raid) device.

call die_error if a block device is not passed into device_is_raid()
---
 src/core/libs/lib-blockdevices-filesystems.sh |   21 +++++++--------------
 src/core/libs/lib-ui-interactive.sh           |    2 +-
 2 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/src/core/libs/lib-blockdevices-filesystems.sh b/src/core/libs/lib-blockdevices-filesystems.sh
index 8573b19..021f41b 100644
--- a/src/core/libs/lib-blockdevices-filesystems.sh
+++ b/src/core/libs/lib-blockdevices-filesystems.sh
@@ -919,20 +919,13 @@ get_blockdevice_size ()
 
 
 # $1 blockdevice (ex: /dev/md0 or /dev/sda1)
-# return true when blockdevice is an md raid, otherwise return a unset value
-mdraid_is_raid()
-{
-    local israid
-    if [ -z $1 ]; then
-        # Don't call mdadm on empty blockdevice parameter!
-        israid=""
-    elif [ "$(mdadm --query $1 | cut -d':' -f2)" == " is not an md array" ]; then
-        israid=""
-    else
-        israid=true
-    fi
-    echo $israid
-}
+# All MD RAID block devices have a major id of 9
+device_is_raid() {
+    [[ -b "$1" ]] || die_error "device_is_raid needs a blockdevice as \$1 ($1 given)"
+    [[ -f /proc/mdstast ]] || return 1
+    local devmajor=$(stat -c %t "$1")
+    (( devmajor == 9 ))
+} 
 
 # $1 md raid blockdevice (ex: /dev/md0)
 # return the array member device which is slave 0 in the given array
diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index 881af90..829556a 100644
--- a/src/core/libs/lib-ui-interactive.sh
+++ b/src/core/libs/lib-ui-interactive.sh
@@ -878,7 +878,7 @@ interactive_grub() {
         bootdev=$(mount | grep $var_TARGET_DIR/boot | cut -d' ' -f 1)
 		# check if bootdev or PART_ROOT is on a md raid array
         # This dialog is only shown when we detect / or /boot on a raid device.
-		if [ -n "$(mdraid_is_raid $bootdev)" -o -n "$(mdraid_is_raid $PART_ROOT)" ]; then
+		if device_is_raid $bootdev || device_is_raid $PART_ROOT; then
 			ask_yesno "Do you have your system installed on software raid?\nAnswer 'YES' to install grub to another hard disk." no
 			if [ $? -eq 0 ]; then
 				onraid=true
-- 
1.7.3.5



More information about the arch-releng mailing list