DATABASE SCHEMA OR DATA STRUCTURE

Method, system and program products for browsing fully-associative collections of items

6317744

Abstract

Fully-associative non-linear collections of items are browsed. At least a portion of a fully-associative non-linear collection of items is segmented into a plurality of segments. This segmenting is transparent to any browsers of the fully-associative non-linear collection of items. The plurality of segments is then browsed by multiple browsers.


Claims

What is claimed is:

1. A method of browsing fully-associative non-linear collections of items, said method comprising:

initiating browsing of data of an unsegmented fully-associative non-linear collection of items; and

cooperatively browsing at least a portion of the data by a plurality of browsers in parallel, wherein the cooperatively browsing segments, transparent to the plurality of browsers, the at least a portion of the data into a plurality of segments, wherein the plurality of segments are cooperatively browsed by the plurality of browsers in parallel.

2. The method of claim 1, further comprising automatically assigning said plurality of segments to said multiple browsers for browsing.

3. The method of claim 1, wherein said fully-associative non-linear collection of items comprises a storage class.

4. The method of claim 3, wherein said browsing of said storage class comprises using one or more browse controls to control said browsing.

5. The method of claim 4, wherein said one or more browse controls comprise at least one of a browse cursor, a browse state and a browse register.

6. The method of claim 3, wherein at least one segment of said plurality of segments comprises registration information of said storage class, and wherein said browsing comprises reading said registration information.

7. The method of claim 1, wherein said browsing comprises, for a segment, reading data of said segment and copying said data to a structure.

8. The method of claim 7, further comprising determining whether said copying was successful, and recovering from an unsuccessful copying.

9. The method of claim 8, wherein said recovering comprises employing a browser to perform said recovering, said browser being different from a browser used in said unsuccessful copying.

10. The method of claim 1, wherein said cooperatively browsing comprises using one or more browse controls to keep track of the parallel processing by the plurality of browsers.

11. A system of browsing fully-associative non-linear collections of items, said system comprising:

means for initiating browsing of data of an unsegmented fully-associative non-linear collection of items; and

means for cooperatively browsing at least a portion of the data by a plurality of browsers in parallel, wherein the means for cooperatively browsing segments, transparent to the plurality of browsers, the at least a portion of the data into a plurality of segments, wherein the plurality of segments are cooperatively browsed by the plurality of browsers in parallel.

12. The system of claim 11, further comprising means for automatically assigning said plurality of segments to said multiple browsers for browsing.

13. The system of claim 11, wherein said fully-associative non-linear collection of items comprises a storage class.

14. The system of claim 13, wherein said means for browsing of said storage class comprises means for using one or more browse controls to control the browsing.

15. The system of claim 14, wherein said one or more browse controls comprise at least one of a browse cursor, a browse state and a browse register.

16. The system of claim 13, wherein at least one segment of said plurality of segments comprises registration information of said storage class, and wherein said means for browsing comprises means for reading said registration information.

17. The system of claim 11, wherein said means for browsing comprises, for a segment, means for reading data of said segment and means for copying said data to a structure.

18. The system of claim 17, further comprising means for determining whether said copying was successful, and means for recovering from an unsuccessful copying.

19. The system of claim 18, wherein said means for recovering comprises means for employing a browser to perform said recovering, said browser being different from a browser used in said unsuccessful copying.

20. The system of claim 11, wherein said means for cooperatively browsing comprises one or more browse controls to keep track of the parallel processing by the plurality of browsers.

21. A system of browsing fully-associative non-linear collections of items, said system comprising:

an unsegmented fully-associative non-linear collection of items; and

a plurality of browsers to cooperatively browse at least a portion of data of the unsegmented fully-associative non-linear collection of items, wherein the cooperatively browsing segments, transparent to the plurality of browsers, the at least a portion of the data into a plurality of segments, wherein the plurality of segments are cooperatively browsed by the plurality of browsers in parallel.

22. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of browsing fully-associative non-linear collections of items, said method comprising:

initiating browsing of data of an unsegmented fully-associative non-linear collection of items; and

cooperatively browsing at least a portion of the data by a plurality of browsers in parallel, wherein the cooperatively browsing segments, transparent to the plurality of browsers, the at least a portion of the data into a plurality of segments, wherein the plurality of segments are cooperatively browsed by the plurality of browsers in parallel.

23. The at least one program storage device of claim 22, wherein said method further comprises automatically assigning said plurality of segments to said multiple browsers for browsing.

24. The at least one program storage device of claim 22, wherein said fully-associative non-linear collection of items comprises a storage class.

25. The at least one program storage device of claim 24, wherein said browsing of said storage class comprises using one or more browse controls to control said browsing.

26. The at least one program storage device of claim 25, wherein said one or more browse controls comprise at least one of a browse cursor, a browse state and a browse register.

27. The at least one program storage device of claim 24, wherein at least one segment of said plurality of segments comprises registration information of said storage class, and wherein said browsing comprises reading said registration information.

28. The at least one program storage device of claim 22, wherein said browsing comprises, for a segment, reading data of said segment and copying said data to a structure.

29. The at least one program storage device of claim 22, wherein said method further comprises determining whether said copying was successful, and recovering from an unsuccessful copying.

30. The at least one program storage device of claim 29, wherein said recovering comprises employing a browser to perform said recovering, said browser being different from a browser used in said unsuccessful copying.

31. The at least one program storage device of claim 22, wherein said cooperatively browsing comprises using one or more browse controls to keep track of the parallel processing by the plurality of browsers.

32. A method of browsing fully-associative non-linear collections of items, said method comprising:

segmenting data of at least a portion of a fully-associative non-linear collection of items into a plurality of segments, said segmenting being transparent to one or more browsers of said fully-associative non-linear collection of items; and

cooperatively browsing the data of said plurality of segments by multiple browsers in parallel, wherein one or more browse controls are used to determine the segment to be browsed by a particular browser of said multiple browsers.


Description

CROSS-REFERENCE TO RELATED APPLICATIONS

This application contains subject matter which is related to the subject matter of the following patents/applications, each of which is assigned to the same assignee as this application. Each of the below listed patents/applications is hereby incorporated herein by reference in its entirety:

"System-Managed Rebuild Of Coupling Facility Structures," Allen et al., pending, Ser. No. 09/378,780, filed herewith;

"Directed Allocation Of Coupling Facility Structures," Dahlen et al., pending, Ser. No. 09/378,861, filed herewith;

"Method, System And Program Products For Modifying Coupling Facility Structures," Dahlen et al., pending, Ser. No. 09/379,435, filed herewith;

"Method, System And Program Products For Copying Coupling Facility Structures," Dahlen et al., pending, Ser. No. 09/379,054, filed herewith;

"Method, System And Program Products For Copying Coupling Facility Cache Structures," Elko et al., pending, Ser. No. 09/378,839, filed herewith;

"Method, System And Program Products For Copying Coupling Facility List Structures," Dahlen et al., pending, Ser. No. 09/379,097, filed herewith;

"Method, System And Program Products For Copying Coupling Facility Lock Structures," Dahlen et al., pending, Ser. No. 09/379,053, filed herewith;

"Method And System For Reconfiguring A Storage Structure Within A Structure Processing Facility," Allen et al., U.S. Pat. No. 5,515,499, Issued May 7, 1996;

"Multiple Processor System Having Software For Selecting Shared Cache Entries Of An Associated Castout Class For Transfer To A DASD With One I/O Operation," Elko et al., U.S. Pat. No. 5,493,668, Issued on Feb. 20, 1996;

"Software Cache Management Of A Shared Electronic Store In a Supplex," Elko et al., U.S. Pat. No. 5,457,793, Issued Oct. 10, 1995;

"Method, System And Program Products For Managing Changed Data Of Castout Classes," Elko et al., U.S. Pat. No. 6,230,243, Filed Feb. 19, 1999;

"Method, System and Program Products For Providing User-Managed Duplexing of Coupling Facility Cache Structures," Elko et al, Ser. No. 09/255,382, pending, Filed on Feb. 22, 1999;

"Castout Processing For Duplexed Cache Structures", Elko et al., Ser. No. 09/255,383, pending, Filed on Feb. 22, 1999;

"Sysplex Shared Data Coherency Method," Elko et al., U.S. Pat. No. 5,537,574, Issued Jul. 16, 1996;

"Method And Apparatus For Coupling Data Processing Systems," Elko, et al., U.S. Pat. No. 5,317,739, Issued May 31, 1994;

"In A Multiprocessing System Having A Coupling Facility, Communicating Messages Between The Processors And The Coupling Facility In Either A Synchronous Operation Or An Asynchronous Operation", Elko et al., U.S. Pat. No. 5,561,809, Issued on Oct. 1, 1996;

"Mechanism For Receiving Messages At A Coupling Facility", Elko et al., U.S. Pat. No. 5,706,432, Issued Jan. 6, 1998;

"Coupling Facility For Receiving Commands From Plurality Of Hosts For Activating Selected Connection Paths To I/O Devices And Maintaining Status Thereof", Elko et al., U.S. Pat. No. 5,463,736, Issued Oct. 31, 1995;

"A Method And System For Managing Data and Users of Data in a Data Processing System," Allen et al., U.S. Pat. No. 5,465,359, Issued on Nov. 7, 1995;

"Shared Access Serialization Featuring Second Process Lock Steal And Subsequent Write Access Denial To First Process" Insalaco et al, U.S. Pat. No. 5,305,448, Issued on Apr. 19, 1994;

"Method Of Managing Resources In One Or More Coupling Facilities Coupled To One Or More Operating Systems In One Or More Central Programming Complexes Using A Policy," Allen et al., U.S. Pat. No. 5,634,072, Issued On May 27, 1997;

"Partial Page Write Detection For A Shared Cache Using A Bit Pattern Written At The Beginning And End Of Each Page", Narang et al., U.S. Pat. No. 5,455,942, Issued Oct. 3, 1995;

"Method For Managing Database Recovery From Failure Of A Shared Store In a System Including A Plurality Of Transaction-Based Systems Of The Write-Ahead Logging Type", Narang et al., U.S. Pat. No. 5,280,611, Issued Jan. 18, 1994;

"Method And Apparatus Of Distributed Locking For Shared Data, Employing A Central Coupling Facility", U.S. Pat. No. 5,339,427, Issued Aug. 16, 1994;

"Method And Apparatus For Expansion, Contraction, And Reapportionment Of Structured External Storage Structures", Dahlen et al., U.S. Pat. No. 5,581,737, Issued Dec. 3, 1996; and

"Method And Apparatus For Previewing The Results Of a Data Structure Allocation," Dahlen et al., Ser. No. 09/071,555, U.S. Pat. No. 6,237,000, Filed: May 1, 1998; and

"System And Method For Management Of Object Transitions And An External Storage Facility Accessed By One Or More Processors," Dahlen et al., U.S. Pat. No. 5,887,135, Issued Mar. 23, 1999.

TECHNICAL FIELD

This invention relates, in general, to data processing within a computing environment and, in particular, to reconfiguring structures within a shared facility of the computing environment.

BACKGROUND ART

One example of a shared facility is the coupling facility offered by International Business Machines Corporation. The coupling facility is a shared external storage processor that contains storage accessible by one or more processors coupled to the coupling facility and performs operations requested by the programs in those processors. Data and controls to be shared are stored in storage structures within the coupling facility. In one example, these storage structures include cache, list and/or lock structures.

It is desirable, and sometimes necessary, to reconfigure one or more of the storage structures. For example, it may be desirable or necessary to change the characteristics of a structure or to move the structure from one coupling facility to another coupling facility. If such a reconfiguration is necessary, then it is imperative that it be performed in a manner that is least disruptive for the users of the structure.

Previous attempts have been made to provide capabilities that enable reconfiguration of storage structures of a coupling facility. However, a need still exists for a reconfiguration technique that is minimally disruptive to the users of the structures, is simple from the users' perspective, and is mostly transparent to the users. A further need exists for a capability that facilitates the operation of the reconfiguration, particularly in those sysplexes where there are numerous structures and users of those structures. A need exists for a reconfiguration capability that is controlled by the operating system, rather than the users.

SUMMARY OF THE INVENTION

