#! /bin/bash # aoe-stat - collate and present information about AoE storage # Copyright 2009, CORAID, Inc., and licensed under GPL v.2. set -e me=`basename $0` sysd=${sysfs_dir:-/sys} # printf "$format" device mac netif state # Suse 9.1 Pro doesn't put /sys in /etc/mtab #test -z "`mount | grep sysfs`" && { test ! -d "$sysd/block" && { echo "$me Error: sysfs is not mounted" 1>&2 exit 1 } function checknode () { devname="$1" m_sysfs="$2" if test -b "@devdir@/$devname"; then m_node="`ls -l \"@devdir@/$devname\" | awk '{print $6}'`" test "$m_sysfs" = "$m_node" || { cat 1>&2 </dev/null | grep -v p` end; do # maybe ls comes up empty, so we use "end" test $d = end && continue test -r "$d/payload" && payload=yes done if test "$payload" = "yes"; then format="%10s %15s %10s %-5s %-14s\n" else format="%10s %15s %6s %-14s\n" fi for d in `ls -d $sysd/block/*e[0-9]*\.[0-9]* 2>/dev/null | grep -v p` end; do test $d = end && continue dev=`echo "$d" | sed 's/.*!//'` sectors="`cat \"$d/size\"`" minor="`awk -F: '{print $2}' \"$d/dev\"`" checknode "$dev" "$minor" psize=$(((512000 * $sectors) / (1000 * 1000 * 1000))) psize=`printf "%04d\n" $psize | sed 's!\(...\)$!.\1!'` if test "$payload" = "yes"; then printf "$format" \ "$dev" \ "${psize}GB" \ "`cat \"$d/netif\"`" \ "`cat \"$d/payload\"`" \ "`cat \"$d/state\"`" else printf "$format" \ "$dev" \ "${psize}GB" \ "`cat \"$d/netif\"`" \ "`cat \"$d/state\"`" fi done | sort | grep $re