Received: (from majordomo@localhost) by oss.sgi.com (8.11.2/8.11.3) id f68CLuL18662 for linux-xfs-outgoing; Sun, 8 Jul 2001 05:21:56 -0700 Received: from ente.berdmann.de (p3EE0A95C.dip.t-dialin.net [62.224.169.92]) by oss.sgi.com (8.11.2/8.11.3) with SMTP id f68CLqV18648 for ; Sun, 8 Jul 2001 05:21:53 -0700 Received: from apollo.berdmann.de ([192.168.1.2] helo=berdmann.de) by ente.berdmann.de with esmtp (Exim 3.16 #2) id 15JDZI-0007d7-00; Sun, 08 Jul 2001 14:21:44 +0200 Message-ID: <3B485058.9389834C@berdmann.de> Date: Sun, 08 Jul 2001 14:21:44 +0200 From: "Bernhard R. Erdmann" X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.7-pre3-xfs i586) X-Accept-Language: de, en, fr MIME-Version: 1.0 To: Linux XFS Mailing List Subject: xfsdump/xfsrestore fails Zwicky's torture test Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-linux-xfs@oss.sgi.com Precedence: bulk I just did some torture testing with xfsdump/xfsrestore (Kernel linux-2.4.7-pre3-xfs, checkout 04:30 GMT). Using a perl script referenced from http://reality.sgi.com/zwicky_neu/testdump.doc.html (Torture-testing Backup and Archive Programs: Things You Ought to Know But Probably Would Rather Not, Elizabeth D. Zwicky, 1991) Cited from that article: 1.0 The Tests The test suite currently employs two sorts of test. First, there are static tests; files and directories with stressful names, contents, or permissions, which do not change while the program runs. Second, there are active tests; files that change while the program is running. Static tests: A file with a large hole in it. A file that contains a hole and a block's worth of nulls. Files with funny characters in their file names. 1025 hard links to the same file. 2911 hard links to different files. Files with long names. Symbolic links to long names. Symbolic links to names with funny characters in them. Unreadable and unwriteable files. Unreadable and unwriteable directories with normal files in them. A named pipe. A device. Active tests: A file that becomes a directory. A directory that becomes a file. A file that is deleted. A file that is created. A file that shrinks. Two files that grow at different rates. Some errors occur between multiple backups or during multiple restores, and the test suite does not test for them at this point. I will mention these conditions further later. The tests were run using a Perl program which created all the static files, and then forked to modify files in one process and run the program being tested on the other. All programs were tested through a pipe, rather than having them actually create and read from tape archives. There were no compatibility tests; the archives were always being read by the program that wrote them (or, in the case of dump, by restore.) Except where specified, they were run with no options beyond those required to archive to standard output and read from standard input. A modified version of GNU diff was used to compare the original directory with the restored one. [...] I gave a filesystem with the "directory from Hell" to xfsdump, but xfsrestore fails in content.c to read the directory index: # ~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/linux-xfsrestore && /sbin/xfsrestore - .) Child 1 /sbin/xfsrestore: version 3.0 - Running single-threaded /sbin/xfsdump: version 3.0 - Running single-threaded /sbin/xfsdump: level 0 dump of apollo:/mnt/test1 /sbin/xfsdump: dump date: Sun Jul 8 13:59:01 2001 /sbin/xfsdump: session id: fd2f240d-6708-4785-8576-cae2ab0a8272 /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/xfsrestore: searching media for dump /sbin/xfsdump: ino map construction complete /sbin/xfsdump: estimated dump size: 6424640 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/vg02/test1 /sbin/xfsrestore: session time: Sun Jul 8 13:59:01 2001 /sbin/xfsrestore: level: 0 /sbin/xfsrestore: session label: "" /sbin/xfsrestore: media label: "" /sbin/xfsrestore: file system id: 61c3ba48-82e8-4afc-a7b3-a61579d9ecd0 /sbin/xfsrestore: session id: fd2f240d-6708-4785-8576-cae2ab0a8272 /sbin/xfsrestore: media id: 12ac5d0e-0850-4ad1-91d9-58d803dd315f /sbin/xfsrestore: searching media for directory dump /sbin/xfsdump: dumping non-directory files /sbin/xfsrestore: reading directories xfsrestore: content.c:2942: applydirdump: Assertion `namelen < 255' failed. /sbin/xfsdump: ending media file /sbin/xfsdump: media file size 266240 bytes /sbin/xfsdump: dump size (non-dir files) : 544 bytes /sbin/xfsdump: NOTE: dump interrupted: 1 seconds elapsed Backup took 1.00 seconds of clock time and 0.00 seconds of cpu time # df /mnt/test? Filesystem 1k-blocks Used Available Use% Mounted on /dev/vg02/test1 93504 83516 9988 89% /mnt/test1 /dev/vg02/test2 93504 604 92900 1% /mnt/test2 I had to modify torture.perl (10 years old) in order to run with a modern linux system. You can download it from http://berdmann.dyndns.org/torture.tar.gz