Trailing-Edge
-
PDP-10 Archives
-
BB-L014E-BM
-
autopatch/mndany.f05
There are 11 other files named mndany.f05 in the archive. Click here to see a list.
;******************** START OF DBMS20-V6 EDIT 420 *************************
;
;SYMPTOM
; DBMEND gets "INVALID BLOCK DESCRIPTOR" after a MERGE BEFORE
; command. Also, a PA1050 error will occasionally result from an
; ABSTRACT command.
;
;DIAGNOSIS
; When writing a before image (JR.BEF), DBCS will garbage the journal if
; the journal buffers are flushed because they are full, AND there is
; a remnant of the last image in the 'first' page (i.e., the image
; spanned more than one journal page), AND the transaction is terminated
; by a JBTRAN before anything else is placed in the journal buffers.
; Also, if the before image spanned more than two journal pages, the
; page anchor in all pages after the first page will be incorrect.
;
;CURE
; Ensure that JRCOPY flags the journal buffers as modified, and don't
; let JREFILL destroy JR.BIX after flushing the journal buffers. Also
; change the page anchor algorithm to handle an image span of more
; than two journal pages, so that on each journal page after the first,
; the page anchor will be a negative offset to the beginning of the
; data block (i.e., previous anchor - 1000).
;
;NOTE:
; THIS EDIT REPLACES EDIT 367 TO DBMS-20 V.6.
;
;*************** EDIT THE FOLLOWING INTO FILE 420.FIX *********************
.EDIT 420
.NAME WTK
.DATE 04-MAY-82
.MODULE DBJOUR
;;;; NEXT LINE MAY BE COMMENTED OUT IF EDIT 367 WAS NOT INSTALLED.
.REMOVE 367
.INSERT JRC.LP,BEFORE,<HRL 1,4>
PUSH 17,1 ;[420] SAVE R1 (HAS BLT DEST. IN R.H.)
HLRZ 1,3(10) ;[420] GET FLAGS (L.H.)
TRZ 1,1 ;[420] TURN OFF UN-MOD'D BIT
HRLM 1,3(10) ;[420] AND PUT BACK TO MEM
POP 17,R1 ;[420] RESTORE R1
.ENDI
.INSERT JRC.LP+11,BEFORE,<MOVNM 1,13(14)>
JUMPGE 1,.+3 ;[420] IF NEGATIVE, WE'VE LOOPED TO BEGINNING OF JBUFS
ADD 1,7(14) ;[420] SO ADD IN JR.BAFT(SS)
SUB 1,5(14) ;[420] AND SUBTRACT JR.1STP(SS) TO GET CORRECT
;[420] OFFSET TO BEGINNING OF JRN BLOCK
.ENDI
.INSERT JREFIL+10,REPLACE:2,<CAML 10,7(14)>
CAMGE 10,7(14) ;[420] PAST END OF JRN BUFFERS?
JRST .+6 ;[420] NO, SKIP A LITTLE
PUSHJ 17,JR.FLU ;[420] YES, FLUSH JRN BUFFERS
AOS 120(14) ;[420] ADD TO CNT OF FLUSHED-BECAUSE-JRN-BUFS-FULL
MOVE 10,5(14) ;[420] RECYCLE TO FIRST BUFFER
POP 17,0(17) ;[420] REPLACE FAKE PAGE # ON STACK
PUSH 17,0(10) ;[420] WITH REAL PAGE FOR RESTORE
.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
; DBCS2F
; DBMEND
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN MAKLIB
; *DBSANY.REL=DBSANY.REL,420.FIX/F
; *MNDANY.REL=MNDANY.REL,420.FIX/F
; *^C
; @SUBMIT DBMS20/TAG:DBALL ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 420 *******************************
;******************** START OF DBMS20-V6 EDIT 423 *************************
;
;SYMPTOM
; DBMEND gets "?CORISA - ILLEGAL SIZE ARGUMENT PASSED" during
; execution of the /SCH command, when processing a large schema file.
;
;DIAGNOSIS
; When enough areas are included in the schema, DBMEND moves the
; first page of the .SCH file out of its buffers during the area
; walk. When it starts the transaction walk, it takes a count of
; transactions (NTRAN) from what should be the first page. This
; erroneous count is then used to allocate space in the in-core
; subschema block, and the illegal size argument is detected.
;
;CURE
; Get the first page of the .SCH file back into the buffers before
; the transaction walk by calling routine FINDR%.
;
;*************** EDIT THE FOLLOWING INTO FILE 423.f02 *********************
.EDIT 423
.NAME WTK
.DATE 26-MAY-82
.MODULE MNDIDB
.INSERT SBI.LP+10,BEFORE,<PUSHJ 17,TRN.WA>
PUSH 17,16 ;[423] SAVE ARG LIST PTR FOR TRN.WA
PUSHJ 17,FINDR%## ;[423] DO FIND-ROOT BEFORE TRN.WALK
MOVEM 1,6 ;[423] AND UPDATE CRU
POP 17,16 ;[423] RESTORE ARG LIST PTR
.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:
;
; DBMEND
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN MAKLIB
; *MNDANY.REL=MNDANY.REL,423.f02/F
; *^C
; @RUN LINK
; *@DBMEN2.CMD ;FROM DISTRIBUTION TAPE
; @SAVE DSK:DBMEND
;
;************************** END OF EDIT 423 *******************************
;******************** START OF DBMS20-V6 EDIT 430 *************************
;
;SYMPTOM
; Transactions in the journal file that were deleted by DBMEND
; cannot be distinguished from transactions that were actually
; added to the database.
;
;DIAGNOSIS
; DBMS V.6 does not flag the header block of deleted transactions.
; There is no way, as from an application program, to place text
; in the journal via JRTEXT to note a deleted transaction.
;
;CURE
; Install code in DBMEND that will add the text "DELETED COMMAND"
; "DELETED TRANSACTION" to the journal when such an action
; is taken by DBMEND.
;
;*************** EDIT THE FOLLOWING INTO FILE 430.FIX *********************
.EDIT 430
.NAME WTK
.DATE 29-JUN-82
.MODULE DBJOUR
.INSERT JBT.BK+1,AFTER,<PUSHJ 17,JR.BAC>
MOVEI 16,TRNARG ;[430]
PUSHJ 17,JRTEX$ ;[430]
JRST TRNARG+1 ;[430]
TRNTXT: ASCII "DELETED TRANSACTION" ;[430]
TRNPTR: POINT 7,TRNTXT ;[430]
XWD 50000,23 ;[430]
XWD -1,0 ;[430]
TRNARG: XWD 640,TRNPTR ;[430]
.ENDI
.INSERT JBC.BK+10,AFTER,<PUSHJ 17,JR.BAC>
MOVEI 16,COMARG ;[430]
PUSHJ 17,JRTEX$ ;[430]
JRST COMARG+1 ;[430]
COMTXT: ASCII "DELETED COMMAND" ;[430]
COMPTR: POINT 7,COMTXT ;[430]
XWD 50000,17 ;[430]
XWD -1,0 ;[430]
COMARG: XWD 640,COMPTR ;[430]
.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:
;
; DBMEND
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN MAKLIB
; *MNDANY.REL=MNDANY.REL,430.FIX/F
; *^C
; @R LINK
; *@DBMEN2.CMD ;FROM DIST. TAPE
; @SAVE DSK:DBMEND
;
;************************** END OF EDIT 430 *******************************
;******************** START OF DBMS20-V6 EDIT 432 *************************
;
;SYMPTOM
; DBMEND occasionally reports 1663 exception during DELETE
; TRANSACTION, or 1463 during ABSTRACT.
;
;DIAGNOSIS
; If the journal has just been rolled over (reached the maximum
; transaction count) or was marked for overwrite (last run-unit
; executed CLOSE JOURNAL), it will legally have no data for an
; ABSTRACT or DELETE TRANSACTION, but DBMEND doesn't account
; for that possibility.
;
;CURE
; Allow DBMEND to sense that the journal has no data, and apprise
; the user of that situation (not an error message).
;
;*************** EDIT THE FOLLOWING INTO FILE 432.FIX *********************
.EDIT 432
.NAME WTK
.DATE 24-SEP-82
.MODULE DBJOUR
DBKREG==40
CURSCA==163
.INSERT JRFEOJ+3,REPLACE:4,<MOVE R1,J1.LIX(JLP)>
SKIPG R1,J1.LIX(JLP)
CAIA ;[6%432] JOURNAL IN SUPERSEDED STATE
CAIG R1,1 ;[6%432] JOURNAL EMPTY?
.ENDI
.INSERT MRB.DSK+1,BEFORE,<PUSHJ P,RES.BF>
CAIN R1,1 ;[6%432] ANY DATA IN JOURNAL?
JRST MRB.JCN ;[6%432] NO, JUST GIVE MESSAGE
.ENDI
.INSERT MRB.EX+4,REPLACE:1,<PUSHJ P,CLODEF>
SETZ R1, ;[6%432] DATA WAS IN JOURNAL
MRB.JCN: ;[6%432] HERE WHEN JOURNAL EMPTY
PUSH P,R1 ;[6%432] STATE ALREADY IN R1
PUSHJ P,CLODEF ; CLOSE THE TRANSACTION
POP P,R0 ;[6%432] GET BACK STATUS
MOVE R1,CURSCA(X) ;[6%432] FIND SYSCOM
MOVEM R0,DBKREG(R1) ;[6%432] STORE STATUS IN DB-KEY
.ENDI
.INSERT MRA.DSK+1,BEFORE,<PUSHJ P,RES.BF>
CAIN R1,1 ;[6%432] ANY DATA IN JOURNAL?
JRST MRA.JCN ;[6%432] NO, JUST GIVE MESSAGE
.ENDI
.INSERT MRA.EX+4,REPLACE:1,<PUSHJ P,CLODEF>
SETZ R1, ;[6%432] DATA WAS IN JOURNAL
MRA.JCN: ;[6%432] HERE WHEN JOURNAL EMPTY
PUSH P,R1 ;[6%432] STATE ALREADY IN R1
PUSHJ P,CLODEF ; CLOSE THE TRANSACTION
POP P,R0 ;[6%432] GET BACK STATUS
MOVE R1,CURSCA(X) ;[6%432] FIND SYSCOM
MOVEM R0,DBKREG(R1) ;[6%432] STORE STATUS IN DB-KEY
.ENDI
.INSERT ABSTR$,AFTER,<PUSHJ P,ABSENV>
JUMPE R0,ABS.ND ;[6%432] JOURNAL CONTAINS NO DATA
.ENDI
.INSERT ABS.EX,AFTER,<PUSHJ P,ABSRES>
SETZ R0, ;[6%432] FLAG SUCCESS
CAIA ;[6%432] AND SKIP FLAGGING EMPTY
ABS.ND: ;[6%432] HERE WHEN JOURNAL EMPTY
MOVEI R0,1 ;[6%432] FLAG LABEL-PAGE-ONLY
ABS.X: ;[6%432] STORE STATUS AND EXIT
MOVE R1,CURSCA(X) ;[6%432] FIND SYSCOM AREA
MOVEM R0,DBKREG(R1) ;[6%432] AND STORE STATUS
.ENDI
.INSERT BUILD$,AFTER,<PUSHJ P,ABSENV>
JUMPE R0,BLD.ND ;[6%432] JOURNAL CONTAINS NO DATA
.ENDI
.INSERT BLD.EX,AFTER,<PUSHJ P,ABSRES>
SETZ R0, ;[6%432] FLAG SUCCESS
CAIA ;[6%432] AND SKIP FLAGGING EMPTY
BLD.ND: ;[6%432] HERE WHEN JOURNAL EMPTY
MOVEI R0,1 ;[6%432] FLAG LABEL-PAGE-ONLY
BLD.X: ;[6%432] STORE STATUS AND EXIT
MOVE R1,CURSCA(X) ;[6%432] FIND SYSCOM AREA
MOVEM R0,DBKREG(R1) ;[6%432] AND STORE STATUS
.ENDI
.INSERT ABSE.DSK+1,BEFORE,<PUSHJ P,RES.BF>
CAIN R1,1 ;[6%432] ANY DATA IN JOURNAL
JRST ABSE.FX ;[6%432] NO, JUST GIVE MESSAGE
.ENDI
.INSERT ABSE.X,BEFORE,<POPJ P,>
SETO R0, ;[6%432] INDICATE ENVIRONMENT SET
CAIA ;[6%432]
ABSE.FX: ;[6%432] HERE WHEN NOTHING TO ABS/BLD
SETZ R0, ;[6%432] TREAT AS ERROR CONDITION
.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:
;
; DBMEND
;
;
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN MAKLIB
; *MNDANY.REL=MNDANY.REL,432.FIX/F
; *DBMEN2.REL=DBMEN2.REL,432.F02/F
; *^C
; @R LINK
; *@DBMEN2.CMD ;FROM DISTTRIBUTION TAPE
; @SAVE DSK:DBMEND
;
;************************** END OF EDIT 432 *******************************
;******************** START OF DBMS20-V6 EDIT 436 *************************
;
;[SYMPTOM]
; A call to JRDATA can produce a ?Memory Protection Violation. This
; problem is exhibited by the UETP test program ORDENT.CBL.
;
;[DIAGNOSIS]
; The first thing JRDATA does is start a default transaction if no
; transaction is active. Execution of the DEFTRAN routine causes the
; argument pointer (AC 16) to be changed, and when JRDATA later tries to
; retrieve the size argument, the fatal error can occur.
;
;[CURE]
; Save the argument pointer around the call to DEFTRN.
;
;
;*************** EDIT THE FOLLOWING INTO FILE 436.FIX *********************
.EDIT 436
.NAME EGM
.DATE 23-Aug-82
.MODULE DBJOUR
.INSERT JRDAT$+1,REPLACE,<PUSH P,DATA(AP)>
PUSH P,AP ;[436] Preserve Arg pointer
.ENDI
.INSERT JRDAT$+4,REPLACE,<POP P,R3>
POP P,AP ;[436] Restore Arg pointer
MOVEI R2,@DATA(AP) ;[436] Get address of data
LDB R3,[POINT ARG$TYP,ARG.TYP+DATA(AP),ARG%TYP] ;[436] and arg type
.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:
; DBMEND
;
;LANGUAGE INTERFACES:
; FORTRAN (FORLIB.REL,DBMSF.EXE)
; COBOL (LIBOL.REL,LIBO12.EXE,C74LIB.REL,C74O12.EXE)
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN SYS:MAKLIB
; *DBSANY.REL=DBSANY.REL,436.FIX/F
; *MNDANY.REL=MNDANY.REL,436.FIX/F
; */EXIT
; @SUBMIT DBMS20 ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 436 *******************************
;******************** START OF DBMS20-V6 EDIT 444 *************************
;
; [SYMPTOM]
;
; DELETE TRANSACTION or a call to JBTRAN produces a
; 1402/1602 exception, and a MERGE BEFORE using the same
; journal produces a 1602 exception part way through backing
; out a transaction. Also data base corruption with no error
; indication after either of these operations, with the
; corrupted data base pages appearing with the bottom most
; part of the page shifted up one or two words towards the top
; of the page.
;
; [DIAGNOSIS]
;
; When a transaction includes a before image block that
; spans multiple journal pages, there is the possibility that
; the block may end on a page such that there is insufficient
; room on that page to place another logical block header. In
; this case, the journal routines mark one or two words of
; free space in the journal page anchor, and continue adding
; blocks beginning with the next page (similar to the way in
; which a transaction trailer appears). The previous size and
; code for the subsequent block show the actual size of the
; block minus the free space, which is the correct
; information.
;
; In backing out a transaction, the complete transaction
; is scanned backwards in order to pick out the before images
; and restore them in reverse order. The routines that do so
; construct an entire before image from possibly multiple
; journal pages using a sequence of BLTs. In the situation
; where a journal page contains nothing but the information
; for a single logical block, the code assumes that the entire
; page will need to be BLTed, and forgets to account for the
; possible free space. The BLT will shift the data up one or
; two words, and cause the BLT for the top of the transaction
; to be 'short' by that number of words. Depending on how
; much of the transaction block is left to be shortchanged,
; the shifted data may move into the position of the data base
; page number for the before image (you generally get the
; highest used,,free word, the first calc chain header, or
; first dbkey) which might be out of range causing the
; 1402/1602. This does not always occur, and you get either a
; bad page number and/or corrupted data.
;
; [CURE]
;
; Account for the possible free space in the full page
; BLT setup code.
;
;*************** EDIT THE FOLLOWING INTO FILE 444.FIX *********************
.EDIT 444
.NAME EGM
.DATE 14-Sep-82
.MODULE DBJOUR
.INSERT JR.SPL+4,REPLACE:1 ;<Should be JUMPL LEFT,[lit]>
JUMPL LEFT,[MOVEI LEFT,JR.PSIZ(JBP) ;EOD + 1
SUB LEFT,BUFLIM ;NOW ALL DATA ON THIS PAGE
HLRZ R0,JP.ANC(JBP) ;[6%444] Offset to last item
TRNN R0,(1B0) ;[6%444] If any free space
SUB LEFT,R0 ;[6%444] Account for it
JRST .+1]
.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:
; DBMEND
;
;LANGUAGE INTERFACES:
; FORTRAN (FORLIB.REL,DBMSF.EXE)
; COBOL (LIBOL.REL,LIBO12.EXE,C74LIB.REL,C74O12.EXE)
; ------------------ TO INSTALL THIS EDIT ------------------
;
; @RUN SYS:MAKLIB
; *DBSANY.REL=DBSANY.REL,444.FIX/F
; *MNDANY.REL=MNDANY.REL,444.FIX/F
; */EXIT
; @SUBMIT DBMS20 ;DBMS20.CTL FROM DISTRIBUTION TAPE
;
;************************** END OF EDIT 444 *******************************
;******************** START OF DBMS20-V6 EDIT 456 *************************
;
; SEE 456.FIX FOR SYMPTOM/DIAGNOSIS/CURE
;
;*************** EDIT THE FOLLOWING INTO FILE 456.F02 *********************
.EDIT 456
.NAME WTK
.DATE 04-NOV-82
.MODULE MNDIDB
.INSERT OPEND$,AFTER,<TLO SS,(MND.BIT)>
MOVEI R1,1732 ;ADDRESS OF DBMEND'S 'DEL TRA' FLAG
SKIPE 0,0(R1) ;IF DOING A 'DEL TRA'
TLO X,PSW.NRL ; DON'T RELEASE JOURNAL LOCKS
.ENDI
.INSERT XCLUD$,AFTER,<TLO SS,(XCLU.BIT!MND.BIT)>
MOVEI R1,1732 ;ADDRESS OF DBMEND'S 'DEL TRA' FLAG
SKIPE 0,0(R1) ;IF DOING A 'DEL TRA'
TLO X,PSW.NRL ; DON'T RELEASE JOURNAL LOCKS
.ENDI
.INSERT DOPEN$,AFTER,<TLO SS,(FOPN.BIT!MND.BIT)>
MOVEI R1,1732 ;ADDRESS OF DBMEND'S 'DEL TRA' FLAG
SKIPE 0,0(R1) ;IF DOING A 'DEL TRA'
TLO X,PSW.NRL ; DON'T RELEASE JOURNAL LOCKS
.ENDI
.ENDE
;***************************** CAUTION *************************************
;
; SEE 456.FIX FOR INSTALLATION INSTRUCTIONS
;
;************************** END OF EDIT 456 *******************************