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