IBM Support

PH44215: CRUISE enhancement to validate backward chains (BCH) and flag bytes (AUT)

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as new function.

Error description

  • See Problem Summary.
    

Local fix

  • NA
    

Problem summary

  • APAR NUMBER:  PH44215
    PRODUCT:  z/TPFDF
    FUNCTIONAL AREA:  TPFDF CRUISE UTILITY
    SHIPPED IN YEAR:  2022
    
    ABSTRACT:
    CRUISE enhancement to validate backward chains (BCH) and flag
    bytes (AUT)
    
    PACKAGE CONTENTS:
    Source Segments:
    (C) tpfdf/include/i_idcadf.h
    (C) tpfdf/macro/idcadf.mac
    (C) tpfdf/rt/ufha12.cpp
    (C) tpfdf/rt/ufhm00.cpp
    (C) tpfdf/rt/ufi2.asm
    (C) tpfdf/rt/ufi7.asm
    (C) tpfdf/rt/ufi9.asm
    
    Object Only Binaries:
    None.
    
    BINARIES TO BUILD: YES
    Configuration Independent Binaries:
    None.
    
    Configuration Dependent Binaries:
    (C) <sys>/load/UFHA.so
    (C) <sys>/load/UFI2.so
    (C) <sys>/load/UFI7.so
    (C) <sys>/obj/ufha12.o
    (C) <sys>/obj/ufhm00.o
    (C) <sys>/obj/ufi2.o
    (C) <sys>/obj/ufi7.o
    (C) <sys>/obj/ufi9.o
    (C) <sys>/load/ACPF.so
    (C) <sys>/load/UFHB.so
    (C) <sys>/load/UFHE.so
    (C) <sys>/load/UFHM.so
    (C) <sys>/load/UFHO.so
    (C) <sys>/load/UFI0.so
    (C) <sys>/load/UFI1.so
    (C) <sys>/load/UFI3.so
    (C) <sys>/load/UFI4.so
    (C) <sys>/load/UFI5.so
    (C) <sys>/load/UFI6.so
    (C) <sys>/load/UFI8.so
    (C) <sys>/load/UFI9.so
    (C) <sys>/load/UFIL.so
    (C) <sys>/obj/ufi0.o
    (C) <sys>/obj/ufi1.o
    (C) <sys>/obj/ufi3.o
    (C) <sys>/obj/ufi4.o
    (C) <sys>/obj/ufi5.o
    (C) <sys>/obj/ufi6.o
    (C) <sys>/obj/ufi8.o
    (C) <sys>/obj/ufil.o
    (C) <sys>/obj/ufhag1.o
    (C) <sys>/obj/ufhag2.o
    (C) <sys>/obj/ufhag3.o
    (C) <sys>/obj/ufhag4.o
    (C) <sys>/obj/ufhb00.o
    (C) <sys>/obj/ufhb01.o
    (C) <sys>/obj/ufhb02.o
    (C) <sys>/obj/ufhb03.o
    (C) <sys>/obj/ufhb04.o
    (C) <sys>/obj/ufhb05.o
    (C) <sys>/obj/ufhb06.o
    (C) <sys>/obj/ufhb07.o
    (C) <sys>/obj/ufhb08.o
    (C) <sys>/obj/ufhb09.o
    (C) <sys>/obj/ufhb10.o
    (C) <sys>/obj/ufhb11.o
    (C) <sys>/obj/ufhb13.o
    (C) <sys>/obj/ufhb14.o
    (C) <sys>/obj/ufhbg1.o
    (C) <sys>/obj/ufhog2.o
    (C) <sys>/obj/ufhog3.o
    (C) <sys>/obj/ufhe00.o
    (C) <sys>/obj/ufhe01.o
    (C) <sys>/obj/ufhog1.o
    (C) <sys>/obj/ufho00.o
    (C) <sys>/obj/acpf.o
    
    
    COMMENTS:
    (1) CRUISE does not validate the file address in the backward
    chain field (STDBCH and ISTD8_BCH) in a block's header.
    
    z/TPFDF supports two types of backward chaining in the block
    headers:
    
    o Default backward chaining is deployed in all R-type files.
    With this type of backward chaining, the file address of the
    last block in a subfile is contained in the header of the prime
    block's backward chain field.
    o Full backward chaining occurs when the FULLBCH parameter is
    set to YES in the DBDEF macro for the file. With full backward
    chaining, all overflow blocks in a subfile contain the file
    address of the previous block in the chain in the backward
    chain field of the block's header.
    
    If the file address in the backward chain field in a block's
    header is not valid, this can cause z/TPFDF problems when
    accessing the subfile. Currently, z/TPFDF does not provide a
    way to validate backward chains.
    
    (2) CRUISE does not validate the usage of the AUT byte (STDAUT
    and ISTD8_AUT).
    
    The AUT byte is reserved for IBM use only. If customer
    applications use this byte, it could cause unintended errors.
    Currently, z/TPFDF does not provide a way to validate the usage
    of the AUT byte.
    
    
    Additionally, CRUISE has the following issues:
    
    a) With remote subfile support (PH11394), the CRUISE capture
    function updates captured remote subfiles to indicate that the
    subfile should be updated remotely when it is restored.
    However, CRUISE assumes the prime block is not encrypted when
    it makes this update. If the prime block is encrypted, CRUISE
    capture processing updates encrypted data in the block, causing
    encrypted remote subfiles to become corrupted.
    
    b) When running CRUISE PACK to migrate the standard header
    format between 4-byte and 8-byte file address headers and an
    LLR is in the data block, an FCRU0203E ("INVALID ITEM SIZE")
    message is incorrectly issued, followed by a CTL-3 system
    error. In ufi7.asm a check is done at initial nab position to
    verify whether the 1st LREC in the block is an LLR. However,
    when the current header size in the data block does not match
    the header size defined in DBDEF, the LLR check is skipped and
    the LLR indicator is incorrectly interpreted as an invalid item
    size.
    
    c) When running CRUISE VERIFY and the data block contains an
    LREC with an invalid item size, a CTL-3 system error is issued.
    After the FCRU0203E message is issued in ufi7.asm, registers R0
    to R7 are restored from the program stack but they were never
    saved to that area. Register R2 may then contain a zero value
    that leads to the CTL-3 error when IRCHERC is incremented.
    
    d) With recoup optimized chain chase (PH30068), CRUISE does not
    update the total error count when issuing a recoup optimized
    chain chase error message when statistics are not enabled.
    
    e) During CRUISE chain chase in ufi7.asm, if an FCRU0203E
    message is going to be issued, the total error count is updated
    twice.
    
    f) The compiler will issue a warning due to segment ufhm00.cpp
    using a different number of elements for the work_area array.
    

