DirMaint Considerations with the CMS Pipelines Runtime Library Distribution

Getting DirMaint 1.5 to Recognize the Runtime Library Level

If you use DirMaint 1.5 (prior to service level 9704, which includes PTF UV60087 for APAR VM61371) with the CMS Pipelines runtime library, both the DIRMAINT service machine and the DIRMAINT EXEC invoked by users will fail due to a check on the version of Pipelines being used. This check is performed in the DVHDIR EXEC (DIRMAINT EXEC, usually on the Y-disk) and in DVHPROF EXEC on DIRMAINT's 191 disk. The response to the "pipe query version" command differs between the VM/ESA version of Pipelines and the runtime library version. This throws off the parsing in the version check and causes DirMaint to refuse to work with an "unsupported version of Pipelines".

The following are the source change files that can be used to fix the two EXECs. You will have had to load the optional source onto a disk in order to use these fixes. If you do not have the optional source, you can modify the EXECs manually using these fixes as a guide.

DVHDIR M00001MM:
 
./ I 00320000          $ 325000 5000                  12/10/96 15:41:35
/*! M00001MM - Add support for runtime version of Pipes.  MMM          */PIPE
./ R 00960000          $ 961990 1990                  12/10/96 15:41:35
if pos('CMS/TSO',Pipe_version.1)>0 then                                  PIPE
    parse var Pipe_version.1 . ',' . v'.'r '(' .                         PIPE
else Parse Var pipe_version.1 . ')' v'.'r                                PIPE
 
DVHPROF M00001MM:
 
./ I 00525000          $ 527000 2000                  12/10/96 14:18:57
/*! M00001MM - Add support for runtime version of Pipes.  MMM          */PIPE
./ R 01410000          $ 1411990 1990                 12/10/96 14:18:57
if pos('CMS/TSO',Pipe_version.1)>0 then                                  PIPE
      parse var Pipe_version.1 . ',' . v'.'r '(' .                       PIPE
else Parse Var pipe_version.1 . ')' v'.'r                                PIPE
EXECUPDT should be used to regenerate the two EXECs using the COMPRESS and SID options. The resulting DVHDIR EXEC should be moved to the Y-disk (or wherever you keep it) and renamed to DIRMAINT EXEC. The DVHPROF EXEC should be moved to DIRMAINT's 191 disk.

Notes:

  1. PTF UV60087 for APAR VM61371 provides support for VM/ESA 2.3.0, and has changed the method of making the check from using 'PIPE QUERY VERSION' to using 'PIPE QUERY LEVEL', and now works with the CMS Pipelines runtime library without modification. This PTF is included in RSU 9704 (and later).
  2. There is more DirMaint information available online at http://www.vm.ibm.com/related/dirmaint, including information about several available New Function APARs.

Dealing with the Consequences of a Bug in CMS 12 Pipelines

A more serious problem that affects the source directory itself is also met when switching to the runtime library version of CMS Pipelines from CMS 12. A bug in the "crc" filter crept into the VM/ESA version of Pipelines in CMS 12. DirMaint uses "crc" to add a checksum to the end of every directory entry. Whenever you do an operation against a virtual machine (such as AMDISK, CMDISK, or anything that alters the entry), DirMaint checks its calculated checksum against the one recorded in the directory. Thus, the bad result returned by the "crc" filter in CMS 12 will have been recorded in each and every directory entry. The bug is documented in APAR VM59897, which was closed on 10/26/95. However, the PTF is not currently on an RSU tape.

The runtime library version of Pipelines does not contain this bug; its "crc" filter returns a correct value. Therefore, once you install the runtime version, DirMaint will be unable to match the recorded checksum value with the calculated value. You will be unable to do any operations against a directory entry, except GET and REPLACE. This problem will also occur if you apply the PTF, UM27508. Be warned: neither the APAR nor the PTF mentions the bug's effect on DirMaint.

Getting and replacing the entry will fix the checksum problem, as that forces DirMaint to recalculate the checksum and record the new value in the entry. However, with a large directory, it is not practical to get and replace every entry. You can force DirMaint to recalculate the checksums, but it requires destroying the source directory and then rebuilding it. If done carefully, this isn't as terrible as it sounds:

  1. Do a backup of your current directory using the DIRM USER BACKUP command. Then disable DirMaint, so that no changes can be made to the directory until you are finished. In my case, I simply shut down DIRMAINT.

  2. Log onto the DIRMAINT svm and access the 1DF and the 1DB disks.

  3. Double check that the recent USER BACKUP file is on the 1DB disk. It never hurts to be extra careful.

  4. Erase the USER DIRECT file from the 1DF disk and then copy the USER BACKUP file from the 1DB disk to 1DF and change its name to USER INPUT.

  5. Restart DIRMAINT. You will receive message DVHPRO2002A, "Manual start is required for DIRMAINT. Enter DVHBEGIN when ready to start."

  6. Enter "dvhbegin", and DirMaint will rebuild the directory from the USER INPUT file, recalculating the checksums. Once it is finished, the directory should be usable again.
Here's a listing of what my rebuild looked like:
VM/ESA V2.1.0   02/17/96 16:27
DMSACR1184E Directory ACADEM:DIRMAINT. not found or you are not authorized
........................................................................
 
PRODUCT:
IBM Directory Maintenance for VM/ESA (DirMaint)
5748-XE4 (C) Copyright IBM Corporation 1979, 1995.
Version 1 Release 5 Modification 0 Service Level 0000.
DMSACC724I 155 replaces A (191)
 
DVHPRO2008I ROLE = DIRMAINT
 
DVHPRO2010I TESTING USE OF MSGNOH ...
DVHPRO2002A Manual start is required for DIRMAINT.
DVHPRO2002A Enter "DVHBEGIN" when ready to start.
........................................................................
DIRMAINT MARIST.. - 1996/12/10; T=0.48/0.57 16:07:47
dvhbegin
DVHILZ3510I Starting DVHINITL with directory: USER INPUT E
DVHILZ3510I DVHINITL Parms: BACKUP QUIET NOCRCWARN
DVHILZ3509I Monolithic backup now exists as: USER BACKUP G.
DVHILZ3509I Continuing with execution.
DVHILZ3510I Starting DVHINITL with directory: USER BACKUP G
DVHILZ3510I DVHINITL Parms: BLDCLUSTER BLDLINK QUIET BLDDASD
DVHIZD3528W One or more DASD volume control files were created using
DVHIZD3528W default values for device characteristics.
DIRMAINT MARIST.. - 1996/12/10; T=45.93/46.91 16:11:15
DVHWAI2140I Waiting for work on 96/12/10 at 16:11:15.

Notes:

  1. There is more information about this particular CRC bug available at http://www.vm.ibm.com/related/dirmaint/dirm_crc.html.
  2. There are more answers to Frequently Asked Questions about DirMaint available online at http://www.vm.ibm.com/related/dirmaint.

Martha McConaghy / Marist College / urmm@vm.marist.edu
December 12, 1996


Updated: