if ! test -x $RESIZE2FS_EXE -o ! -x $DEBUGFS_EXE; then
	echo "$test_name: $test_description: skipped (no debugfs/resize2fs)"
	return 0
fi

FSCK_OPT=-yf
OUT=$test_name.log
if [ -f $test_dir/expect.gz ]; then
	EXP=$test_name.tmp
	gunzip < $test_dir/expect.gz > $EXP1
else
	EXP=$test_dir/expect
fi

dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1

echo mke2fs -q -F -o Linux -b 1024 -g 256 test.img 1024 > $OUT.new
$MKE2FS -q -F -o Linux -b 1024 -g 256 $TMPFILE 1024 >> $OUT.new 2>&1

echo resize2fs -p test.img 10000 >> $OUT.new
$RESIZE2FS -p $TMPFILE 10000 >> $OUT.new 2>&1

$FSCK $FSCK_OPT  -N test_filesys $TMPFILE >> $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new

$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1
$TUNE2FS -c 20 -U clear $TMPFILE  >/dev/null 2>&1

echo dumpe2fs test.img >> $OUT.new
$DUMPE2FS $TMPFILE >> $OUT.new 2>&1

echo "--------------------------------" >> $OUT.new

echo resize2fs -p test.img 20000 >> $OUT.new
$RESIZE2FS -p $TMPFILE 20000 >> $OUT.new 2>&1

$FSCK $FSCK_OPT  -N test_filesys $TMPFILE >> $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new

$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1
$TUNE2FS -c 20 -U clear $TMPFILE  >/dev/null 2>&1

echo dumpe2fs test.img >> $OUT.new
$DUMPE2FS $TMPFILE >> $OUT.new 2>&1

echo "--------------------------------" >> $OUT.new

echo resize2fs -p test.img 30000 >> $OUT.new
$RESIZE2FS -p $TMPFILE 30000 >> $OUT.new 2>&1

$FSCK $FSCK_OPT  -N test_filesys $TMPFILE >> $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new

$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1
$TUNE2FS -c 20 -U clear $TMPFILE  >/dev/null 2>&1

echo dumpe2fs test.img >> $OUT.new
$DUMPE2FS $TMPFILE >> $OUT.new 2>&1

echo "--------------------------------" >> $OUT.new

echo resize2fs -p test.img 40000 >> $OUT.new
$RESIZE2FS -p $TMPFILE 40000 >> $OUT.new 2>&1

$FSCK $FSCK_OPT  -N test_filesys $TMPFILE >> $OUT.new 2>&1
status=$?
echo Exit status is $status >> $OUT.new

$DEBUGFS -R "set_super_value lastcheck 0" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value hash_seed null" -w $TMPFILE >/dev/null 2>&1
$DEBUGFS -R "set_super_value mkfs_time 0" -w $TMPFILE >/dev/null 2>&1
$TUNE2FS -c 20 -U clear $TMPFILE  >/dev/null 2>&1

echo dumpe2fs test.img >> $OUT.new
$DUMPE2FS $TMPFILE >> $OUT.new 2>&1
sed -f $cmd_dir/filter.sed -e '/Block bitmap.*$/N;s/\n  Inode bitmap/, Inode bitmap/g' < $OUT.new > $OUT
rm -f $TMPFILE $OUT.new

cmp -s $OUT $EXP
status=$?

if [ "$status" = 0 ] ; then
	echo "$test_name: $test_description: ok"
	touch $test_name.ok
else
	echo "$test_name: $test_description: failed"
	diff $DIFF_OPTS $EXP $OUT > $test_name.failed
	rm -f $test_name.tmp
fi

unset IMAGE FSCK_OPT OUT EXP
