B This documents diffs between vddriver5.mar and vddriver5a.mar; use, the latter please! Asnvdm6 was also updated.  D From:	"Mark Pizzolato 415-369-9366" <tarpit!uunet!infocomm.com!mark> Subject: Re: magic disk  To:	arisia.dnet.ge.com!everhart 1 X-Vms-Mail-To: uucp%"everhart@arisia.dnet.ge.com"  X-Vms-Mail-Cc: MARK             >Date: 28 Oct 91 19:24:30 GMT    F Funny you should post something about FDDRV stuff just now, I was justG asking Jamie Hanrahan if he had your E-mail address a day or two ago.      J Anyway the reason I wanted to contact you is:  I had gotten a copy of yourJ FDDRV directory from somewhere a while ago (approx 1 year), and didn't end5 up doing anything with it until just over a week ago,    I I have one of the more modern large disk drives which I recently realized C has several different use categories that are mutually exclusive in C regards to efficient use and/or accessing space on the disk.  (i.e. G certain applications are fragmentation monsters constantly creating and E deleting LARGE numbers of small files (~3k), while other applications C ocasionally (weekly) create and delete while constantly accessing a G small number (~3) of large (~30mb) files) I decided it would be best to E keep the large files in a reasonably sized (100mb) virtual disk, so I J created a 100mb file, and it took diskeeper 2 weeks and 4 days of CPU timeG (VS3100/M38) to defragment this 100mb beast into 1 extent.  Yes, I know I backup and restore would have been much faster, but I didn't realize that E at the beginning, and I didn't have to bring anything down to achieve  this.    F Anyway, once I had the large single extent file, I went and found yourI Virtual Disk stuff and unpacked the MAR.ZOO (Creation Date 21-Jun-1990).  J I started with VDDRIVER5.MAR (8-May-1990), and defined vms$v5=1, and built2 the driver. I then built ASNVDM6.  So far so good.   I I then loaded the driver, created VDA0 and tried to assign the 100mb file G the device.  It didn't work (You know this already), since although the F file was technically contiguous, it wasn't created with the CONTIGUOUSG file attribute and ASNVDM6 depends on that.  I probably could have shut G down all other activity, and deleted the file and recreated it with the G CONTIGUOUS attribute, but I didn't want to shut things down.  I changed E ASNVDM6 to check to see if the specified file is merely composed of a H single extent, and if so, to use that extent, which handles both my fileB and a file created CONTIGUOUS to both be handled by a more generalD mechanism.  I then got the VD working, tested it some, and moved theH several 30mb files to it.  I started the application up again and thingsH ran smoothly for about a day when things got busy for the large files onJ the VD.  Suddenly all of the processes referencing the several large filesI stalled.  All of them were in RMS, and all but one could be stopped.  The G one that couldn't be stopped had one I/O which was still hanging on the J VD's I/O request queue and the device was NOT busy.  For some reason I hadF to reboot the whole cluster (the VD was cluster mounted), not just theF node with the hung process to get things running again.  I didn't haveJ time to immediately look into, and fix, the problem so I had to let things& run once again without intervention.     F I got back to it a day or so later when things once again got into theJ same hung state.  I then looked into and fixed the problem with VDDRIVER. J It seems that the special case of the Virtual I/O which needs to be hookedG to the right UCB to have a proper window context at I/O completion, was H keeping the device busy, until completion which was perfectly reasonableG and correct, and once associated with the correct UCB, upon completion, F was being completed correctly.  What was not being done and ONLY comesI up if one (or several) new I/O happens to arrive while the VD UCB is busy H waiting for the original I/O to complete.  This is what happened to me. H Since the completion activities for the virtual I/O was not happening inF the fork context of the driver, but as hook in I/O post processing, weF were never doing a REQCOM on that request which would have handled theG case of of starting other pending I/O.  I made the necessary changes to ( VDDRIVER5.MAR to correct this situation.   G I'm attaching a VMS SHARE of both ASNVDM6.MAR and VDDRIVER5.MAR, please E let me know if there have been any other fixes and/or enhancements to  these programs.    B Thanks for giving us the original work and all your other efforts. --  @ Mark Pizzolato - INFO COMM Computer Consulting, Redwood City, CaL PHONE:	(415)369-9366	UUCP:  decwrl!infopiz!mark or uunet!lupine!infopiz!mark DOMAIN:	mark@infocomm.com 