PJ40702: CORRECTING APAR TO PJ40550
Closed as program error.
See Problem Summary.
APAR NUMBER: PJ40702 PRODUCT: z/TPF FUNCTIONAL AREA: DATA BASE REORGANIZATION SHIPPED IN PUT: 10 ABSTRACT: Provide nondisruptive online database reorganization (ODBR) end-of-session support in a loosely coupled complex. Nondisruptive ODBR end-of-session support in a non-loosely coupled complex was provided by PJ40550. PACKAGE CONTENTS: Source Segments: (C) base/cp/cefh.cpy (C) base/cp/cidp.cpy (C) base/cp/cjie.cpy (C) base/cp/cjim.cpy (C) base/cp/cjiv.cpy (C) base/cp/ct38.cpy (C) base/cp/cvf3.cpy (C) base/include/tpf/c_idsfct.h (C) base/include/tpf/c_miob.h (C) base/include/tpf/c_vfac.h (C) base/include/tpf/i_mlsb.h (C) base/include/tpf/i_odbr.h (C) base/include/tpf/i_odbrmsg.h (C) base/macro/dctmio.mac (C) base/macro/ifct.mac (C) base/macro/imlsb.mac (C) base/macro/vf0ac.mac (C) base/rt/cvbv.c (C) base/rt/odbrAccept.c (C) base/rt/odbrBuildMLSB.cpp (C) base/rt/odbrCkSkipLock.asm (C) base/rt/odbrMessages.cpp (C) base/rt/odbrMLSB_utils.cpp (C) base/rt/odbrStart.c (C) base/rt/odbrUpdateAsync.asm (C) base/rt/odbrUpdateVFA.asm (C) base/rt/zfctbheap.c (C) base/rt/zfctbload.c (C) base/rt/zfctbmem.c (C) hpo/rt/clme.asm (C) hpo/rt/clmh.asm (C) hpo/rt/dbry.asm (C) hpo/rt/odbrPurgeLocks.cpp Object Only Binaries: None. Configuration Independent Binaries: (C) base/lib/libCVBV.so (C) base/lib/libDBR1.so (C) base/lib/libDBRE.so (C) base/load/CVBV.so (C) base/load/DBR1.so (C) base/load/DBRE.so (C) base/obj/cvbv.o (C) base/obj/odbrAccept.o (C) base/obj/odbrBuildMLSB.o (C) base/obj/odbrCkSkipLock.o (C) base/obj/odbrMessages.o (C) base/obj/odbrMLSB_utils.o (C) base/obj/odbrStart.o (C) base/obj/odbrUpdateVFA.o (C) hpo/load/CLME.so (C) hpo/load/CLMH.so (C) hpo/load/DBRP.so (C) hpo/load/DBRY.so (C) hpo/obj/clme.o (C) hpo/obj/clmh.o (C) hpo/obj/dbry.o (C) hpo/obj/odbrPurgeLocks.o (C) base/lib/libDBRS.so (C) base/lib/libDBRT.so (C) base/load/DBRS.so (C) base/load/DBRT.so (C) base/obj/dbrs.o (C) base/obj/odbrUpdateAsync.o (C) base/obj/odbrUpdateMFST.o (C) hpo/obj/odbrPurgeModule.o (C) base/obj/dbrt.o Support Files: base/lst/cvbv.lst base/lst/CVBV.map base/lst/dbrs.lst base/lst/dbrt.lst base/lst/DBR1.map base/lst/DBRE.map base/lst/DBRS.map base/lst/DBRT.map base/lst/odbrAccept.lst base/lst/odbrBuildMLSB.lst base/lst/odbrCkSkipLock.lst base/lst/odbrMessages.lst base/lst/odbrMLSB_utils.lst base/lst/odbrStart.lst base/lst/odbrUpdateAsync.lst base/lst/odbrUpdateMFST.lst base/lst/odbrUpdateVFA.lst hpo/lst/clme.lst hpo/lst/clmh.lst hpo/lst/CLME.map hpo/lst/CLMH.map hpo/lst/dbry.lst hpo/lst/DBRP.map hpo/lst/DBRY.map hpo/lst/odbrPurgeLocks.lst hpo/lst/odbrPurgeModule.lst OTHER BINARIES TO BUILD: YES (C) <sys>/lib/libCFTQ.so (C) <sys>/load/CFTL.so (C) <sys>/load/CFTQ.so (C) <sys>/load/CPS0.so (C) <sys>/obj/cccpse.o (C) <sys>/obj/ccctin.o (C) <sys>/obj/ccrcsc.o (C) <sys>/obj/ccsona.o (C) <sys>/obj/ccsons.o (C) <sys>/obj/ccvfac.o (C) <sys>/obj/zfctbheap.o (C) <sys>/obj/zfctbload.o (C) <sys>/obj/zfctbmem.o (C) os390/bin/amx1.pds (C) os390/bin/ppcp.pds (C) os390/bin/stc.pds (C) os390/obj/amx1.o (C) os390/obj/ccmcdc.o (C) os390/obj/stcc.o COMMENTS: 1) The ODBR accept process provided by PJ39198 requires one active processor in the complex, all multiple database facility (MDBF) subsystems to be in 1052 state and an automatic IPL to complete the ODBR and replace the existing base FACE table (FCTB) with the alternate FCTB. Also, PJ40550 inhibited the ability to ZODBR ACCEPT in a system generated for a shared data processing system (SDPS). In addition, the following problems were discovered while working on this support. 2) Due to PJ40550, a CTL-290 system error (SIPC length not valid) occurs when mounting a general data set (GDS). 3) A CTL-704 system error (MPLF logic error) may occur due to input/output blocks (IOBs) on a module queue getting out of order. A virtual file access (VFA) buffer control area (BCA) was flushed from VFA to make room for a new item and the VFA lock was released. A new BCA was then allocated for the same record and a get VFA lock request was created for the lock. The IOB for the release of the VFA lock and the IOB for the obtain of the VFA lock were on the asynchronous queue in the correct order. When the asynchronous queue is redriven an IOB is put on the ready list of the I-stream indicated in the IOB and then the IOB makes its way to the module queue. Since the I-stream ready lists can be of different sizes the IOBs may be put back onto the module queue in the incorrect order causing a CTL-704. 4) A CTL-571 system error (attempt to lock a lockword timed out) may occur during lock recovery when the asynchronous queue is large due to excessive locking on the module file status table (MFST). 5) The program name in the record hold table (RHT) entry is not updated when a waiter for the record is promoted to the owner of the record. This may make problem diagnosis more difficult. 6) The disassembler does not recognize the load logical character instructions LLC and LLCR. Also, some RX format instructions such as store halfword (STH) may not disassemble correctly. 7) Data may be corrupted in VFA following a flush of a record from the VFA buffers (FLFAC). When a record is flushed from VFA the invalidated BCA is added to the top of the reserve list. When the BCA is subsequently reused it may be for the same file address. When a DASD I/O operation completes, there is logic to determine whether the BCA that was allocated before the DASD I/O operation was started is still valid. These checks are not sufficient and the completed DASD I/O may be allowed to put data into the BCA buffer even though the BCA has been invalidated and reused during the time the DASD I/O was in progress. 8) Due to PJ31376, an OPR-572 system error (LOCKC- lock held already) and an OPR-573 system error (UNLKC- unlock not holding lock) may occur during ZODBR ACCEPT, ZODBR DELETE, ZFCTB ACCEPT or ZFCTB DELETE processing. When the system heap storage used by a FCTB is no longer needed the address of the system heap storage is added to a list which is processed when all activity ends on the FCTB. The locking protocol for adding and removing items from the list is to lock lockword fctblockword. The routine that adds the system heap address to the list, fctb_del_mem, locks fctblockword and then calls a routine to core hold the current system activation number. The routine that returns the system heap and removes the system heap address from the list, fctb_heap_return, has the current system activation number held on input when it is called and then locks fctblockword. If routine fctb_del_mem locks fctblockword but gives up control while waiting for the hold on the current system activation number then routine fctb_heap_return may get control and take an OPR-572 when it attempts to lock fctblockword.
SOLUTION: 1) The ODBR accept process has been updated to allow the process to take place with the MDBF subsystems in any state and multiple processors active in the z/TPF complex. An automatic IPL is no longer required to complete the accept process. The ability to ZODBR ACCEPT in a system generated for SDPS is now available. The new end-of-move session processing recalculates all record related locks (RHT and virtual file access (VFA)) that are active at the time of the FCTB replacement and sweeps DASD queues and VFA buffers to ensure that new MMCCHHR locations are recalculated correctly for all data records on queue or in memory. In addition, the following updates were made. 2) Segment clme.asm has been updated to remove a field (WORKRCS) that is not necessary in the SIPC data being passed. 3) Routine CJPSM3S in copy member cjiv.cpy has been updated to reschedule IOBs to the ready list of the I-stream that is running. This ensures the IOBs are in the correct order on the module queue after the asynchronous queue is redriven. 4) Routine CJIVELIE_SCAN in copy member cjiv.cpy has been updated to do module comparisons prior to locking the MFST. This reduces the number of times the MFST is locked. 5) Copy member cefh.cpy has been updated to ensure the program name in the RHT entry is correct when the waiter of a record is promoted to the owner of the record. 6) Segment cvbv.c has been updated with information about the load logical character instructions LLC and LLCR to ensure they are disassembled correctly. Also, a comma is placed before the base register to ensure all RX type instructions are disassembled correctly. 7) VFA buffer segments vf0ac.mac and c_vfac.h have been updated to add an allocation sequence number (BCAASN) to the BCA. IOB segments dctmio.mac and c_miob.h have been updated to add an area to save the BCA allocation sequence number (MI0BASN). Segment cvf3.cpy has been updated to increment the BCA allocation sequence number every time that the BCA is used in the allocation routine. Also, when an IOB is created and the BCA address is saved in the IOB, the BCA allocation sequence number is also saved in the IOB. When a DASD I/O completes an additional check is done to ensure the allocation sequence number in the BCA and the IOB match in order to use the BCA that is saved in the IOB. If the allocation sequence numbers don't match then the data is not put into the BCA buffer. 8) The locking protocol for the list of FCTB system heap addresses to be returned has been changed so only the current system activation number needs to be held when adding or removing items from the list. Segments zfctbmem.c and zfctbheap.c have been updated to no longer lock lockword fctblockword. Copy member ct38.cpy has been updated to no longer initialize lockword fctblockword. Lockword fctblockword has been changed to a spare field in ifct.mac and c_idsfct.h. COREQS: NO None. MIGRATION CONSIDERATIONS: YES Functional, automation, and operation changes: New online message: ODBR2433T Obsoleted online message: ODBR2346T Hardware, software, and configuration changes: Loosely coupled customers are strongly encouraged to use the largest allowable control unit lockspace in their configuration at the time ODBR support is utilized. See the ZBUFC ALLOCATE command for more information on updating the control unit lockspace. BUILD COMMANDS AND INSTRUCTIONS: YES #maketpf commands for linux maketpf -f CPS0 cccpse.o ccctin.o ccrcsc.o ccsona.o ccsons.o ccvfac.o maketpf -f CVBV cvbv.o maketpf -f CFTL zfctbload.o zfctbmem.o maketpf -f CFTQ zfctbheap.o maketpf -f DBR1 odbrMessages.o odbrStart.o maketpf -f DBRE odbrAccept.o odbrBuildMLSB.o odbrCkSkipLock.o odbrMLSB_utils.o odbrUpdateVFA.o odbrUpdateAsync.o odbrUpdateMFST.o maketpf -f DBRS dbrs.o maketpf -f CLME clme.o maketpf -f CLMH clmh.o maketpf -f DBRY dbry.o maketpf -f DBRP odbrPurgeLocks.o odbrPurgeModule.o maketpf CPS0 link maketpf CVBV link maketpf CFTL link TPF_VERIFY_LINK_REFS=NO maketpf CFTQ link TPF_VERIFY_LINK_REFS=NO maketpf DBR1 link TPF_VERIFY_LINK_REFS=NO maketpf DBRE link TPF_VERIFY_LINK_REFS=NO maketpf DBRS link maketpf -f DBRT TPF_VERIFY_LINK_REFS=NO maketpf CLME link maketpf CLMH link maketpf DBRY link maketpf DBRP link maketpf CFTL link maketpf CFTQ link maketpf DBR1 link maketpf DBRE link maketpf DBRT link #maketpf commands for z/OS maketpf -f amx1 amx1.o maketpf -f ppcp ccmcdc.o maketpf -f stc stcc.o maketpf amx1 link maketpf ppcp link maketpf stc link UPDATED INFORMATION UNITS: YES z/TPF Messages (Online, SQLCODEs, and errno Values) See your IBM representative if you need additional information. DOWNLOAD INSTRUCTIONS: http://www.ibm.com/software/htp/tpf/maint/maintztpf.html APAR URL: http://www.ibm.com/software/htp/tpf/ztpfmaint/put10/PJ40702.htm
Reported component name
Reported component ID
NoSpecatt / Xsystem
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
Fixed component ID
Applicable component levels