Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
VDIBK
Control Block Contents
VDIBK DSECT
VDIDATA DSECT
VDIVLT DSECT
Cross Reference (Contains links to field and bit definitions)
VDIBK Prolog
NAME : HCPVDIBK DESCRIPTION: VDISK data BlocK (Guest Relocation) DSECT : VDIBK VDIVLT FUNCTION : The VDIBK DSECT is used during Live Guest Relocation to accumulate a list of migratable VDISKs and their associated ASCBK addresses. The VDIVLT DSECT maps a table locating all VDIBKs used in the current relocation. LOCATED BY : The DSECTS within this block are pointed to by following fields in HCPRLOBK: RLOVDIFP - Points to first VDIBK in VDIBK chain RLOVDILP - Points to last VDIBK in VDIBK chain RLOVLTBL - Points to the VDISK location table (VDIVLT) VDIARNXT - Points to the next VDIBK in the chain, or zero if we're at the end of the chain CREATED BY : - On the source system: The VDIBK is created/updated by the VDISK Array routine (HCPRLLVA). This routine is called during I/O eligibility checking. VDIVLT is created by the Generate VDIBK Table, HCPRLLGT. This is called by source eligibility checking (HCPRLLSE). - On the destination system: The VDIBK is received over ISFC by destination eligibility checking (HCPRLLDE), which anchors it into the RLOBK on the destination. VDIVLT is created by HCPRLLGT, which is called by HCPRLLDE as it processes the VDIBKs sent over ISFC from the source system. DELETED BY : HCPRLNCU - LGR cleanup routine (source) HCPRLNCT - LGR cleanup routine (target) REFERENCES : None SERIALIZED : RLOVDILK There is a risk of STMGT LGR cleanup and destination I/O device creation running at the same time. As both access the VDIBK, the RLOVDILK lock was created to serialize all fields related to relocating VDISKs. This is a standard shared/exclusive lock. Furthermore, these DSECTs are *not* covered under the VDEV lock as changes to the VDISK configuration are not supported during a relocation; a DEFINE or DETACH VDISK command will fail a relocation in progress. RELOCATION CONSIDERATIONS : This block is sent from the source to the destination system. NOTES : On the destination system, flag VDIDNXIT is used to coordinate address space cleanup when a relocation is terminated prematurely. If the bit is set, then I/O relocation has created the VDISK as part of the relocating guest's I/O configuration. As such, the VDISK address space will be cleaned up when the relocation skeleton goes through logoff processing. If VDIDNXIT is not set, then relocation cleanup (HCPRLNCT) will destroy the VDISK address space. For a description of how the VDIVLT can be used to find a VDIBK during a relocation, see fields VPAAIDOF and VPAAIDIN in the VPABK.
VDIBK Control Block Content
VDIBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure VDIBK VDISK data BlocK (Guest Relocation) The following is header information for the array. 0000 0 Character 8 VDIBKNAM (+00) Indicate start of VDIBK. This is an eyecatcher, 'VDIBK=>', and is used to ID this block. On the destination, ISFC allocates this block as free storage, and as such it will lack a trailer. 0008 8 Signed 4 VDIARNXT (+08) Pointer to the next VDISK array 000C 12 Signed 2 VDIUSED (+0C) VDIBK entries used in this block 000E 14 Signed 2 VDINDEX (+0E) Index to the next empty entry in the block, or zero if the block is filled. 0010 16 Signed 4 VDISIZE (+10) Total size of all VDISK address spaces in this VDIBK, in blocks 0014 20 Signed 2 VDIPROCD (+14) Number of VDIBK entries in this block that have been processed as part of VDISK creation. This field is only used on the destination. 0016 22 Signed 2 VDISKCNT (+16) Number of VDISKs this guest owns. Valid only in the first VDIBK 0018 24 Signed 4 VDIBLCKS (+18) Number of VDISK blocks represented in this chain. Valid only in the first VDIBK. 001C 28 Bitstring 1 VDIBSTAT (+1C) Status flags for this VDIBK .... ...1 VDIFIRST X'01' VDIFIRST This is the first VDIBK in the chain 001D 29 Bitstring 1 VDICHKPT (+1D) "Checkpoint" flags for VDISK recreation. These flags are only valid on the destination. .... ...1 VDICRETD X'01' All VDIBK address spaces have been created. This is only valid in the first VDIBK on the chain (pointed to by RLOVDIFP) 001E 30 Bitstring 2 * (+1E) Reserved for IBM use 00000020 VDIHDEND * Mark the end of the header 00000020 VDIHDSIZ *-VDIBK Size of the VDIBK header Start of the variable data section of the array.
VDIDATA DSECT
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure VDIDATA VDISK data BlocK (Guest Relocation) 0000 0 Dbl-Word 8 * (0) Enforce a doubleword boundary 0000 0 Character 24 VDIDNAME (+00) Unique name given to this space 0018 24 Dbl-Word 8 VDIDSIZE (+18) Device address space size (bytes) 0020 32 Signed 4 VDIDNMBK (+20) Number of blocks in this device 0024 36 Signed 4 VDIDASCB (+24) Address of this VDISK's ASCBK 0028 40 Signed 2 VDIDVNUM (+28) Device number 002A 42 Bitstring 1 VDIDSTAT (+2A) Status of this VDIDATA entry .... ..1. VDIDASDS X'02' VDIDASDS The ASCBK address in VDIDASCB is valid on the destination system .... ...1 VDIDNXIT X'01' VDIDNXIT This VDISK is now part of the I/O configuration. If relocation fails, logoff processing will clean up the address space. Relocation clean up should leave this address space alone. This flag can only be present on the destination system. 002B 43 Bitstring 5 * (+2B) Reserved for IBM use 00000030 VDIDNEXT * Address of the next VDI entry Equates needed to calculate block length. 00000030 VDIDATLN *-VDIDATA Length of a data entry 00000020 VDIDMAX 32 Number of entries in a VDIBK The following is the length of the block in DWORDs 000000C4 VDIBKLEN ((VDIDMAX*VDIDATLN)+VDIHDSIZ+7)/8 Mapping for VDIBK Location Table (VLT) entries
VDIVLT DSECT
Hex Dec Type/Val Lng Label (dup) Comments ---- ---- --------- ---- -------------- -------- 0000 0 Structure VDIVLT VDISK data BlocK (Guest Relocation) 0000 0 Address 4 VDIVLTEN Address of the associated VDIBK 00000004 VDIVLTNX * Location of next VDIVLT entry 00000004 VDIVLTSZ *-VDIVLTEN Length of a single VLT entry
VDIBK Storage Layout
*** VDIBK - VDISK data BlocK (Guest Relocation) * * +-------------------------------------------------------+ * 0 | VDIBKNAM | * +---------------------------+-------------+-------------+ * 8 | VDIARNXT | VDIUSED | VDINDEX | * +---------------------------+-------------+-------------+ * 10 | VDISIZE | VDIPROCD | VDISKCNT | * +---------------------------+------+------+-------------+ * 18 | VDIBLCKS |:BSTAT|:CHKPT|/////////////| * +---------------------------+------+------+-------------+ * 20 * *** VDIBK - VDISK data BlocK (Guest Relocation) *** VDIDATA - VDISK data BlocK (Guest Relocation) * * +-------------------------------------------------------+ * 0 | | * = VDIDNAME = * | | * +-------------------------------------------------------+ * 18 | VDIDSIZE | * +---------------------------+---------------------------+ * 20 | VDIDNMBK | VDIDASCB | * +-------------+------+------+---------------------------+ * 28 | VDIDVNUM |:DSTAT|//////////////////////////////////| * +-------------+------+----------------------------------+ * 30 * *** VDIDATA - VDISK data BlocK (Guest Relocation) *** VDIVLT - VDISK data BlocK (Guest Relocation) * * +---------------------------+ * 0 | VDIVLTEN | 4 * +---------------------------+ * *** VDIVLT - VDISK data BlocK (Guest Relocation)
VDIBK Cross Reference
Symbol Dspl Value -------------- ---- ----- VDIARNXT 0008 VDIBKLEN 002B 000000C4 VDIBKNAM 0000 VDIBLCKS 0018 VDIBSTAT 001C VDICHKPT 001D VDICRETD 001D 01 VDIDASCB 0024 VDIDASDS 002A 02 VDIDATLN 002B 00000030 VDIDMAX 002B 00000020 VDIDNAME 0000 VDIDNEXT 002B 00000030 VDIDNMBK 0020 VDIDNXIT 002A 01 VDIDSIZE 0018 VDIDSTAT 002A VDIDVNUM 0028 VDIFIRST 001C 01 VDIHDEND 001E 00000020 VDIHDSIZ 001E 00000020 VDINDEX 000E VDIPROCD 0014 VDISIZE 0010 VDISKCNT 0016 VDIUSED 000C VDIVLTEN 0000 VDIVLTNX 0000 00000004 VDIVLTSZ 0000 00000004
Copyright IBM Corporation, 1990, 2011