Google
 

Trailing-Edge - PDP-10 Archives - ap-c796e-sb - dskrat.rno
There is 1 other file named dskrat.rno in the archive. Click here to see a list.
.TITLE ^^DSKRAT\\
.SPACING 1
.BLANK 5
.CENTER
^^DSKRAT\\
.BLANK 1
.CENTER
^^DISK FILE DAMAGE ASSESSMENT PROGRAM\\
.BLANK 8
.LEFT MARGIN 20
.NOFILL
.NOJUSTIFY
^DATE:##14-^NOV-73
^FILE:##^^DSKRAT.RNO\\
^EDITION:##3
.BLANK 5
.LEFT MARGIN 8
.RIGHT MARGIN 55
.FILL
.JUSTIFY
^THIS DOCUMENT REFLECTS THE SOFTWARE OF VERSION 11.
.BLANK 1
^THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY
^DIGITAL ^EQUIPMENT ^CORPORATION.
.BLANK 1
^ACTUAL DISTRIBUTION OF THE SOFTWARE DESCRIBED IN THIS SPECIFICATION
WILL BE SUBJECT TO TERMS AND CONDITIONS TO BE ANNOUNCED AT SOME
FUTURE DATE BY ^DIGITAL ^EQUIPEMENT ^CORPORATION.
.BLANK 1
^^DEC\\ ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY ^^DEC\\.
.BLANK 1
^THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE TO USE ON A
SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION OF ^^DEC\\'S
COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE
BE PROVIDED IN WRITING BY ^^DEC\\.
.RIGHT MARGIN 60
.PAGE
.LEFT MARGIN 0
.TAB STOPS 5,20
.FILL
.JUSTIFY
1.0	^^INTRODUCTION\\
.SKIP 1
^^DSKRAT\\ IS A DAMAGE ASSESSMENT PROGRAM FOR ^LEVEL ^D DISK FILE
STRUCTURES. ^IT SCANS THE FILE STRUCTURE, USING SUPER ^^USETI'\\S TO
READ FILES, AND REPORTS ANY INCONSISTENCIES DETECTED TO DEVICE
^^LPT\\. ^FILE NAME ^^RAT.LST\\ IS USED IF ^^LPT\\ IS A DIRECTORY
DEVICE.
.SKIP 1
2.0	^^DSKRAT ^OPERATIONS\\
.SKIP 1
^TO RUN ^^DSKRAT\\, LOG IN AS [1,2] (REQUIRED FOR SUPER ^^USETI\\),
ASSIGN TO A FILE STRUCTURE THE LOGICAL NAME ^^STR\\, ASSIGN ^^LPT\\
IF YOU WISH IT TO BE SOME DEVICE OTHER THAN THE PRINTER, AND RUN
^^DSKRAT\\. ^^DSKRAT\\ OPENS ^^STR\\ AND ^^LPT\\, READS THE ^^SAT\\
BLOCKS INTO CORE AND, IF EVERYTHING IS ACCEPTABLE, TYPES ^^RUNNING\\, AND
BEGINS TO SCAN THE FILE STRUCTURE.
.SKIP 1
^NOTE THAT ^^DSKRAT\\ NOW HAS A ^LOST ^BLOCK ^RECOVERY ROUTINE
WHICH WILL GET CALLED IF THE FOLLOWING ADDITIONAL CONDITIONS ARE MET.
1) ^YOU MUST BE THE ONLY JOB LOGGED IN AND 2) ^SCHEDULING MUST BE SET FOR
NO MORE LOGINS.
.SKIP 1
^IF THESE CONDITIONS ARE NOT MET, ^^DSKRAT\\ TYPES "%^LOST ^BLOCK
^RECOVERY ^WILL ^NOT ^BE ^DONE" FOLLOWED BY THE REASONS
FOR THE FAILURE, AND PROCESSING WILL CONTINUE AS WITH EARLIER VERSIONS.
.SKIP 1
^IF THE ^LOST ^BLOCK ^RECOVERY ROUTINE IS CALLED AND ^LOST ^BLOCKS
ARE ENCOUNTERED IN ITS NORMAL SCAN OPERATIONS THEN FILES WITH THE
NAME ^^LSTBLK.XXX\\, WHERE ^^XXX\\ IS AN INCREMENTAL EXTENSION
BEGINNING WITH '001', WILL BE CREATED. ^THE ^^RIBS\\ FOR THESE FILES WILL
BE MODIFIED, VIA ^SUPER-^^USETO\\'S, TO POINT TO ALL ^LOST ^BLOCKS FOUND
ON THE SPECIFIED UNIT(S).
.SKIP 1
^^DSKRAT\\ LOOKS UP  EACH FILE ON THE FILE STRUCTURE 
AND REPORTS ANY FAILURES, READS AND VERIFIES ALL ^^RIB\\S OF
THE FILE, CHECKSUMS EACH GROUP AND REPORTS ERRORS, READS THE
RETRIEVAL INFORMATION FROM THE ^^RIB\\S AND CONSTRUCTS ITS OWN ^^SAT\\
BLOCKS.  ^IF THERE ARE ANY DISAGREEMENTS BETWEEN THE ^^SAT\\'S READ
FROM DISK AND ^^SAT\\'S CONSTRUCTED BY ^^DSKRAT\\,
ERROR MESSAGES ARE OUTPUT.  ^THAT IS, IF ANY CLUSTER IS IN MORE THAN
ONE FILE, OR IN A FILE BUT NOT MARKED IN THE ^^SAT\\, THAT FACT IS
REPORTED AND THE CLUSTER AND THE FILE TO WHICH IT BELONGS ARE IDENTIFIED.
^ONE LINE IS PRODUCED FOR EACH ERROR.  ^IT INCLUDES THE FILE NAME, CLUSTER
NUMBER AND LOGICAL BLOCK NUMBER OF THE CLUSTER IN QUESTION, AND AN ERROR
COMMENT.
.SKIP 1
^WHEN ^^DSKRAT\\ HAS GONE THROUGH THE FILE STRUCTURE COMPLETELY, IT
PRINTS A LIST OF CLUSTERS IN MORE THAN ONE FILE, CLUSTERS
.TEST PAGE 10
IN FILES BY NOT MARKED IN ^^SAT\\'S, AND CLUSTERS MARKED IN
^^SAT\\'S BUT NOT IN ANY FILE.  ^THEN, IF ANY CLUSTERS ARE IN MORE THAN ONE FILE,
IT TYPES
.SKIP 1
.INDENT 10
^^END OF PASS 1, BEGINNING PASS 2\\
.SKIP 1
AND STARTS OVER.  ^THE SECOND PASS WILL PRODUCE AN ERROR LINE FOR
EVERY FILE CLAIMING CLUSTERS USED BY MORE THAN ONE FILE.
^THE FIRST SUCH FILE IS NOT KNOWN IN PASS 1 UNTIL THE SECOND IS FOUND.
^IF PASS 2 IS NOT WANTED, TYPE ^^CONTROL-C\\ TWICE AND ^^REENTER\\.
^THIS WILL CLOSE ^^LPT\\ AND ^^DSKRAT\\ WILL EXIT.
.SKIP 1
^IF NO CLUSTERS ARE IN MORE THAN ONE FILE, ^^DSKRAT\\ TYPES
.SKIP 1
.INDENT 10
^^END OF PASS 1, NO NEED FOR PASS 2\\
.SKIP 1
AND EXITS.
.SKIP 1
^NOTE THAT SINCE ^^DSKRAT\\ READS IN ^^SAT'\\S AT THE BEGINNING OF THE
PROGRAM, IF OTHER USERS ARE REFERENCING THE DISKS (WRITING OR
DELETING FILES OR READING FILES MARKED FOR DELETION) THE ^^SAT\\
BLOCKS WILL NOT BE CURRENT AND SPURIOUS ERRORS WILL APPEAR.
^HOWEVER, TRUE ERRORS WILL NOT BE MISSED.
.BLANK 1
3.0	^^FLOW FOR DSKRAT\\
.SKIP 1
.LEFT MARGIN 22
.INDENT -2
^READ AND VERIFY HOME BLOCKS, PRINT IF ERRORS ARE FOUND.
.SKIP 1
.INDENT -2
^SAVE PARAMETERS.
.SKIP 1
.INDENT -2
^PRINT THE FILE STRUCTURE NAME, BLOCKS PER CLUSTER, TIME, AND DATE.
.SKIP 1
.INDENT -2
^INITIALIZE DISK ^^SAT\\ (FIND ^^SAT.SYS RIB\\ FROM THE HOME BLOCK AND
READ THE ^^SAT\\ BLOCKS).
.SKIP 1
.INDENT -2
^CLEAR THE COMPUTED ^^SAT\\ AND THE TROUBLE ^^SAT\\.
.SKIP 1
.INDENT -2
^READ AND VERIFY ^^MFD#RIB\\, PRINT IF ERRORS ARE FOUND.
.SKIP 1
.INDENT -2
^TYPE ^^RUNNING\\.
.SKIP 1
.INDENT -22
3.1	^^PASS1:	C\\ALL ^^DOMFD\.
.TEST PAGE 15
.SKIP 1
.INDENT -22
3.2	^^END PASS 1:	L\\IST ALL LOST CLUSTERS. (^FOR EACH CLUSTER,
LIST IF THE NON-COMPUTED-^^SAT\\ AND THE DISK-^^SAT\\#=#1).
.SKIP 1
.INDENT -2
^LIST ALL FREE CLUSTERS. (^FOR EACH CLUSTER, LIST IF THE COMPUTED-^^SAT\\
AND THE NON-DISK^^-SAT\\#=#1).
.SKIP 1
.INDENT -2
^LIST ALL CLUSTERS USED FOR MORE THAN ONE FILE. (^FOR EACH CLUSTER,
LIST IF THE TROUBLE-^^SAT\\#=#1).
.SKIP 1
.INDENT -2
^TYPE ^^END OF PASS 1\\
.SKIP 1
.INDENT -2
^IF THERE ARE NO CLUSTERS USED FOR MORE THAN ONE FILE, TYPE
.SKIP 1
^^NO NEED FOR PASS 2\\
.SKIP 1
AND EXIT.
.SKIP 1
.INDENT -2
^OTHERWISE, TYPE ^^BEGINNING PASS 2\\
.SKIP 1
.INDENT -22
3.3	^^PASS 2:	C\\LEAR THE COMPUTED ^^SAT\\.
.SKIP 1
.INDENT -2
^CALL ^^DOMFD\\.
.SKIP 1
.INDENT -2
^EXIT.
.TEST PAGE 20
.BLANK 1
.LEFT MARGIN 27
.INDENT -27
3.4	^^DOMFD:	F\\OR ALL FILES IN THE ^^MDF\\,
.SKIP 1
.INDENT -6
^IF THE EXTENSION IS ^^UFD\\,
.SKIP 1
.INDENT -4
^GET THE ^^CFP\\ (WHICH POINTS TO THE FIRST ^^RIB\\),
.SKIP 1
.INDENT -4
^READ AND VERIFY THE FIRST ^^UFD RIB\\.
.SKIP 1
.INDENT -4
^IF THE ^^RIB\\ IS ACCEPTABLE,
.SKIP 1
.INDENT -2
^FOR ALL FILES IN THE ^^UFD\\,
.SKIP 1
^PERFORM AN EXTENDED LOOKUP (THROUGH ^^FILSER\\), PRINT IF IT FAILS.
.BREAK
^GET THE ^^CFP\\ (WHICH POINTS TO THE FIRST ^^RIB\\).
.SKIP 1
^READ AND VERIFY THE FIRST ^^RIB\\ AND ALL EXTENDED ^^RIB\\S, PRINT IF AN ERROR OCCURS.
.SKIP 1
^IF ANY CLUSTERS ARE NON-EXISTENT, PRINT AND DON'T CHECK THE ^^SAT\\'S.
.SKIP 1
^CHECKSUM EACH GROUP (UNLESS ^^RIPABC=1\\), PRINT IF AN ERROR OCCURS.
.SKIP 1
^MARK THE CLUSTERS ALLOCATED TO THIS FILE IN THE COMPUTED ^^SAT\\.
.SKIP 1
^IF ANY CLUSTERS ARE ALREADY ALLOCATED OR HAVE A BIT SET IN THE TROUBLE
^^SAT\\ (FOR PASS 2),
.SKIP 1
.LEFT MARGIN 29
^SET THE BITS IN THE TROUBLE ^^SAT, \\ AND
.LEFT MARGIN 27
.SKIP 1
.INDENT 2
^PRINT ^^MULTIPLY-USED.\\
.SKIP 1
^IF ANY CLUSTERS ARE NOT ALLOCATED IN THE DISK ^^SAT\\, PRINT ^^FREE.\\
.SKIP 1
.INDENT -2
^CONTINUE.
.INDENT -15
^CONTINUE.
.BREAK