[arch-releng] [PATCH] Renamed mdraid_is_raid, new device_is_raid mdraid_all_slaves function
pyther at pyther.net
pyther at pyther.net
Sun Jan 16 20:54:09 EST 2011
Renamed mdraid_is_raid to device_is_raid
falconindy rewrote the device_is_raid and mdraid_all_slaves functions
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.
mdraid_all_slaves now uses a parameter expansion to get the basename of
the device
---
src/core/libs/lib-blockdevices-filesystems.sh | 30 +++++++-----------------
src/core/libs/lib-ui-interactive.sh | 2 +-
2 files changed, 10 insertions(+), 22 deletions(-)
diff --git a/src/core/libs/lib-blockdevices-filesystems.sh b/src/core/libs/lib-blockdevices-filesystems.sh
index 8573b19..a0ca15f 100644
--- a/src/core/libs/lib-blockdevices-filesystems.sh
+++ b/src/core/libs/lib-blockdevices-filesystems.sh
@@ -920,19 +920,11 @@ 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
-}
+device_is_raid() {
+ [[ $1 && -f /proc/mdadm ]] || 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
@@ -948,12 +940,8 @@ mdraid_slave0 ()
# $1 md raid blockdevice (ex: /dev/md0)
# return a list of array members from given md array
# ex: /dev/md0 has slaves: "/dev/sda1 /dev/sdb2 /dev/sdc2"
-mdraid_all_slaves ()
-{
- local slave=
- local slaves=
- for slave in $(ls /sys/class/block/$(basename $1)/slaves/); do
- slaves=$slaves"/dev/"$slave" "
- done
- echo $slaves
+mdraid_all_slaves () {
+ shopt -s nullglob
+ local slaves=(/sys/class/block/${1##*/}/slaves/*)
+ echo "${slaves[@]##*/}"
}
diff --git a/src/core/libs/lib-ui-interactive.sh b/src/core/libs/lib-ui-interactive.sh
index 881af90..41c035b 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 [ -n "$(device_is_raid $bootdev)" -o -n "$(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