#! /bin/sh # aoe-flush - ask aoe driver to forget about devices # Copyright 2009, 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