The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of browsing fully-associative non-linear collections of items. In one example, the method includes segmenting at least a portion of a fully-associative non-linear collection of items into a plurality of segments. The segmenting being transparent to one or more browsers of the fully-associative non-linear collection of items. The plurality of segments are then browsed by multiple browsers.

In a further aspect of the present invention, a system of browsing fully-associative non-linear collections of items is provided. In one example, the system includes means for segmenting, transparent to one or more browsers of a fully-associative non-linear collection of items, at least a portion of the fully-associative non-linear collection of items into a plurality of segments; and means for browsing the plurality of segments by multiple browsers.

In yet a further aspect of the present invention, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of browsing fully-associative non-linear collections of items is provided. In one example, the method includes segmenting at least a portion of a fully-associative non-linear collection of items into a plurality of segments. The segmenting being transparent to one or more browsers of the fully-associative non-linear collection of items; and browsing the plurality of segments by multiple browsers.

The present invention advantageously enables the browsing of fully-associative non-linear collections of items by multiple browsers. A fully-associative collection is segmented into various segments, and those segments are browsed by a plurality of browsers. The segmentation is performed transparently to the browsers. The browsing capability provides an efficient means for browsing very large collections of items.

Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:

FIG. 1 depicts one example of a computing environment incorporating and using the capabilities of the present invention;

FIG. 2 depicts one example of the controls associated with a cache structure of FIG. 1, in accordance with the principles of the present invention;

FIG. 3 depicts one example of a structure copy control used in accordance with the principles of the present invention;

FIG. 4 depicts one example of a local cache control block associated with each local cache of the computing environment depicted in FIG. 1, in accordance with the principles of the present invention;

FIG. 5 depicts one embodiment of a directory information block in connection with the directory depicted in FIG. 1, in accordance with the principles of the present invention;

FIG. 6 depicts one embodiment of storage class controls used in accordance with the principles of the present invention;

FIG. 7 depicts one embodiment of the storage class counters of FIG. 6, in accordance with the principles of the present invention;

FIG. 7a depicts one embodiment of the browse controls of FIG. 6, in accordance with the principles of the present invention;

FIG. 7b depicts one embodiment of the browse register of FIG. 7a, in accordance with the principles of the present invention;

FIG. 8 depicts one embodiment of a castout class control block used in accordance with the principles of the present invention;

FIG. 9 depicts one example of a coupling facility list structure, in accordance with the principles of the present invention;

FIG. 10 depicts one embodiment of controls associated with the list structure of FIG. 9, in accordance with the principles of the present invention;

FIG. 11 depicts one example of a list user control block used in accordance with the principles of the present invention;

FIG. 12 depicts one example of list controls used in accordance with the principles of the present invention;

FIG. 13 depicts one example of a list entry control block used in accordance with the principles of the present invention;

FIG. 14 depicts one example of event monitor controls used in accordance with the principles of the present invention;

FIG. 15 depicts one example of event queues used in accordance with the principles of the present invention;

FIG. 16 depicts one example of event queue controls associated with the event queues of FIG. 15, in accordance with the principles of the present invention;

FIGS. 17a-17b depict one embodiment of cache request/response operands used in accordance with the principles of the present invention;

FIGS. 17c-17d depict one embodiment of list request/response operands used in accordance with the principles of the present invention;

FIG. 18 illustrates one example of an overview diagram depicting an active policy coupled to central processing complexes, in accordance with the principles of the present invention;

FIG. 19 depicts one embodiment of the phases associated with the system-managed rebuild processing of the present invention;

FIG. 20 depicts one embodiment of the logic associated with the initiation phase of FIG. 19, in accordance with the principles of the present invention;

FIG. 21 depicts one embodiment of the logic associated with the startup phase of FIG. 19, in accordance with the principles of the present invention;

FIG. 22 depicts one embodiment of the logic associated with the quiesce phase of FIG. 19, in accordance with the principles of the present invention;

FIG. 23 depicts one embodiment of the logic associated with the allocate phase of FIG. 19, in accordance with the principles of the present invention;

FIGS. 24a-24h depict one embodiment of the logic associated with allocating and/or expanding, contracting and reapportioning a structure, in accordance with the principles of the present invention;

FIG. 25 depicts one embodiment of the logic associated with the attach phase of FIG. 19, in accordance with the principles of the present invention;

FIG. 26 depicts one embodiment of the logic associated with a cache copy phase, in accordance with the principles of the present invention;

FIG. 27 depicts one embodiment of the logic associated with writing cache copy controls used during the cache copy phase of the present invention;

FIG. 28 depicts one embodiment of the logic associated with cache attach copy processing used in accordance with the principles of the present invention;

FIG. 29 depicts one embodiment of the logic associated with attaching a local cache in the failed-persistent state during the cache copy process of the present invention;

FIG. 30 depicts one embodiment of the logic associated with castout class copy processing, in accordance with the principles of the present invention;

FIG. 31 depicts one embodiment of the logic associated with writing castout class scan controls, in accordance with the principles of the present invention;

FIG. 31a depicts one embodiment of the logic associated with resetting a failed claimed castout class scan controls, in accordance with the principles of the present invention;

FIG. 32 depicts one embodiment of the logic associated with copying changed entries during the cache copy phase of the present invention, in accordance with the principles of the present invention;

FIG. 33 depicts one embodiment of the logic associated with a Write and Register command, used in accordance with the principles of the present invention;

FIG. 34 depicts one embodiment of the logic associated with copying registrations during the cache copy phase of the present invention;

FIG. 35 depicts one embodiment of the logic associated with reading local cache registers during the cache copy phase of the present invention;

FIG. 36a depicts one example of a registration block, in accordance with the principles of the present invention;

FIG. 36b depicts one embodiment of a data block containing registration blocks, in accordance with the principles of the present invention;

FIG. 37 depicts one embodiment of the logic associated with writing storage class information during the cache copy phase of the present invention;

FIG. 38 depicts one embodiment of the logic associated with copying storage class registrations during the cache copy process of the present invention;

FIG. 38a depicts one embodiment of the logic associated with cache copy recovery, in accordance with the principles of the present invention;

FIG. 39 depicts one embodiment of the logic associated with copying list structures, in accordance with the principles of the present invention;

FIG. 40 depicts one embodiment of the logic associated with attaching a user to a list structure during the list copy phase of the present invention;

FIG. 41 depicts one embodiment of the logic associated with attaching a list structure user in the failed-persistent state, in accordance with the principles of the present invention;

FIG. 42 depicts one embodiment of the logic associated with copying list/lock structures during the list copy phase of the present invention;

FIG. 43 depicts one embodiment of the logic associated with writing list set scan controls during the list copy phase of the present invention;

FIG. 43a depicts one embodiment of the logic associated with resetting a failed claimed list set scan controls, in accordance with the principles of the present invention;

FIG. 44 depicts one embodiment of the logic associated with copying list entries/elements during the list copy phase of the present invention;

FIG. 45 depicts one embodiment of the logic associated with copying event monitor controls during the list copy phase of the present invention;

FIG. 46 depicts one embodiment of the logic associated with copying list header objects during the list copy phase of the present invention;

FIG. 47 depicts one embodiment of the logic associated with copying event queue controls during the list copy phase of the present invention;

FIG. 48a depicts one embodiment of the logic associated with copying a lock table during the list copy phase of the present invention;

FIG. 48b depicts one embodiment of the logic associated with copying a lock range in accordance with the principles of the present invention;

FIG. 49 depicts one embodiment of the logic associated with reading a lock table range, in accordance with the principles of the present invention;

FIG. 50 depicts one embodiment of the logic associated with the cleanup phase of FIG. 19, in accordance with the principles of the present invention; and

FIG. 51 depicts one embodiment of the logic associated with the completion phase of FIG. 19, in accordance with the principles of the present invention.

BEST MODE FOR CARRYING OUT THE INVENTION

One embodiment of a computing environment incorporating and using the capabilities of the present invention is depicted in FIG. 1. Computing environment 100 is based, for instance, on the Enterprise Systems Architecture (ESA)/390 offered by International Business Machines Corporation, Armonk, N.Y. ESA/390 is described in an IBM Publication entitled Enterprise Systems Architecture/390 Principles Of Operation, IBM Publication No. SA22-7201-04, June 1997, which is hereby incorporated herein by reference in its entirety. One example of a computing environment based on ESA/390 is the 9672 Parallel Enterprise Server offered by International Business Machines Corporation.

Computing environment 100 includes, for instance, one or more central processing complexes (CPCs) 102, a secondary storage unit 104 and at least one coupling facility 106. Each central processing complex includes, for example, at least one central processing unit 108, at least one database management facility 110, and at least one local cache 112. Each central processing unit executes an operating system 114, such as the Multiple Virtual Storage (MVS) or OS/390 operating system offered by International Business Machines Corporation, which is used for controlling execution of programs and the processing of data.

Each operating system 114 includes a Cross-System Extended Services (XES) facility 116 for managing and accessing information in the coupling facility and for providing various aspects of the present invention, as described further below. In particular, it is a Coupling Facility Resource Manager (CFRM) component of XES that is responsible for various aspects of the present invention.

Each database management facility 110 owns and controls a set of resources within the computer system. As one example, the database management facility is DB2, offered by International Business Machines Corporation.

Each local cache 112 includes data associated with its respective central processing complex. In particular, each local cache includes a name field for referencing data; a data field for storing the data; an optional adjunct data field for additional data; and a state field for indicating whether the data in the data field is valid.

Coupled to the central processing complexes is secondary storage unit 104. In one example, the secondary storage includes one or more direct access storage devices (DASD) 118, and a DASD director 120 coupled thereto. DASD director 120 controls access to the direct access storage devices. The DASD director couples the secondary storage unit to the central processing complexes via one or more channels (e.g., ESCON channels).

Each central processing complex 102 is also coupled to coupling facility 106 (a.k.a., a structured external storage (SES) processor). (In one embodiment, each central processing complex is coupled to a plurality of coupling facilities 106.) Coupling facility 106 contains storage accessible by the central processing complexes and performs operations requested by programs in the CPCs. Aspects of the operation of a coupling facility are described in detail in such references as Elko et al., U.S. Pat. No. 5,317,739 entitled "Method And Apparatus For Coupling Data Processing Systems", issued May 31, 1994; Elko et al., U.S. Pat. No. 5,561,809, entitled "In A Multiprocessing System Having A Coupling Facility Communicating Messages Between The Processors And The Coupling Facility In Either A Synchronous Operation Or An Asynchronous Operation", issued on Oct. 1, 1996; Elko et al., U.S. Pat. No. 5,706,432, entitled "Mechanism For Receiving Messages At A Coupling Facility", issued Jan. 6, 1998, and the patents and applications referred to therein, all of which are hereby incorporated herein by reference in their entirety.

Coupling facility 106 includes, for instance, one or more storage structures, such as a cache structure 122. Each cache structure includes, for instance, a number of cache structure controls 124, a number of local cache control blocks (LCCB) 126, a directory 128, a registration table 129, a data area 130, a changed data management facility 132, a number of storage class controls 133, and one or more castout class control blocks 134, each of which is explained in further detail below. (In other embodiments, the cache structure and/or the coupling facility may include other or additional components or information.)

As shown in FIG. 2, cache structure controls 124 include, for instance, the following controls:

(a) Total Changed Data-Area-Element Count (TCDAEC): A value that indicates the number of data-area elements in the cache structure that are in the changed state; i.e., either the change bit is set, or the castout lock is set to a nonzero value in the directory entry.

(b) Total-Directory-Entry Count (TDEC): A value that specifies the number of directory entries allocated for the cache.

(c) Total-Data-Area-Element Count (TDAEC): A value that specifies the number of data-area elements allocated for the cache.

(d) Total Structure Changed Count (TSCC): A value that indicates the number of directory entries in the cache structure that are in the changed state; i.e., either the change bit is set, or the castout lock is set to the nonzero value.

(e) Adjunct-Assignment Indicator (AAI): A value that indicates the presence or absence of adjunct areas. Two possible values are: adjunct areas not assigned; adjunct areas assigned. When adjunct areas are assigned, an adjunct area is associated with each directory entry.

(f) Maximum Storage Class (MSC): A value that specifies the number of storage classes. Valid storage class values range, for instance, from one to the maximum storage class value.

