Trailing-Edge
-
PDP-10 Archives
-
BB-L014E-BM
-
autopatch/dbs20.f05
There are no other files named dbs20.f05 in the archive.
;******************** START OF DBMS20-V6 EDIT 425 *************************
;
;SYMPTOM
; When an area is open for RETRIEVAL, DBMS returns
; error status 360, and error data contains 0/19005.
;
;DIAGNOSIS
; DBMS has attempted to read a page in a non-existent section
; in file opened read-only. The monitor returns error LNGFX1
; but there is no code to trap this error properly, nor to
; store the JSYS error code.
;
;CURE
; Change code in DBMIO to retrieve the PMAP error and to
; ignore error LNGFX1. This will cause a 0326 exception
; (nonexistent page), rather than the 0360 (operating system
; error). Handle other errors properly.
;
;*************** EDIT THE FOLLOWING INTO FILE 425.FIX *********************
.EDIT 425
.NAME RL
.DATE 09-JUN-82
.MODULE DBMIO
LNGFX1=601317
.FHSLF=400000
.INSERT MGOS.R+16,REPLACE:2,<PMAP>
PMAP ;[425]
ERJMP [PUSH 17,R1 ;[425] Save some registers
PUSH P,R2 ;[425]
MOVEI R1,.FHSLF ;[425] Get last error
GETER ;[425]
HRRZ R1,R2 ;[425] Get the error code
CAIE R1,LNGFX1 ;[425] Is it the long file error?
JRST [HRLZ R0,R1 ;[425] Save the JSYS error code
POP P,R2 ;[425] Restore the registers
POP P,R1 ;[425]
HLRZS R1 ;[425] Get JFN in right half
GETSTS ;[425] Get file status
TLNN R2,(GS%EOF) ;[425] End of File?
JRST [HRRI R0,^D19005 ;[425] No, signal an error
PUSHJ P,ERRRG.## ;[425]
PUSHJ P,XC.OS##] ;[425]
TLO SS,(EOF.BIT) ;[425] Set End-of-File flag
JRST .+1] ;[425] Return, no big deal
SETO 1, ;[425] Prepare to unmap file page
MOVE 2,(17) ;[425] Get process,,memory page
PMAP ;[425] Unmap it
ERJMP [MOVEI 1,.FHSLF ;[425] Get the last error
GETER ;[425]
HRLZ R0,R1 ;[425] Save for error data
HRRI R0,^D19077 ;[425] Enhance error data
PUSHJ P,ERRRG.## ;[425]
PUSHJ P,XC.OS##] ;[425]
POP P,2 ;[425] Restore registers
POP P,1 ;[425]
JRST .+1] ;[425] Continue as usual
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; TO AVOID LOSING ANY PREVIOUS PATCHES BE
; SURE TO USE THE LATEST PATCHED REL FILES
; AS A BASE FOR THIS EDIT.
;
; THIS PATCH AFFECTS THE FOLLOWING DBMS COMPONENTS:
;
; DBINFO
; DBMEND
; LIBOL
; FORLIB
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @MAKLIB
; *DBS20.REL=DBS20.REL,425.FIX/F
; *DBSI20.REL=DBSI20.REL,425.FIX/F
; *DBMEN2.REL=DBMEN2.REL,425.FIX/F
; *^Z
; @SUBMIT DBMS20/TAG:DBALL ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 425 *******************************
;******************** START OF DBMS20-V6 EDIT 426 *************************
;
;SYMPTOM
; When a lock conflict occurs on OPEN AREA, the JSYS error code
; reported in ERROR-DATA is 777777, and not a valid JSYS error code.
;
;DIAGNOSIS
; The ENQ.IT macro is not assembling code to save the error return
; in the left half of R0.
;
;CURE
; Rebuild the code assembled for ENQ.IT to save the JSYS error return.
;
;*************** EDIT THE FOLLOWING INTO FILE 426.FIX *********************
.EDIT 426
.NAME WTK
.DATE 23-JUN-82
.MODULE DBMLOK
.INSERT LOK.J2+2,REPLACE:2,<ENQ>
ENQ
JRST [HRL R0,R1 ;[426] SAVE THE ENQ ERROR RETURN
CAIN LBEG,ENQX6
JRST [HRRI X20004
PUSHJ P,ERRRG.
PUSHJ P,XC.SOF]
CAIN LBEG,ENQX5
JRST [HRRI X20501
PUSHJ P,ERRRG.
PUSHJ P,XC.DOR]
CAIE LBEG,ENQX18
CAIN LBEG,IPCFX8
JRST [HRRI X20502
PUSHJ P,ERRRG.
PUSHJ P,XC.RSX]
JRST [HRRI X20503
PUSHJ P,ERRRG.
PUSHJ P,XC.QOS]]
.ENDI
.INSERT LOK.OP+4,REPLACE:2,<ENQ>
ENQ
JRST [HRL R0,R1 ;[426] SAVE THE ENQ ERROR RETURN
CAIN LBEG,ENQX6
JRST [HRRI X20005
PUSHJ P,ERRRG.
PUSHJ P,XC.RNA]
CAIN LBEG,ENQX5
JRST [HRRI X20505
PUSHJ P,ERRRG.
PUSHJ P,XC.DOR]
CAIE LBEG,ENQX18
CAIN LBEG,IPCFX8
JRST [HRRI X20506
PUSHJ P,ERRRG.
PUSHJ P,XC.RSX]
JRST [HRRI X20507
PUSHJ P,ERRRG.
PUSHJ P,XC.QOS]]
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; TO AVOID LOSING ANY PREVIOUS PATCHES BE
; SURE TO USE THE LATEST PATCHED REL FILES
; AS A BASE FOR THIS EDIT.
;
; THIS PATCH AFFECTS THE FOLLOWING DBMS COMPONENTS:
;
; DBINFO
; DBMEND
; LIBOL
; FORLIB
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @MAKLIB
; *DBS20.REL=DBS20.REL,426.FIX/F
; *DBSI20.REL=DBSI20.REL,426.FIX/F
; *DBMEN2.REL=DBMEN2.REL,426.FIX/F
; *^Z
; @SUBMIT DBMS20/TAG:DBALL ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 426 *******************************
;******************** START OF DBMS20-V6 EDIT 443 *************************
;
;SYMPTOM
; When the FFUFP calls in DBMIO detect an error other than FFUFX3,
; error trap code does not capture the proper error value.
;
;DIAGNOSIS
; To test for FFUFX3, that value is subtracted from R1. If the error
; wasn't FFUFX3, the error is trapped with R1 supposedly holding
; the actual error value.
;
;CURE
; Fix the error value in R1, by adding FFUFX3 back in, before trapping
; the error.
;
;*************** EDIT THE FOLLOWING INTO FILE 443.FIX *********************
.EDIT 443
.NAME WTK
.DATE 15-SEP-82
.MODULE DBMIO
.INSERT FF.UFP+6,REPLACE:2,<FFUFP>
FFUFP
JRST [SUBI R1,FFUFX3
JUMPE R1,FF.U1
ADDI R1,FFUFX3 ;[6%443] RESTORE ERROR VALUE
JRST [HRL R1
HRRI X19015
PUSHJ 17,ERRRG.
PUSHJ 17,XC.OS]]
.ENDI
.INSERT FF.U1+2,REPLACE:2,<FFUFP>
FFUFP
JRST [SUBI R1,FFUFX3
JUMPE R1,FF.U1+4
ADDI R1,FFUFX3 ;[6%443] RESTORE ERROR VALUE
JRST [HRL R1
HRRI X19016
PUSHJ 17,ERRRG.
PUSHJ 17,XC.OS]]
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; TO AVOID LOSING ANY PREVIOUS PATCHES BE
; SURE TO USE THE LATEST PATCHED REL FILES
; AS A BASE FOR THIS EDIT.
;
; THIS PATCH AFFECTS THE FOLLOWING DBMS COMPONENTS:
;
; LIBOL
; FORLIB
; DBMEND
; DBINFO
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN MAKLIB
; *DBS20.REL=DBS20.REL,443.FIX/F
; *DBSI20.REL=DBSI20.REL,443.FIX/F
; *DBMEN2.REL=DBMEN2.REL,443.FIX/F
; *^C
; @SUBMIT DBMS20/TAG:DBALL ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 443 *******************************
;******************** START OF DBMS20-V6 EDIT 447 *************************
;
; [SYMPTOM]
;
; When a DBS file which may have multiple file sections
; (long file) has been opened for retrieval, DBCS can return
; error xx60, error data 19005. With edit 425 installed, this
; exception will not occur, but exception 0356 can. There are
; also related instances of exception 0157 when closing the
; data base.
;
; [DIAGNOSIS]
;
; If an attempt is made to map in a page from a
; non-existant file section (or sections) while the DBS file
; is opened read-only, the PMAP will fail with error LNGFX1.
; This can occur when specifying a direct or calc key for a
; non-existant page or record, or more commonly when
; clustering (via transactions) such that a cluster starts in
; an existing file section and ends in a non-existing one.
;
; Prior to edit 425, the PMAP failure just produced the xx60
; (OS) exception. Edit 425 attempted to compensate for this
; case by merely removing all the pages that were mapped and
; returning normally, leaving the xx26 (NRS) exceptions to be
; produced by the I/O kernal. This was insufficient for the
; cluster/multi section case, in that it removed valid data
; eventually causing the xx56 (DAT) bad pointer exception.
;
; In a related situation, if the first page of a cluster is
; non-existant, the page is eliminated from the process map,
; and an immediate NRS or UMR exception is generated. However
; this leaves the remaining pages of the cluster mapped with
; no indication in the buffer blocks that they exist. The
; close code will not know that they need to be unmaped, and
; the eventual CLOSF% will fail producing the 0157 (SOF)
; exception.
;
; [CURE]
;
; Supersede edit 425. Add a new routine to deal with the
; LNGFX1 error such that the program will continue normally if
; the first page of the map request is not in a non-existant
; section. In all other cases, generate an immediate NRS or
; UMR exception as appropriate.
;
; Also, if the first page of a cluster is truely non-existant,
; make sure that all pages for that cluster are unmaped before
; generating the NRS/UMR exception.
;
; This edit adds the following new exceptions to DBCS:
;
; SOF/19032 An abortive PMAP failed when erasing cluster pages
; OS/19033 PMAP JSYS read error in .DBS file
; NRS/19034 FIND rse1/rse5 for a record on a non-existant page
; UMR/19035 Non FIND res1/rse5 retrieval from non-existant page
; SOF/19036 An abortive PMAP failed when erasing cluster pages
;
;*************** EDIT THE FOLLOWING INTO FILE 447.FIX *********************
.EDIT 447
.NAME EGM
.DATE 22-Sep-82
.MODULE DBMIO
;***** Remove the following line if edit 425 is not installed *****
.REMOVE 425 ;Totally superceded by this edit
.INSERT MGOS.R+16,REPLACE:2,<PMAP> ; Must have ERCAL following it
PMAP ;MAP THE PAGE(S) FILE TO PROCESS
ERCAL MGO.RE ;[6%447] Lengthy error recovery sub
;[6%447] Can return as if no error
.ENDI
.INSERT MIOLIT+37,REPLACE:2,<HRRZ R1,PAGIOW(X)>
PUSHJ P,ABT.CL ;[6%447] Unmap entire cluster
.ENDI
.INSERT MGOS.R+24,AFTER,<POPJ P,>
MGO.RE: ;[6%447] Handle error from PMAP
;[6%447] of DBS file to process.
;[6%447] Deals with special situation
;[6%447] of non-existant file sections
;[6%447] when read-only.
;[6%447] R1,R2,R3 as of last PMAP
PURGE LNGFX1,.FHSLF ;In case edit 425 installed
LNGFX1==601317 ;[6%447] PMAP error of interest
.FHSLF==400000 ;[6%447] Frk handle
X19032==^D19032 ;[6%447] Error data values
X19033==^D19033 ;[6%447]
X19034==^D19034 ;[6%447]
X19035==^D19035 ;[6%447]
PUSH P,R3 ;[6%447] Used/restored in funny order
PUSH P,R2 ;[6%447]
PUSH P,R1 ;[6%447]
PUSH P,R3 ;[6%447]
PUSH P,R2 ;[6%447]
MOVEI R1,.FHSLF ;[6%447] Must know why it failed
GETER ;[6%447]
HRRZS R2 ;[6%447] Isolate error
CAIE R2,LNGFX1 ;[6%447] No such file section/read-only?
JRST [HRL R0,R2 ;[6%447] No, something else
HRRI R0,X19005 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.OS] ;[6%447]
SETO R1, ;[6%447] Yes, prepare for unmap
POP P,R2 ;[6%447] Process,,page num from PMAP
HRLI R3,(PM%ABT!PM%CNT) ;[6%447] Prevent file updating
PMAP ;[6%447] Remove all pages from cluster
ERJMP [HRRI R0,X19032 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.SOF] ;[6%447]
POP P,R3 ;[6%447] Original flags
POP P,R1 ;[6%447] JFN,,file page
HRRZ R2,R1 ;[6%447] Copy page num
ADDI R2,-1(R3) ;[6%447] Last page
TRZ R2,777 ;[6%447] Isolate file section
CAIG R2,(R1) ;[6%447] Skip if multiple sections
JRST MGO.RN ;[6%447] 1st and all pages non-exist
;[6%447] Two sections, try first again
HRRZ R2,R1 ;[6%447] File page number
TRO R2,777 ;[6%447] Highest page number in section
SUBI R2,-1(R1) ;[6%447] Num of pages till end
HRR R3,R2 ;[6%447] Num to try this time
POP P,R2 ;[6%447] Orig process,,page num again
PMAP ;[6%447] Pages from this file section
ERJMP [MOVEI R1,.FHSLF ;[6%447] See if same failure
GETER ;[6%447]
HRRZS R2 ;[6%447]
CAIE R2,LNGFX1 ;[6%447] Still no file section?
JRST [HRL R0,R2 ;[6%447] Nope, something else
HRRI R0,X19033 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.OS] ;[6%447]
JRST MGO.RN] ;[6%447] First set of pages non-existant
POP P,R3 ;[6%447] First set has existing file sec
POPJ P, ;[6%447] Second set does not exist but
;[6%447] must defer excep till usage
;[6%447] Common exceptions when first
MGO.RN: MOVEI R1,.FHSLF ;[6%447] page in non-exist file section
GETER ;[6%447] Get last error again
TLNE SS,(VRO.BI) ;[6%447] Retrieve only verb?
JRST [HRL R0,R2 ;[6%447] Non-exist direct/calc rec
HRRI R0,X19034 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.NRS] ;[6%447]
JRST [HRL R0,R2 ;[6%447] Some write other than ASR
HRRI R0,X19035 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.UMR] ;[6%447]
.ENDI
.INSERT ABT.EX,AFTER,<POPJ P,>
ABT.CL: ;[6%447] Unmap all pages in cluster
;[6%447] last used to map from DBS file
X19036==^D19036 ;[6%447] Error data
PUSH P,R1 ;[6%447]
PUSH P,R2 ;[6%447]
PUSH P,R3 ;[6%447]
SETOM R1 ;[6%447] Unmap
MOVE R3,CCLUSZ(X) ;[6%447] Current cluster size
IMUL R3,AB.PSIZ(AREABLK) ;[6%447] Pagesize in words
LSH R3,-^D9 ;[6%447] Actual num of pages
HRLI R3,(PM%ABT!PM%CNT) ;[6%447] No file updates
HRRZ R2,PAGIOWD(X) ;[6%447] 1st pag addr in clus
LSH R2,-^D9 ;[6%447] Actual page num
HRLI R2,.FHSLF ;[6%447] My process
PMAP ;[6%447] Clean it up
ERJMP [HRRI R0,X19036 ;[6%447]
PUSHJ P,ERRRG. ;[6%447]
PUSHJ P,XC.SOF] ;[6%447]
POP P,R3 ;[6%447]
POP P,R2 ;[6%447]
POP P,R1 ;[6%447]
POPJ P, ;[6%447] Return to give exception
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; TO AVOID LOSING ANY PREVIOUS PATCHES BE
; SURE TO USE THE LATEST PATCHED REL FILES
; AS A BASE FOR THIS EDIT.
;THIS PATCH AFFECTS THE FOLLOWING:
;DBMS COMPONENTS:
; DBINFO
; DBMEND
;
;LANGUAGE INTERFACES:
; FORTRAN (FORLIB.REL,DBMSF.EXE)
; COBOL (LIBOL.REL,LIBO12.EXE,C74LIB.REL,C74O12.EXE)
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN SYS:MAKLIB
; *DBS20.REL=DBS20.REL,447.FIX/F
; *DBSI20.REL=DBSI20.REL,447.FIX/F
; *DBMEN2.REL=DBMEN2.REL,447.FIX/F
; */EXIT
; @SUBMIT DBMS20/TAG:DBALL ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 447 *******************************
;******************** START OF DBMS20-V6 EDIT 456 *************************
;
; SEE 456.FIX FOR SYMPTOM/DIAGNOSIS/CURE
;
;*************** EDIT THE FOLLOWING INTO FILE 456.F03 *********************
.EDIT 456
.NAME WTK
.DATE 04-NOV-82
.MODULE DBMLOK
PSW.NR==200000 ;PSW FLAG 'DONT RELEASE LOCKS'
.INSERT ULK.JR+1,BEFORE,<HRRZ LKBLK,LK.BLK(SS)>
TLNE X,PSW.NRL ;IF DBMEND DOESN'T WANT JRN LOCKS RELEASED
JRST ULK.JR+17 ; DON'T RELEASE THEM
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; SEE 456.FIX FOR INSTALLATION INSTRUCTIONS
;
;************************** END OF EDIT 456 *******************************