]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
xfstests: add 267 and 268 for multiple media files
authorBill Kendall <wkendall@sgi.com>
Thu, 3 Nov 2011 10:10:21 +0000 (10:10 +0000)
committerChristoph Hellwig <hch@lst.de>
Thu, 3 Nov 2011 10:16:13 +0000 (10:16 +0000)
This patch adds a couple of tests for xfsdump when multiple media files
are used. 267 tests the case where a file is split across multiple media
files, and 268 tests the case where a file ends on one media file and
the next media file starts on another file. These tests use a small
media file size (xfsdump -d) so that they don't rely on having to hit
end-of-tape.

Signed-off-by: Bill Kendall <wkendall@sgi.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
267 [new file with mode: 0644]
267.out [new file with mode: 0644]
268 [new file with mode: 0644]
268.out [new file with mode: 0644]
common.dump
group

diff --git a/267 b/267
new file mode 100644 (file)
index 0000000..2ef8dd3
--- /dev/null
+++ b/267
@@ -0,0 +1,75 @@
+#! /bin/bash
+# FS QA Test No. 267
+#
+# Test xfsdump with a file spanning multiple media files.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 SGI.  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
+#-----------------------------------------------------------------------
+#
+# creator
+owner=wkendall@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+#
+# create a 40 MiB file with an extended attr.
+# xfsdump writes file data in "extent groups", currently 16 MiB in size. After
+# writing an extent group or finishing a file, xfsdump will start a new media
+# file if it is over the suggested size. With a single 40 MiB file and using a
+# suggested media file size of 12 MiB below, this dump will be contained in 3
+# media files.
+#
+_create_files()
+{
+    cat <<End-of-File >$tmp.config
+# pathname     size            user    group    perm   name value namespace
+biggg          41943040        $nobody $nobody  777    attr1 some_text1  root
+End-of-File
+
+    _wipe_fs
+    _do_create_dumpdir_fill
+    _stable_fs
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.dump
+. ./common.attr
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux
+
+_require_tape $TAPE_DEV
+_require_attrs
+
+_create_files
+_erase_hard
+_do_dump -d 12
+_do_restore
+_ls_compare_sub
+_diff_compare
+_diff_compare_eas
+
+# success, all done
+exit
diff --git a/267.out b/267.out
new file mode 100644 (file)
index 0000000..2d0b943
--- /dev/null
+++ b/267.out
@@ -0,0 +1,88 @@
+QA output created by 267
+Put scsi tape driver into variable block size mode
+Creating directory system to dump using src/fill.
+Setup Attribute "attr1" set to a 10 byte value for biggg:
+some_text1
+.
+Erasing tape
+Dumping to tape...
+xfsdump  -d12 -f TAPE_DEV -M stress_tape_media -L stress_267 SCRATCH_MNT
+xfsdump: using scsi tape (drive_scsitape) strategy
+xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
+xfsdump: dump date: DATE
+xfsdump: session id: ID
+xfsdump: session label: "stress_267"
+xfsdump: ino map <PHASES>
+xfsdump: ino map construction complete
+xfsdump: estimated dump size: NUM bytes
+xfsdump: /var/xfsdump/inventory created
+xfsdump: preparing drive
+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: creating dump session media file 1 (media 0, file 1)
+xfsdump: dumping ino map
+xfsdump: dumping directories
+xfsdump: dumping non-directory files
+xfsdump: ending media file
+xfsdump: media file size NUM bytes
+xfsdump: creating dump session media file 2 (media 0, file 2)
+xfsdump: dumping ino map
+xfsdump: dumping directories
+xfsdump: dumping non-directory files
+xfsdump: ending media file
+xfsdump: media file size NUM bytes
+xfsdump: dumping session inventory
+xfsdump: beginning inventory media file
+xfsdump: media file 3 (media 0, file 3)
+xfsdump: ending inventory media file
+xfsdump: inventory media file size NUM bytes
+xfsdump: writing stream terminator
+xfsdump: beginning media stream terminator
+xfsdump: media file 4 (media 0, file 4)
+xfsdump: ending media stream terminator
+xfsdump: media stream terminator size BLOCKSZ bytes
+xfsdump: dump size (non-dir files) : NUM bytes
+xfsdump: dump complete: SECS seconds elapsed
+xfsdump: Dump Status: SUCCESS
+Rewinding tape
+Restoring from tape...
+xfsrestore  -f TAPE_DEV  -L stress_267 RESTORE_DIR
+xfsrestore: using scsi tape (drive_scsitape) strategy
+xfsrestore: using online session inventory
+xfsrestore: searching media for directory dump
+xfsrestore: preparing drive
+xfsrestore: examining media file 0
+xfsrestore: reading directories
+xfsrestore: 2 directories and 2 entries processed
+xfsrestore: directory post-processing
+xfsrestore: restoring non-directory files
+xfsrestore: examining media file 1
+xfsrestore: seeking past media file directory dump
+xfsrestore: restoring non-directory files
+xfsrestore: examining media file 2
+xfsrestore: seeking past media file directory dump
+xfsrestore: restoring non-directory files
+xfsrestore: restore complete: SECS seconds elapsed
+xfsrestore: Restore Status: SUCCESS
+Comparing listing of dump directory with restore directory
+Files TMP.dump_dir and TMP.restore_dir are identical
+Comparing dump directory with restore directory
+Files DUMP_DIR/biggg and RESTORE_DIR/DUMP_SUBDIR/biggg are identical
+Only in SCRATCH_MNT: RESTORE_SUBDIR
+Comparing dump directory with restore directory
+Looking at the extended attributes (EAs)
+EAs on dump
+User names
+Root names
+Attribute "attr1" had a 10 byte value for DUMP_DIR/biggg:
+some_text1
+EAs on restore
+User names
+Root names
+Attribute "attr1" had a 10 byte value for DUMP_DIR/biggg:
+some_text1
+Files 267.ea1 and 267.ea2 are identical
diff --git a/268 b/268
new file mode 100644 (file)
index 0000000..e1decd9
--- /dev/null
+++ b/268
@@ -0,0 +1,78 @@
+#! /bin/bash
+# FS QA Test No. 268
+#
+# Test xfsdump with multiple media files where a file ends
+# at the end of the first media file (i.e., no file is split
+# across media files).
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2011 SGI.  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
+#-----------------------------------------------------------------------
+#
+# creator
+owner=wkendall@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+#
+# create two 12 MiB files with extended attrs.
+# xfsdump writes file data in "extent groups", currently 16 MiB in size. After
+# writing an extent group or finishing a file, xfsdump will start a new media
+# file if it is over the suggested size. A media file size of 8 MiB is used
+# below, so after dumping a 12 MiB file xfsdump will start a new media file and
+# no file will be split across a media file.
+#
+_create_files()
+{
+    cat <<End-of-File >$tmp.config
+# pathname     size            user    group    perm   name value namespace
+bigg1          12582912        $nobody $nobody  777    attr1 some_text1  root
+bigg2          12582912        $nobody $nobody  777    attr2 some_text2  user
+End-of-File
+
+    _wipe_fs
+    _do_create_dumpdir_fill
+    _stable_fs
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.dump
+. ./common.attr
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux
+
+_require_tape $TAPE_DEV
+_require_attrs
+
+_create_files
+_erase_hard
+_do_dump -d 8
+_do_restore
+_ls_compare_sub
+_diff_compare
+_diff_compare_eas
+
+# success, all done
+exit
diff --git a/268.out b/268.out
new file mode 100644 (file)
index 0000000..197d361
--- /dev/null
+++ b/268.out
@@ -0,0 +1,86 @@
+QA output created by 268
+Put scsi tape driver into variable block size mode
+Creating directory system to dump using src/fill.
+Setup Attribute "attr1" set to a 10 byte value for bigg1:
+some_text1
+.Attribute "attr2" set to a 10 byte value for bigg2:
+some_text2
+.
+Erasing tape
+Dumping to tape...
+xfsdump  -d8 -f TAPE_DEV -M stress_tape_media -L stress_268 SCRATCH_MNT
+xfsdump: using scsi tape (drive_scsitape) strategy
+xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
+xfsdump: dump date: DATE
+xfsdump: session id: ID
+xfsdump: session label: "stress_268"
+xfsdump: ino map <PHASES>
+xfsdump: ino map construction complete
+xfsdump: estimated dump size: NUM bytes
+xfsdump: /var/xfsdump/inventory created
+xfsdump: preparing drive
+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: creating dump session media file 1 (media 0, file 1)
+xfsdump: dumping ino map
+xfsdump: dumping directories
+xfsdump: dumping non-directory files
+xfsdump: ending media file
+xfsdump: media file size NUM bytes
+xfsdump: dumping session inventory
+xfsdump: beginning inventory media file
+xfsdump: media file 2 (media 0, file 2)
+xfsdump: ending inventory media file
+xfsdump: inventory media file size NUM bytes
+xfsdump: writing stream terminator
+xfsdump: beginning media stream terminator
+xfsdump: media file 3 (media 0, file 3)
+xfsdump: ending media stream terminator
+xfsdump: media stream terminator size BLOCKSZ bytes
+xfsdump: dump size (non-dir files) : NUM bytes
+xfsdump: dump complete: SECS seconds elapsed
+xfsdump: Dump Status: SUCCESS
+Rewinding tape
+Restoring from tape...
+xfsrestore  -f TAPE_DEV  -L stress_268 RESTORE_DIR
+xfsrestore: using scsi tape (drive_scsitape) strategy
+xfsrestore: using online session inventory
+xfsrestore: searching media for directory dump
+xfsrestore: preparing drive
+xfsrestore: examining media file 0
+xfsrestore: reading directories
+xfsrestore: 2 directories and 3 entries processed
+xfsrestore: directory post-processing
+xfsrestore: restoring non-directory files
+xfsrestore: examining media file 1
+xfsrestore: seeking past media file directory dump
+xfsrestore: restoring non-directory files
+xfsrestore: restore complete: SECS seconds elapsed
+xfsrestore: Restore Status: SUCCESS
+Comparing listing of dump directory with restore directory
+Files TMP.dump_dir and TMP.restore_dir are identical
+Comparing dump directory with restore directory
+Files DUMP_DIR/bigg1 and RESTORE_DIR/DUMP_SUBDIR/bigg1 are identical
+Files DUMP_DIR/bigg2 and RESTORE_DIR/DUMP_SUBDIR/bigg2 are identical
+Only in SCRATCH_MNT: RESTORE_SUBDIR
+Comparing dump directory with restore directory
+Looking at the extended attributes (EAs)
+EAs on dump
+User names
+Attribute "attr2" had a 10 byte value for DUMP_DIR/bigg2:
+some_text2
+Root names
+Attribute "attr1" had a 10 byte value for DUMP_DIR/bigg1:
+some_text1
+EAs on restore
+User names
+Attribute "attr2" had a 10 byte value for DUMP_DIR/bigg2:
+some_text2
+Root names
+Attribute "attr1" had a 10 byte value for DUMP_DIR/bigg1:
+some_text1
+Files 268.ea1 and 268.ea2 are identical
index d9e65651c450a336e654d995dcb8bb4ffdf04bfa..3942e8304126bfbd4c8b6b8c716cdf2b659f8f79 100644 (file)
@@ -909,9 +909,9 @@ _parse_args()
         -Q)
             do_quota_check=false
             ;;
-        -l)
-            [ -z "$2" ] && _fail "missing argument for -l"
-           dump_args="$dump_args -l$2"
+        -l|-d)
+            [ -z "$2" ] && _fail "missing argument for $1"
+           dump_args="$dump_args $1$2"
            shift
             ;;
        *)
diff --git a/group b/group
index 0c2a02715a0f90741659c5ff94bf4ca4a973bf49..aaa8eba2d27f0f2398abecf428745273236c9984 100644 (file)
--- a/group
+++ b/group
@@ -380,3 +380,5 @@ deprecated
 264 auto
 265 auto
 266 dump ioctl auto quick
+267 dump ioctl tape
+268 dump ioctl tape