[arch-releng] [PATCH 2/2] Use globbing and parameter expansion to get the raid slave devices

pyther at pyther.net pyther at pyther.net
Wed Jan 26 08:52:12 EST 2011


 On Sun, 23 Jan 2011 18:06:22 -0500, pyther at pyther.net wrote:
> Uses bash globbing and parameter expansion to find all of the slaves 
> for
> a raid device. This is a much better method then using ls. Also, by
> looking at DEVNAME in the uevent file we provide support for block
> device that are not in the root of /dev.
> ---
>  src/core/libs/lib-blockdevices-filesystems.sh |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/src/core/libs/lib-blockdevices-filesystems.sh
> b/src/core/libs/lib-blockdevices-filesystems.sh
> index 021f41b..f388d5b 100644
> --- a/src/core/libs/lib-blockdevices-filesystems.sh
> +++ b/src/core/libs/lib-blockdevices-filesystems.sh
> @@ -943,10 +943,13 @@ mdraid_slave0 ()
>  # ex: /dev/md0 has slaves: "/dev/sda1 /dev/sdb2 /dev/sdc2"
>  mdraid_all_slaves ()
>  {
> +    shopt -s nullglob
>      local slave=
> -    local slaves=
> -    for slave in $(ls /sys/class/block/$(basename $1)/slaves/); do
> -        slaves=$slaves"/dev/"$slave" "
> +    local slaves=
> +    for slave in /sys/class/block/${1##*/}/slaves/*; do
> +        source "$slave/uevent"
> +        slaves="$slaves/dev/$DEVNAME "
> +        unset DEVNAME
>      done
>      echo $slaves
>  }
 Falconindy mentioned that nullglob will apply to the current shell, 
 just not the local function. Therefore nullglob will need be unset at 
 the end of this function (shopt -s nullglob).

 See below output:
 R2D2:~ $ ls /tmp/test
 R2D2:~ $ for x in /tmp/test/*; do echo $x; done
 /tmp/test/*
 R2D2:~ $ func() { shopt -s nullglob; for x in /tmp/test/*; do echo $x; 
 done; }
 R2D2:~ $ func
 R2D2:~ $ for x in /tmp/test/*; do echo $x; done
 R2D2:~ $ func() { shopt -s nullglob; for x in /tmp/test/*; do echo $x; 
 done; shopt -u nullglob; }
 R2D2:~ $ func
 R2D2:~ $ for x in /tmp/test/*; do echo $x; done/tmp/test/*
 /tmp/test/*
 R2D2:~ $



More information about the arch-releng mailing list