(g) Maximum Castout Class (MCC): A value that specifies the number of castout classes. Valid castout class values range, for instance, from one to the maximum castout class value.

(h) Name-Class Mask (NCM): A value that determines the subset of bytes in the name field, called the name-class subfield, that specify the name class. The bytes in the name field that constitute the name-class subfield are in one-to-one correspondence with the bits in the name-class mask that are set to binary 1. When the name-class mask consists of all zeros or all ones, name classes are not supported in the cache structure.

(i) Data-Area-Element Characteristic (DAEX): A value that specifies the number of bytes in each data-area element. The size of the data-area element in bytes is, for instance, the product of 256 and 2 raised to the power of the value specified in the data-area element characteristic.

(j) Maximum Data-Area Size (MDAS): A value that specifies the maximum allowable size of a data area as an integral multiple of the data-area-element size. The maximum data-area size is set by the program when the cache is allocated.

(k) Structure Size (SS): A value that specifies the number of units of coupling facility storage allocated for the cache.

(l) Maximum Structure Size (MXSS): A value that specifies the maximum number of units of coupling facility storage that can be allocated for the cache.

(m) Marginal Structure Size (MRSS): A value that specifies the minimum number of units of coupling facility storage that can be allocated for the cache.

(n) Minimum Apportionable Structure Size (MASS): A value that specifies the minimum number of units of coupling facility storage that can be allocated for the cache, in integral multiples of the coupling facility storage increment, that are sufficient for creating the associated controls, and enough elements and entries to substantially satisfy the target directory-to-data ratio.

(o) Structure-Size-Change Indicator (SSCI): A value that indicates whether an expansion or contraction process is currently active for the cache structure. When the value is one, the cache is being expanded or contracted. When the value is zero, no expansion or contraction is active.

(p) Target Directory-Entry Count (TGDEC): A value that specifies the target for the maximum number of possible directory entries in a cache structure. In one example, valid counts are from 0 to 2.sup.32 -1.

(q) Target Data Area Element Count (TGDAEC): A value that specifies the target for the maximum number of data-area elements that are available for assignment to directory entries in a cache structure. In one example, valid counts are from 0 to 2.sup.32 -1.

(r) Target Structure Size (TSS): A value that specifies the target number of units to be allocated. Valid sizes are, for instance, from the coupling facility storage increment to a maximum of 2.sup.44 -4k bytes in integral multiples of the coupling facility increment.

(s) Structure Authority (SAU): A value associated with each bit in a structure identifier (SID) vector. The structure authority has two parts: A time of day (TOD), which reflects the moment when a system was allocating the structure and the system ID (SYID) used to make the TOD unique. Paired with the sysplex name, it further identifies who caused the structure to be allocated.

(t) User Structure Control (USC): A value defined by the user.

(u) LCID Vector (LCIDV): A bit string with an initial value of zero. The bit positions start at zero and increase sequentially to the local-cache-identifier limit. The bit at position (i) in the string is set to one when a local cache is attached with a local-cache identifier (LCID) value of (i). When the bit is one, the local-cache-identifier is assigned. The bit at position (i) is reset to zero when the local cache is detached and LCID unassignment is requested, when the cache structure is deallocated, or when a coupling facility power-on reset occurs. When the bit is zero, the local-cache-identifier is not assigned.

(v) Extended User Structure Control (EUSC): An extension to the user structure control.

(w) Castout-Class Cursor (CCCUR): A value that is either zero or contains the value of the current castout class in a castout-class scan process. When the castout-class cursor is zero, it is in the reset state. The initial value of the castout-class cursor is zero.

(x) Free-Data-Area Element Count (FDAEC): A value that specifies the number of data-area elements allocated for the cache that are not assigned to a directory entry.

(y) Free-Directory-Entry Count (FDEC): A value that specifies the number of directory entries allocated for the cache that are not assigned to the directory.

(z) Global Count of Unchanged Directory Entries with Registered Interest (GCUDRI): The number of directory entries in the cache structure which have at least one valid row in the local-cache register and where the change bit and castout lock are both zero.

(aa) Pending Directory-to-Data Ratio (PDTDR): A value that contains the last requested target directory-to-data ratio on an allocate cache structure command. The PDTDR object is updated when the cache structure is initially allocated and when a reapportionment process is initiated.

(bb) Reapportionment-in-Progress Indicator (REIPI): A value that indicates whether a reapportionment process is currently active for the cache structure. When the value is one, the cache is being reapportioned. When the value is zero, no reapportionment is active.

(cc) Structure-Copy Control (SCC): A field maintained by a collection of systems during a structure-copy process. The structure-copy control is initialized to zero when the cache structure is created. One example of a structure copy control is described with reference to FIG. 3.

As one example, a structure copy control 300 includes a current phase field that indicates the current phase of copy processing (described below); a system identifier (SYSID) array that includes the system identifiers of the registered participants of the structure copy process; a copy identifier (COPYID) array that includes an identifier for each copy process instance; a participant string that includes, for instance, a bit per system in the SYSID array--a bit set to one indicates the system can participate in the copy process; a worker string that includes, for instance, a bit per system in the SYSID array--a bit set to one indicates the system is currently participating in the copy process; and a failed string that includes, for instance, a bit per system in the SYSID array--a bit set to one indicates a failed system.

In particular, as each copy process participant is started by CFRM to run on the various systems in the sysplex, the copy processor assigns itself a unique COPYID (by finding an unassigned bit in the participant string), and then uses that COPYID as the index into all of the arrays and bitstrings contained in the SCC. The copy processor then atomically (a) records its SYSID in the sysid array entry, (b) records its COPYID in the COPYID array, and (c) marks itself as a participant in the participant string.

(dd) Structure-Copy-Control Version Number (SCCVN) (FIG. 2): A field which is used to serialize updates to the SCC. The structure-copy-control version number is initialized to zero when the cache structure is created.

(ee) UDF-Order-Queue Indicator (UDFOQI): A value that indicates the presence or absence of UDF-order queues in the castout classes. The two possible values are: 0 UDF-order queues are not present; and 1 UDF-order queues are maintained. When the indicator has a value of one, a UDF-order queue is associated with each castout class.

(ff) WWCO Queue (WQ): A subset of the directory designating directory entries in the write-with-castout state. In one example, one WWCO queue exists in the cache structure.

(gg) WWCO-QUEUE Count (WQC): A value associated with the WWCO queue. Its value indicates the number of directory entries that are queued on the WWCO queue. The count is returned on a Read-Cache-Structure-Information command (described below).

Returning to FIG. 1, in addition to structure controls 124, cache structure 122 includes local cache control block 126. Local cache control block 126 includes a number of local cache controls, which are initialized when a local cache is attached to a coupling facility cache. The controls are valid when a local cache identifier (LCID), used to identify a local cache, is assigned. In one embodiment, local cache control block 126 includes the following fields (FIG. 4):

(a) Attachment Status (AS): A control that describes the state of the attachment of a local cache. When the value of the attachment status is one, the local cache is active (attached). When the value of the attachment status is zero, the local cache is inactive (detached). When the local cache is inactive (detached), the user is in a failed-persistent state.

The attachment status controls the execution of commands that specify the local cache. When the local cache is active (attached), commands that specify the local cache are processed normally.

(b) Attachment Information (AINF): A value set by the program when the local cache is attached.

(c) Detachment Restart Token (DRT): A value used to indicate how far along a detachment process has proceeded.

(d) Local-Cache Token (LCT): A value used to identify the local cache on the CPC.

(e) Local-Cache Authority (LCAU): A value set by the program when the local cache is attached.

(f) System Identifier (SYID): A value specified by the program when a message path, used to communicate commands and messages (as described in U.S. Pat. No. 5,561,809 entitled, "In A Multiprocessing System Having A Coupling Facility, Communicating Messages Between The Processors And The Coupling Facility In Either A Synchronous Operation Or An Asynchronous Operation," by Elko et al., issued Oct. 1, 1996; and "Coupling Facility For Receiving Commands From Plurality Of Hosts For Activating Selected Connection Paths To I/O Devices And Maintaining Status Thereof," by Elko et al., U.S. Pat. No. 5,463,736, issued Oct. 31, 1995, each of which is hereby incorporated herein by reference in its entirety) is activated. The system identifier is; maintained in a message-path status vector and copied into the local cache controls when an attach-local-cache command is communicated over the message path.

Referring back to FIG. 1, cache structure 122 also includes directory 128. Cache directory 128 is a collection of directory entries partitioned into storage classes and arranged as a fully associative array. The subset of changed directory entries is additionally partitioned into castout classes. Each directory entry includes, for instance, a name field 136, a state field 138 and one or more pointers 140. Whenever a named data object is placed in a coupling facility cache or local cache, its name is registered in name field 136 and its state is registered in state field 138 by the cache directory. Further details relating to state field 138 are described with reference to FIG. 5.

In general, the state information indicates whether the data is changed, unchanged, locked for castout, or resident in coupling facility 106. In particular, state field 138 includes, for instance:

(a) A User-Data Field (UDF): The user-data field contains a value that is associated with the data when it is initially changed in the coupling facility cache and is maintained until the data area is re-used. The user-data field is valid when the data is cached as changed. The user data field contains a time value or timestamp, which represents the oldest point in time when the data element is changed and that change has not yet been migrated to DASD. (UDF is further described in a U.S. Pat. No. 6,230,243, Elko et al., entitled "Method, System And Program Products For Managing Changed Data Of Castout Classes", filed Feb. 19, 1999, which is hereby incorporated herein by reference in its entirety.)

(b) A Storage Class (STC): A value which identifies the storage class assigned for the name.

(c) A Change Indicator (C): A value which, in conjunction with the castout lock, indicates the changed state of the data. When the change bit is one, the data is cached as changed. When the change bit is zero and the data is not locked for castout, the data is either not cached, or is cached but not changed. When the change bit is zero and the data is locked for castout, the data is cached as changed. Whenever the data is in the changed state, the most recent version of the data resides in the cache. When the change bit is one, the data bit is also one.

(d) A Data-Cached Indicator (D): A value which indicates whether the data is located in the SES cache. When the data bit is one, the data is cached. When the data bit is zero, the data is not cached.

(e) A Castout-Parity Indicator (CP): A field which indicates the current assignment of the castout parity. Three possible values are: castout parity is zero; castout parity is one; the castout parity is unknown. One example of the castout parity bits indicator is described in U.S. Pat. No. 5,455,942, entitled "Partial Page Write Detection For A Shared Cache Using A Bit Pattern Written At The Beginning And End of Each Page", Narang et al., issued Oct. 3, 1995, which is hereby incorporated herein by reference in its entirety.

(f) A Castout Class (CCL): A value which identifies the castout class assigned for the name.

(g) A Castout-Lock(CO): A value which indicates the castout state of the data. When the castout lock is zero, the data is not being castout. When the castout lock is not zero, the value of the first byte of the castout lock identifies the local cache that is casting out the data block from the coupling facility cache to DASD. The value of the second byte identifies the castout process on the local system. When the castout lock is not zero, the data bit is one.

(h) A Castout Lock State (COLS): A value that defines the state of the castout lock. For example, 00 is reset; 01 is read for castout; 10 is write with castout; and 11 is unassigned.

(i) A Data-Area Size (DAS): A value that specifies the size of the data area as an integral multiple of the data-area-element size. The initial value is zero when the directory entry is assigned and is zero until the data bit is set to one.

(j) A Reference Indicator (R): A value which indicates whether a reference signal has been processed for the name.

(k) A Valid Indicator (V): A value which indicates the valid state of the directory entry.

(l) A Version Number (VN): An unsigned binary integer that is conditionally compared and conditionally updated. The version number is initialized to zero when a name is assigned to the directory.

In addition to the above, directory information block 128 (FIG. 1) also includes one or more pointers 140 to register 129. Register 129 is, for instance, a table containing information on the location of the locally cached copies of the data block. Each row in the table corresponds to an attached local cache. The columns contain a local cache identifier (LCID) (also see FIG. 5), a local-cache-entry number (LCEN) and a valid bit (LVI) for the local-cache-entry number. A valid local-cache-entry number is registered in the local-cache register when the registration process is executed for the specified name and local cache. A local-cache-entry number is invalidated when a local cache is detached, or when a local copy invalidation process is executed for the specified name and the local cache is a member of the set of local caches being invalidated. The LCEN field is invalid, when LVI is zero.

