diff mbox

xfs: test larger dump/restore to/from file

Message ID 543AF1F1.8010103@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Eric Sandeen Oct. 12, 2014, 9:26 p.m. UTC
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>

To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox


diff --git a/common/dump b/common/dump
index 7fe50f6..c42eb2c 100644
--- a/common/dump
+++ b/common/dump
@@ -298,15 +298,16 @@  _stable_fs()
 # files,dirs,links,symlinks
 # Pinched from test 013.
+# Takes one argument, the number of ops to perform
     echo "Creating directory system to dump using fsstress."
+    _count=$1
     _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()
+_create_dumpdir_stress() {
+	_create_dumpdir_stress_num 240
     cat <<End-of-File >$tmp.config
diff --git a/tests/xfs/307 b/tests/xfs/307
new file mode 100755
index 0000000..cc267ad
--- /dev/null
+++ b/tests/xfs/307
@@ -0,0 +1,50 @@ 
+#! /bin/bash
+# FS QA Test No. 307
+# 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
+# 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`
+echo "QA output created by $seq"
+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
+# success, all done
diff --git a/tests/xfs/307.out b/tests/xfs/307.out
new file mode 100644
index 0000000..61b8c12
--- /dev/null
+++ b/tests/xfs/307.out
@@ -0,0 +1,47 @@ 
+QA output created by 307
+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
diff --git a/tests/xfs/group b/tests/xfs/group
index 09bce15..c1eace0 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -198,3 +198,4 @@ 
 304 auto quick quota
 305 auto quota
 306 auto stress log metadata repair
+307 auto stress dump