Google
 

Trailing-Edge - PDP-10 Archives - cuspbinsrc_1of2_bb-x128c-sb - 10,7/dskrat/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
.AP
.P 0,1
.LITERAL
THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.

COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986. 
ALL RIGHTS RESERVED.
.END LITERAL
.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