In addition to the above, directory 138 includes zero or more pointers 140 to optional data area 130 and optional adjunct data areas (not shown). Data area 130 is the area in the cache in which the user data is stored. The data object cached in the shared cache is identified by a software-assigned name. Therefore, any request for reading or writing data in the shared cache specifies the name of the data object, which is the object of the request. The directory is conventionally indexed by the names of the data objects which are objects of the read or write commands.

As mentioned above, the entries of cache directory 128 (FIG. 1) are partitioned into storage classes. As one example, storage classes are described in U.S. Pat. No. 5,457,793 entitled "Software Cache Management of a Shared Electronic Store In A Supplex," by Elko et al., issued on Oct. 10, 1995, which is hereby incorporated herein by reference in its entirety. Each storage class includes, for instance, a set of storage class controls 133. In on embodiment, these controls include the following (FIG. 6):

(a) Storage-Class Queue (SCQ): An ordered list of the directory entries in the storage class. The queue is ordered, for example, in reference order; the most recently referenced directory elements are at the bottom of the queue and the oldest, or least recently referenced, are at the top of the queue.

(b) Reclaiming controls which include, for instance, the following:

(1) Reclaiming Counters (RCT): An array of counters associated with each storage class and a cursor addressing a single array element. The values of the reclaiming counters are initialized to the values in the reclaiming vector when a set-reclaiming-vector command is processed or when the repeat factor is decremented to a nonzero value.

When a reclaim operation is performed, the cursor identifies the target storage class where the reclaiming operation is performed, provided the reclaiming vector is alive.

(2) Reclaiming Vector (RV): An array of counters associated with each storage class. A reclaiming-vector entry (RVE) exists for each storage class defined in the cache and is indexed by storage-class value. The array is initialized by the set-reclaiming-vector command.

(3) Repeat Factor (RF): A value that specifies the number of times the reclaiming counts are initialized with the values in the reclaiming vector. The repeat factor is set to a program-specified value by the set-reclaiming-vector command. When the repeat factor is zero, the reclaiming vector is inactive.

(c) Storage class counters, which include, for instance, the following (see also FIG. 7):

(1) Castout Counter (COC): Indicates that a castout operation was performed for the storage class in the read-for-castout state.

(2) Completed-Reference-List Counter (CRLC): Processing of a reference list had been completed by initiating a reference signal for each name that is in the name list and is assigned to the directory.

(3) Data-Area Counter (DAC): The number of data areas assigned to the storage class.

(4) Data-Area-Element Counter (DAEC): The number of data-area elements assigned to the storage class.

(5) Data-Area-Reclaim Counter (DARC): A data-area-assignment operation for the storage class required that a data area be reclaimed, and the reclaim operation was successful.

(6) Directory-Entry Counter (DEC): The number of directory entries assigned to the storage class.

(7) Directory-Entry-Reclaim Counter (DERC): A name-assignment operation for the storage class required that a directory entry be reclaimed, and the reclaim operation was successful.

(8) Partially-Completed-Reference-List Counter (PCRLC): Processing of a reference list was abandoned due to the expiration of a model-dependent timeout.

(9) Read-Hit Counter (RHC): The referenced entry contained data for a read-and-register command.

(10) Read-Miss-Assignment-Suppressed Counter (RMASC): A read-and-register command specified a name which was not assigned in the directory, and name assignment was suppressed for the command.

(11) Read-Miss-Directory-Hit Counter (RMDHC): A read-and-register command specified an assigned name in the directory for which the data was not cached.

(12) Read-Miss-Name-Assigned Counter (RMNAC): A read-and-register command specified a name which was not assigned in the directory, and a directory entry was successfully assigned to the name.

(13) Read-Miss-Target-Storage-Class-Full Counter (RMTSFC): A read-and-register command specified a name which was not assigned in the directory, and a name-assignment could not be completed for the specified storage class due to a lack of storage resources in the target storage class.

(14) Reference-Signal-Miss Counter (RSMC): A name was processed for a process-reference-list command which was not found in the specified storage class.

(15) Target-Storage-Class-Full Counter (TSCFC): A directory-entry assignment or data-area assignment could not be completed when the storage class was selected as the target storage class.

(16) Total Changed Count (TCC): The number of directory entries in the storage class that are in the changed state; i.e., either the changed bit is set or the castout lock is set to a nonzero value. The count is returned on a write-when-registered or write-and-register command, when a change signal is processed as well as on a read-storage-class-information command.

(17) Unchanged-Directory-Entries-with-Registered-Interest Counter (UDERIC): The number of directory entries in the storage class which have at least one valid row in the local cache register, and where the change bit and castout lock are both zero.

(18) Write-Hit-Change-Bit-0 Counter (WHCBOC): A write-and-register or write-when registered command completed by storing the data with the change bit set to zero.

(19) Write-Hit-Change-Bit-1 Counter (WHCB1C): A write-and-register or write-when registered command completed by storing the data with the change bit set to one.

(20) Write-Miss-Invalid-State Counter (WMISC): A write-and-register or write-when-registered command specified a change-bit value of zero when the data was cached as changed.

(21) Write-Miss-Not-Registered Counter (WMNRC): A write-when-registered command could not be completed; the specified local-cache-entry was not listed in the user register.

(22) Write-Miss-Target-Storage-Class-Full Counter (WMTSFC): A write-and-register or write-when-registered command could not be completed for the source storage class due to a lack of storage resources in the target storage class.

(23) Write-unchanged-with-XI Counter (WUXIC): A write-and-register or write-when-registered command with the change control (CHGC) bit zero, and the complement-copy-invalidation control (CCIC) bit one, successfully stored the data to the coupling facility.

(24) XI-for-Complement-Invalidation Counter (XICIC): A cross-invalidate (XI) signal was issued to satisfy an invalidate-complement-copies command.

(25) XI-for-Directory-Reclaim Counter (XIFDRC): A cross-invalidate (XI) signal was issued to satisfy a directory-entry-reclaim operation.

(26) XI-for-Local-Copy-Removal Counter (XILRC): A cross-invalidate (XI) signal was issued to invalidate a local copy in the local cache that is requesting a local-cache-entry-registration process. The invalidation may occur for one of two reasons: (1) the local-cache-entry number is being replaced in the local-cache register, or (2) the local-cache-entry registration process failed with a target-storage-class-full condition and the command is read for castout.

(27) XI-for-Name-Invalidation Counter (XINIC): A cross-invalidate (XI) signal was issued to satisfy an invalidate-name command.

(28) XI-for-Write Counter (XIFWC): A cross-invalidate (XI) signal was issued to satisfy a write-when-registered or write-and-register command.

(d) Browse controls (FIG. 6), which include, for instance, the following (see also FIG. 7a):

(1) Browse Cursor (BCUR): A value that is either zero or identifies the current location in the storage-class queue of an active browse process. When the browse cursor is zero, it is in the reset state. The initial value of the browse cursor is zero. The browse cursor is also zero when the browse state is inactive or complete.

(2) Browse State (BST): A value that determines the current state of the browse operation. The possible states are: 00 Inactive, all browse controls are zero; 01 browse active; 10 browse complete; and 11 unassigned. The initial value of the browse state is binary 00.

(3) Browse Register (BREG): The browse register is a table containing information on the set of active browsers participating in the browse process. There are, for instance, up to 32 possible active browsers and the browse register contains a row for each possible browser. The columns of the table include, for example, the following (FIG. 7b):

(a) Browser active bits (BAB), indicating the active state for the browser represented by the row in the browse register. The possible values are: 0 inactive, and 1 active browser.

(b) A browser identifier (BID), identifying a browser and being used as an index value for references to the browse register.

(c) A previous browse cursor (PBCUR), which is a value that is either zero or contains the value of the browse cursor for the previous invocation of the browse process by the browser. When the previous browse cursor is zero, it is in the reset state. The initial value of the previous browse cursor is zero. The previous browse cursor is also zero when the browser state is inactive, or when the browser state is active and the current browse cursor is zero.

(d) A current browse cursor (CBCUR), which is a value that is either zero or contains the value of the browse cursor at the completion of the current invocation of the browse process by the browser. When the current browse cursor is zero, it is in the reset state. The initial value of the current browse cursor is zero. The current browse cursor is also zero when the browser state is inactive.

Referring back to FIG. 1, as previously mentioned, the subset of changed directory entries is also partitioned into castout classes. As one example, castout classes are described in U.S. Pat. No. 5,493,668 entitled "Multiple Processor System Having Software for Selecting Shared Cache Entries of An Associated Castout Class for Transfer To A DASD with One I/O Operation", Elko et al., Issued on Feb. 20, 1996; and in "Method, System And Program Products For Managing Changed Data Of Castout Classes," Elko et al., U.S. Pat. No. 6,230,243, filed Feb. 19, 1999, each of which is hereby incorporated herein by reference in its entirety. Each castout class has associated therewith a set of castout class control blocks 134. In one embodiment, these controls include the following (FIG. 8):

(a) Castout-Class Count (CCC): A value associated with a castout class. Its value indicates the number of data-area elements assigned to directory entries in the castout class. The count is returned on a write-when-registered or write-and-register command when a change signal is processed for the castout class, and the count is returned on a read-castout-class-information command when the castout class lies in the specified range.

(b) Castout-Class Queue (CCQ): An ordered subset of the directory designating directory entries in the castout class. The queue is maintained in, for instance, update order; the most recently updated directory entries are at the bottom of the queue. The least recently updated entries are at the top of the queue. A castout-class queue exists for each castout class in the cache.

(c) Castout-class scan controls (CCSC), which include, for instance, the following:

(1) Castout-Class-Scan Identifier (CCSID): A value that determines the current state of the castout-class scan controls and, additionally, identifies the owner of the castout-class when a castout-class scan is in progress. When zero, the castout-class-scan controls for the castout class are in the available state. When nonzero, the castout-class scan controls are in the claimed state. The initial state of the castout-class-scan controls is the available state.

(2) Castout-Class-Scan State (CCSST): A value that, in conjunction with the castout-class-scan identifier, determines the current state of the castout-class scan. When the castout-class-scan controls are claimed and the castout-class-scan state is zero, the castout-class scan is in the in-progress state. When the castout-class-scan controls are claimed and the castout-class-scan state is one, the castout-class scan is in the completed state. When the castout-class-scan controls are available, the castout-class-scan-state object is zero.

(d) UDF-Order Queue (UDFOQ): An ordered subset of the directory designating directory entires in the castout class. The queue is maintained, for instance, in increasing UDF order; the directory entry with the smallest valued user-data field is located at the top of the queue. When the UDF-order-queue indicator is one, a UDF-order queue exists for each castout class in the cache. When the UDF-order-queue indicator is zero, no UDF-order queues exist.

Returning to FIG. 1, in one embodiment, cache structure 122 also includes changed data management facility 132. Changed data management facility 132 includes at least a portion of the logic used during castout processing. Changed data management facility 132 is further described in U.S. Pat. No. 6,230,243, Elko et al., entitled "Method, System And Program Products For Managing Changed Data Of Castout Classes", filed Feb. 19, 1999, which is hereby incorporated herein by reference in its entirety.

Described above is one example a cache structure. In addition to cache structures, however, a coupling facility may have other types of structures including, for instance, a list structure. One embodiment of a list structure 900 is depicted in FIG. 9. List structure 900 includes, for instance, list structure controls 902, user controls 904 and, optionally, a lock table 906 and/or a list set 908. (In other embodiments, the list structure may include other or additional components or information.) Each of the components of list structure 900 is described in detail below.

List structure controls 902 include attributes of the structure and are initialized when list structure 902 is created. List structure controls 902 include, for instance, the following controls (FIG. 10):

(a) Entry-Reapportionment-in-Progress Indicator (EREIPI): A value that indicates whether an entry-to-element-reapportionment process is currently active for the list structure. When the value is one, the list structure entry-to-element ratio is being reapportioned. When the value is zero, the list structure entry-to-element ratio is not being reapportioned.

(b) Event-Monitor-Controls Count (EMCC): A value that specifies the number of event-monitor controls objects currently in a list set. Valid counts are, for instance, from 0 to the maximum event-monitor-controls count.

