From: "(Jon Pinkley, Westinghouse (216)486-8300 x1335)"
Newsgroups: vmsnet.internals
Subject: DRM-600 CD-ROM mini-changer (Hardware Virtual Disks)
Date: Tue, 11 Aug 92 22:58:48 -0400
Organization: Macro32<==>Vmsnet.Internals Gateway
X-Gateway-Source-Info: Mailing List

I just received a patched set of firmware for a Pioneer DRM-600 that
allows it to be used with the standard DKDRIVER in a VAXStation.  If you
were at the spring 1992 DECUS in Atlanta, you may have seen the
VAXStation 4000-60 with a Pioneer DRM-600A attached.  The DRM-600 is a
CD-ROM drive with a 6 disc mini-changer.

In the default configuration, the drive assigns SCSI Logical Unit Numbers
zero through five to disc one through six.  The VMS DKDRIVER is happy to
deal with this.

In the startup file on the VAXStation, I have sysgen commands to connect
the UCBs for DKB101-DKB105.  The UCB for DKB100 is automatically created.
Now it appears that all drives are available, and you can indeed mount 6
different CD's at the same time.  The disks are "demand loaded" when
accessed.  This all works quite well if you access only a single drive at
a time.

Now for the bad news.  If you attempt to access multiple drives, you will
witness disk thrashing.  The situation is exacerbated when DKDRIVER
starts getting timeouts and kicks in mount verification.  I had to
dismount/abort/cluster all the drives without and files open, and then
had to dismount/abort/cluster/ignore=checks one the remaining drives that
did have files open.

I would like to have a shared access to the drives, but prevent disk
trashing.  Ideally, I would like make it as transparent as possible.
Here are the goals.

o   VMS should be able to mount all disks simultaneously.

o   It should still be possible to MSCP serve the drives to the
    cluster.

o   If only one disk on the DRM-600 is being accessed, then the
    access control should not cause any perceivable delay.

o   If more than one disk is being used, they should round robin
    with a quantum of maybe 60 seconds.  If the drive became idle
    during the quantum (no I/O for idle_time, maybe 5 seconds)
    then the physical drive should become available to the next
    waiting disk for up to a quantum.

    The values I suggest for quantum (60 seconds) and idle (5
    seconds) were picked somewhat arbitrarily, however, note that
    is takes about 7 seconds to swap disks.  Once you get the
    disk loaded, it is best if you can get some work done before
    you are forced to give up the drive.

o   It would really be nice if some caching of data could also be
    done.  Paul Sorenson's CDDRIVER ([VAX89B1.AEPSC.CDDRIVER])
    could perhaps be used for this function.

I've been thinking about this for about a week.  I've spent a good bit
of time reading the Device Support and Reference Manuals. CDDRIVER
intercepts I/O requests for the drive, so I figured that would be a good
place to start.  My plan is to modify the CDDRIVER to add the capability
to specify that a disk has a shared drive.  I will probably use a CRB
stucture, but it won't be the CRB that UCB$L_CRB of the disk points to,
and it won't use the standard REQPCHAN/RELCHAN macros.

Has anyone else had to do something similar to this?  Do you have any
advice?

Jon Pinkley jon@clevax.wec.com ...uunet!tron!clevax!jon (216)486-8300 x1335