/sbin/aoe-stat is in aoetools 36-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #! /bin/bash
# aoe-stat - collate and present information about AoE storage
# Copyright 2012, 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
}
checknode () {
devname="$1"
m_sysfs="$2"
if test -b "/dev/etherd/$devname"; then
m_node="`ls -l \"/dev/etherd/$devname\" | awk '{print $6}'`"
test "$m_sysfs" = "$m_node" || {
cat 1>&2 <<EOF
$me Warning: device node /dev/etherd/$devname has wrong minor device number
EOF
}
fi
}
NA="(NA)"
cat_or_NA () {
f="${1?}"
if test -r "$f"; then
cat "$f"
else
echo "$NA"
fi
}
re=.
if test $# -gt 0; then
re=$1
fi
# compatibility for aoe drivers without payload information
for d in `ls -d $sysd/block/*e[0-9]*\.[0-9]* 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/.*!//'`
if test -r "$d"/dev; then
minor="`awk -F: '{print $2}' \"$d/dev\"`"
checknode "$dev" "$minor"
else
minor="$NA"
fi
sectors=`cat_or_NA "$d"/size`
if test "$sectors" = "$NA"; then
psize="$NA"
else
psize=$(((512000 * $sectors) / (1000 * 1000 * 1000)))
psize=`printf "%04d\n" $psize | sed 's!\(...\)$!.\1!'`GB
fi
netif=`cat_or_NA "$d"/netif`
state=`cat_or_NA "$d"/state`
payload=`cat_or_NA "$d"/payload`
if test "$payload" != "$NA"; then
printf "$format" \
"$dev" \
"${psize}" \
"$netif" \
"$payload" \
"$state"
else
printf "$format" \
"$dev" \
"${psize}" \
"$netif" \
"$state"
fi
done | sort | grep $re
|