(c) Extended User Structure Control (EUSC): An extension to the user structure control.

(d) List Count (LC): A value that specifies the number of lists created. Valid counts are, for instance, from 0 to the list-number limit.

(e) List-Element Characteristic (LELX): A value that specifies the number of bytes in each list element. The value of the list-element size (LELS), in bytes, is, for instance, the product of 256 and 2 raised to the power of the integer specified in the list-element characteristic. Valid sizes are, for instance, from 256 bytes to the maximum list element size in powers of 2.

(f) List-Set Cursor (LSCUR): A value that is either zero or contains the value of the current list number in a list-set-scan process. When the list-set cursor is zero, it is in the reset state. The initial value of the list-set cursor is zero.

(g) List-Set-Element Count (LSELC): A value that specifies the number of list elements that have been assigned to list entries or retry-data blocks, or both, in the list set. Valid counts are, for instance, from 0 to 2.sup.32 -1.

(h) List-Set-Entry Count (LSEC): A value that specifies the number of existing list entries in the list set. Valid counts are, for instance, from 0 to 2.sup.32 -1.

(i) List-Structure Type (LST): A value that indicates the list objects created on allocation. For example, the first bit is a program-list-entry-identifier indicator (PLEIDI), the second bit is an element-count indicator (ECI), the third bit is a lock indicator (LI), the fourth bit is a data indicator (DI), the fifth bit is an adjunct indicator (AI), the sixth bit is a name indicator (NI), and the seventh bit is a key indicator (KI).

The program-list-entry identifier indicator has, for instance, the following encoding: 0 the structure uses a coupling-facility-assigned LEID value; and 1 the structure uses a program-assigned LEID value.

The element-count indicator has, for instance, the following encoding: 0 List-entry count and list-entry-count limit are defined; and 1 List-element count and list-element-count limit are defined.

The lock indicator has, for instance, the following encoding: 0 No lock table is created; and 1 A lock table is created.

The data and adjunct indicators have, for instance, the following encoding: 00 No list set is created; 01 List entries have adjunct only; 10 List entries have data only; and 11 List entries have data and adjunct.

The name indicator has, for instance, the following encoding: 0 List entries not named; and 1 List entries named.

The key indicator has, for instance, the following encoding: 0 List entries not keyed; and 1 List entries keyed.

(j) Lock-Table-Entry Characteristic (LTEX): A value that specifies the number of bytes in each lock-table entry. The value of the lock-table-entry size (LTES) in bytes is, for instance, the product of 2 raised to the power of the value specified in the lock-table-entry-characteristic. Valid sizes are, for instance, from one byte to the maximum lock-table-entry size in powers of 2.

(k) Lock-Table-Entry Count (LTEC): A value that specifies the number of lock-table entries allocated. Valid counts are, for instance, from 0 to 2.sup.32 -1.

(l) Marginal Structure Size (MRSS): A value that specifies the minimum number of units of coupling facility storage that is required for the creation of the requested lock-table entries, lists, and associated controls for the list structure, independent of either the storage-increment size or the requested target entry-to-element ratio.

(m) Maximum Data-List-Entry Size (MDLES): A value that specifies the maximum size of the data list entry as an integral multiple of the list-element size.

(n) Maximum Event-Monitor-Controls Count (MEMCC): A value that specifies the maximum number of possible event-monitor-controls objects in a list set. Valid counts are, for instance, from 0 to 2.sup.32 -1 in integral multiples of the number of event-monitor controls that can be supported with the coupling facility storage-increment size.

(o) Maximum List-Set-Element Count (MLSELC): A value that specifies the maximum number of list elements that are available for assignment to list entries or retry-data blocks, or both, in the list set. Valid counts are, for instance, from 0 to 2.sup.32 -1.

(p) Maximum List-Set-Entry Count (MLSEC): A value that specifies the maximum number of possible list entries in a list set.

(q) Maximum Structure Size (MXSS): A value that specifies the maximum number of units of coupling facility storage that can be allocated for the list. Valid sizes are, for instance, from the marginal structure size to a maximum of 2.sup.44 -4k bytes in integral multiples of the coupling facility storage increment.

(r) Minimum Apportionable Storage Size (MASS): A value that specifies the minimum number of units of coupling facility storage that can be allocated for the list, in integral multiples of the coupling facility storage increment, that are sufficient for creating the requested lock-table entries, lists, associated controls, enough even-monitor controls and list entries with their associated controls to substantially satisfy the target monitor-to-entry storage ratio, and enough entries and elements to substantially satisfy the target entry-to-element ratio.

(s) Monitor-Reapportionment-in-Progress Indicator (MREIPI): A value that indicates whether a monitor-to-entry-storage-reapportionment process is currently active for the list structure. When the value is one, the list structure monitor-to-entry storage ratio is being reapportioned. When the value is zero, the list structure monitor-to-entry storage ratio is not being reapportioned.

(t) Nonzero-Lock-Table-Entry Count (NLTEC): A value that specifies the number of nonzero lock-table entries that exist in the structure.

(u) Pending Entry-to-Element Ratio (PETELR): A field that contains the last requested target entry-to-element ratio to an allocate-list-structure command. The PETELR object is updated when the list structure is initially allocated and when a reapportionment process is initiated.

(v) Pending Monitor-to-Entry Storage Ratio (PMTESR): A field that contains the last requested target monitor-to-entry storage ratio on an allocate-list-structure command. The PMTESR object is updated when the list structure has been initially allocated and a monitor-to-entry-storage-reapportionment process is requested.

(w) Reapportionment-in-Progress Indicator (REIPI): A value that indicates whether a reapportionment process is currently active for the list structure. When the value is one, the list is being reapportioned. When the value is zero, no reapportionment is active.

(x) Structure Authority (SAU): A value associated with each bit in the SID vector.

(y) Structure-Copy Control (SCC): A field maintained by a collection of systems during a structure-copy process. The structure-copy control is initialized to zero when the list structure is created. One example of the structure copy control is described above.

(z) Structure-Copy-Control Version Number (SCCVN): A field which is used to serialize updates to the SCC. The structure-copy-control version number is initialized to zero when the list structure is created.

(aa) Structure Size (SS): A value that specifies the number of, for instance, 4k-byte units allocated. Valid sizes are, for instance, from the coupling facility storage increment to a maximum of 2.sup.44 -4k bytes in integral multiples of the coupling facility storage increment.

(bb) Structure-Size Change Indicator (SSCI): A value that indicates whether an expansion or contraction process is currently active for the list structure. When the value is one, the list structure is being expanded or contracted. When the value is zero, no expansion or contraction is active.

(cc) Target Maximum-Element Count (TMELC): A value that specifies the target for the maximum number of list elements that are available for assignment to list entries or retry-data blocks, or both, in the list set.

(dd) Target Maximum-Entry Count (TMEC): A value that specifies the target for the maximum number of possible list entries in a list set.

(ee) Target Maximum-Event-Monitor Count (TMEMC): A value that specifies the target for the maximum number of event-monitor-controls objects that are available for registration of interest in subsidiary lists within the list set. Valid counts are, for instance, from0 to 2.sup.32 -1 in integral multiples of the number of event-monitor controls that can be supported within the coupling facility storage-increment size.

(ff) Target Structure Size (TSS): A value that specifies that target number of, for instance, 4k-byte units to be allocated. Valid sizes are, for instance, from the coupling facility storage increment to a maximum of 2.sup.44 -4k bytes in integral multiples of the coupling facility storage increment.

(gg) User-Identifier Vector (UIDV): A bit string with an initial value of zero. The bit positions start at zero and increase sequentially to the user-identifier limit. The bit at position (i) in the string is set to one when a user is assigned with a UID value of (i). The bit at position (i) is reset to zero when a user is unassigned.

(hh) User Structure Control (USC): A field per structure defined by the user.

Referring back to FIG.9, in addition to list structure controls 902, list structure 900 also includes user controls 904. In one example, user controls 904 include the following (FIG. 11):

(a) User State (US): A field that specifies the state of the user. When the value of the user state is one, the user is active (attached). When the value of the user state is zero, the user is inactive (detached). When the user is detached, the user is in a failed-persistent state.

(b) List-Notification Token (LNT): A value that specifies a list-notification vector to the system.

(c) User Authority (UAU): A value that is compared and conditionally updated.

(d) System Identifier (SYID): A value specified by the program when a message path is activated. The system identifier is maintained in the message-path status vector and copied into the user controls when an attach-list-structure-user command is communicated over the message path.

(e) User-Attachment Control (UAC): A field per attached user defined by the user.

Referring once again to FIG. 9, list structure 900 may include lock table 906. Lock table 906 includes a sequence of one or more lock table entries 910 identified by a lock table entry number (LTEN). In one embodiment, lock table entry 910 includes a lock table entry number, which starts at zero and runs consecutively; and a lock table entry value (LTEV), including a global lock manager (GLM) object and optionally, a local lock manager (LLM) object or both. The lock table entry format is determined by the list structure type located within list structure controls 902.

List structure 900 may also include list set 908. In one example, list set 908 includes one or more lists 912 represented by list controls 914, which are numbered consecutively, starting at zero. In one embodiment, list controls 914 include the following (FIG. 12):

(a) Assignment Key (AK): A value that specifies the value assigned to a list-entry key when a key-assignment operation is executed for a list entry that is moved or created on the list. The AK is initialized to zeros.

(b) Assignment Key Threshold (AKT): A value that specifies the maximum value of an assignment key. The AKT is initialized to zeros.

(c) Cursor Direction (CDIR): A value that indicates how the list cursor is updated when the list cursor is maintained or initialized by a write-list-controls command. It has the following encoding: 0 Left to right; and 1 Right to left. The CDIR is initialized to zero.

(d) List Authority (LAU): A value that is compared and conditionally updated. The LAU is initialized to zeros.

(e) List Cursor (LCUR): A list-entry identifier that identifies a list-cursor position. The LCUR is initialized to zeros.

(f) List-Element Count (LELC): A value that specifies the number of list elements currently in the list.

(g) List-Element-Count Limit (LELCL): A value that specifies the maximum number of possible list elements in a list. This object is initialized to the maximum list-set-element count when a list structure is created.

(h) List-Entry Count (LEC): A value that specifies the number of list entries currently in the list.

(i) List-Entry-Count Limit (LECL): A value that specifies the maximum number of possible list entries in a list. This object is initialized to the maximum list-set-entry count when a list structure is created.

(j) List-Monitor Table: A table that includes information used to process the list-notification vector of each user who has registered interest in the state transitions of the list.

The list-monitor table is a sequence of objects, called list-monitor-table entries. The number of list-monitor-table entries is determined when the table is created and is equal to, for instance, the maximum number of list structure users plus one. The list-monitor-table entries are numbered from zero to the user-identifier limit.

Each list-monitor-table entry includes, for example, a list-monitoring-active-bit object (LMAB), a list-notification-request-type (LNRT) object and a list-notification-entry-number (LNEN) object.

(k) List-Set-Scan controls: These controls include, for example, the following:

(1) List-Set-Scan Identifier (LSSID): A value that determines the current state of the list-set-scan controls and, additionally, identifies the owner of the list when a list-set-scan is in progress. When zero, the list-set-scan controls for the list are in the available state. When nonzero, the list-set-scan controls are in the claimed state. The initial state of the list-set-scan controls is the available state.

(2) List-Set-Scan State (LSSST): A value that, in conjunction with the list-set-scan identifier, determines the current state of the list-set scan. When the list-set-scan controls are claimed and the list-set-scan state is zero, the list-set scan is in the in-progress state. When the list-set-scan controls are claimed and the list-set-scan state is one, the list-set-scan is in the completed state. When the list-set-scan controls are available, the list-set-scan-state object is zero.

(l) List-State-Transition Count (LSTC): A value that specifies the number of empty to not-empty list-state transitions that have occurred.

(m) User List Control (UCL): A field per list defined by the user.

Returning to FIG. 9, each list 912 of list set 908 includes a sequence of zero or more entries. The list structure type determines whether the list entries have a data list entry 916, an adjunct list entry 918, or both. Associated with each entry of a list is list entry controls 920. Controls 920 include list entry location information and other information for controlling operations against data list entry 916. One example of list entry controls 920 is described with reference to FIG. 13:

