Message ID | 20230110220058.139131-3-shiina.hironori@fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | xfs: test xfsrestore on multi-level dumpfiles with wrong root | expand |
On Tue, Jan 10, 2023 at 05:00:58PM -0500, Hironori Shiina wrote: > Test 'xfsrestore -x' to correct a wrong root in multi-level dump files. > A root inode number can be wrong in a dump created by problematic > xfsdump (v3.1.7 - v3.1.9) because of bulkstat misuse. > > Signed-off-by: Hironori Shiina <shiina.hironori@fujitsu.com> > --- > tests/xfs/560 | 125 ++++ > tests/xfs/560.out | 1517 +++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 1642 insertions(+) > create mode 100644 tests/xfs/560 > create mode 100644 tests/xfs/560.out > > diff --git a/tests/xfs/560 b/tests/xfs/560 > new file mode 100644 > index 00000000..f4be8ef1 > --- /dev/null > +++ b/tests/xfs/560 > @@ -0,0 +1,125 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2023 Fujitsu Limited. All Rights Reserved. > +# > +# FS QA Test No. 560 > +# > +# Create a filesystem which contains an inode with a lower number > +# than the root inode. Set the lower number to dump files as the root inode > +# and ensure that 'xfsrestore -x' handles this wrong inode for multi-level > +# dumps. This procedure is cribbed from xfs/064 Better to explain what's the difference of this case with xfs/554. Due to you nearly use the same comments, same git commit log and same _fixed_by_git_commit with xfs/554. So what this test focus on? Any new issue can it uncover? Thanks, Zorro > + > +. ./common/preamble > +_begin_fstest auto dump > + > +# Import common functions. > +. ./common/dump > + > +_supported_fs xfs > +_fixed_by_git_commit xfsdump \ > + "XXXXXXXXXXXX xfsrestore: fix rootdir due to xfsdump bulkstat misuse" > +_require_xfs_io_command "falloc" > +_require_scratch > +_require_xfsrestore_xflag > + > +# Create a filesystem which contains a fake root inode > +inums=($(_xfs_create_fake_root)) > +root_inum=${inums[0]} > +fake_inum=${inums[1]} > + > +# Remove unnecessary files > +find $SCRATCH_MNT -not -inum $fake_inum -type f -delete > +# Rename a file root file to the static filename > +find $SCRATCH_MNT -inum $fake_inum -exec mv {} $SCRATCH_MNT/fakeroot \; > + > +# Override the default cleanup function. > +_cleanup() > +{ > + _cleanup_dump > + cd / > + rm -f $tmp.* > +} > + > +_ls_size_filter() > +{ > + # > + # Print size ($5) and fname ($9). > + # The size is significant since we add to the file as part > + # of a file change for the incremental. > + # > + # Filter out the housekeeping files of xfsrestore > + # > + $AWK_PROG 'NF == 9 { print $5, $9 }' |\ > + grep -E -v 'dumpdir|housekeeping|dirattr|dirextattr|namreg|state|tree' > +} > + > + > +_create_dumpdir_hardlinks 9 > + > +echo "Do the incremental dumps" > +i=0 > +while [ $i -le 9 ]; do > + if [ $i -gt 0 ]; then > + sleep 2 > + _modify_level $i > + fi > + > + _stable_fs > + sleep 2 > + > + echo "********* level $i ***********" >>$seqres.full > + date >>$seqres.full > + find $SCRATCH_MNT -exec $here/src/lstat64 {} \; | sed 's/(00.*)//' >$tmp.dates.$i > + if [ $i -gt 0 ]; then > + let level_1=$i-1 > + diff -c $tmp.dates.$level_1 $tmp.dates.$i >>$seqres.full > + else > + cat $tmp.dates.$i >>$seqres.full > + fi > + > + dump_file=$tmp.df.level$i > + _do_dump_file -f $dump_file -l $i > + # Set the wrong root inode number to the dump file > + # as problematic xfsdump used to do. > + $here/src/fake-dump-rootino $dump_file $fake_inum > + > + let i=$i+1 > +done > + > +echo "Listing of what files we start with:" > +ls -l $dump_dir | _ls_size_filter > + > +echo "Look at what files are contained in the inc. dump" > +i=0 > +while [ $i -le 9 ]; do > + echo "" > + echo "restoring from df.level$i" > + _do_restore_toc -x -f $tmp.df.level$i | \ > + sed -e "s/rootino #${fake_inum}/rootino #FAKENO/g" \ > + -e "s/# to ${root_inum}/# to ROOTNO/g" > + let i=$i+1 > +done > + > +echo "Do the cumulative restores" > +_prepare_restore_dir > +i=0 > +while [ $i -le 9 ]; do > + if [ $i -eq 0 ]; then > + # The root inode is fixed at the first restore > + opt='-x' > + else > + opt= > + fi > + echo "" > + echo "restoring from df.level$i" > + _do_restore_file_cum $opt -f $tmp.df.level$i | \ > + sed -e "s/rootino #${fake_inum}/rootino #FAKENO/g" \ > + -e "s/# to ${root_inum}/# to ROOTNO/g" > + echo "ls -l restore_dir" > + ls -lR $restore_dir | _ls_size_filter | _check_quota_file > + let i=$i+1 > +done > + > +# success, all done > +status=0 > +exit > diff --git a/tests/xfs/560.out b/tests/xfs/560.out > new file mode 100644 > index 00000000..0f2236a6 > --- /dev/null > +++ b/tests/xfs/560.out > @@ -0,0 +1,1517 @@ > +QA output created by 560 > +Creating directory system of hardlinks to incrementally dump. > +creating hardlink file1_h1 to file1 > +creating hardlink file1_h2 to file1 > +creating hardlink file1_h3 to file1 > +creating hardlink file1_h4 to file1 > +creating hardlink file1_h5 to file1 > +creating hardlink file2_h1 to file2 > +creating hardlink file2_h2 to file2 > +creating hardlink file2_h3 to file2 > +creating hardlink file2_h4 to file2 > +creating hardlink file2_h5 to file2 > +creating hardlink file3_h1 to file3 > +creating hardlink file3_h2 to file3 > +creating hardlink file3_h3 to file3 > +creating hardlink file3_h4 to file3 > +creating hardlink file3_h5 to file3 > +creating hardlink file4_h1 to file4 > +creating hardlink file4_h2 to file4 > +creating hardlink file4_h3 to file4 > +creating hardlink file4_h4 to file4 > +creating hardlink file4_h5 to file4 > +creating hardlink file5_h1 to file5 > +creating hardlink file5_h2 to file5 > +creating hardlink file5_h3 to file5 > +creating hardlink file5_h4 to file5 > +creating hardlink file5_h5 to file5 > +creating hardlink file6_h1 to file6 > +creating hardlink file6_h2 to file6 > +creating hardlink file6_h3 to file6 > +creating hardlink file6_h4 to file6 > +creating hardlink file6_h5 to file6 > +creating hardlink file7_h1 to file7 > +creating hardlink file7_h2 to file7 > +creating hardlink file7_h3 to file7 > +creating hardlink file7_h4 to file7 > +creating hardlink file7_h5 to file7 > +creating hardlink file8_h1 to file8 > +creating hardlink file8_h2 to file8 > +creating hardlink file8_h3 to file8 > +creating hardlink file8_h4 to file8 > +creating hardlink file8_h5 to file8 > +creating hardlink file9_h1 to file9 > +creating hardlink file9_h2 to file9 > +creating hardlink file9_h3 to file9 > +creating hardlink file9_h4 to file9 > +creating hardlink file9_h5 to file9 > +Do the incremental dumps > +Dumping to file... > +xfsdump -l0 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +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: "stress_560" > +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 > +Dumping to file... > +xfsdump -l1 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 1 incremental dump of HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l2 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 2 incremental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l3 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on level 2 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l4 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 4 incremental dump of HOSTNAME:SCRATCH_MNT based on level 3 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l5 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on level 4 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l6 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 6 incremental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l7 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on level 6 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l8 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 8 incremental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Dumping to file... > +xfsdump -l9 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT > +xfsdump: using file dump (drive_simple) strategy > +xfsdump: level 9 incremental dump of HOSTNAME:SCRATCH_MNT based on level 8 dump begun DATE > +xfsdump: dump date: DATE > +xfsdump: session id: ID > +xfsdump: session label: "stress_560" > +xfsdump: ino map <PHASES> > +xfsdump: ino map construction complete > +xfsdump: estimated dump size: NUM bytes > +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 > +Listing of what files we start with: > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +12 file6 > +12 file6_h1 > +12 file6_h2 > +12 file6_h3 > +12 file6_h4 > +12 file6_h5 > +12 file7 > +12 file7_h1 > +12 file7_h2 > +12 file7_h3 > +12 file7_h4 > +12 file7_h5 > +12 file8 > +12 file8_h1 > +12 file8_h2 > +12 file8_h3 > +12 file8_h4 > +12 file8_h5 > +12 file9 > +12 file9_h1 > +12 file9_h2 > +12 file9_h3 > +12 file9_h4 > +12 file9_h5 > +Look at what files are contained in the inc. dump > + > +restoring from df.level0 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file1 > +dumpdir/file1_h1 > +dumpdir/file1_h2 > +dumpdir/file1_h3 > +dumpdir/file1_h4 > +dumpdir/file1_h5 > +dumpdir/file2 > +dumpdir/file2_h1 > +dumpdir/file2_h2 > +dumpdir/file2_h3 > +dumpdir/file2_h4 > +dumpdir/file2_h5 > +dumpdir/file3 > +dumpdir/file3_h1 > +dumpdir/file3_h2 > +dumpdir/file3_h3 > +dumpdir/file3_h4 > +dumpdir/file3_h5 > +dumpdir/file4 > +dumpdir/file4_h1 > +dumpdir/file4_h2 > +dumpdir/file4_h3 > +dumpdir/file4_h4 > +dumpdir/file4_h5 > +dumpdir/file5 > +dumpdir/file5_h1 > +dumpdir/file5_h2 > +dumpdir/file5_h3 > +dumpdir/file5_h4 > +dumpdir/file5_h5 > +dumpdir/file6 > +dumpdir/file6_h1 > +dumpdir/file6_h2 > +dumpdir/file6_h3 > +dumpdir/file6_h4 > +dumpdir/file6_h5 > +dumpdir/file7 > +dumpdir/file7_h1 > +dumpdir/file7_h2 > +dumpdir/file7_h3 > +dumpdir/file7_h4 > +dumpdir/file7_h5 > +dumpdir/file8 > +dumpdir/file8_h1 > +dumpdir/file8_h2 > +dumpdir/file8_h3 > +dumpdir/file8_h4 > +dumpdir/file8_h5 > +dumpdir/file9 > +dumpdir/file9_h1 > +dumpdir/file9_h2 > +dumpdir/file9_h3 > +dumpdir/file9_h4 > +dumpdir/file9_h5 > +fakeroot > + > +restoring from df.level1 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 1 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file1 > +dumpdir/file1_h1 > +dumpdir/file1_h2 > +dumpdir/file1_h3 > +dumpdir/file1_h4 > +dumpdir/file1_h5 > + > +restoring from df.level2 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 2 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file2 > +dumpdir/file2_h1 > +dumpdir/file2_h2 > +dumpdir/file2_h3 > +dumpdir/file2_h4 > +dumpdir/file2_h5 > + > +restoring from df.level3 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 3 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file3 > +dumpdir/file3_h1 > +dumpdir/file3_h2 > +dumpdir/file3_h3 > +dumpdir/file3_h4 > +dumpdir/file3_h5 > + > +restoring from df.level4 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 4 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file4 > +dumpdir/file4_h1 > +dumpdir/file4_h2 > +dumpdir/file4_h3 > +dumpdir/file4_h4 > +dumpdir/file4_h5 > + > +restoring from df.level5 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 5 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file5 > +dumpdir/file5_h1 > +dumpdir/file5_h2 > +dumpdir/file5_h3 > +dumpdir/file5_h4 > +dumpdir/file5_h5 > + > +restoring from df.level6 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 6 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file6 > +dumpdir/file6_h1 > +dumpdir/file6_h2 > +dumpdir/file6_h3 > +dumpdir/file6_h4 > +dumpdir/file6_h5 > + > +restoring from df.level7 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 7 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file7 > +dumpdir/file7_h1 > +dumpdir/file7_h2 > +dumpdir/file7_h3 > +dumpdir/file7_h4 > +dumpdir/file7_h5 > + > +restoring from df.level8 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 8 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file8 > +dumpdir/file8_h1 > +dumpdir/file8_h2 > +dumpdir/file8_h3 > +dumpdir/file8_h4 > +dumpdir/file8_h5 > + > +restoring from df.level9 > +Contents of dump ... > +xfsrestore -x -f DUMP_FILE -t > +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: 9 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: reading non-directory files > +xfsrestore: table of contents display complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > + > +dumpdir/file9 > +dumpdir/file9_h1 > +dumpdir/file9_h2 > +dumpdir/file9_h3 > +dumpdir/file9_h4 > +dumpdir/file9_h5 > +Do the cumulative restores > + > +restoring from df.level0 > +Restoring cumumlative from file... > +xfsrestore -x -f DUMP_FILE -r 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: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: found fake rootino #FAKENO, will fix. > +xfsrestore: fix root # to ROOTNO (bind mount?) > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +0 file1 > +0 file1_h1 > +0 file1_h2 > +0 file1_h3 > +0 file1_h4 > +0 file1_h5 > +0 file2 > +0 file2_h1 > +0 file2_h2 > +0 file2_h3 > +0 file2_h4 > +0 file2_h5 > +0 file3 > +0 file3_h1 > +0 file3_h2 > +0 file3_h3 > +0 file3_h4 > +0 file3_h5 > +0 file4 > +0 file4_h1 > +0 file4_h2 > +0 file4_h3 > +0 file4_h4 > +0 file4_h5 > +0 file5 > +0 file5_h1 > +0 file5_h2 > +0 file5_h3 > +0 file5_h4 > +0 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level1 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 1 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +0 file2 > +0 file2_h1 > +0 file2_h2 > +0 file2_h3 > +0 file2_h4 > +0 file2_h5 > +0 file3 > +0 file3_h1 > +0 file3_h2 > +0 file3_h3 > +0 file3_h4 > +0 file3_h5 > +0 file4 > +0 file4_h1 > +0 file4_h2 > +0 file4_h3 > +0 file4_h4 > +0 file4_h5 > +0 file5 > +0 file5_h1 > +0 file5_h2 > +0 file5_h3 > +0 file5_h4 > +0 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level2 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 2 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +0 file3 > +0 file3_h1 > +0 file3_h2 > +0 file3_h3 > +0 file3_h4 > +0 file3_h5 > +0 file4 > +0 file4_h1 > +0 file4_h2 > +0 file4_h3 > +0 file4_h4 > +0 file4_h5 > +0 file5 > +0 file5_h1 > +0 file5_h2 > +0 file5_h3 > +0 file5_h4 > +0 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level3 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 3 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +0 file4 > +0 file4_h1 > +0 file4_h2 > +0 file4_h3 > +0 file4_h4 > +0 file4_h5 > +0 file5 > +0 file5_h1 > +0 file5_h2 > +0 file5_h3 > +0 file5_h4 > +0 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level4 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 4 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +0 file5 > +0 file5_h1 > +0 file5_h2 > +0 file5_h3 > +0 file5_h4 > +0 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level5 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 5 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +0 file6 > +0 file6_h1 > +0 file6_h2 > +0 file6_h3 > +0 file6_h4 > +0 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level6 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 6 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +12 file6 > +12 file6_h1 > +12 file6_h2 > +12 file6_h3 > +12 file6_h4 > +12 file6_h5 > +0 file7 > +0 file7_h1 > +0 file7_h2 > +0 file7_h3 > +0 file7_h4 > +0 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level7 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 7 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +12 file6 > +12 file6_h1 > +12 file6_h2 > +12 file6_h3 > +12 file6_h4 > +12 file6_h5 > +12 file7 > +12 file7_h1 > +12 file7_h2 > +12 file7_h3 > +12 file7_h4 > +12 file7_h5 > +0 file8 > +0 file8_h1 > +0 file8_h2 > +0 file8_h3 > +0 file8_h4 > +0 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level8 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 8 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +12 file6 > +12 file6_h1 > +12 file6_h2 > +12 file6_h3 > +12 file6_h4 > +12 file6_h5 > +12 file7 > +12 file7_h1 > +12 file7_h2 > +12 file7_h3 > +12 file7_h4 > +12 file7_h5 > +12 file8 > +12 file8_h1 > +12 file8_h2 > +12 file8_h3 > +12 file8_h4 > +12 file8_h5 > +0 file9 > +0 file9_h1 > +0 file9_h2 > +0 file9_h3 > +0 file9_h4 > +0 file9_h5 > + > +restoring from df.level9 > +Restoring cumumlative from file... > +xfsrestore -f DUMP_FILE -r 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: 9 > +xfsrestore: session label: "stress_560" > +xfsrestore: media label: "stress_tape_media" > +xfsrestore: file system ID: ID > +xfsrestore: session id: ID > +xfsrestore: media ID: ID > +xfsrestore: using online session inventory > +xfsrestore: searching media for directory dump > +xfsrestore: reading directories > +xfsrestore: 2 directories and 56 entries processed > +xfsrestore: directory post-processing > +xfsrestore: restoring non-directory files > +xfsrestore: restore complete: SECS seconds elapsed > +xfsrestore: Restore Status: SUCCESS > +ls -l restore_dir > +0 fakeroot > +12 file1 > +12 file1_h1 > +12 file1_h2 > +12 file1_h3 > +12 file1_h4 > +12 file1_h5 > +12 file2 > +12 file2_h1 > +12 file2_h2 > +12 file2_h3 > +12 file2_h4 > +12 file2_h5 > +12 file3 > +12 file3_h1 > +12 file3_h2 > +12 file3_h3 > +12 file3_h4 > +12 file3_h5 > +12 file4 > +12 file4_h1 > +12 file4_h2 > +12 file4_h3 > +12 file4_h4 > +12 file4_h5 > +12 file5 > +12 file5_h1 > +12 file5_h2 > +12 file5_h3 > +12 file5_h4 > +12 file5_h5 > +12 file6 > +12 file6_h1 > +12 file6_h2 > +12 file6_h3 > +12 file6_h4 > +12 file6_h5 > +12 file7 > +12 file7_h1 > +12 file7_h2 > +12 file7_h3 > +12 file7_h4 > +12 file7_h5 > +12 file8 > +12 file8_h1 > +12 file8_h2 > +12 file8_h3 > +12 file8_h4 > +12 file8_h5 > +12 file9 > +12 file9_h1 > +12 file9_h2 > +12 file9_h3 > +12 file9_h4 > +12 file9_h5 > -- > 2.39.0 >
diff --git a/tests/xfs/560 b/tests/xfs/560 new file mode 100644 index 00000000..f4be8ef1 --- /dev/null +++ b/tests/xfs/560 @@ -0,0 +1,125 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2023 Fujitsu Limited. All Rights Reserved. +# +# FS QA Test No. 560 +# +# Create a filesystem which contains an inode with a lower number +# than the root inode. Set the lower number to dump files as the root inode +# and ensure that 'xfsrestore -x' handles this wrong inode for multi-level +# dumps. This procedure is cribbed from xfs/064 + +. ./common/preamble +_begin_fstest auto dump + +# Import common functions. +. ./common/dump + +_supported_fs xfs +_fixed_by_git_commit xfsdump \ + "XXXXXXXXXXXX xfsrestore: fix rootdir due to xfsdump bulkstat misuse" +_require_xfs_io_command "falloc" +_require_scratch +_require_xfsrestore_xflag + +# Create a filesystem which contains a fake root inode +inums=($(_xfs_create_fake_root)) +root_inum=${inums[0]} +fake_inum=${inums[1]} + +# Remove unnecessary files +find $SCRATCH_MNT -not -inum $fake_inum -type f -delete +# Rename a file root file to the static filename +find $SCRATCH_MNT -inum $fake_inum -exec mv {} $SCRATCH_MNT/fakeroot \; + +# Override the default cleanup function. +_cleanup() +{ + _cleanup_dump + cd / + rm -f $tmp.* +} + +_ls_size_filter() +{ + # + # Print size ($5) and fname ($9). + # The size is significant since we add to the file as part + # of a file change for the incremental. + # + # Filter out the housekeeping files of xfsrestore + # + $AWK_PROG 'NF == 9 { print $5, $9 }' |\ + grep -E -v 'dumpdir|housekeeping|dirattr|dirextattr|namreg|state|tree' +} + + +_create_dumpdir_hardlinks 9 + +echo "Do the incremental dumps" +i=0 +while [ $i -le 9 ]; do + if [ $i -gt 0 ]; then + sleep 2 + _modify_level $i + fi + + _stable_fs + sleep 2 + + echo "********* level $i ***********" >>$seqres.full + date >>$seqres.full + find $SCRATCH_MNT -exec $here/src/lstat64 {} \; | sed 's/(00.*)//' >$tmp.dates.$i + if [ $i -gt 0 ]; then + let level_1=$i-1 + diff -c $tmp.dates.$level_1 $tmp.dates.$i >>$seqres.full + else + cat $tmp.dates.$i >>$seqres.full + fi + + dump_file=$tmp.df.level$i + _do_dump_file -f $dump_file -l $i + # Set the wrong root inode number to the dump file + # as problematic xfsdump used to do. + $here/src/fake-dump-rootino $dump_file $fake_inum + + let i=$i+1 +done + +echo "Listing of what files we start with:" +ls -l $dump_dir | _ls_size_filter + +echo "Look at what files are contained in the inc. dump" +i=0 +while [ $i -le 9 ]; do + echo "" + echo "restoring from df.level$i" + _do_restore_toc -x -f $tmp.df.level$i | \ + sed -e "s/rootino #${fake_inum}/rootino #FAKENO/g" \ + -e "s/# to ${root_inum}/# to ROOTNO/g" + let i=$i+1 +done + +echo "Do the cumulative restores" +_prepare_restore_dir +i=0 +while [ $i -le 9 ]; do + if [ $i -eq 0 ]; then + # The root inode is fixed at the first restore + opt='-x' + else + opt= + fi + echo "" + echo "restoring from df.level$i" + _do_restore_file_cum $opt -f $tmp.df.level$i | \ + sed -e "s/rootino #${fake_inum}/rootino #FAKENO/g" \ + -e "s/# to ${root_inum}/# to ROOTNO/g" + echo "ls -l restore_dir" + ls -lR $restore_dir | _ls_size_filter | _check_quota_file + let i=$i+1 +done + +# success, all done +status=0 +exit diff --git a/tests/xfs/560.out b/tests/xfs/560.out new file mode 100644 index 00000000..0f2236a6 --- /dev/null +++ b/tests/xfs/560.out @@ -0,0 +1,1517 @@ +QA output created by 560 +Creating directory system of hardlinks to incrementally dump. +creating hardlink file1_h1 to file1 +creating hardlink file1_h2 to file1 +creating hardlink file1_h3 to file1 +creating hardlink file1_h4 to file1 +creating hardlink file1_h5 to file1 +creating hardlink file2_h1 to file2 +creating hardlink file2_h2 to file2 +creating hardlink file2_h3 to file2 +creating hardlink file2_h4 to file2 +creating hardlink file2_h5 to file2 +creating hardlink file3_h1 to file3 +creating hardlink file3_h2 to file3 +creating hardlink file3_h3 to file3 +creating hardlink file3_h4 to file3 +creating hardlink file3_h5 to file3 +creating hardlink file4_h1 to file4 +creating hardlink file4_h2 to file4 +creating hardlink file4_h3 to file4 +creating hardlink file4_h4 to file4 +creating hardlink file4_h5 to file4 +creating hardlink file5_h1 to file5 +creating hardlink file5_h2 to file5 +creating hardlink file5_h3 to file5 +creating hardlink file5_h4 to file5 +creating hardlink file5_h5 to file5 +creating hardlink file6_h1 to file6 +creating hardlink file6_h2 to file6 +creating hardlink file6_h3 to file6 +creating hardlink file6_h4 to file6 +creating hardlink file6_h5 to file6 +creating hardlink file7_h1 to file7 +creating hardlink file7_h2 to file7 +creating hardlink file7_h3 to file7 +creating hardlink file7_h4 to file7 +creating hardlink file7_h5 to file7 +creating hardlink file8_h1 to file8 +creating hardlink file8_h2 to file8 +creating hardlink file8_h3 to file8 +creating hardlink file8_h4 to file8 +creating hardlink file8_h5 to file8 +creating hardlink file9_h1 to file9 +creating hardlink file9_h2 to file9 +creating hardlink file9_h3 to file9 +creating hardlink file9_h4 to file9 +creating hardlink file9_h5 to file9 +Do the incremental dumps +Dumping to file... +xfsdump -l0 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +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: "stress_560" +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 +Dumping to file... +xfsdump -l1 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 1 incremental dump of HOSTNAME:SCRATCH_MNT based on level 0 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l2 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 2 incremental dump of HOSTNAME:SCRATCH_MNT based on level 1 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l3 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 3 incremental dump of HOSTNAME:SCRATCH_MNT based on level 2 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l4 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 4 incremental dump of HOSTNAME:SCRATCH_MNT based on level 3 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l5 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 5 incremental dump of HOSTNAME:SCRATCH_MNT based on level 4 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l6 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 6 incremental dump of HOSTNAME:SCRATCH_MNT based on level 5 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l7 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 7 incremental dump of HOSTNAME:SCRATCH_MNT based on level 6 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l8 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 8 incremental dump of HOSTNAME:SCRATCH_MNT based on level 7 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Dumping to file... +xfsdump -l9 -f DUMP_FILE -M stress_tape_media -L stress_560 SCRATCH_MNT +xfsdump: using file dump (drive_simple) strategy +xfsdump: level 9 incremental dump of HOSTNAME:SCRATCH_MNT based on level 8 dump begun DATE +xfsdump: dump date: DATE +xfsdump: session id: ID +xfsdump: session label: "stress_560" +xfsdump: ino map <PHASES> +xfsdump: ino map construction complete +xfsdump: estimated dump size: NUM bytes +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 +Listing of what files we start with: +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +12 file6 +12 file6_h1 +12 file6_h2 +12 file6_h3 +12 file6_h4 +12 file6_h5 +12 file7 +12 file7_h1 +12 file7_h2 +12 file7_h3 +12 file7_h4 +12 file7_h5 +12 file8 +12 file8_h1 +12 file8_h2 +12 file8_h3 +12 file8_h4 +12 file8_h5 +12 file9 +12 file9_h1 +12 file9_h2 +12 file9_h3 +12 file9_h4 +12 file9_h5 +Look at what files are contained in the inc. dump + +restoring from df.level0 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file1 +dumpdir/file1_h1 +dumpdir/file1_h2 +dumpdir/file1_h3 +dumpdir/file1_h4 +dumpdir/file1_h5 +dumpdir/file2 +dumpdir/file2_h1 +dumpdir/file2_h2 +dumpdir/file2_h3 +dumpdir/file2_h4 +dumpdir/file2_h5 +dumpdir/file3 +dumpdir/file3_h1 +dumpdir/file3_h2 +dumpdir/file3_h3 +dumpdir/file3_h4 +dumpdir/file3_h5 +dumpdir/file4 +dumpdir/file4_h1 +dumpdir/file4_h2 +dumpdir/file4_h3 +dumpdir/file4_h4 +dumpdir/file4_h5 +dumpdir/file5 +dumpdir/file5_h1 +dumpdir/file5_h2 +dumpdir/file5_h3 +dumpdir/file5_h4 +dumpdir/file5_h5 +dumpdir/file6 +dumpdir/file6_h1 +dumpdir/file6_h2 +dumpdir/file6_h3 +dumpdir/file6_h4 +dumpdir/file6_h5 +dumpdir/file7 +dumpdir/file7_h1 +dumpdir/file7_h2 +dumpdir/file7_h3 +dumpdir/file7_h4 +dumpdir/file7_h5 +dumpdir/file8 +dumpdir/file8_h1 +dumpdir/file8_h2 +dumpdir/file8_h3 +dumpdir/file8_h4 +dumpdir/file8_h5 +dumpdir/file9 +dumpdir/file9_h1 +dumpdir/file9_h2 +dumpdir/file9_h3 +dumpdir/file9_h4 +dumpdir/file9_h5 +fakeroot + +restoring from df.level1 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 1 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file1 +dumpdir/file1_h1 +dumpdir/file1_h2 +dumpdir/file1_h3 +dumpdir/file1_h4 +dumpdir/file1_h5 + +restoring from df.level2 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 2 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file2 +dumpdir/file2_h1 +dumpdir/file2_h2 +dumpdir/file2_h3 +dumpdir/file2_h4 +dumpdir/file2_h5 + +restoring from df.level3 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 3 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file3 +dumpdir/file3_h1 +dumpdir/file3_h2 +dumpdir/file3_h3 +dumpdir/file3_h4 +dumpdir/file3_h5 + +restoring from df.level4 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 4 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file4 +dumpdir/file4_h1 +dumpdir/file4_h2 +dumpdir/file4_h3 +dumpdir/file4_h4 +dumpdir/file4_h5 + +restoring from df.level5 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 5 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file5 +dumpdir/file5_h1 +dumpdir/file5_h2 +dumpdir/file5_h3 +dumpdir/file5_h4 +dumpdir/file5_h5 + +restoring from df.level6 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 6 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file6 +dumpdir/file6_h1 +dumpdir/file6_h2 +dumpdir/file6_h3 +dumpdir/file6_h4 +dumpdir/file6_h5 + +restoring from df.level7 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 7 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file7 +dumpdir/file7_h1 +dumpdir/file7_h2 +dumpdir/file7_h3 +dumpdir/file7_h4 +dumpdir/file7_h5 + +restoring from df.level8 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 8 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file8 +dumpdir/file8_h1 +dumpdir/file8_h2 +dumpdir/file8_h3 +dumpdir/file8_h4 +dumpdir/file8_h5 + +restoring from df.level9 +Contents of dump ... +xfsrestore -x -f DUMP_FILE -t +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: 9 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: reading non-directory files +xfsrestore: table of contents display complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS + +dumpdir/file9 +dumpdir/file9_h1 +dumpdir/file9_h2 +dumpdir/file9_h3 +dumpdir/file9_h4 +dumpdir/file9_h5 +Do the cumulative restores + +restoring from df.level0 +Restoring cumumlative from file... +xfsrestore -x -f DUMP_FILE -r 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: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: found fake rootino #FAKENO, will fix. +xfsrestore: fix root # to ROOTNO (bind mount?) +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +0 file1 +0 file1_h1 +0 file1_h2 +0 file1_h3 +0 file1_h4 +0 file1_h5 +0 file2 +0 file2_h1 +0 file2_h2 +0 file2_h3 +0 file2_h4 +0 file2_h5 +0 file3 +0 file3_h1 +0 file3_h2 +0 file3_h3 +0 file3_h4 +0 file3_h5 +0 file4 +0 file4_h1 +0 file4_h2 +0 file4_h3 +0 file4_h4 +0 file4_h5 +0 file5 +0 file5_h1 +0 file5_h2 +0 file5_h3 +0 file5_h4 +0 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level1 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 1 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +0 file2 +0 file2_h1 +0 file2_h2 +0 file2_h3 +0 file2_h4 +0 file2_h5 +0 file3 +0 file3_h1 +0 file3_h2 +0 file3_h3 +0 file3_h4 +0 file3_h5 +0 file4 +0 file4_h1 +0 file4_h2 +0 file4_h3 +0 file4_h4 +0 file4_h5 +0 file5 +0 file5_h1 +0 file5_h2 +0 file5_h3 +0 file5_h4 +0 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level2 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 2 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +0 file3 +0 file3_h1 +0 file3_h2 +0 file3_h3 +0 file3_h4 +0 file3_h5 +0 file4 +0 file4_h1 +0 file4_h2 +0 file4_h3 +0 file4_h4 +0 file4_h5 +0 file5 +0 file5_h1 +0 file5_h2 +0 file5_h3 +0 file5_h4 +0 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level3 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 3 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +0 file4 +0 file4_h1 +0 file4_h2 +0 file4_h3 +0 file4_h4 +0 file4_h5 +0 file5 +0 file5_h1 +0 file5_h2 +0 file5_h3 +0 file5_h4 +0 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level4 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 4 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +0 file5 +0 file5_h1 +0 file5_h2 +0 file5_h3 +0 file5_h4 +0 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level5 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 5 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +0 file6 +0 file6_h1 +0 file6_h2 +0 file6_h3 +0 file6_h4 +0 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level6 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 6 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +12 file6 +12 file6_h1 +12 file6_h2 +12 file6_h3 +12 file6_h4 +12 file6_h5 +0 file7 +0 file7_h1 +0 file7_h2 +0 file7_h3 +0 file7_h4 +0 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level7 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 7 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +12 file6 +12 file6_h1 +12 file6_h2 +12 file6_h3 +12 file6_h4 +12 file6_h5 +12 file7 +12 file7_h1 +12 file7_h2 +12 file7_h3 +12 file7_h4 +12 file7_h5 +0 file8 +0 file8_h1 +0 file8_h2 +0 file8_h3 +0 file8_h4 +0 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level8 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 8 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +12 file6 +12 file6_h1 +12 file6_h2 +12 file6_h3 +12 file6_h4 +12 file6_h5 +12 file7 +12 file7_h1 +12 file7_h2 +12 file7_h3 +12 file7_h4 +12 file7_h5 +12 file8 +12 file8_h1 +12 file8_h2 +12 file8_h3 +12 file8_h4 +12 file8_h5 +0 file9 +0 file9_h1 +0 file9_h2 +0 file9_h3 +0 file9_h4 +0 file9_h5 + +restoring from df.level9 +Restoring cumumlative from file... +xfsrestore -f DUMP_FILE -r 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: 9 +xfsrestore: session label: "stress_560" +xfsrestore: media label: "stress_tape_media" +xfsrestore: file system ID: ID +xfsrestore: session id: ID +xfsrestore: media ID: ID +xfsrestore: using online session inventory +xfsrestore: searching media for directory dump +xfsrestore: reading directories +xfsrestore: 2 directories and 56 entries processed +xfsrestore: directory post-processing +xfsrestore: restoring non-directory files +xfsrestore: restore complete: SECS seconds elapsed +xfsrestore: Restore Status: SUCCESS +ls -l restore_dir +0 fakeroot +12 file1 +12 file1_h1 +12 file1_h2 +12 file1_h3 +12 file1_h4 +12 file1_h5 +12 file2 +12 file2_h1 +12 file2_h2 +12 file2_h3 +12 file2_h4 +12 file2_h5 +12 file3 +12 file3_h1 +12 file3_h2 +12 file3_h3 +12 file3_h4 +12 file3_h5 +12 file4 +12 file4_h1 +12 file4_h2 +12 file4_h3 +12 file4_h4 +12 file4_h5 +12 file5 +12 file5_h1 +12 file5_h2 +12 file5_h3 +12 file5_h4 +12 file5_h5 +12 file6 +12 file6_h1 +12 file6_h2 +12 file6_h3 +12 file6_h4 +12 file6_h5 +12 file7 +12 file7_h1 +12 file7_h2 +12 file7_h3 +12 file7_h4 +12 file7_h5 +12 file8 +12 file8_h1 +12 file8_h2 +12 file8_h3 +12 file8_h4 +12 file8_h5 +12 file9 +12 file9_h1 +12 file9_h2 +12 file9_h3 +12 file9_h4 +12 file9_h5
Test 'xfsrestore -x' to correct a wrong root in multi-level dump files. A root inode number can be wrong in a dump created by problematic xfsdump (v3.1.7 - v3.1.9) because of bulkstat misuse. Signed-off-by: Hironori Shiina <shiina.hironori@fujitsu.com> --- tests/xfs/560 | 125 ++++ tests/xfs/560.out | 1517 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1642 insertions(+) create mode 100644 tests/xfs/560 create mode 100644 tests/xfs/560.out