12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #! /bin/sh
- # aoe-flush - ask aoe driver to forget about devices
- # Copyright 2008, Coraid, Inc., and licensed under GPL v.2.
- zero="`basename $0`"
- f="@devdir@/flush"
- spec=""
- if ! test -w "$f"; then
- echo 1>&2 "$zero: $f does not exist or is not writeable."
- exit 1
- fi
- if ! test -c $f; then
- exec 1>&2
- echo "$zero: $f is not a character device file"
- echo "$zero: use udev or aoe-mkdevs to create it"
- exit 1
- fi
- # make sure that each device in the whitespace-separated
- # list exists
- verify_devs () {
- err=""
- for d; do
- aoe-stat |
- awk -vd="$d" '$1==d{print $1}' |
- test "`cat`" || {
- exec 2>&1
- echo "$zero Error: \"$d\" is not an aoe device"
- err="$err $d"
- }
- done
- test ! "$err"
- }
- err=""
- if test "$1"; then
- if test "$1" = "-a"; then
- spec=all
- else
- spec="$*"
- verify_devs $spec || exit 1
- fi
- for i in $spec; do
- printf "$i" > "$f" || {
- echo 1>&2 "$zero: flush failed"
- err="$err $i"
- }
- done
- else
- echo > "$f" || err=no_args
- fi
- if test "$err"; then
- exit 1
- fi
|