File: aoe-stat.in

package info (click to toggle)
aoetools 36-3
  • links: PTS
  • area: main
  • in suites: buster
  • size: 396 kB
  • sloc: ansic: 1,494; sh: 627; makefile: 54
file content (92 lines) | stat: -rwxr-xr-x 1,971 bytes parent folder | download | duplicates (5)
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 "@devdir@/$devname"; then
		m_node="`ls -l \"@devdir@/$devname\" | awk '{print $6}'`"
		test "$m_sysfs" = "$m_node" || {
			cat 1>&2 <<EOF
$me Warning: device node @devdir@/$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