(a) Adjunct-Format Control (AFC): A bit string including, for instance, 8 consecutive adjunct format bits. Each bit is associated with a particular adjunct format. The adjunct format control bits are as follows, in one example: Bits 0-6 Invalid; and bit 7 Adjunct-lock-entry-indicator (ALEI). The bits are mutually exclusive; at most one bit is set to binary 1. When all the bits are zero, the adjunct is unformated and contains the adjunct-data-list entry.

The adjunct-lock-entry indicator (ALEI) is a value that specifies whether the adjunct list entry of a named entry is an adjunct-data entry or adjunct-lock entry. When a list entry is created by a lock-request process, the indicator is initialized to one; otherwise, it is initialized to zero.

(b) Data-List-Entry Size (DLES): A value that specifies the size of the data list entry as an integral multiple of the list-element size. Valid sizes are, for instance, from 0 to the maximum data-list-entry size.

(c) List-Entry Identifier (LEID): A value that designates the list entry. The LEID is written into the LEID object when the entry is created.

For LEIDs when the program-list-entry-identifier indicator is zero, a non-zero list-entry identifier that is unique to a list set for at least 100 years is assigned by the coupling facility.

For LEIDs when the program-list-entry-identifier indicator is one, the LEID value in the MCB is written into the LEID object for the list entry. The LEID value is checked to ensure that it is unique in the structure. There is no requirement for the LEID value to be unique for any specific length of time and may be reused once the entry which has that LEID assigned to it is deleted.

For LEIDs when the program-list-entry-identifier indicator is one, the LEID value may be any value except zero, which is invalid.

(d) List-Entry Key (LEK): A value that partially designates the position of the list entry in the list.

(e) List-Entry Name (LEN): A value that fully designates the position of the list entry in the list set. A list-entry name is unique to a list set at any particular instant and is provided by the program. List-entries are named when a name indicator of binary 1 is specified on allocation.

(f) List Number (LN): A value which designates the list that the list entry is in. Valid numbers are, for instance, from zero to the list count less one.

(g) Version Number (VN): A value that is conditionally compared and conditionally updated. The version number is initialized to zero when a list entry is created.

Referring once again to FIG. 9, list set 908 also includes event monitor controls (922). There is an event-monitor controls object for each user and subsidiary list combination for which a user has currently registered interest. In one example, event monitor controls 922 include the following (FIG. 14):

(a) Event-Monitor-Queued Indicator (EMQI): A value that indicates whether the event-monitor-controls object is queued to the event queue associated with the user id contained within the object. It has the following encoding: 0 The event-monitor-controls object is not queued to the associated event queue; and 1 The event-monitor-controls object is queued to the associated event queue.

(b) List-Entry Key (LEK): A value which partially designates the primary subsidiary list.

(c) List Number (LN): A value which partially designates the subsidiary list. Valid numbers are, for instance, from zero to the list count less one.

(d) User Identifier (UID): A value that identifies the user. Valid user identifiers are, for instance, from one to the UIDL.

(e) User Notification Control (UNC): A field per event-monitor controls defined by the user.

Referring to FIG. 9, there is also a set of event queue controls 924 within the list set. There is at least one event queue per user (UID). Event monitor controls objects associated with a particular user and subsidiary list may be queued to, or withdrawn from, that user's event queue, in response to empty/non-empty state changes that occur for the subsidiary list with which the event monitor controls object is associated.

As depicted in FIG. 15, each event queue 1500 includes a sequence of zero or more event monitor controls objects 1502. There is at least one event queue for each user (UID). Associated with each event queue are event queue controls. One example of such controls is described with reference to FIG. 16:

(a) Event-Monitor-Controls-Queued Count (EMCQC): A value that specifies the number of event-monitor controls currently queued to the event queue.

(b) Event-Notification-Entry Number (ENEN): A value that specifies a list-notification-vector entry associated with an event queue.

(c) Event-Notification-Request Type (ENRT): A value that indicates whether the list-notification-vector summaries are to be updated when an empty to not-empty state transition occurs on an event queue. The bit has, for instance, the following encoding: 0 Do not update the list-notification-vector summaries; and 1 Update the list-notification-vector summaries.

(d) Event-Queue-Monitoring-Active Bit (EQMAB): A value that specifies whether the user associated with the event queue is monitoring the event queue. The bit has, for instance, the following encoding: 0 Not monitoring the event queue; and 1 Monitoring the event queue.

(e) Event-Queue-Transition Count (EQTC): A value that specifies the number of empty to not-empty event-queue transitions that have occurred.

In one embodiment, messages are communicated between CPC 102 and coupling facility 106 via a message command/response block. In one example, the message command/response block includes a plurality of operands. An operand may be a request operand, a response operand or both, depending upon the command. A number of request/response operands are depicted in FIGS. 17a-17d. In particular, cache operands are depicted in FIGS. 17a-17b; and list operands are depicted in FIGS. 17c-17d. (Other or differing operands may exist that are not depicted in the figures.)

Initially, examples of the cache operands are described (FIGS. 17a-17b):

(a) Adjunct Area (AA): A field associated with a data block.

(b) Allocation Type (AT): A value that indicates what action an allocate command should take. In one example, the first bit is a directed expand, contract, reapportion (ECR) indicator (DECRI), the second bit is the ratio indicator (RI), the third bit is the structure-size indicator (SSI), and the fourth bit is the user-structure-control indicator (USCI).

(c) Apportionment Priority Indicator (API): A value that directs the resolution of conflicts in the establishment of an accurate ratio in an expansion or contraction process or when the cache is initially allocated. A value of 1 indicates that maintaining an accurate ratio is of higher priority than maximizing the amount of storage resources that are assigned to the structure. A value of 0 indicates that maximizing storage resources is of higher priority and a less accurate ratio will be tolerated.

(d) Assignment Control (AC): The assignment control is value that controls the name-assignment process. The two possible values are: 0 Suppress assignment; and 1 Assign when required.

(e) Attachment Override Control (AOC): A value that controls the testing of the attachment status for the Write-and-Register and Register-Name-List commands. When the assignment-override control is one and the LCID is assigned, then LCEN-registration or the write operation are performed regardless of the attachment status of the local cache. When (1) the attachment-override control is zero, (2) the LCID is assigned but the local cache is not attached, and (3) the command is Register Name List and the LCID-location bit is one, no processing is performed. When (1) the attachment-override control is zero, (2) the local cache is not attached, and (3) the command is Write and Register or Register Name List and the LCID-location bit is zero, the command is completed with a request exception. The LCID is invalid. The attachment override control is ignored on a Write-and-Register command unless the castout-lock control is one.

(f) Attachment-Request Type (ART): A value that selects the target local-cache state. The bit has the following encoding: 00 Assign the LCID if not already assigned and place local cache in the attached state; 01 Assign the LCID and place local cache in the detachment-pending state; 10 Assign the LCID and leave local cache in the detached state; and 11 Invalid.

(g) Bounded Counts Priority Indicator (BCPI): A value that constrains the setting of the target-count objects when a cache structure is created and the target structure size is zero, or initial allocation is complete and directed ECR is requested. A value of binary `1` indicates that the target count objects are not to exceed the values of the target count request operands, but should be the largest counts possible given this constraint. A value of binary `0` indicates that setting of the target count objects is not constrained to be less than or equal to the target count request operands. This operand is ignored unless (1) a cache structure is being created and the target structure size and target counts priority indicator are both zero, or (2) the directed ECR indicator is binary "1".

(h) Browser Identifier (BID): A value that identifies a browser and is used as an index value or references to the browse register.

(i) Browser Active Bits (BAB): A bit string indicating the active state for the browser represented by the row in the browse register.

(j) Command Code (CC): A value that identifies the command.

(k) Complement-Copy-Invalidation Control (CCIC): A value that indicates that the complement copy invalidation is performed when the data is written unchanged to the coupling facility. This bit is only meaningful when the change control (CHGC) bit is zero.

(l) Castout-Class Request Type (CCRT): A value that indicates the type of read-castout-class request. It has the following encoding: 0 Read NB list; and 1 Read DEIB list.

(m) Castout-Class Scan Identifier (CCSID): A value that is used to claim ownership of a set of castout-class-scan controls.

(n) Castout-Class-Scan Restart Token (CCSRT): A value that controls the processing of a castout-class-Scan operation that spans multiple commands.

(o) CCSC Update Type (CCSCUT): A value that indicates how the castout-class scan controls are to be modified. The bit has the following encoding: 111 claim next available CCL-scan controls; 001 Complete castout-class scan, 010 Reset matching in-progress CCL-scan controls; 011 Reset all in-progress castout-class-scan controls; 100 Invalid; 101 Invalid; 110 Reset matching CCL-scan controls; and 111 Reset all castout-class-scan controls.

(p) Castout Class (CCL): A value which identifies the castout class assigned for the name.

(q) Castout-Lock Control (COLC): A value that indicates that the data being written is also being castout and castout lock serialization is required.

(r) Castout-Parity Bits Indicator (CP): A field which indicates the current assignment of the castout parity. Three possible values are: castout parity is zero; castout parity is one; the castout parity is unknown.

(s) Castout-Process Identifier (CPID) A value that identifies the local castout process.

(t) Change-Bit Overindication (CBO): A value that controls the setting of the change bit in the directory entry when the castout lock is set or reset. When the value is zero, the change bit is not updated. When the value is one, and the state of the castout lock is read for castout the change bit is set to one. When the state of the castout lock is write with castout a value of one is invalid.

(u) Change Control (CHGC): A value that selects which process is used for writing the data. The two possible values are: 0 Write data unchanged and 1 Write data changed.

(v) Comparative Structure Authority (CSAU): A value used as a comparison value to the structure authority when the structure is allocated and deallocated.

(w) Comparative Version Number (CVN): A value that is compared to the version-number object. This request operand is ignored unless the version-request type specifies version-number comparison.

(x) Data-Block Size (DBS): A value that specifies the size of the data block as an integral multiple of 4096-byte units.

(y) Data-Toleration Factor (DTF): A value that, when divided by 100, specifies the minimum number of data-area-elements that are free or unchanged after any checkpoint of a contraction, expansion or reapportionment process as a percentage of the total number of changed data-area elements.

(z) Directory-Toleration Factor (DITF): A value that, when divided by 100, specifies the minimum number of directory entries that are free or unchanged after any checkpoint of a contraction, expansion, or reapportionment process as a percentage of the total number of changed directory values.

(aa) Ending Registration Index (EXR): A value that indexes to the last registration block in the data block for the Register-Name-List command.

(bb) Halt Register Name List (HRNL): A value that controls if an LCEN is not registered and skipped or the registration process is halted. When the AOC bit is one and the HRNL bit is zero, the registration block is skipped and processing continues if a registration block specifies an LCID that is not assigned. When the AOC bit is one and the HRNL bit is one, processing is halted when a registration block that specifies an LCID that is not assigned is processed. When the AOC bit is zero and the HRNL bit is zero, the registration block is skipped and processing continues if a registration block specifies an LCID that is not attached. When the AOC bit is zero and the HRNL bit is one, processing is halted when a registration block specifies and LCID that is not attached. This operation is ignored when the LCIDLC bit is zero.

(cc) Invalidate Without Reclaim Control (IWORC); A is value that controls the reclaim process for registering local-cache entries. When zero, directory entries are reclaimed as required for either name assignment or registration-block assignment. When one, directory-entry reclaim is suppressed for both name assignment and registration-block assignment. If no free directory entries are available and the IWORC is one, the local cache entry is invalidated.

(dd) LCID-Unassignment Control (LUC): A value that controls the unassignment of the local-cache identifier. When the value is binary 1, the local-cache identifier is unassigned, and the local cache controls are reset. The LCID value is available for assignment. When the value is binary 0, the LCID vector and the local-cache controls attachment status are not updated.

(ee) Local-Cache Authority (LCAU); A value set by the program when the local cache is attached.

(ff) Local-Cache Identifier (LCID): A value that identifies a local cache. Valid LCIDs are from one to the LCIDLMT when a user is attached or detached.

