                  <<< DOCD$:[NOTES$LIBRARY]SCT-RAVEN.NOTE;1 >>>
                         -< The SCT Raven conference >-
================================================================================
Note 284.0      LCKMGR_PERF: Fix LKI$GET_LOCKS_MAP use of LCKCTX      No replies
EVMS::JORDAN "{VDE SCT}"                            113 lines  26-FEB-1997 16:21
--------------------------------------------------------------------------------
							26 February 197

Title:	Fix SYSGETLKI use of LCKCTX 

Project:		Lock Manager
Project Leader:		Greg Jordan
Author:			Greg Jordan
Reviewed By:		Mark Stiles

Development Stream:	RAVEN_FT1
Check-in Type:		Bug Fix

Platforms Affected:	Alpha only

Components Changed:

	Facility	Module				Remarks
	--------	------				-------
	SYS		SYSGETLKI.MAR

Images Affected:	LOCKING.EXE

Special Build Instructions:	Please rebuild for X6DL and place a 
				new LOCKING.EXE image in [SYS1.SYS$LDR]

Associated QARs, CLDs, SPRs:

	QAR	EVMS-RAVEN 813
		EVMS-RAVEN 815

Documentation Affected:	none

Symptom Description:

	Booting X6DL as a cluster member with shadowed disks results in
	various crashes during boot.

Problem Statement / Analysis:

	Recent changes to the lock manager have over-utilized a field in
	the lock context block.  This has resulted in incorrect callback
	which results in the various crashes during boot.  This only occcurs
	in clusters with shadow sets.

Goals of This Change:

	In SYSGETLKI, fix the over-utilized field in the LCKCTX block.

Known Restrictions / Possible Limitations / Risks / Impact:

	Low risk and impact.

Design / Algorithms:

	Utilize LCKCTX$Q_TMP1 instead of LCKCTX$PQ_RET1 to store a callback 
	address in module SYSGETLKI, routine LKI$GET_LOCKS_MAPS.

Testing:

	The two systems described in QARs EVMS-RAVEN 813 and 815 have 
	both succesfully booted by Ken Young with a corrected LOCKING image.

Implementation:

************
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;4
    2   	.IDENT	'X-33'
    3   ;
******
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;3
    2   	.IDENT	'X-32'
    3   ;
************
************
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;4
   40   ;	X-33	GHJ		Gregory H. Jordan	26-Feb-1997
   41   ;		Change use of LCKCTX$PQ_RET1 to LCKCTX$Q_TMP1, there was
   42   ;		a conflict with RET1 when LKI$SND_LOCKS_MAP_REQ was called.
   43   ;
   44   ;	X-32	PKMW364		Paul K. M. Weiss	21-Feb-1997
   45   ;		Eliminate usage of LCKCTX$K_FIX_LEN and LCKCTX$PQ_CRETADR,
   46   ;		which have been discontinued.
******
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;3
   40   ;	X-32	PKMW364		Paul K. M. Weiss	21-Feb-1997
   41   ;		Eliminate usage of LCKCTX$K_FIX_LEN and LCKCTX$CRETADR,
   42   ;		which have been discontinued.
************
************
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;4
 3997   30$:	EVAX_STQ R6,LCKCTX$Q_TMP1(R2)	; Store caller's return address
 3998   	ASSUME LCKCTX$B_TYPE EQ LCKCTX$W_SIZE+2
******
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;3
 3993   30$:	EVAX_STQ R6,LCKCTX$PQ_RET1(R2)	; Store caller's return address
 3994   	ASSUME LCKCTX$B_TYPE EQ LCKCTX$W_SIZE+2
************
************
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;4
 4064   70$:	EVAX_LDQ R3,LCKCTX$Q_TMP1(R4)	; Get caller's return address
 4065   	EVAX_LDQ R5,LCKCTX$Q_CR5(R4)	; Restore caller's R5
******
File WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;3
 4060   70$:	EVAX_LDQ R3,LCKCTX$PQ_RET1(R4)	; Get caller's return address
 4061   	EVAX_LDQ R5,LCKCTX$Q_CR5(R4)	; Restore caller's R5
************

Number of difference sections found: 4
Number of difference records found: 9

DIFFERENCES /IGNORE=()/MERGED=1/OUTPUT=WORK3:[JORDAN.X6DL]SYSGETLKI.DIF;1-
    WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;4-
    WORK3:[JORDAN.X6DL]SYSGETLKI.MAR;3
