Google
 

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 *******************************