This is a non-trivial project involving a couple of system IPLs. READ THIS DISCUSSION FIRST, THEN PROCEED TO THE CHECKLIST WHICH FOLLOWS.
*** START OF DISCUSSION ***
You must be the only CMS user on the system (outside of any VM directory maintenance software you may be running). Since there will be a couple of IPLs, you should cleanly shutdown all guest machines and databases, and start them back up when you are all finished. This requirement may affect how you bring your system up. You should have a means by which your system can be brought up in "maintenance mode", i.e., without starting a bunch of service machines or guest systems. Plan accordingly.
These procedures accomplish an update-in-place on your res pack on a first-level system. You may wish to copy your res pack to another volume, IPL that volume in a second-level guest, perform the PARM disk reallocation, and then copy the new res back to the original. That's your decision.
First, space for the new parm disks must be reserved. The easiest practice is to move any minidisks which immediately follow the current CP parm disks to some other location, so you end up with about 100 cylinders of unused available minidisk space following the parm disks. Ideally, you should have the MDISK allocation for CF1, followed immediately by that for CF2, followed by a gap of 100 cylinders. The 100 cylinders is arbitrary; it just provides some cushion in case you have to reallocate the parm disks again in the future.
The contents of CF1 and CF2 are identical in most shops. The game plan therefore is to allocate the new CF2, COPYFILE all files from CF1 to CF2, re-IPL using CF2, reallocate CF1, COPYFILE or DDR all files back from CF2 to CF1, and re-IPL using CF1. The first thing to be done is to determine what the new size of the CP parm disk will be, and reallocate CF2. For example, assume that CF1 and CF2 are both 30 cylinders in size, and that CF1 starts at cylinder 278 and CF2 starts at cylinder 308. If the new CP parm disk size is to be 60 cylinders, then CF2 must be reallocated to start 60 cylinders after the start of CF1 (which will end up being 60 cylinders in size when this is all done). Since CF1 starts at 278, the new CF2 must start at 278+60, or cylinder 338, for a size of 60 cylinders.
Once the new CF2 is reallocated, you must copy all files from CF1 to CF2. Next, you must run the CPFMTXA program with the "ALLOCATE" function to specify the new locations for the PARM cylinders. Note that CF1 is not actually moving, it's just getting larger. You can do this without bringing down CP as long as you are careful not to change any of the other allocations (such as PAGE).
Next, if your DRCT cylinders are on the IPL volume, you ++must++ run the DIRECTXA program to rewrite the directory to the directory cylinders, because the directory pointers in ALLOCMAP will have been destroyed by the CPFMTXA ALLOCATE. If you don't do this, CP won't be able to find the directory when you re-IPL, and you won't be able to log on any users other than OPERATOR.
Once the directory has been rewritten, you will re-IPL the system specifying extent 2.
Once the system is up, you will redefine CF1 to be 60 cylinders, and copy all the files from CF2 back to CF1, and then re-IPL the system once more, specifying extent 1. Note, however, that if you physically moved CF1 from its old location, you will have to rerun CPFMTXA to update the ALLOCMAP to point to the new CF1.
Finally, IPL using parm disk CF1.
*** END OF DISCUSSION ***
*** STEP-BY-STEP INSTRUCTIONS ***
A step-by-step checklist of the above is presented below. If your DRCT cylinders are not on your IPL volume, you can skip the steps having to do with rewriting the VM directory following CPFMTXA (these are indicated by an *).
1) Xedit the VM directory, and move any minidisks that are necessary to create the expansion area following the CP PARM disks. If you are using VM directory maintenance software, follow standard procedures as defined by that software. If you manually maintain your VM directory, proceed as follows for EACH minidisk to be moved:
a) Xedit VM directory b) Locate userid and minidisk to be reallocated c) Change address in existing MDISK statement to have an "F" prefix (thus, 191 becomes F191). In this procedure, "cuu" refers to the virtual address of the existing minidisk. d) Add the new MDISK statement with the old address (e.g., 191). e) Run DISKMAP, check for overlaps, resolve if any. f) Update directory. g) Logon to userid, do a Q V DASD, ensure that cuu and Fcuu are same size and type. If not, go back to step d and make corrections. If all looks good, DDR Fcuu to cuu (e.g., DDR F191 to 191). A CMS FORMAT of cuu is not required. h) Re-IPL CMS, make sure everything is working properly. Access Fcuu as B, do a Q DISK, and verify that the number of files on the A and B disks are identical. i) Logoff userid. j) Xedit VM directory, remove Fcuu MDISK statement. k) Return to step b for next minidisk.
2) Do one of the following - a or b:
a) Log onto MAINT, and back up the current IPL volume to tape using DDR. If you make any mistakes during the procedure below that result in not being able to IPL from your res pack, your recourse is to restore from this backup. It is recommended that you create a standalone IPLable DDR as the first file, followed by the actual backup of your pack as the second file. If later on you can't IPL your res volume due to a mistake, you will then be able to IPL DDR directly from tape and restore.
b) DDR the current IPL volume to another pack, and IPL from this pack in a second-level guest, logging onto MAINT following the IPL. If you make any mistakes during the procedure below that result in not being able to IPL from your res pack, your recourse is to simply blow it away and start over.
3) CPRELEASE A (CF1) CPRELEASE B (CF2)
4) DETACH CF2
5) Xedit your VM directory reallocate CF2 to its new size, and update the directory.
6) LINK * CF2 CF2 MW
7) FORMAT CF2 F
8) LINK * CF1 CF1 RR ACCESS CF1 E
9) COPY * * E = = F (OLDDATE
10)*Important! Be sure you have a copy of your VM directory on an accessed disk before proceeding. Failure to do this now may result in not being able to link to this disk after you run CPFMTXA, resulting in not being able to rewrite the directory. If you use a directory maintenance product such as DIRMAINT, have it logged on and ready to go before continuing.
11) LINK * 123 123 MW.
This is a full-pack link to your res volume. Do not be concerned about the MW link: there should only be MAINT, and possibly a logged-on but inactive directory maintenance product userid with access to this pack. Only one person will be updating the directory cylinders at a time. The MW links allows MAINT to have R/W access to the IPL volume even if a directory maintenance product also has R/W access to that pack.
12) Now run a CPFMTXA "ALLOCATE" to reallocate your res volume so that the PARM cylinder locations coincide with the new CF1 and CF2 minidisk locations. You will specify new extents for the two PARM disk, and a new starting extent for the PERM area which immediately follows, but be careful not to change any other allocation data!
13)*CRITICAL! Now rerun DIRECTXA (or run your directory maintenance product) to rewrite the directory to the directory cylinders on the res volume.
14) Shutdown and re-IPL the system specifying extent 2.
15) Following IPL, logon to MAINT.
16) CPRELEASE A (CF1) CPRELEASE B (CF2)
17) DETACH CF1
18) Xedit the VM directory and reallocate CF1 to its new size, and update the directory.
19) LINK * CF1 CF1 MW LINK * CF2 CF2 RR
20) FORMAT CF1 E. (This step, 20 and 21 can be combined by doing a DDR.)
21) ACCESS CF2 F.
22) COPY * * F = = E (OLDDATE.
23) Re-IPL the system specifying extent 1.