At 09:53 -0600 on 01/12/2011, McKown, John wrote about speculation: z/OS "enhancments":

OK. I'm not sure if this is off-topic or not. If it is, then I apologize. But I'm wondering if z/OS is "lacking" in some areas. Or limited in some way that you wish would disappear. I'm assuming that "cost is not a problem". Which is a stupid assumption, of course.

Mine is to fix/enhance the ENQs for datasets so they include the volume name as part of the RNAME. The original use of DSN in lieu of DSN+VOLSER was OK until GRS and/or Shared DASD was introduced and you could have multiple datasets with the same DSN in your complex. There are some components (such as SPF EDIT) that do it right by actually using the VOLSER to tell the difference between multiple datasets with the same name. The show stopper in fixing this is that Initiation does not bother to do its DISP ENQs by looking up the VOLSER when it does its ENQ in support of DISP=OLD/SHR.

Also enhance ENQ so an EXCLUSIVE ENQ owner can switch itself to SHR ownership (and thus allow backed up other tasks who are waiting for it to release to start running). The current inability to downgrade from EXC to SHR status leads to such design flaws as Job Streams that have STEP1 with a DISP=OLD and subsequent Steps with DISP=SHR holding exclusive ownership of the Dataset Name (not the Dataset Itself - see the lack of Volser as part of the RNAME above for details) until at least the end of the last step referencing the DSN. I say at least since I think that early release is what occurs now when originally the ENQ was held (even when not needed) until Job End. This makes jobs that might run for an hour but only need the DISP=OLD lock for the first minute or two lock out other DISP=SHR job streams for the full hour (when they would already be running if the DISP=OLD step were not there).

Side-Comment - The fix for EXC->SHR is IMO a VERY simple thing to implement. You update the ENQ Macro Parms to have a flag to say EXC->SHR (like the one that does SHR->EXC [what this is supposed to be used for is a question with the lack of being unable to do anything except DEQ when you are done with your upgraded EXC state if you even get it - What you are supposed to use this SHR->EXC ability for is a separate issue]). When issued, the code just resets the ENQ chain entry to show that the task has SHR status now and then drives the DEQ code that runs the chain releasing waiting SHR tasks until running off the chain or encountering a waiting EXC request. I can see some potentially minor support issues if you try to issue such an ENQ on a system that does not support it (ie: What happens if you send such an ENQ to a down level version of the ENQ routine? Will it ignore the flag it does not know, return a RC [which the user's code can ignore by just continuing as EXC as currently would occur], or ABEND the task [a bad thing]). The ABEND case can be handled by just having a CVT flag that says the support is there (as there are other such flags) and the user's program can not bother playing good-guy and issuing the ENQ TYPE=MAKE-SHR when the support is not there. Since the Initiator code to make use of this enhancement would COREQ the ENQ upgrade there would be no possibility for the Initiator code running on a non-supporting system.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to