Problem conclusion

  • SOLUTION:
    Updated segments i_idacadf.h, idcadf.mac, ufi2.asm and ufi7.asm
    to validate the backward chain field (STDBCH and ISTD8_BCH) and
    the AUT byte (STDAUT and ISTD8_AUT) during CRUISE chain chase.
    
    1) CRUISE will validate the backward chain field for all R-type
    files that are not B+Tree files or nodes and do not use
    pushdown chaining and issue messages when:
     o The file address in the backward chain field in the header
    of the prime block is not the same as the file address of the
    last block in the chain.
     o The file address in the backward chain field in the header
    of an overflow block is not the same as the file address of the
    previous block in the chain.
    
    2) CRUISE will validate the AUT byte for all R-type files and
    issue messages when:
     o bit 0 is on and the DBDEF ENCRYPTALLOW parameter is set to
    NO.
     o bit 1 is on and the DBDEF REMOTEALLOW parameter is set to NO.
     o bit 1 is on in any overflow block.
     o Any bit 2-7 is on.
    
    
    Additionally,the following CRUISE updates:
    
     a) Moved the remote subfile support code from ufi2.asm and in
    ufi7.asm to a common path in ufi2.asm after encrypted blocks
    have been decrypted.
     b) Updated ufi7.asm so the initial NAB value is adjusted for
    the specific situation where the DBDEF indicates a header
    migration.
     c) Updated ufi7.asm so that the registers are saved to the
    program stack before issuing an FCRU0203E.
     d) Updated ufi2.asm, ufi7.asm and ufi9.asm to always update
    the total error count.
     e) Updated ufi7.asm to only increment the total error count
    once when issuing an FCRU0203E message.
     f) Updated segment ufhm00.cpp to use the same number of
    elements in the work_area array.
    
    COREQS: NO
    None.
    
    MIGRATION CONSIDERATIONS: YES
    Functional, automation, and operation changes:
    New messages:
    FCRU0222E
    FCRU0223E
    FCRU0224W
    FCRU0225W
    FCRU0226E
    FCRU0227E
    
    
    
    BUILD COMMANDS AND INSTRUCTIONS: YES
    #maketpf commands for linux
    maketpf -f UFI2 ufi2.o
    maketpf -f UFI7 ufi7.o
    maketpf -f UFHA ufha12.o
    maketpf -f ACPF
    maketpf -f UFIL
    maketpf -f UFI0
    maketpf -f UFI1
    maketpf UFI2 link
    maketpf -f UFI3
    maketpf -f UFI4
    maketpf -f UFI5
    maketpf -f UFI6
    maketpf UFI7 link
    maketpf -f UFI8
    maketpf -f UFI9
    maketpf UFHA link
    maketpf -f UFHB
    maketpf -f UFHE
    maketpf -f UFHM
    maketpf -f UFHO
    
    UPDATED INFORMATION UNITS: YES
    z/TPF and z/TPFDF Migration Guide: PUT 2 and Later
    z/TPFDF Messages (System Error, Online, Offline)
    
    See your IBM representative if you need additional information.
    
    DOWNLOAD INSTRUCTIONS:
    https://www.ibm.com/support/docview.wss?uid=swg27049604
    
    APAR URL:
    https://transfer.boulder.ibm.com/2022/PH44215.tar.gz
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH44215

  • Reported component name

    ZTPFDF

  • Reported component ID

    5748F1501

  • Reported release

    110

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-02-16

  • Closed date

    2022-07-28

  • Last modified date

    2022-09-08

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Publications Referenced
SK2T8062    

Fix information

  • Fixed component name

    ZTPFDF

  • Fixed component ID

    5748F1501

Applicable component levels

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSZL53","label":"TPF"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"110","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Document Information

Modified date:
08 September 2022