Subject: Re: SCSI CD changers supported?
To: None <current-users@NetBSD.ORG>
From: Christoph Badura <bad@flatlin.ka.sub.org>
List: current-users
Date: 09/13/1996 01:38:00
Tom I Helbekkmo writes:
>There are still a couple of problems with the DRM-610, though.  The
>first is that it takes 5-6 seconds for it to change CDs, which
>wouldn't be too bad except that the whole SCSI bus is locked during
>this time, which is sort of silly.  It gets especially bad when I
>exercise it a bit harder, by working actively on two CDs at the same
>time: after a couple of changes, the system will panic with a timeout
>on one of my magnetic disk drives.

That sounds like the code that times out commands is broken.

BTW, what type of SCSI controller are you using?  You didn't mention
it in this thread.

>I'm guessing that a command to the
>disk drive happens to be sent to the controller after commands have
>been queued that will demand two CD changes before the command for the
>disk will be processed, and the jump from 5-6 seconds to 10-12 causes
>some timeout limit in the SCSI driver to be reached.

That's one explanation.  Another one is that a command to a disk drive
is sent started and has disconnected and that in the mean time a
command to the CD doesn't disconnect, locking up the SCSI bus, and the
timeout code erroneously assumes that since the command to the disk
hasn't finished after the timeout period there's something wrong with
it.  It's just not possible to simply timeout() commands sent to a
SCSI controller.

Anyone one to take this up?

>Is there no way around this sort of thing?

Sure there is.  It's just a Simple Matter of Programming(tm).

>Couldn't the driver ask the controller how
>the command is faring, and be told "hold your horses; we're getting
>around to it"?

Not with the Adaptec, Buslogic, and similar controllers.  In the case
of the ncr.c driver you could, however.

-- 
Christoph Badura	bad@flatlin.ka.sub.org

You don't need to quote my .signature.  Everyone has seen it by now.
Besides, it doesn't add anything to the current thread.