|
NAME : HCPDSRBK
DESCRIPTION: Dynamic Storage Reconfiguration Block
DSECT : DSRBK
FUNCTION : To represent a dynamic storage reconfiguration while
a reconfiguration is in progress.
LOCATED BY : RSMBK
CREATED BY : HCPPCC
DELETED BY : HCPPCC
SERIALIZED : The DSRBK is the control point for Dynamic Storage
Reconfiguration (DSR) actions. Only a single DSR
action may be active at a time. The SYSDSRLK lock
would be acquired exclusive in order to provide that
serialization.
DSR actions are generally initiated by the SET STORAGE
command.
A SET STORAGE HALT command does not
require the SYSDSRLK lock.
A SET STORAGE command that causes the configuration of
system storage to change does require the SYSDSRLK
exclusive.
COMPATIBILITY AND MIGRATION CONCERNS: None.
RELOCATION CONSIDERATIONS: This block is not relocated as this is a CP internal
control block that exists only during the duration of
a dynamic storage reconfiguration on a given system.
COMMENTS :
Proper steps for a SET STORAGE alteration.
- parse the command, exit if syntax error
- acquire the SYSDSRLK lock
- verify that the current state of the system suggests
a likelihood the command will succeed
- for example, a storage increase has sufficient
STANDBY
- for example, a storage decrease has sufficient
current reconfig that can be removed
- fill the DSRBK with the SET STORAGE request
- stack a call to HCPPCCAS on SYSTEMMP,
passing the DSRBKin R1
- tell the user "SET STORAGE processing has been
initiated"
- exit
- HCPPCCAS will invoke the appropriate service
routines
- HCPPCCAS will step through the DSRBK action
sections, updating DSRSOFF to point to the section
being processed.
- HCPPCCAS will use the DSRsecTyp contents to select
a processing routine for the action.
- HCPPCCAS will call the routine,
passing the DSRBK in R1
- The routine will use DSRSOFF to locate its
action section
- The routine will complete its action and return
- If the routine cannot complete its action,
it will set DSRiHalt and return
- at completion, HCPPCCAS will destroy the DSRBK
and release the SYSDSRLK lock
- Since SET STORAGE HALT has
unserialized access to the DSRBK, care must be
taken so that HCPPCCAS does not release the DSRBK
while these other tasks are looking at it.
HCPPCCAS should do the following.
- continue holding the SYSDSRLK lock
- clear the RSMBK pointer
- call HCPMPDLY for CP loss of control
- HCPRELST the DSRBK
- release the SYSDSRLK lock
- write any termination messages
- exit
Proper steps for a SET STORAGE HALT
- parse the command, exit if syntax error
- call the HALT service
- the HALT service
- load the RSMBK pointer to the DSRBK,
if 0, nothing to halt
- set the DSRcHalt code
- exit
- Vacator notices that DSRcode0 is set to halt
- Begins vacate cleanup
- Wait for all the threads to halt or finish
- Last thread returns to caller
A single SET STORAGE command should be represented by
a single DSRBK. A SET STORAGE command that calls for
multiple DSR actions would have multiple DSRsectn
sections, each describing a single "primitive" action.
For example,
SET STORAGE add PERM x add RECONFIG y
would have a section for the "add PERM" and a section
for the "add RECONFIG".
Processing would be in DSRsectn order. The builder of
the DSRBK would decide on the order, in this case,
- add perm then add reconfig, or
- add reconfig then add perm
DSRcode0 is valid only after processing has completed,
whether successfully or not.
When DSRcode0 indicates failure, the DSRsectn that did
not complete successfully will be the DSRsectn at
the offset in DSRSOFF. That DSRsectn would indicate
in DSRsecCompCode the reason for the failure.
If a DSRsectn was not successful, its DSRsecSzRqS would
indicate how much was not completed.
Normally, one would expect that after a DSRBK has been
processed, the rsaDSRBK pointer to the active DSRBK
would be cleared. However, certain routines look at
rsaDSRBK and take special actions when the rsaDSRBK
pointer has gone to zero to indicate storage
reconfigurations have completed. For example,
HCPPCCWT. However, during system initialization it
might be true that 2 DSRBKs need to complete before
HCPPCCWT does its thing. To facilitate that, HCPPCCAS
will store the contents of DSRrsaNxt into rsaDSRBK. If
that value is non-zero, HCPPCCWT will not continue to
its next action until rsaDSRBK does finally contain
zero.
| |