#!/bin/sh
# This script should be run prior to running executing the filesystem tests.
# valid devices need to be passed for Device Mapper to work correctly
# 03/14/03 mridge@us.ibm.com added instance and time command line options 

cd `dirname $0`
export LTPROOT=${PWD}
echo $LTPROOT | grep testscripts > /dev/null 2>&1
if [ $? -eq 0 ]; then
 cd ..
 export LTPROOT=${PWD}
fi

export TMPBASE="/tmp"


usage() 
{
	cat <<-END >&2
	usage: ${0##*/} [ -a part1 ] [ -b part2 ]
             
	defaults:
	part1=$part1
	part2=$part2
	ltproot=$LTPROOT
	tmpdir=$TMPBASE

	example: ${0##*/} -a hdc1 -b hdc2 


	END
exit
}

while getopts :a:b: arg
do      case $arg in
		a)	part1=$OPTARG;;
                b)      part2=$OPTARG;;
			
                \?)     echo "************** Help Info: ********************"
                        usage;;
        esac
done

if [ ! -n "$part1"  ]; then
  echo "Missing 1st partition. You must pass 2 partitions for testing"
  usage;
  exit
fi

if [ ! -n "$part2" ]; then
  echo "Missing 2nd partition. You must pass 2 partitions for testing"
  usage;
  exit
fi

echo "Starting Device Mapper Tests..."

echo "0 10240 linear " $part1 "0" > ltp-dev-mapper-table1
echo "0 100000 linear " $part1 "0" > ltp-dev-mapper-table2
echo "0 100000 linear " $part2 "0" > ltp-dev-mapper-table3
echo "0 200000 striped 2 16 " $part1 "0" $part2 "0" > ltp-dev-mapper-table4

echo "Creating Devices..."

dmsetup create dm-test-1 ltp-dev-mapper-table1
dmsetup create dm-test-2 ltp-dev-mapper-table2
dmsetup create dm-test-3 ltp-dev-mapper-table3
dmsetup create dm-test-4 ltp-dev-mapper-table4

echo "Device Info..."

dmsetup info dm-test-1
dmsetup info dm-test-2
dmsetup info dm-test-3
dmsetup info dm-test-4

echo "Device Dependancies..."

dmsetup deps dm-test-1
dmsetup deps dm-test-2
dmsetup deps dm-test-3
dmsetup deps dm-test-4

echo "Device Status..."

dmsetup status dm-test-1
dmsetup status dm-test-2
dmsetup status dm-test-3
dmsetup status dm-test-4

echo "Device Tables..."

dmsetup table dm-test-1
dmsetup table dm-test-2
dmsetup table dm-test-3
dmsetup table dm-test-4

echo "Device Mapper Version..."

dmsetup version

echo "Device Waiting..."

#dmsetup wait dm-test-1
#dmsetup wait dm-test-2
#dmsetup wait dm-test-3
#dmsetup wait dm-test-4

echo "Device Mapper Removing Devices..."

dmsetup remove dm-test-1
dmsetup remove dm-test-2
dmsetup remove dm-test-3
dmsetup remove dm-test-4

echo "Device Mapper Re-Creating Devices..."

dmsetup create dm-test-1 ltp-dev-mapper-table1
dmsetup create dm-test-2 ltp-dev-mapper-table2
dmsetup create dm-test-3 ltp-dev-mapper-table3
dmsetup create dm-test-4 ltp-dev-mapper-table4

echo "Re-Naming Devices..."

dmsetup rename dm-test-1 dm-test-1-new
dmsetup rename dm-test-2 dm-test-2-new
dmsetup rename dm-test-3 dm-test-3-new
dmsetup rename dm-test-4 dm-test-4-new

echo "Suspend Devices..."

dmsetup suspend dm-test-1-new
dmsetup suspend dm-test-2-new
dmsetup suspend dm-test-3-new
dmsetup suspend dm-test-4-new

echo "0 102400 linear " $part1 "0" > ltp-dev-mapper-table1
echo "0 200000 linear " $part1 "0" > ltp-dev-mapper-table2
echo "0 200000 linear " $part2 "0" > ltp-dev-mapper-table3
echo "0 400000 striped 2 16 " $part1 "0" $part2 "0" > ltp-dev-mapper-table4

echo "Re-loading Devices..."

dmsetup reload dm-test-1-new ltp-dev-mapper-table1
dmsetup reload dm-test-2-new ltp-dev-mapper-table2
dmsetup reload dm-test-3-new ltp-dev-mapper-table3
dmsetup reload dm-test-4-new ltp-dev-mapper-table4

echo "Resuming Devices..."

dmsetup resume dm-test-1-new
dmsetup resume dm-test-2-new
dmsetup resume dm-test-3-new
dmsetup resume dm-test-4-new

echo "Device Info..."

dmsetup info dm-test-1-new
dmsetup info dm-test-2-new
dmsetup info dm-test-3-new
dmsetup info dm-test-4-new

echo "Device Dependancies..."

dmsetup deps dm-test-1-new
dmsetup deps dm-test-2-new
dmsetup deps dm-test-3-new
dmsetup deps dm-test-4-new

echo "Device Status..."

dmsetup status dm-test-1-new
dmsetup status dm-test-2-new
dmsetup status dm-test-3-new
dmsetup status dm-test-4-new

echo "Device Tables..."

dmsetup table dm-test-1-new
dmsetup table dm-test-2-new
dmsetup table dm-test-3-new
dmsetup table dm-test-4-new

echo "Device Mapper Remove-all..."

dmsetup remove_all

echo "Device Mapper Checking Status - Shouldn't be anything to check"

dmsetup status dm-test-1-new
dmsetup status dm-test-2-new
dmsetup status dm-test-3-new
dmsetup status dm-test-4-new


