Home | History | Annotate | Download | only in scripts
      1 #!/bin/bash
      2 
      3 IMG=../test.img
      4 TMP=/tmp/res
      5 XFSTESTS=~/xfstests
      6 TESTS="4 5 8 11 16 25 32 55 64"
      7 
      8 TARGET=./testdir
      9 MNT=/mnt/resize
     10 
     11 mkdir $TARGET 2>/dev/null
     12 mkdir $MNT 2>/dev/null
     13 
     14 umount $TARGET
     15 umount $MNT
     16 
     17 _check_out()
     18 {
     19 	if [ $1 -ne 0 ]; then
     20 		grep ASSERT $TMP
     21 		echo FAIL RETURN $1
     22 		exit
     23 	fi
     24 }
     25 
     26 _get_sec()
     27 {
     28 	echo $(($1*1024*1024*1024/512))
     29 }
     30 
     31 _mkfs()
     32 {
     33 	echo "========== Initialize $1 GB ============"
     34 	mkfs.f2fs $IMG `_get_sec $1` | grep sectors
     35 }
     36 
     37 _mount()
     38 {
     39 	echo "========== mount to $1 ================="
     40 	mount -t f2fs -o loop,discard,inline_data,inline_xattr $IMG $1 2>&1
     41 	_check_out $?
     42 }
     43 
     44 _fsck()
     45 {
     46 	echo "========== fsck.f2fs ==================="
     47 	fsck.f2fs $IMG -t 2>&1 >$TMP
     48 	_check_out $?
     49 	grep FSCK $TMP
     50 }
     51 
     52 _fsstress()
     53 {
     54 	echo "========== fsstress $1 ================="
     55 	$XFSTESTS/ltp/fsstress -x "echo 3 > /proc/sys/vm/drop_caches && sleep 1" -X 1 -r -f fsync=8 -f sync=0 -f write=8 -f dwrite=2 -f truncate=6 -f allocsp=0 -f bulkstat=0 -f bulkstat1=0 -f freesp=0 -f zero=1 -f collapse=1 -f insert=1 -f resvsp=0 -f unresvsp=0 -S t -p 10 -n $2 -d $1 >/dev/null
     56 }
     57 
     58 _resize()
     59 {
     60 	echo "========== resize.f2fs $1 GB ==========="
     61 	resize.f2fs -t `_get_sec $1` $IMG 2>&1 >$TMP
     62 	_check_out $?
     63 	_fsck
     64 }
     65 
     66 _resize_tests()
     67 {
     68 	for i in $TESTS
     69 	do
     70 		if [ $i -ge $1 ]; then
     71 			_resize $i
     72 		fi
     73 	done
     74 }
     75 
     76 _sload()
     77 {
     78 	echo "========== sload $1 ===================="
     79 	sload.f2fs -f $1 $IMG 2>&1
     80 	_check_out $?
     81 }
     82 
     83 from_mount()
     84 {
     85 	echo ""
     86 	echo " ****  $1 GB to $2 GB with $3 *** "
     87 	_mkfs $1
     88 	_mount $3
     89 	_fsstress $3 10000
     90 	umount $3
     91 	_fsck
     92 	_resize_tests $2
     93 }
     94 
     95 from_sload()
     96 {
     97 	echo ""
     98 	echo " ****  $1 GB to $2 GB with $3 *** "
     99 
    100 	_mkfs $1
    101 	_sload $3
    102 	_fsck
    103 
    104 	_mount $MNT
    105 	_fsstress $MNT 10000
    106 	umount $MNT
    107 	_fsck
    108 
    109 	_resize_tests $2
    110 
    111 	_mount $MNT
    112 	_fsstress $MNT 10000
    113 	umount $MNT
    114 	_fsck
    115 }
    116 
    117 test_all()
    118 {
    119 	for i in $TESTS
    120 	do
    121 		for j in $TESTS
    122 		do
    123 			if [ $i -lt $j ]; then
    124 				$1 $i $j $2
    125 			fi
    126 		done
    127 	done
    128 }
    129 
    130 test_all from_sload ~/grub
    131 
    132 rm -rf $TARGET/*
    133 _fsstress $TARGET 5000
    134 test_all from_sload $TARGET
    135 rm -rf $TARGET 2>/dev/null
    136 
    137 test_all from_mount $MNT
    138