diff --git a/common/config b/common/config index 1cb08c0e..e9971fdf 100644 --- a/common/config +++ b/common/config @@ -188,6 +188,8 @@ export LOGGER_PROG="`set_prog_path logger`" export DBENCH_PROG="`set_prog_path dbench`" export DMSETUP_PROG="`set_prog_path dmsetup`" export WIPEFS_PROG="`set_prog_path wipefs`" +export DUMP_PROG="`set_prog_path dump`" +export RESTORE_PROG="`set_prog_path restore`" # Generate a comparable xfsprogs version number in the form of # major * 10000 + minor * 100 + release diff --git a/tests/ext4/004 b/tests/ext4/004 new file mode 100755 index 00000000..b24b627f --- /dev/null +++ b/tests/ext4/004 @@ -0,0 +1,89 @@ +#! /bin/bash +# FSQA Test No. 004 +# +# Test "dump | restore"(as opposed to a tape) +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* + # remove the generated data, which is much and meaningless. + rm -rf $restore_dir +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +dump_dir=$SCRATCH_MNT/dump_restore_dir +restore_dir=$TEST_DIR/dump_restore_dir + +workout() +{ + echo "Run fsstress" >> $seqres.full + args=`_scale_fsstress_args -z -f creat=5 -f write=20 -f mkdir=5 -n 1000 -p 15 -d $dump_dir` + echo "fsstress $args" >> $seqres.full + + $FSSTRESS_PROG $args >> $seqres.full 2>&1 + + echo "start Dump/Restore" >> $seqres.full + cd $TEST_DIR + + $DUMP_PROG -0 -f - $dump_dir 2>/dev/null | $RESTORE_PROG -urvf - >> $seqres.full 2>&1 + if [ $? -ne 0 ];then + _fail "Dump/Restore failed" + fi + + rm -rf restoresymtable +} + +# real QA test starts here +_supported_fs ext4 +_supported_os Linux + +_require_test +_require_scratch + +_require_command $DUMP_PROG +_require_command $RESTORE_PROG + +rm -f $seqres.full +echo "Silence is golden" + +_scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seqres.full 2>&1 +_scratch_mount +rm -rf $restore_dir $TEST_DIR/restoresymtable + +workout +diff -r $dump_dir $restore_dir + +status=0 +exit diff --git a/tests/ext4/004.out b/tests/ext4/004.out new file mode 100644 index 00000000..af8614ae --- /dev/null +++ b/tests/ext4/004.out @@ -0,0 +1,2 @@ +QA output created by 004 +Silence is golden diff --git a/tests/ext4/group b/tests/ext4/group index aa6a53b1..e7f1f2a3 100644 --- a/tests/ext4/group +++ b/tests/ext4/group @@ -6,6 +6,7 @@ 001 auto prealloc quick 002 auto quick prealloc 003 auto quick +004 auto dump 271 auto rw quick 301 aio dangerous ioctl rw stress 302 aio dangerous ioctl rw stress @@ -14,4 +15,4 @@ 305 auto 306 auto rw resize quick 307 auto ioctl rw -308 auto ioctl rw prealloc quick \ No newline at end of file +308 auto ioctl rw prealloc quick