(gg) Local-Cache-Identifier Location (LCIDLC): A value that designates the local-cache identifier to be used by the Register-Name-List command. When zero, the LCID in the MCB is used. When one, the respective LCID in the registration block is used for each registration operation.

(hh) LCR Read Type (LCRRT): A value that identifies the queue-type for a Read-Local-Cache-Registers command. It has the following encoding: 00 Read LCRs in a castout class; 01 Read LCRs in the WWCO queue; 10 Browse LCRs in a storage class; and 11 Read LCRs in a storage-class range.

(ii) LCR Restart Token (LCRRTK): A value that controls the processing of an LCR read operation against either a castout class, a storage class, or the WWCO queue that spans multiple commands.

(jj) Name Mask (NM): A value that determines the bytes used for name comparison.

(kk) Name-Replacement Control (NRC): A value that controls the name-replacement process. In the Read-For-Castout command, the name-replacement control is only meaningful when the local-cache-entry-registration control is set to one. 0 Suppress replacement; and 1 Replace name.

(ll) Replacement Name (RN): A 16-byte value that identifies a data block being replaced in a local cache.

(mm) Structure Identifier (SID): A value that identifies a structure.

(nn) Suppress Read (SR): A value that indicates if the read function of the Read-and-Register command is suppressed. A one indicates that the read is suppressed, a zero indicates the read occurs.

(oo) Suppress Registration (SREG): A value that controls the LCEN-registration process for the Write-and-Register and Read-and-Register commands. 0 Register the LCEN; and 1 Suppress LCEN registration.

(pp) Starting Registration Index (SRX): A two-byte value that indexes to the first registration block in the data block for the Register-Name-List command. Valid indices are from 1 to the ending registration index.

(qq) Storage Class (STC): A value that identifies a storage class. The specified value must be within the range of defined storage classes.

(rr) Target-Count Priority Indicator (TCPI): A value that directs the setting for the target-count objects when a cache structure is created and the target structure size is zero. A value of binary `1` indicates that the target count objects are to be set to the values of the target count request operands. If these counts are not achievable, the structure is not created. A value of binary `0` indicates that initial allocation should proceed even though the target counts are not achievable, but the counts should be the targets counts possible. This operand is ignored unless a cache structure is being created and the target structure size is zero.

(ss) Target Directory-to-Data Ratio (TDTDR): A field consisting of two values that specify the target for the relative number of directory entries to data-area elements possible in the cache. The first value contains the first number and the second value contains the second number. The first number divided by the sum of the two numbers represents the fraction of the total count of directory entries and data-area elements that consists of directory entries. The second number divided by the sum of the two numbers represents the fraction of the total count of directory entries and data-area elements that consist of data-area elements. The first number is to nonzero. The second number divided by the first number is not to exceed the maximum data-area size. When the second number is zero and the cache structure is being created, no data-area elements are created, and the cache structure is said to be a directory-only cache.

(tt) Target Directory-Entry Count (TGDEC): A value that specifies the target for the maximum number of possible directory entries in a cache structure. Valid counts are, for instance, from 0 to 2.sup.32 -1. When the cache is not a directory-only cache, the value of the target data-area-element count divided by the value of the target directory-entry count is not to exceed the maximum data-area size. This operand is ignored unless one of the following conditions occurs:

1. A cache structure is created and the target structure size is zero;

2. Allocation parameters are being computed and the target structure size is zero.

(uu) Target Data-Area-Element Count (TGDAEC): A value that specifies the target for the maximum number of data-area elements that are available for assignment to directory entries in a cache structure. Valid counts are from 0 to 2.sup.32 -1. When the cache is a directory-only cache, the target data-area-element count is to be zero. When the cache is not a directory-only ache, the value of the target data-area-element count divided by the value for the target directory-entry count is not to exceed the maximum data-area size. This operand is ignored unless one of the following conditions occurs:

A cache structure is created and the target structure size is zero;

Allocation parameters are being computed and the target structure size is zero.

(vv) Target-Ratio Validity Indicator (TRVI): A value that, when one, indicates that the value of the target-directory-to-data-ratio request operand should be placed in the pending-directory-to-data ratio object. When the value is zero, the TDTDR request operand is ignored. This operand is ignored unless a structure is being created and the target structure size is zero.

(ww) Target Structure Size (TSS): A value that specifies the target number of units to be allocated. Valid sizes are, for instance, from the coupling facility storage increment to a maximum of 2.sup.44 -4k bytes in integral multiples of the coupling facility increment.

(xx) User Data Field (UDF): The user data field contains a value that is associated with the data when it is initially changed in the coupling facility cache and is maintained until the data area is re-used. The user data field is valid when the data is cached as changed. The user data field contains a time value or timestamp, which represents the oldest point in time when the data element is changed and that change has not yet been migrated to DASD.

(yy) UDF Order Queue Indicator (UDFOQI): A value that indicates the presence or absence of UDF-order queues in the castout classes. The two possible values are: 0 UDF-order queues are not present; and 1 UDF-order queues are maintained. When the indicator has a value of one, a UDF-order queue is associated with each castout class.

(zz) Version Number (VN): An integer value. This request operand is ignored unless the version-request type specifies replace the directory-entry version number.

(l) Version Comparison Request Type (VCRT): A value that indicates how the version number comparison is performed when the first bit of the version request type is binary "1". It has the following encoding: 0 Compare version-number object as equal to the CVN operand; 1 Compare version-number object as less than or equal to the CVN operand. This request operand is ignored unless the first bit of the version request type is binary "1".

(2) Version-Request Type (VRT): A value that indicates the type of version-number request. The first bit has the following encoding: 0 No action; and 1 Compare version numbers. The second and third bits have the following encoding: 00 No action; 01 decrement the version number; 10 Increment the version number; and 11 Replace the version number. The first bit acts as a validity bit for the comparative-version-number request operand. On a name-assignment operation, the first bit is ignored. The second and third bits are ignored when an invalidate-name or invalidate-name-list command is executed.

Referring to FIGS. 17c-17d, one embodiment of the list operands is described, as follows:

(a) Adjunct List Entry (ALE): A value that is read from or written to an adjunct list entry. This request operand is ignored unless the list structure has adjunct list entries and (1) a create operation is requested or (2) the list entry type specifies an adjunct list entry and a replace operation is requested.

(b) Allocation Type (AT): A value that indicates what action an allocate command should take. The first bit is the directed ECR indicator (DECRI), the next two bits are the ratio indicators (RI), the fourth bit is the structure-size indicator (SSI), and the fifth bit is the user-structure-control indicator (USCI).

(c) Attachment Override Control (AOC): A value that controls the testing of the attachment status for the register event monitors and register list monitor commands. When the attachment override control is one and the UID is assigned, the register event monitor operation or the register list monitor operation, or the register event queue monitor operation is performed regardless of the attachment status of the user. When the attachment override control is zero and the user is not attached, the command is completed with a request exception and the UID is invalid, except for the Register Event Monitors command which may respond differently based on the UID location bit and the halt register events monitors bits.

(d) Apportionment Priority Indicator (API): A value that directs the resolution of conflicts in the establishment of an accurate ratio in an expansion or contraction process or when the list is initially allocated. A value of binary `1` indicates that maintaining an accurate ratio is of higher priority than maximizing the amount of storage resources that are assigned to the structure. A value of binary `0` indicates that maximizing storage resources if of higher priority and a less accurate ratio will be tolerated.

(e) Assignment Key Increment (AKI): A value that is added to the value of the assignment key when the assignment key is updated. This request operand is ignored unless the list entries are keyed, the assignment key request type is not zero, and the assignment key update type is binary `1`.

(f) Assignment Key Request Type (AKRT): A value that indicates when the list entry key is set to the value of the assignment key in the list controls. It has the following encoding: 00 List entry key not assigned; 01 List entry key assigned on move; 10 List entry key assigned on create; and 11 List entry key assigned on create or move. This request operand is ignored unless the list entries are keyed.

(g) Assignment Key Update Type (AKUT): A value that indicates how the assignment key is updated. It has the following encoding: 0 Assignment key not updated; and 1 Increment assignment key. This request operand is ignored unless the list entries are keyed and the assignment key request type (AKRT) is not zero.

(h) Attachment Request Type (ART): A value that indicates whether the user is to be placed in the attached state when the user identifier is assigned. The bit has the following encoding: 0 Attach the user; and 1 Leave the user detached.

(i) Bounded Counts Priority Indicator (BCPI): A value that constrains the setting of the target count objects when a list structure is created and the target structure size is zero, or initial allocation is complete and directed ECR is requested. A value of binary "1" indicates that the target count objects are not to exceed the values of the target count request operands, but should be the largest counts possible given this constraint. A value of binary "0" indicates that setting of the target count objects is not constrained to be less than or equal to the target count request operands. This operand is ignored unless (1) a list structure is being created and the target structure size and target-counts-priority indicator are both zero, or (2) the directed ECR indicator is binary "1".

(j) Comparative Global-Lock Manager (CGLM): A value that is compared to the global lock manager object. This request operand is ignored unless the lock request type is valid and specifies a comparison of the global lock managers.

(k) Comparative List Authority (CLAU): A value that is compared to the list-authority object.

(l) Comparative Structure Authority (CSAU): A value that is compared to the structure authority object.

(m) Comparative User Authority (CUAU): A value that is compared to the user authority object.

(n) Comparative Version Number (CVN): A value that is compared to the version-number object. This request operand is ignored unless the version-request type specifies version-number comparison.

(o) Cursor Direction (CDIR): A value that indicates how the list cursor is updated when the list cursor is maintained or initialized by a write list controls command. It has the following encoding: 0 Left to right; and 1 Right to left.

(p) Data List Entry Size (DLES): A value that specifies the size of the data list entry as an integral multiple of the list-element size. Valid sizes are, for instance, from 0 to the maximum data-list-entry size.

(q) Direction (DIR): A value that indicates how the positions of the list entries are numbered relative to a designated position. It has the following encoding: 0 Left to right; and 1 Right to left.

(r) Element Toleration Factor (ELTF): A value that, when divided by 100, specifies the minimum number of data list elements that may still be assigned to list entries or retry-data blocks, or both, after any checkpoint of a contraction, expansion, entry to element reapportionment or monitor to entry storage reapportionment process as a percentage of the total number of existing data list elements. Valid values are, for instance, from zero to 100. A value of zero implies that toleration is not requested. The operand is ignored if the lock indicator in the list structure type object is one and both data indicator and adjunct indicator are zeros, or if no contraction, expansion, entry to element reapportionment, or monitor to entry storage reapportionment process is requested.

(s) Ending Event Index (ETX): A value that indexes to the last event in the data block for the Register Event Monitors command. Valid indices are, for instance, from the STX to a maximum such that 64.times.ETX is less than or equal to 64K.

(t) Ending List Number (ELN): A value that specifies the ending-list number for the Read Event Monitor Controls List command. The ELN is invalid if it is greater than or equal to the list count, or less than the starting list number.

(u) Entry Locator Type (ELT): A value that indicates how a list entry is located for a read, replace or delete operation, or as the source of a move operation.

(v) Entry Toleration Factor (ETF): A value that, when divided by 100, specifies the minimum number of list entries that may still be created after any checkpoint of a contraction, expansion, entry to element reapportionment or monitor to entry storage reapportionment process as a percentage of the total number of existing list entries. Valid values are, for instance, from zero to 100. A value of zero implies that toleration is not requested. The operand is ignored if the lock indicator in the list structure type object is one and both data indicator and adjunct indicator are zeros, or if no contraction, expansion, entry to element reapportionment, or monitor to entry storage reapportionment process is requested.

(w) Event Monitor Queue Indicator Control (EMQIC): A value that controls EMC enqueueing or withdrawal. The EMQIC bit is ignored if the INRT bit is zero. If the EMQIC bit is one and the INRT bit is one, the EMC is queued, not queued, withdrawn, or not withdrawn based on the EMQI bit. If the EMQIC bit is zero and the INRT bit is one, the EMC is queued, not queued, withdrawn, or not withdrawn based on the state of the sublist.

