How to update the same VLS library from different LPARs concurrently (e.g. massive batch compile jobs running on a LPAR while small programs are compiled under a CICS region running on a different LPAR).
IDEAL (VPE) issues GRS enqueues with scope SYSTEM.
Per "IBM z/OS 2.1 MVS Planning: Global Resource Serialization" manual, “Local and global resources” section:
When an application uses a macro (ISGENQ, ENQ, DEQ, and RESERVE) to serialize resources, global resource serialization uses the RNL, various global resource serialization installation exits, and the scope on the macro to determine whether a resource is a local resource or a global resource.
A local resource is a resource requested with a scope of STEP or SYSTEM. It is serialized only within the system processing the request for the resource. If a system is not part of a global resource serialization complex, all resources (with the exception of resources serialized with the RESERVE macro), regardless of scope (STEP, SYSTEM, SYSTEMS), are local resources.
A global resource is a resource requested with a scope of SYSTEMS or SYSPLEX. It is serialized among all systems in the complex.
Being so, IDEAL's system ENQs are not propagated across LPARs but are local to the LPAR where the ENQ is executed.
In order to prevent any possible VLS library corruption, due to concurrent access from different LPARs, the SYSTEM ENQueue must be changed to SYSTEMS ENQueue.
From the same IBM manual, “SYSTEM inclusion RNL” section:
When global resource serialization encounters an ENQ or DEQ request for a resource with a scope of SYSTEM, it scans the SYSTEM inclusion RNL. If there is no match, global resource serialization processes the resource as a local resource.
If there is a match, global resource serialization changes the scope of the request from SYSTEM to SYSTEMS and processes the resource as a global resource.
Customers that need to access the same VLS file from different LPARs, need to modify their GRS definitions in order to change the scope of requests from SYSTEM to SYSTEMS.
As QNAME ADRPRDCT is the major name for IDEAL enqueues, they have to add the following definition in their GRS Resource Name List member:
RNLDEF RNL(INCL) TYPE(GENERIC) QNAME(ADRPRDCT)
All the LPARs must be IPLed at the same time to have the scope changed from SYSTEM to SYSTEMS.
The QCODE parameter in SC00OPTS must be the same.
IMPORTANT NOTE: as Ideal and Librarian use the same QNAME "ADRPRDCT", Librarian users need to check Librarian documentation about GRS settings.