-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Erroneous CCW chain results in EQUIPMENT CHECK #660
Comments
Do you have "GA32-0274-05 3990,9390 Storage Control Reference"? What about "SA22-1025-00 System-390 Internal Disk Subsystem - Reference Guide (Multiprise 3000)"?
Providing the actual assembler source code would be better. 19:25:58 HHC01413I Hercules version 4.6.0.10941-SDL-g65c97fd6-modified 19:25:58 HHC01414I (C) Copyright 1999-2023 by Roger Bowler, Jan Jaeger, and others 19:25:58 HHC01417I ** The SDL 4.x Hyperion version of Hercules ** 19:25:58 HHC01415I Build date: Feb 15 2024 at 11:52:18 The modifications are from issue 615 and in ckddasd.c Unacceptable. Please try again with an unmodified version of Hercules. Preferably version 4.7, the most recent officially released version.
I see no virtual volume attached to this issue. GitHub has limits on the size of the files that you can attach. I'm guessing that's probably why it wasn't attached. If you could upload it somewhere and just provide a download URL for us, that would be great. Or, if it's not too big, you could upload it to my SoftDevLabs FTP server and then I could provide the download URL for others. (But I prefer that you upload it yourself somewhere if you don't mind.)
|
I installed 4.7 and the EQC recreated nicely. Somehow, it has I am enclosing a Hercules log with IO trace enabled. From MVS. Interestingly, the handloop code that I have causes Hercules 4.7 to crash and take I could send my assembler code but of course it takes a MVS to run. I am copying Under MVS this is what runs:
SIDE is 31, TIC 08, WCKD 1D In the handloop this is simplified to
As for documentation on what error should be produced by this incomplete chain, it is very When reading the reference books for 2314 and older they primarily describe how the CCWs Of course there was always a requirement for Seek AND Search in almost all successful DASD For 2314 a command reject is explained as invalid command code but with another bit set So there are requirements. But whether you would get a CMD REJ or possibly(?) NRF I hope you can recreate using any of the chains above. |
I could successfully recreate the EQC by running the handloop i 'step mode'. Hercules remained up. |
Not necessarily. I could more than likely get it to compile just fine with SATK's ASMA assembler (which is what I normally use and highly recommend for any/all stand alone tests. Let me know if you need any help getting it installed and/or configured).
Is that included in the .zip? Does it always occur? That is to say, can it be easily and reliably recreated? p.s. Have you tried 4.8-DEV? Does it behave the same? |
No problem downloading the SATK-ASMA stuff and I expect no problem in coding a test/recreate program, but it takes some reading before understanding how the SATK process works. I'll model new code on what I received from the ICKDSF related changes, 615. How do I download the 4.8-DEV code? Or rather from where? Is it readily executable or does it require compilation like any 4.x source code? Anders |
Yes, it seems quite intimidating at first, but give me a few (minutes? hours? days? centuries?) and I'll try to whip up a Quick Start guide for you. There are only a couple of things you really need to do before you're up and running. It's not as complicated as it may seem.
You can't. At the moment(*), you have to build it for yourself.
No, there are no pre-built executables for the 4.8-DEV code (yet(**)). At the current time you still have to build it for yourself. I recommend using Bill Lewis's most excellent Hercules Helper product. It automates the entire process for you, making it incredibly easy to build any version of Hercules for yourself directly from the repository (which is what we recommend). Not sure what you mean by "like any 4.x source code" though. Pre-built downloadable binaries for ALL official releases of Hercules have always been available for Windows. Only the Linux crowd needs to build Hercules for themselves (due to the plethora of different distributions and platforms out there). But for those using Windows, downloadable pre-builts have always been available for every 4.x release from 4.1 all the way to 4.7. (*) As I understand it, Bill (and someone else?) is supposedly working on trying to automate the building of the current development branch of our repository each time there is a new commit made. This way, anyone can download a "bleeding edge" still-under-development version of Hercules at any time without having to build it for themselves. But AFAIK it's not ready yet. (**) ibid. |
Fish,
There's really nothing preventing me from checking that in, other than embarrassment of the crufty code. |
Understood. I leave that to you. You've certainly proven you're an extremely competent Hercules developer who knows wtf they're doing, so I leave it to you to commit your changes whenever you dang well feel like it! (i.e. whenever you're fricking good and ready to!) |
I am currently in hospital for some minor planned surgery. I have downloaded the SATK stuff and it was indeed easy to get it running.
My plan is to send you a modified version of the issue 615 test code that I received earlier. It can be used to recreate or verify the error when doing search without seek.
As for testing with the leading edge 4.8 development code, I still have not been able to figure out how to find and download it.
Anders
|
Minor or not, we all, of course, wish you a satisfactory outcome and a speedy recovery!
Building the development branch of Hercules is identical to building the current release, with the exception of one additional command to checkout the development branch of the repository (called
I believe Bill's "Hercules Helper" also supports checking out and building the develop branch too:
|
The That can be changed using a custom Bill |
In the attached HERCPB06.zip file you will find:
This remains a very low priority problem. You have to start with a hopeless CCW chain and the result is not disastrous, just a waste of retries. For my part, it is more interesting to resume to try old CCW chains from my MVS CE days than installing Hercules code which you probably already have. And loading the .core file and trying it should not take long. Is there any reason to believe that this "bug" could have been fixed in the interim? Maybe I will find into other odd situations and now I have better tools for giving you an easily reproducible and verifiable test case. Anders |
Thanks, Anders! I will download your .zip file and give your test a whirl, and then get back to you. |
That didn't take long! The chaining requirement checks were all coded to test for only 3990 control units instead of both 3990 or 3880 control units too. You can add a The fix I just committed (41c8617) will appear in the next release. Until then, if you want the fix, you'll have to build the 4.8-DEV development version ( Closing as resolved. |
During the last few months, I have spent some time updating an old program so that it can execute channel programs without getting 'disturbed' by the standard SEEK+SetFileMask prefixing that is standard in MVS.
On XA, authorized programs could turn it off by setting a bit in an IO control block, but this is not possible on older MVS (or at least I am not aware of how to do it), so I had to add code effectively introducing another IOS Driver. So now I have this running under Hercules and MVS-TK5.
In particular I intend to run ECKD (DX+LR which MVS-TK5 does not use). Very good exercise, boys. as my professor used to say when he did not want to do something himself.
While developing this, I used a simple (single) NOP CCW and for the next test, I tried the next old chain in my code. I happens to be a SEARCH ID, TIC back, WRITE CKD chain. It is a very well known fact that a SEEK must precede this and then of course it runs perfectly. But I tried without prefixing and it failed, but not as I expected.
I get an EQC and when traced in Hercules it seems that the code somehow runs amok and produces a varying number of trace entries before passing end of track and gets the EQC. Since then I have reread all my older DASD books and it is not clearly documented what error should surface (does anybody have a real 2314 for testing?) but it seems that a NoRecordFound could be more appropriate (since we could be searching wrong track).
Only with 3880 (and newer) is it clear from the book that a CMD REJ with invalid sequence (02) should be expected. The 4.6 release of Hercules that I am using has code to detect this, but it is effective only with 3990. My 3380 gets attached to a 3880 (without J/K support).
Tried 3350 and get the same EQC. With 3390 (which uses a 3990 CU), I get the CMDREJ 02 as coded in
ckddasd.c
.I think that something is wrong here. This should not give an EQC.
I am providing an edited Hercules log with IO trace and a small piece of SAVECORE dump of a code to recreate, and the virtual volume I am using.
Set the device number in the instruction starting at loc 100 (hex) and start in Supervisor State at loc 100.
It seems that the actual contents of the track is irrelevant.
This is a very low severity 'problem'. What more shall I provide?
It is certainly much more important that Hercules correctly executes correctly coded CCW chains than that it gives correct error responses to all possible ways to miscode DASD I/O. What about a read or write without a search?
Is there some simple way to test if a track address of CCHH has been established or not for the current CCW chain?
andersedlund@telia.com
The text was updated successfully, but these errors were encountered: