#!/bin/bash

# (C) 2006-2008 IST
# License: GPL-2

# Settings
#DISKS="/dev/cciss/c0d0 /dev/cciss/c0d1 /dev/cciss/c0d2 /dev/cciss/c0d3 /dev/cciss/c0d4 /dev/cciss/c0d5 /dev/cciss/c0d6 /dev/cciss/c0d7 /dev/cciss/c0d8 /dev/cciss/c0d9 /dev/cciss/c0d10 /dev/cciss/c0d11"
#PART="/dev/cciss/c0d0p1 /dev/cciss/c0d1p1 /dev/cciss/c0d2p1 /dev/cciss/c0d3p1 /dev/cciss/c0d4p1 /dev/cciss/c0d5p1 /dev/cciss/c0d6p1 /dev/cciss/c0d7p1 /dev/cciss/c0d8p1 /dev/cciss/c0d9p1 /dev/cciss/c0d10p1 /dev/cciss/c0d11p1"

#DISKS="/dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj"
#PART="/dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1"

DISKS=${DISKS:-/dev/sdc}
PART=${PART:-/dev/sdc1}

function usage () {
    echo "$0: [--fast]"

}

function pause(){
    date
    echo "Press enter to continue"
    read
}

function erro(){
    echo "########################################################################"
    date
    echo "Error doing:"
    echo $*
    echo "########################################################################"
    pause
}

FAST=no

while [ $# -ge 1 ] ; do
    case $1 in
	--fast)
	    FAST=yes
	    shift
	;;
	*)
	    usage
	    exit 1
    esac
done

date
echo "Going to check the disc ${DISKS} and the partiton ${PART}"
echo "Listing partitions"
for disk in ${DISKS} ; do
    fdisk -l $disk || erro fdisk -l $disk 
done
pause

date
echo "Making ext3 filesystems"
for part in ${PART} ; do
    echo "####    $part"
    time mke2fs -j $part || erro mke2fs -j $part
done
#pause

date
echo "Verifying filesystems"
time fsck -pf ${PART}
#pause

if [ $FAST != "no" ] ; then
    exit 0
fi

date
echo "Doing read-only badblocks"
for part in ${PART} ; do
    echo "####    $part"
    time badblocks -sv $part -o `basename $part`_badblocks-sv.lst > test_newdisks_badblocks-sv_`basename $part`.log 2>&1 &
done
wait
for part in ${PART} ; do
    tail -1 test_newdisks_badblocks-sv_`basename $part`.log
done
#pause

date
echo "Doing non-destructive write badblocks"
for part in ${PART} ; do
    echo "####    $part"
    time badblocks -svn $part -o `basename $part`_badblocks-svn.lst> test_newdisks_badblocks-svn_`basename $part`.log 2>&1 &
done
wait 
for part in ${PART} ; do
    tail -1 test_newdisks_badblocks-svn_`basename $part`.log
done
#pause

date
echo "Doing destructive write badblocks"
for part in ${PART} ; do
    echo "####    $part"
    time badblocks -svw $part -o `basename $part`_badblocks-svw.lst > test_newdisks_badblocks-svw_`basename $part`.log 2>&1 &
done
wait
for part in ${PART} ; do
    tail -1 test_newdisks_badblocks-svw_`basename $part`.log
done
pause

echo "Finished"
