--- /dev/null
+#!/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