#!/bin/sh

DEVICE=$1
shift

SEGMENTS=$*

if [ "${SEGMENTS}" = "" ]; then
    SEGMENTS=`smap $DEVICE | awk 'BEGIN {FS=","};{if (\$2 != 0) print \$0}'`
fi

for SEGMENT in $SEGMENTS
do
    SEGMENTNR=`echo $SEGMENT | cut -f1 -d,`
    echo -n Segment ${SEGMENTNR}

    SMAP_BLOCK_COUNT=`echo $SEGMENT | cut -f2 -d,`
    SUMMARY=`summary $DEVICE $SEGMENTNR`

    TOTAL_BLOCK_COUNT=0
    for ENTRY in $SUMMARY
    do
        INODE=`echo $ENTRY | cut -f2 -d,`
	if [ $INODE = 1 -o $INODE = 2 -o -n "`imap $DEVICE | grep ^${INODE}\$`" ]; then
	    BLOCK_COUNT=`iblk $DEVICE $INODE | cut -f3 -d, | grep ^${SEGMENTNR}\$ | wc -l`
	    TOTAL_BLOCK_COUNT=`expr $TOTAL_BLOCK_COUNT + $BLOCK_COUNT`

	    #echo Inode $INODE: block count = $BLOCK_COUNT, total = $TOTAL_BLOCK_COUNT
	fi
	echo -n .
    done

    #echo Segment $SEGMENTNR smap block count = $SMAP_BLOCK_COUNT
    if [ "$TOTAL_BLOCK_COUNT" != "$SMAP_BLOCK_COUNT" ]; then
	echo bad.
        echo smap shows ${SMAP_BLOCK_COUNT}, counting inodes shows ${TOTAL_BLOCK_COUNT}.
    else
	echo ok.
    fi
done



