1
0
mirror of synced 2026-01-13 07:29:52 +00:00
Interlisp.medley/internal/envos/filebanger.tedit

5 lines
4.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FILEBANGER
Filed as {eris}<lispcore>internal>library>FileBanger.*
Not for customer release
Basic Functions
(DOFILEBANGER Destination Length NoBreak)
Starts a new file banger in its own process. The device and directory specified by Destination will be where the test files are created during the testing. Each file will be Length bytes long. The file banger performs consistency checks on all the files it creates after each operation. If those consistency checks fail, it will print a message indicating what it found wrong, and if NoBreak is NIL will open a break window.
To stop the file banger process, one may (KILL.PROCESS 'FILEBANGER), provided that only a single file banger is in operation.
(FILEBANGER TestFile Destination MakeWindow NoBreak InParms OutParms)
Enters a loop of creating, manipulating, and deleting files, making consistency checks after each pass. TestFile may be the name of a file (whose contents are used as the contents of the test files), or an integer, in which case a test file of thet many random bytes is created. Destination is the device and directory to be tested (normally this should be {DSK}<LispFiles>). MakeWindow, if T, causes a fresh window to be created; that window is used for progress messages as the test runs. If MakeWindow is NIL, the regular TTY window for the process is used (and created, if need be!). If the test's consistency checks fail, FILEBANGER fill print a message in the status window; if NoBreak is NIL, it'll also stop and open a break window. If you are interested in really stressing the file system, you may specify PARAMETERS arguments to be given to OPENSTREAM when files are opened. InParms is used when opening for input, and OutParms when opening for output. We don't recommend the use of these arguments.
Generally speaking, the test file should be of a good length (5000 bytes or more), to assure that the files spread out to cover the disk volume you're testing.
FILEBANGER continues to run until interrupted from the outside somehow. The easiest way to arrange that is to run it in its own process (using DOFILEBANGER) and use KILL.PROCESS.
Recommended Operation
(DOFILEBANGER '{DSK}<LispFiles> 5000 NIL)
This will open a TTY window for the FILEBANGER process, and print small ongoing status messages there; you will need to do something to prevent the scrolling from hanging things up when the TTY window is full (either type ahead some spaces in that window, or arrange for the window not to pause when it fills up). To stop the file banger when it has run long enough, do (KILL.PROCESS 'FILEBANGER) in the top-level TTY window.
Likely Error Messages
HARD DISK ERROR
The low-level disk code hit a hard error on the disk, and was able to complete its operation to the extent of recognizing the error. Indicates a bad spot on the disk.
VERIFY ERROR
The disk-page label checking code found an inconsistency. While this might be software, it is most likely to be controller trouble or a bad spot on the disk.
(infinite uninterruptible loop)
The low-level disk code hit a snag so severe that it could never complete the disk operation at all. This should never happen. If it does, suspect IOP trouble.
File1 and File2 differ at byte xxx
Two files should have been identical but weren't. Suspect software problems, unless the error follows a particular drive, processor, or IOP.
File1 has length xxx, but File2 has length yyy.
Two files should have been identical but weren't. Suspect software problems, unless the error follows a particular drive, processor, or IOP(<01>(<01>. <01><00>.<01><00>(<01>((<01>CLASSIC CLASSIC CLASSIC GACHA
 HELVETICA
7T Q<00>"~
8h<00> W
m
<00><00>%J<00><00>*<01><00>
<00> <00>#<00>0<00>
<EFBFBD>Qz<51>