PM81536: z/TPFDF should ensure that the correct file ID exists in pool records before releasing those records.
Closed as program error.
See Problem Summary.
APAR NUMBER: PM81536 PRODUCT: z/TPFDF FUNCTIONAL AREA: TPFDF CENTRAL DATABASE ROUTINES SHIPPED IN PUT: 10 ABSTRACT: z/TPFDF should ensure that the correct file ID exists in pool records before releasing those records. Also, when a DBRST is issued after an LLR was deleted from the prime block, multiple releases of the LLR or a DB0168 may occur. PACKAGE CONTENTS: Source Segments: (C) tpfdf/include/i_dfhd.h (C) tpfdf/rt/uas0.asm (C) tpfdf/rt/ub90.asm (C) tpfdf/rt/ufka00.cpp (C) tpfdf/rt/ufka03.cpp (C) tpfdf/rt/uftk.cpp Object Only Binaries: None. Configuration Independent Binaries: None. Support Files: None. OTHER BINARIES TO BUILD: YES (C) <sys>/lib/libUTDF.so (C) <sys>/load/UFKA.so (C) <sys>/load/UFTH.so (C) <sys>/load/UTDF.so (C) <sys>/obj/uas0.o (C) <sys>/obj/ub90.o (C) <sys>/obj/ufka00.o (C) <sys>/obj/ufka03.o (C) <sys>/obj/uftk.o COMMENTS: (1) z/TPFDF should ensure the correct file ID exists in a pool record before it releases that pool file address. In most parts of z/TPFDF, the block has already been accessed and its ID has been verified before z/TPFDF issues a RELFC on its file address. Therefore, an additional ID check on the RELFC API is not needed in those cases. However, there are some routines in large logical record (LLR) and B+Tree processing where file addresses are released without accessing them first. These routines should be enhanced to validate the file ID before releasing the records in case those records are in use by another database. (2) Furthermore, a DB0100 system error is generated when an I/O error occurs when z/TPFDF attempts to retrieve a record. However, the online message does not indicate which I/O error occurred. It would be helpful if the online message indicated which specific I/O error occurred. (3) In addition, if there was an LLR in the prime block that had previously been deleted and a DBRST is done, the blocks in the LLR could be released more than once. This is because DBRST copies a possible user header part of the "from" block to the "target" block. An incorrect length was used in the calculation, so the z/TPFDF header component of the standard header is copied to the target block, potentially overwriting the next available byte (NAB) value. As a result, a possibly inactive LLR is activated again and either generates a DB0168 if an attempt is made to re-access it, or reults in multiple releases if the LLR is re-released.
SOLUTION: (1) Segments ufka00.cpp and ufka03.cpp have been updated so that LLR release processing issues a find and wait on LLIBs and LLDBs to ensure the file ID is valid before releasing the blocks either directly in function UFKA03_release_blocks() or asynchronously in function UFKA00_release_all_LLDBs_from_this_LLIB(). If an error is encountered, informational dump OPR-DB0189 is issued and the block is not released. The dump is issued only once per LLIB, but the loop to release additional file addresses continues. Segment uftk.cpp has been updated so that B+Tree processing issues a find and wait on B+Tree nodes to ensure the file ID is valid before releasing the blocks. If an error is encountered, informational dump OPR-DB0189 is issued and the block is not released. Header i_dfhd.h has been updated to contain a common macro to generate the DB0189 system error that is based on the DB0100 system error. (2) Segment ub90.asm has been updated to add information to the DB0100 system error such that its content matches the DB0189 system error. (3) Segment uas0.asm has been updated to use the correct displacements and lengths (taking into account both the z/TPF and z/TPFDF headers) in the calculation of the user header in the copy routines. COREQS: NO None. MIGRATION CONSIDERATIONS: YES Functional, automation, and operation changes: New system error: DB0189 Modified system error: DB0100 BUILD COMMANDS AND INSTRUCTIONS: YES #maketpf commands for linux maketpf -f UTDF uas0.o ub90.o maketpf -f UFKA ufka00.o ufka03.o maketpf -f UFTH uftk.o maketpf UTDF link maketpf UFKA link maketpf UFTH link UPDATED INFORMATION UNITS: YES z/TPFDF Messages (System Error, Online, Offline) 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/PM81536.htm
Reported component name
Reported component ID
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