Trailing-Edge
-
PDP-10 Archives
-
bb-d549g-sb
-
bkp2a.bwr
There are no other files named bkp2a.bwr in the archive.
BEWARE FILE FOR BACKUP VERSION 2A
A potentially serious problem with tape error
handling exists in V2A of BACKUP. Different customer sites
will experience this problem in varying degrees, depending
upon the release/MCO level of their monitor and the type of
tape drives that they use.
Edit 321 corrects this problem, and makes BACKUP
relatively failsafe with regard to tape errors. We
recommend that all sites install this patch. The patch is
enclosed as a FIX file to be inserted in BACKRS.REL.
[SYMPTOM]
Holes in RESTORED disk files, missing records.
[DIAGNOSIS]
Under the 6.03 monitor, the tape service often
returns control to the calling program before I/O has taken
place. If a tape write error occurs, the error will usually
be noticed by BACKUP at some later time, usually after some
number of output buffers have been queued for output by the
monitor. As a result, BACKUP writes the repeater records
out of sequence. These out of sequence repeater records are
thrown away when BACKUP reads them, and holes in the file
result.
[CURE]
1) Teach BACKUP to use repeater records out of
sequence, based on the value of the relative data word. In
addition, report missing records and repeated records out of
sequence as they happen.
2) If BACKUP appears to be losing records when the
tape controller is extremely busy, assign a larger value to
the assembly parameter NDSKBF. This will increase the size
of the disk buffer ring, and will prevent BACKUP from
getting farther ahead of a busy controller than BACKUP can
recover from.
[FILCOM]
File 1) DSKB:BACKUP.320[30,5326,BACKUP] created: 1114 20-Dec-1978
File 2) DSKC:BACKUP.321[30,5326,BACKUP] created: 1153 10-Jan-1979
1)1 TITLE BACKUP -- MODULE TO SCAN COMMANDS FOR BACKUP --
%2A(320)
1) SUBTTL P.F.CONKLIN/PFC/KCM/JEF/MEB/CLRH/VLR/CGN
19-DEC-78
1) CUSTVR==0 ;DEC DEVELOPMENT
****
2)1 TITLE BACKUP -- MODULE TO SCAN COMMANDS FOR BACKUP --
%2A(321)
2) SUBTTL P.F.CONKLIN/PFC/KCM/JEF/MEB/CLRH/VLR/CGN
09-JAN-79
2) CUSTVR==0 ;DEC DEVELOPMENT
**************
1)1 DECEVR==320 ;EDIT NUMBER
1) ;+
****
2)1 DECEVR==321 ;EDIT NUMBER
2) ;+
**************
1)6 ;END OF REVISION HISTORY
****
2)6 ;321 ^USE OUT-OF-SEQUENCE RECORDS, WARNING USER OF THE OCCURA
NCE.
2) ; ^DON'T REJECT UNEXPECTED REPEATER RECORDS.
2) ;
2) ;END OF REVISION HISTORY
**************
[FILCOM]
File 1) DSKB:BACKRS.320[30,5326,BACKUP] created: 1133 20-Dec-1978
File 2) DSKC:BACKRS.321[30,5326,BACKUP] created: 1601 12-Jan-1979
1)1 TITLE BACKRS -- MODULE TO DO THE WORK FOR BACKUP -- %2
A(320)
1) SUBTTL FRANK NATOLI/FJN/PFC/KCM/JEF/MEB/CLRH/VLR/CGN
19-DEC-78
1) CUSTVR==0 ;DEC DEVELOPMENT
****
2)1 TITLE BACKRS -- MODULE TO DO THE WORK FOR BACKUP -- %2
A(321)
2) SUBTTL FRANK NATOLI/FJN/PFC/KCM/JEF/MEB/CLRH/VLR/CGN
09-JAN-79
2) CUSTVR==0 ;DEC DEVELOPMENT
**************
1)1 DECEVR==320 ;EDIT NUMBER
1) ;+
****
2)1 DECEVR==321 ;EDIT NUMBER
2) ;+
**************
1)70 CAML T1,THSRDB ;SEE IF CURRENT OR LATER
1) JRST NEWDAT ;YES
1) MOVE T2,THSRDB ;LOAD NEEDED DISK BLOCK NUMBER
1) CAIL T2,N(T1) ;SEE IF NEEDED BLOCK IS IN THIS
TAPE RECORD
1) JRST NOTNEW ;NO--DROP IT
1) SUB T2,T1 ;YES, GET DIFFERENCE
****
2)70 ;**; [321] CHANGE FOLLOWING CNTFIL, 09-JAN-79
2) CAMN T1,THSRDB ;[321] BLOCK EXPECTED?
2) JRST XFR1 ;[321] YES - GO USE IT
2) MOVE T2,THSRDB ;LOAD NEEDED DISK BLOCK NUMBER
2) CAML T2,T1 ;[321] NEEDED BLOCK GE FIRST BLO
CK IN RECORD?
2) CAIL T2,N(T1) ;[321] AND ALSO LT FIRST BLOCK I
N NEXT RECORD?
2) JRST NOTINB ;[321] NO - GO RESET DISK POINTE
RS
2) SUB T2,T1 ;YES, GET DIFFERENCE
**************
1)70 NEWDAT: TXNN F,FL$CHK ;SEE IF /CHECK
1) CAMG T1,THSRDB ; OR IF THIS IS THE NEEDED BLOCK
1) JRST XFR1 ;YES--GO TRANSFER OVER
1) USETO FILE,(T1) ;NO--POSITION TO FILE BLOCK
1) MOVEM T1,THSRDB ; AND UPDATE FILE INDEX
1) JRST XFR1 ;PROCEED
1) DSKEOF: SUBI P1,200 ;COUNT LAST DATA XFR
****
2)70 ;**; [321] DELETE NEWDAT AND ADD NEW CODE, 09-JAN-79
2) NOTINB: CAML T1,THSRDB ;[321] PREVIOUS BLOCK?
2) JRST RSTMSD ;[321] NO - WE MISSED A BLOCK
2) MOVEM T1,THSRDB ;[321] YES - RESET FILE INDEX
2) WARN$N (PBR,Prior Block Repeated) ;[321] WARN USER
2) MOVEI T2,[ASCIZ/Rewriting from /] ;[321] MESSAGE
2) TXNE F,FL$CHK ;[321] CHECKING?
2) MOVEI T2,[ASCIZ/Rereading from /] ;[321] YES - OTHER M
SG
2) OUTSTR @T2 ;[321]
2) PUSHJ P,TYEFIL ;[321] TELL USER FILE AND BLOCK
2) JRST RSTUST ;[321] GO USE IT
2) RSTMSD: PUSH P,T1 ;[321] SAVE THIS RDB
2) WARN$N (BMT,Block Missed on Tape, expected) ;[321] WARN
2) PUSHJ P,TYEFIL ;[321] DISPLAY FILE AND BLOCK
2) POP P,THSRDB ;[321] UPDATE FILE INDEX
2) WARN$N (FLC,File continuing with) ;[321] SHOW WHAT'S HA
PPENING
2) PUSHJ P,TYEFIL ;[321] DITTO
2) RSTUST: MOVE T1,THSRDB ;[321] GET BLOCK NUMBER
2) TXNN F,FL$CHK ;[321] CHECKING?
2) JRST [USETO FILE,(T1) ;[321] NO - USETO DISK F
ILE
2) JRST XFR1 ;[321] GO USE THE BLOCK
2) ]
2) MOVSI T2,400000 ;[321] CHECKING - MUST RESET INP
UT BUFFERS
2) IORB T2,DSKHDR ;[321] FLAG BUFFER RING AS EMPTY
2) MOVEI T3,NDSKBF ;[321] PREPARE TO INVALIDATE ALL
BUFFERS
2) RSTUS1: SOJL T3,RSTUS2 ;[321] ANY MORE BUFFERS?
2) MOVE T4,(T2) ;[321] YES - GET NEXT .BFHDR
2) TXZ T4,BF.IOU ;[321] CLEAR THE USE BIT
2) MOVEM T4,(T2) ;[321] PUT IT BACK
2) MOVE T2,T4 ;[321] POINT TO NEXT BUFFER IN R
ING
2) JRST RSTUS1 ;[321] GO CHECK FOR MORE
2) RSTUS2: USETI FILE,(T1) ;[321] RING INVALIDATED - USETI
DISK FILE
2) PUSHJ P,@DSKIO ;[321] READ THE NEEDED DISK BLOC
K
2) JRST XFRERR ;[321] PROBLEM WITH DISK
2) JRST DSKEO1 ;[321] NO MORE DISK FILE
2) JRST XFR1 ;[321] GO COMPARE
2) DSKEOF: SUBI P1,200 ;COUNT LAST DATA XFR
**************
1)89 USEREC: ;[257]
1) IFN FT$RCV, <
1) PUSHJ P,RPTNXT ;[257] UNEXPECTED REPEATER RECOR
D NEXT?
1) JRST USERC1 ;[257] NO--PROCEED
1) WARN$N (URR,Unexpected Repeater Record Found) ;[257]
1) PUSHJ P,[MOVE T1,G$TYPE(MH) ;[302] GET RECORD TYPE
1) CAIE T1,T$FIL ;[302] IS IT FILE DATA?
1) PJRST NONFIL ;[302] NO
1) PJRST MASTR1] ;[302] YES, REPO
RT FILE NAME
1) JRST DOINPT ;[257] IGNORE IT
1) >; END IFN FT$RCV
1) USERC1: TRNE P1,IO.DER!IO.DTE!IO.BKT;[257] IF WORD ERRORS,
****
2)89 ;**; [321] DELETE CODE AT USEREC, 09-JAN-79
2) USEREC: ;[257]
2) USERC1: TRNE P1,IO.DER!IO.DTE!IO.BKT;[257] IF WORD ERRORS,
**************
1)94 ;RECORD IS NEXT. ^THE <FL$INP FLAG IS SET IF INPUT WAS FORCED IN
1) ;ORDER TO LOOK AHEAD.
****
2)94 ;RECORD WITH THE PROPER <RDW IS NEXT.
2) ;^THE <FL$INP FLAG IS SET IF INPUT WAS FORCED IN
2) ;ORDER TO LOOK AHEAD.
**************
1) INPUT F.MTAP, ;[257] FORCE INPUT ON THIS BUFFE
R
1) TXO F,FL$INP ;FLAG INPUT DONE
1)95 ;HERE TO SEE IF NEXT TAPE RECORD IS A REPEATER RECORD
1) ;ALSO REJECT RECORD IF BAD BUFFER SIZE OR NOT BACKUP FORMAT
1) TSTRPT: MOVE P1,S.MBPT ;[257] BUFFER ADDRESS
****
2)94 ;**; [321] CHANGE AT RPTNXT, 09-JAN-79
2) TXON F,FL$INP ;[321] FLAG INPUT DONE
2) INPUT F.MTAP, ;[321] AND INPUT IF NEEDED
2)95 ;HERE TO SEE IF NEXT TAPE RECORD IS A REPEATER RECORD
2) ;ALSO REJECT RECORD IF BAD BUFFER SIZE OR NOT BACKUP FORMAT
2) ;OR NOT THE EXPECTED RELATIVE DATA WORD.
2) TSTRPT: MOVE P1,S.MBPT ;[257] BUFFER ADDRESS
**************
1)95 TDNE T1,G$FLAG(P1) ;SEE IF ON
1) AOS (P) ;YES--ADVANCE RETURN
1) POPJ P, ;RETURN
1) >;END IFN FT$RCV
****
2)95 ;**; [321] CHANGE IN TSTRPT, 9-JAN-79
2) TDNN T1,G$FLAG(P1) ;[321] SEE IF ON
2) POPJ P, ;RETURN
2) MOVE T1,F$RDW(P1) ;[321] GET REPEATER'S RDW
2) CAMN T1,F$RDW(MH) ;[321] MATCHES THE OTHER BUFFER?
2) AOS (P) ;[321] YES - ADVANCE RETURN
2) POPJ P, ;[321] RETURN
2) >;END IFN FT$RCV
**************