#!/bin/sh
 
#
# script to attempt to open each disk raw device
# on the MFS in order to verify label is not
# corrupted
#
# makes required corrections using format
# to relabel
#
 
verify() {
        head $1 2>/dev/null >/dev/null
        if [ $? -ne 0 ]
        then
                format -f /tmp/relabelcmd $1 > /dev/null
                return 1
        else
                return 0
        fi
}
 
config=/opt/SUNWsms/config
error=0
 
if [ "$1" != "" ]
then
        file=$1
else
        file=/opt/SUNWsms/config/mfs.file
fi
 
disks=`awk '
{
        if (NR == 2) {
                ndisks=$1
        } else if (NR == 3) {
                nparity=$1
        } else if (NR > 3) {
                print $1
        }
        next;
}' < $file`
 
echo "label" >  /tmp/relabelcmd
 
for i in $disks
do
        base=`basename $i`
        for j in `ls $i` ; do
                echo "$base: \c"
                verify $i;
                if [ $? -ne 0 ]; then
                        # try again - it should be fixed
                        verify $i;
                        if [ $? -ne 0 ]; then
                                echo "attempt to relabel failed\c"
                        else
                                echo "label corrected\c"
                        fi
                else
                        echo "ok\c"
                fi
                echo ", \c"
        done
done
 
/bin/rm -f /tmp/relabelcmd > /dev/null
echo
 
wait
 
exit $error
 

