Home | History | Annotate | Download | only in testscripts
      1 #!/bin/bash
      2 
      3 # Check if scsi_debug module was built or not
      4 export kernel=$(uname -r)
      5 
      6 ls /lib/modules/$kernel/kernel/drivers/scsi | grep scsi_debug > /dev/null 2>&1
      7 if [ $? -ne 0 ];
      8 then
      9 	echo "scsi_debug was not built in the kernel as a module"
     10 	echo "Build scsi_debug as a module first before running the test"
     11 fi
     12 
     13 # Unload scsi_debug moudle if it was already loaded:
     14 lsmod | grep scsi_debug > /dev/null 2>&1
     15 if [ $? -eq 0 ];
     16 then
     17         echo "The scsi_debug module was already loaded, unload it before test..."
     18 	rmmod -f scsi_debug
     19 fi
     20 lsmod | grep scsi_debug > /dev/null 2>&1
     21 if [ $? -eq 0 ];
     22 then
     23         echo "The scsi_debug module was not unloaded - unload error"
     24 else
     25         echo "The scsi_debug module was unloaded successfully"
     26 	echo "start testing..."
     27 fi
     28 
     29 orig_count=$(cat /proc/partitions | wc -l)
     30 
     31 echo " Load the scsi_debug module..."
     32 modprobe scsi_debug
     33 if [ $? -ne 0 ];
     34 then
     35         echo "Can't load scsi_debug modules"
     36 	exit
     37 fi
     38 
     39 echo "Check if scsi_debug was loaded..."
     40 lsmod | grep scsi_debug > /dev/null 2>&1
     41 if [ $? -eq 0 ];
     42 then
     43         echo "scsi_debug module was loaded successfully"
     44 else
     45 	echo "scsi_debug module was not loaded"
     46 	exit
     47 fi
     48 
     49 
     50 echo "Remove the scsi_debug device..."
     51 dev_name=$(ls /proc/scsi/scsi_debug)
     52 # echo $dev_name
     53 rm_dev=$dev_name:0:0:0
     54 # echo $rm_dev
     55 echo 1 > /sys/class/scsi_device/$rm_dev/device/delete
     56 
     57 echo "Check if the scsi_debug device was removed..."
     58 ls /sys/class/scsi_device | grep $rm_dev > /dev/null 2>&1
     59 if [ $? -eq 0 ];
     60 then
     61         echo "The device was not removed - remove error"
     62 else
     63 	echo "The device $dev_name was removed successfully"
     64 fi
     65 
     66 echo "Add the device back..."
     67 echo "0 0 0" > /sys/class/scsi_host/host$dev_name/scan
     68 ls /sys/class/scsi_device | grep $rm_dev > /dev/null 2>&1
     69 if [ $? -ne 0 ];
     70 then
     71         echo "The device was not added - add device error"
     72 else
     73         echo "The device $dev_name was added back successfully"
     74 fi
     75 
     76 echo "Add a new host..."
     77 echo 1 > /sys/bus/pseudo/drivers/scsi_debug/add_host
     78 num_host=$(cat /sys/bus/pseudo/drivers/scsi_debug/add_host)
     79 if [ $num_host -ne 2 ];
     80 then
     81 	echo "The new host was not added - add host error"
     82 else
     83 	echo "The new host was added successfully"
     84 fi
     85 
     86 echo "Romove hosts..."
     87 echo -2 > /sys/bus/pseudo/drivers/scsi_debug/add_host
     88 num_host=$(cat /sys/bus/pseudo/drivers/scsi_debug/add_host)
     89 if [ $num_host -ne 0 ];
     90 then
     91         echo "The hosts were not removed - remove hosts error"
     92 else
     93 	echo "The hosts were removed successfully"
     94 fi
     95 
     96 echo "Unload scsi_debug moudle..."
     97 rmmod -f scsi_debug
     98 lsmod | grep scsi_debug > /dev/null 2>&1
     99 if [ $? -eq 0 ];
    100 then
    101         echo "The scsi_debug module was not unloaded - unload error"
    102 else
    103         echo "The scsi_debug module was unloaded successfully"
    104 fi
    105 
    106 echo "Load scsi_debug with multiple hosts..."
    107 modprobe scsi_debug max_luns=2 num_tgts=2 add_host=2 dev_size_mb=20
    108 lsmod | grep scsi_debug > /dev/null 2>&1
    109 if [ $? -eq 0 ];
    110 then
    111         echo "The multiple scsi_debug modules were loaded successfully"
    112 else
    113         echo "The multiple scsi_debug modules were not loaded - load error"
    114 fi
    115 
    116 echo "Check if modules were loaded as required by premeters..."
    117 max_luns=$(cat /sys/bus/pseudo/drivers/scsi_debug/max_luns)
    118 add_host=$(cat /sys/bus/pseudo/drivers/scsi_debug/add_host)
    119 num_tgts=$(cat /sys/bus/pseudo/drivers/scsi_debug/num_tgts)
    120 # echo "max_lunx is $max_luns"
    121 # echo "add_host is $add_host"
    122 # echo "num_tgts is $num_tgts"
    123 
    124 premeter_err_ct=0;
    125 
    126 if [ $max_luns -ne 2 ];
    127 then
    128 	echo "max_luns was not correct"
    129 	premeter_err_ct=$premeter_err_ct+1;
    130 fi
    131 if [ $add_host -ne 2 ];
    132 then
    133         echo "add_host was not correct"
    134 	premeter_err_ct=$premeter_err_ct+1;
    135 fi
    136 if [ $num_tgts -ne 2 ];
    137 then
    138         echo "num_tgts was not correct"
    139 	premeter_err_ct=$premeter_err_ct+1;
    140 fi
    141 if [ $premeter_err_ct -eq 0 ];
    142 then
    143 	echo "multiple scsi_debug was loaded as required premeters"
    144 else
    145 	echo "multip.e scsi_debug was not loaded as required premeters"
    146 fi
    147 echo "scsi_debug first part of test has been done."
    148 
    149 echo "Now we are doing fs test for scsi_debug driver..."
    150 
    151 cd `dirname $0`
    152 export LTPROOT=${PWD}
    153 echo $LTPROOT | grep testscripts > /dev/null 2>&1
    154 if [ $? -eq 0 ]; then
    155  cd ..
    156  export LTPROOT=${PWD}
    157 fi
    158 
    159 export TMPBASE="/tmp"
    160 
    161 # check if the newly created scsi_debug partitions are in /proc/partitions file
    162 check_count=$(cat /proc/partitions | wc -l)
    163 save_count=$(( $check_count - $orig_count ))
    164 if [ $save_count -lt 4 ]; then
    165 	echo "Not enough scsi_debug partitions to run the test"
    166 	exit
    167 fi
    168 
    169 # Get the 4 partitions created by scsi_debug for testing
    170 cat /proc/partitions | awk '{print $4}' | tail -n 4 > $TMPBASE/partition-test
    171 echo "The 4 partitions used to run the test are:"
    172 part1=$(cat $TMPBASE/partition-test | tail -n 1)
    173 echo $part1
    174 part2=$(cat $TMPBASE/partition-test | head -n 3 | tail -n 1)
    175 echo $part2
    176 part3=$(cat $TMPBASE/partition-test | head -n 2 | tail -n 1)
    177 echo $part3
    178 part4=$(cat $TMPBASE/partition-test | head -n 1)
    179 echo $part4
    180 
    181 export PATH="${PATH}:${LTPROOT}/testcases/bin"
    182 
    183 mkdir /test                   >/dev/null 2>&1
    184 mkdir /test/growfiles         >/dev/null 2>&1
    185 mkdir /test/growfiles/ext2    >/dev/null 2>&1
    186 mkdir /test/growfiles/ext3    >/dev/null 2>&1
    187 mkdir /test/growfiles/reiser  >/dev/null 2>&1
    188 mkdir /test/growfiles/msdos     >/dev/null 2>&1
    189 
    190 echo "----- make ext3 fs -----"
    191 mkfs -V -t ext3     /dev/$part1
    192 echo "----- make ext2 fs -----"
    193 mkfs -V -t ext2	    /dev/$part2
    194 echo "----- make reiserfs fs -----"
    195 mkreiserfs -f          /dev/$part3
    196 echo "----- make msdos fs -----"
    197 mkfs -V -t msdos -I     /dev/$part4
    198 
    199 echo "----- Mount partitions -----"
    200 mount /dev/$part1 /test/growfiles/ext3
    201 mount /dev/$part2 /test/growfiles/ext2
    202 mount /dev/$part3 /test/growfiles/reiser
    203 mount /dev/$part4 /test/growfiles/msdos
    204 
    205 echo "----- Running tests ----- "
    206 echo "The test may take about 2 hours to finish..."
    207 ${LTPROOT}/bin/rand_lines -g ${LTPROOT}/runtest/scsi_debug.part1 > ${TMPBASE}/scsi_debug
    208 
    209 ${LTPROOT}/bin/ltp-pan -e -S -a scsi_debug -n scsi_debug -l ${TMPBASE}/fs-scsi_debug.log -o ${TMPBASE}/fs-scsi_debug.out -f ${TMPBASE}/scsi_debug
    210 
    211 wait $!
    212 
    213 umount -v /dev/$part1
    214 umount -v /dev/$part2
    215 umount -v /dev/$part3
    216 umount -v /dev/$part4
    217 
    218 echo "Look into /tmp/fs-scsi_debug.log and /tmp/fs-scsi_debug.out for detail results..."
    219