Hi,
I did it again - torture-testing xfsdump/xfsrestore with Elisabeth D.
Zwicky's "Torture-testing Backup and Archive Programs: Things You Ought
to Know But Probably Would Rather Not".
The previous URL (http://reality.sgi.com/zwicky_neu/testdump.doc.html)
of that article is no longer available :-(
"Reality has left the building.
As of September 15, 2001, Reality.sgi.com has been discontinued."
[blabla]
So I provide an archived version of it on
http://berdmann.dyndns.org/zwicky/testdump.doc.html and for the other
files you might want to check http://berdmann.dyndns.org/zwicky/
First of all, I hacked xfsrestore/content.c to get rid of it's check for
filenames up to 255 char length to up to and including 255 char length:
/sbin/xfsdump: dumping non-directory files
/sbin/xfsrestore: reading directories
xfsrestore: content.c:2960: applydirdump: Assertion `namelen < 255'
failed.
/sbin/xfsdump: ending media file
Here's the patch:
--- /usr/src/xfsdump-test2/linux-2.4-xfs/cmd/xfsdump/restore/content.c
Tue Sep 4 06:31:55 2001
+++ /usr/src/xfsdump-test/linux-2.4-xfs/cmd/xfsdump/restore/content.c
Sat Sep 29 19:30:37 2001
@@ -2957,7 +2957,7 @@ applydirdump( drive_t *drivep,
break;
}
namelen = strlen( dhdrp->dh_name );
- ASSERT( namelen < NAME_MAX );
+ ASSERT( namelen <= NAME_MAX );
/* add this dirent to the tree.
*/
@@ -3075,7 +3075,7 @@ eatdirdump( drive_t *drivep,
break;
}
namelen = strlen( dhdrp->dh_name );
- ASSERT( namelen < NAME_MAX );
+ ASSERT( namelen <= NAME_MAX );
}
}
At a first shot, xfsdump/xfsrestore do their jobs well:
# ~be/torture-new/torture.perl
First guess at max component length is 255
max path length appears to be 4095
Type a command line which will run a backup program on the dump test
directory: /sbin/xfsdump -J - /mnt/test1 | (cd /mnt/test2;
/sbin/xfsrestore - .)
Child 1
/sbin/xfsrestore: version 3.0 - Running single-threaded
/sbin/xfsdump: version 3.0 - Running single-threaded
/sbin/xfsrestore: searching media for dump
/sbin/xfsdump: level 0 dump of apollo:/mnt/test1
/sbin/xfsdump: dump date: Sat Sep 29 19:39:35 2001
/sbin/xfsdump: session id: 1fa00278-09b1-4c37-bfb2-1d7d3e781843
/sbin/xfsdump: session label: ""
/sbin/xfsdump: ino map phase 1: skipping (no subtrees specified)
/sbin/xfsdump: ino map phase 2: constructing initial dump list
/sbin/xfsdump: ino map phase 3: skipping (no pruning necessary)
/sbin/xfsdump: ino map phase 4: skipping (size estimated in phase 2)
/sbin/xfsdump: ino map phase 5: skipping (only one dump stream)
/sbin/xfsdump: ino map construction complete
/sbin/xfsdump: estimated dump size: 1349696 bytes
/sbin/xfsdump: creating dump session media file 0 (media 0, file 0)
/sbin/xfsdump: dumping ino map
/sbin/xfsdump: dumping directories
/sbin/xfsrestore: examining media file 0
/sbin/xfsrestore: dump description:
/sbin/xfsrestore: hostname: apollo
/sbin/xfsrestore: mount point: /mnt/test1
/sbin/xfsrestore: volume: /dev/vg01/test1
/sbin/xfsrestore: session time: Sat Sep 29 19:39:35 2001
/sbin/xfsrestore: level: 0
/sbin/xfsrestore: session label: ""
/sbin/xfsrestore: media label: ""
/sbin/xfsrestore: file system id: 0174fd6a-02a1-4cb0-85f3-90219087d7b6
/sbin/xfsrestore: session id: 1fa00278-09b1-4c37-bfb2-1d7d3e781843
/sbin/xfsrestore: media id: 7a04cd3d-ec20-4420-bf33-f44bcf459abb
/sbin/xfsrestore: searching media for directory dump
/sbin/xfsrestore: reading directories
/sbin/xfsdump: dumping non-directory files
/sbin/xfsrestore: directory post-processing
/sbin/xfsrestore: restoring non-directory files
/sbin/xfsrestore: WARNING: unable restore ino 131573 gen 4: relative
pathname too long (partial
DumpTestDir/longfilenames/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd/244(4095)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx!)
/sbin/xfsdump: WARNING: failed to get bulkstat information for inode
786848
/sbin/xfsdump: ending media file
/sbin/xfsdump: media file size 2468312 bytes
/sbin/xfsdump: dump size (non-dir files) : 910512 bytes
/sbin/xfsdump: dump complete: 51 seconds elapsed
/sbin/xfsdump: Dump Status: SUCCESS
/sbin/xfsrestore: restore complete: 54 seconds elapsed
/sbin/xfsrestore: Restore Status: SUCCESS
Backup took 54.00 seconds of clock time and 0.00 seconds of cpu time
Just some missing files with pathnames > 4085 char length were found by
diff:
# ~be/torture-new/diff/diff -r -b -Q -X DumpTestDir
/mnt/test2/DumpTestDir > /tmp/res1 2>/tmp/res2
You can get the files res1 and res2 from
http://berdmann.dyndns.org/torture-testing/xfsdump/
|