xfs: test larger dump/restore to/from file

This test creates a large-ish directory structure using
fsstress, and does a dump/restore to make sure we dump
all the files.

Without the fix for the regression caused by:
c7cb51d xfs: fix error handling at xfs_inumbers

we will see failures like:

    -xfsrestore: 486 directories and 1590 entries processed
    +xfsrestore: 30 directories and 227 entries processed

as it fails to process all inodes.

I think that existing tests have a much smaller set of files,
and so don't trip the bug.

I don't do a file-by-file comparison here, because for some
reason the diff output gets garbled; this test only checks
that we've dumped & restored the correct number of files.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Eric Sandeen
2014-10-14 22:59:39 +11:00
committed by Dave Chinner
parent cf1438248c
commit 481c28f52f
4 changed files with 105 additions and 2 deletions
+7 -2
View File
@@ -298,15 +298,16 @@ _stable_fs()
# files,dirs,links,symlinks
#
# Pinched from test 013.
# Takes one argument, the number of ops to perform
#
_create_dumpdir_stress()
_create_dumpdir_stress_num()
{
echo "Creating directory system to dump using fsstress."
_count=$1
_wipe_fs
_param="-f link=10 -f creat=10 -f mkdir=10 -f truncate=5 -f symlink=10"
_count=240
rm -rf $dump_dir
if ! mkdir $dump_dir; then
echo " failed to mkdir $dump_dir"
@@ -331,6 +332,10 @@ _create_dumpdir_stress()
_stable_fs
}
_create_dumpdir_stress() {
_create_dumpdir_stress_num 240
}
_mk_fillconfig1()
{
cat <<End-of-File >$tmp.config
Executable
+50
View File
@@ -0,0 +1,50 @@
#! /bin/bash
# FS QA Test No. 068
#
# Test out a level 0 dump/restore of a subdir to a file
#
# Use fsstress to create a larger directory structure with a mix of files
# Test for regression caused by
# c7cb51d xfs: fix error handling at xfs_inumbers
#
#-----------------------------------------------------------------------
# Copyright (c) 2014 Eric Sandeen. 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
#
#-----------------------------------------------------------------------
#
seqfull=$0
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=0 # success is the default!
trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
. ./common/rc
. ./common/dump
# real QA test starts here
_supported_fs xfs
_supported_os Linux
_create_dumpdir_stress_num 4096
_do_dump_restore
# success, all done
exit
+47
View File
@@ -0,0 +1,47 @@
QA output created by 068
Creating directory system to dump using fsstress.
-----------------------------------------------
fsstress : -f link=10 -f creat=10 -f mkdir=10 -f truncate=5 -f symlink=10
-----------------------------------------------
xfsdump|xfsrestore ...
xfsdump -s DUMP_SUBDIR - SCRATCH_MNT | xfsrestore - RESTORE_DIR
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: HOSTNAME
xfsrestore: mount point: SCRATCH_MNT
xfsrestore: volume: SCRATCH_DEV
xfsrestore: session time: TIME
xfsrestore: level: 0
xfsrestore: session label: ""
xfsrestore: media label: ""
xfsrestore: file system ID: ID
xfsrestore: session id: ID
xfsrestore: media ID: ID
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 486 directories and 1590 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: SECS seconds elapsed
xfsrestore: Restore Status: SUCCESS
xfsdump: using file dump (drive_simple) strategy
xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
xfsdump: dump date: DATE
xfsdump: session id: ID
xfsdump: session label: ""
xfsdump: ino map <PHASES>
xfsdump: ino map construction complete
xfsdump: estimated dump size: NUM bytes
xfsdump: /var/xfsdump/inventory created
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size NUM bytes
xfsdump: dump size (non-dir files) : NUM bytes
xfsdump: dump complete: SECS seconds elapsed
xfsdump: Dump Status: SUCCESS
+1
View File
@@ -63,6 +63,7 @@
065 dump auto
066 dump ioctl auto quick
067 acl attr auto quick
068 auto stress dump
071 rw auto
072 rw auto prealloc quick
073 copy auto