|  | @@ -1,6 +1,6 @@
 | 
	
		
			
				|  |  |  #! /bin/bash
 | 
	
		
			
				|  |  |  # aoe-stat - collate and present information about AoE storage
 | 
	
		
			
				|  |  | -# Copyright 2009, CORAID, Inc., and licensed under GPL v.2.
 | 
	
		
			
				|  |  | +# Copyright 2012, CORAID, Inc., and licensed under GPL v.2.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  set -e
 | 
	
		
			
				|  |  |  me=`basename $0`
 | 
	
	
		
			
				|  | @@ -15,7 +15,7 @@ test ! -d "$sysd/block" && {
 | 
	
		
			
				|  |  |  	exit 1
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function checknode () {
 | 
	
		
			
				|  |  | +checknode () {
 | 
	
		
			
				|  |  |  	devname="$1"
 | 
	
		
			
				|  |  |  	m_sysfs="$2"
 | 
	
		
			
				|  |  |  	if test -b "@devdir@/$devname"; then
 | 
	
	
		
			
				|  | @@ -28,6 +28,16 @@ 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
 | 
	
	
		
			
				|  | @@ -49,23 +59,34 @@ 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
 | 
	
		
			
				|  |  | +	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}GB" \
 | 
	
		
			
				|  |  | -			"`cat \"$d/netif\"`" \
 | 
	
		
			
				|  |  | -			"`cat \"$d/payload\"`" \
 | 
	
		
			
				|  |  | -			"`cat \"$d/state\"`"
 | 
	
		
			
				|  |  | +			"${psize}" \
 | 
	
		
			
				|  |  | +			"$netif" \
 | 
	
		
			
				|  |  | +			"$payload" \
 | 
	
		
			
				|  |  | +			"$state"
 | 
	
		
			
				|  |  |  	else
 | 
	
		
			
				|  |  |  		printf "$format" \
 | 
	
		
			
				|  |  |  			"$dev" \
 | 
	
		
			
				|  |  | -			"${psize}GB" \
 | 
	
		
			
				|  |  | -			"`cat \"$d/netif\"`" \
 | 
	
		
			
				|  |  | -			"`cat \"$d/state\"`"
 | 
	
		
			
				|  |  | +			"${psize}" \
 | 
	
		
			
				|  |  | +			"$netif" \
 | 
	
		
			
				|  |  | +			"$state"
 | 
	
		
			
				|  |  |  	fi
 | 
	
		
			
				|  |  |  done | sort | grep $re
 |