(x) Event Monitor Toleration Factor (EMTF): An integer that, when divided by 100, specifies the minimum number of event monitor controls that may still be created after any checkpoint of a contraction, expansion, entry to element reapportionment, or monitor to entry storage reapportionment process as a percentage of the total number of existing event monitor controls. Valid values are, for instance from zero to 100. A value of zero implies that toleration is not requested. The operand is ignored if the key indicator in the list structure type object is zero, or if no contraction, expansion, entry to element reapportionment, or monitor to entry storage reapportionment process is requested.

(y) Event Notification Entry Number (ENEN): A value that specifies a list-notification-vector entry associated with an event queue.

(z) Event Notification Request Type (ENRT): A value that indicates whether the list-notification-vector summaries are to be updated when an empty to not-empty state transition occurs on a monitored event queue. The bit has the following encoding: 0 Do not update the list notification vector summaries; and 1 Update the list notification vector summaries.

(aa) EMC Processed Count (EPC): A value that indicates the number of EMCs processed by the Read Event Monitor Controls List command and placed in the data block.

(bb) EMC Restart Token (ERT): A value that determines at which EMC the read event monitor control list command restarts reading. Invalid values for the EMC restart token are model-dependent.

(cc) Event Queue Monitoring Active Bit (EQMAB): A value that specifies whether the user associated with the event queue is monitoring the event queue. The bit has the following encoding: 0 Not Monitoring the event queue; and 1 Monitoring the event queue.

(dd) Halt Register Event Monitors (HREMS): A value that controls if an EMC is not registered and skipped or the registration process is halted. When the AOC bit is one and the HREMS bit is zero, the EMC is skipped and processing continues if an EMC specifies a UID that is not assigned. When the AOC bit is one and the HREMS bit is one, processing is halted when an EMC that specifies a UID that is not assigned is processed. When the AOC bit is zero and the HREMS bit is zero, the EMC is skipped and processing continues if an EMC specifies a UID that is not attached. When the AOC bit is zero and the HREMS bit is one, processing is halted when an EMC that specifies a UID that is not attached is processed.

(ee) Initial Notification Request Type (INRT): A value that indicates whether to notify a monitor of the initial state of the monitored object except that when the request-monitor type specifies an event monitor and the EMQIC bit is one, the initial state of the monitored object is ignored and the EMQI bit in the REMS registration block is used. When the monitor request type specifies a list monitor, the initial notification request type has the following encoding: 0 No action; and 1 Notify the list monitor.

When the monitor request type specifies an event queue monitor, the initial notification request type has the following encoding: 0 No action; and 1 Notify the event queue monitor.

When the monitor request type specifies an event monitor, the initial notification request type has the following encoding: 0 No action; and 1 Queue or withdraw the event monitor controls object.

(ff) Key Request Type (KRT): A value that indicates how a keyed list entry is located when an entry is replaced, moved, read or deleted. For the Read list command, when the key comparison type operand is one, the key request type operand also specifies how keys are compared.

(gg) List Authority Comparison Type (LAUCT): A value that indicates the procedure for comparing the list authority. It has the following encoding:

           00         Do not compare list authorities
           01         Compare list authority object and CLAU
                      operand for being equal
           10         Compare list authority object for
                      being less than or equal to the CLAU
                      operand
           11         Invalid


This request operand is ignored unless the entry is located by keyed or unkeyed position, by list cursor, or list number comparison is requested.

(hh) List Authority Replacement Type (LAURT): A value that indicates the procedure for updating the list authority. It has the following encoding: 0 Do not replace the list authority; and 1 Replace the list authority object with the LAU operand. This request operand is ignored unless the entry is located by keyed or unkeyed position, by list cursor, or list number comparison is requested.

(ii) List Count (LC): A value that specifies the number of lists to be allocated. Valid counts are, for instance, from 1 to the list number limit.

(jj) List Cursor (LCUR): A list-entry identifier that identifies a list-cursor position. The LCUR is initialized to zeros.

(kk) List Cursor Request Type (LCURT): The operand has the following encoding: 0 Do not update the list cursor; and 1 Update the list cursor.

(ll) List Cursor Update Type (LCUT): A value that indicates how a list cursor is updated when list cursor update is requested.

(mm) List Element Characteristic (LELX): A value that specifies the number of bytes in each list element. Valid sizes are, for instance, from 256 bytes to the maximum list element size in powers of 2.

(nn) List Entry Type (LET): A value that indicates which list entries are read or replaced upon normal completion of the command execution. The first bit is a data indicator (DI), and the second is an adjunct indicator (AI).
             00          List entry not read or written
             01          Adjunct list entry read or written
             10          Data list entry read or written
             11          Data list entry and adjunct list entry
                         read or written


The first bit of the list entry type is ignored when data list entries are not allocated. The second bit of the list entry type is ignored when adjunct list entries are not allocated. When a list entry is created, the list entry type operand is ignored. Instead, the data an adjunct indicators from the list structure type object are used.

(oo) List Monitoring Active Bit (LMAB): A value that specifies whether the user associated with the list-monitor-table entry is monitoring the list. The bit has the following encoding: 0 Not monitoring the list; and 1 Monitoring the list.

(pp) List Number Comparison Type (LNCT): A value that indicates whether list number comparison is requested. The operand has the following encoding: 0 Do not compare the list numbers; and 1 Compare the list numbers.

(qq) List Notification Request Type (LNRT): A value that indicates whether the list notification vector summaries are to be updated when an empty to not empty state transition occurs on a monitored list. The bit has the following encoding: 0 Do not update the list notification vector summaries; and 1 Update the list notification vector summaries.

(rr) List Number (LN): A value which partially designayes a list in a list set. Valid numbers are, for instance, from zero to the list count

(ss) Local Lock Bit (LLB): A value that is written to a local lock manager. This request operand is ignored unless a lock table is allocated and a manager is compared or replaced.

(tt) Lock Request Type (LRT): A value that indicates the type of lock request.

When a single list entry command is issued, it has the following encoding:
           000         No lock process requested
           001         Invalid
           010         Invalid
           011         Invalid
           100         Compare the global lock managers
           101         Replace the global lock managers
           110         Replace the local lock manager
           111         Replace the global lock and local lock
                       managers.


When a write lock table entry command is issued, it has the following encoding:
           000         Invalid
           001         Invalid
           010         Invalid
           011         Invalid
           100         Invalid
           101         Replace the global lock manager
           110         Replace a local lock manager
           111         Replace the global lock and local lock
                       manager


When a read next lock table entry or multiple list entry command is issued, it has the following encoding:
            000          No lock manager comparison
            001          Invalid
            010          Compare the local lock managers
            011          Compare the global lock or local lock
                         managers
            100          Compare the global lock managers
            101          Invalid
            110          Invalid
            111          Invalid


When a cleanup lock table entries command is issued, it has the following encoding:
            000          Invalid
            001          Invalid
            010          Cleanup the local lock managers
            011          Cleanup the global lock and/or local
                         lock managers
            100          Cleanup the global lock manager
            101          Invalid
            110          Invalid
            111          Invalid


(uu) List Set Scan Identifier (LSSID): A value that is used to claim ownership of a set of list set scan controls. Zero is an invalid value.

(vv) List Scan Restart Token (LSSRT): A value that controls the processing of a list set scan operation that spans multiple commands.

(ww) LSSC Update Type (LSSCUT): A value that indicates how the list set scan controls are to be modified. The bit has the following
            000          Claim next available list set scan
                         controls
            001          Complete list set scan for the list
            010          Reset matching in progress list set
                         can controls
            011          Reset all in progress list set scan
                         controls
            100          Invalid
            101          Invalid
            110          Reset matching list set scan controls
            111          Reset all list set scan controls.


(xx) List Structure Type (LST): A value that indicates the list objects created on allocation. For example, the first bit is a element indicator (ECI), the second bit is a lockindicator (LI), the third bit is bit is a data indicator (DI), the fourth bit is an adjunct indicator (AI), the fifth bit is a name indicator (NI), and the sixth bit is a key indicator (KI).

(yy) Lock Table Entry Characteristic (LTEX): A value that specifies the number of bytes in each lock table entry. The value of the lock table entry size in bytes is the product of 2 raised to the power of the value specified in the lock table entry characteristic. Valid sizes are, for instance, from 1 byte to the maximum lock table entry size in powers of 2.

(zz) Lock Table Entry Count (LTEC): A value that specifies the number of lock-table entries allocated. Valid counts are, for instance, from 0 to 2.sup.32 -1.

(1) Lock Table Entry Number (LTEN): A value that specifies an entry in a lock table. When a lock table is allocated, valid lock table entry numbers are from 0 to the lock table entry count less one. This request operand is ignored unless a valid nonzero lock request type is specified.

(2) Maximum Structure Size (MXSS): A binary integer that specifies the maximum number of 4,096-byte units allocated. Valid sizes are, for instance, from the smallest number or 4,096 units sufficient for creating the requested lock table entries, lists, associated controls, and at least one list entry when a list set is requested to a maximum of 2.sup.44 -4,096 bytes.

(3) Programmable List Entry Identifier (PLEID) A system generated list entry identifier.

(4) Structure Identifier (SID): A value that identifies a structure.

(5) Starting List Number (SLN): A value that specifies the starting list number for the Read Event Monitor Controls List command. The SLN is invalid if it is greater than or equal to the list count, or greater than the ending list number.

(6) Starting Event Index (STX): A value that indexes to the first event in the data block for the Register Event Monitors command. Valid indices are from 1 to the ending event index.

(7) Structure Authority (SAU): A value that is conditionally updated.

(8) Target Count Priority Indicator (TCPI): A value that directs the setting for the target-count objects when a cache structure is created and the target structure size is zero. A value of binary `1` indicates that the target count objects are to be set to the values of the target count request operands. If these counts are not achievable, the structure is not created. A value of binary `0` indicates that initial allocation should proceed even though the target counts are not achievable, but the counts should be the targets counts possible.

(9) Target Entry To Element Ratio (TETELR): A field consisting of two two-byte unsigned binary integers that specify the target for the relative number of list entries to list elements possible in the list set. The first two bytes contain the first number and the second two bytes contain the second number.

The first number divided by the sum of the two numbers represents the fraction of the total of the maximum list set element count and the maximum list set entry count that consists of list entries. The second number divided by the sum of the two numbers represents the fraction of the total of the maximum list set element count and the maximum list set entry count that consists of list elements associated with data list entries and retry-data block.

The second number is to be zero if the list is being created and the data indicator in the list structure type operand is zero. If the list is being created or the entry to element ratio is being reapportioned, and the data indicator is one, both numbers are to be nonzero. The second number divided by the first number is not to exceed the maximum data list entry size.

(10) Target Maximum Entry Count (TMEC): A value that. specifies the target for the maximum number of possible list entries in a list set.

(11) Target Maximum Element Count (TMELC): A value that specifies the target for the maximum number of list elements that are available for assignment to list entries or retry-data blocks, or both, in the list set.

(12) Target Maximum Event Monitor Count (TMEMC): A value that specifies the target for the maximum number of event-monitor-controls objects that are available for registration of interest in subsidiary lists within the list set.

(13) Target Monitor To Entry Storage Ratio (TMTESR): A field consisting of two two-byte unsigned binary integers that specify the target for the relative amount of storage available for event monitor controls versus list entries and their associated controls. The first two bytes contain the first number and the second two bytes contain the second number.

The first number divided by the sum of the two numbers represents the fraction of the target structure size less the marginal structure size that is dedicated to event monitor controls. The second number divided by the sum of the two numbers represents the fraction of the target structure size less the marginal structure size that is dedicated to list entries and their associated controls.

When the first number is zero, the second number is assumed to be 100.

(14) Target Ratio Validity Indicator (TRVI): A value that, when one, indicates that the value of the target-directory-to-data-ratio request operand should be placed in the corresponding pending ratio objects. When the value is zero, the TETELR and TMTESR request operands are ignored.

(15) Target Structure Size (TSS): A value that specifies the target number of 4k-byte units allocated. This operand is ignored unless the structure is created, or an expansion or contraction request is successful.

(16) User Identifier (UID): An unsigned binary integer that identifies a user.

When the lock request type specifies global lock manager and local lock managers replacement, the user identifier specifies a global lock manager. Valid user identifiers are from one to the UIDL. When the lock request type specifies global lock manager replacement, the user identifier specifies a global lock manager and, when local lock managers exist, it also specifies a local lock manager. When the lock request type specifies local lock manager replacement or local l