Subject: Re: Problems with ccd (960413)
To: Jason Thorpe <thorpej@nas.nasa.gov>
From: Noriyuki Soda <soda@sra.co.jp>
List: current-users
Date: 05/14/1996 02:20:44
>>>>> On Mon, 13 May 1996 08:10:28 -0700,
Jason Thorpe <thorpej@nas.nasa.gov> said:
> What kind of hardware are you using; i.e. disk controller and disks...I
> notice that these are all on sd1 ... maybe a disk is flaking out?
He uses new aic7xxx driver and AHA-274x + 4 Disks + 1 CD-ROM.
dmesg is attached below.
> The implication is that your SCSI controller is failing to send the
> command. It could also be that the SCSI subsystem is unable to malloc()
> storage for a data structure (note the SCSI_NOSLEEP).
I doubt SCB (ahc device SCSI command block, it is like CCB on aha device)
shortage, not memory shortage. Note that his AHA-274x only has 4 SCBs.
The scenario which I suppose (but not sure...) is
1. sdstart() calls scsi_scsi_cmd() with SCSI_NOSLEEP
2. scsi_scsi_cmd() calls scsi_execute_xs()
3. scsi_execute_xs() calls ahc_scsi_cmd()
4. ahc_scsi_cmd() calls ahc_get_scb()
5. ahc_get_scb() failes,
because no more SCB is availale and SCSI_NOSLEEP is
specified on sdstart().
6. ahc_scsi_cmd() returns TRY_AGAIN_LATER with
xs->error = XS_DRIVER_STUFFUP
7. scsi_execute_xs() case TRY_AGAIN_LATER sets
xs->error = XS_BUSY
and goto doit, and calls sc_err1()
8. sc_err1() case XS_BUSY goto lose,
whether xs->retries != 0 or xs->retries == 0,
because of SCSI_NOSLEEP, so that it returns EIO.
9. scsi_execute_xs() returns EIO
10. scsi_scsi_cmd() returns EIO
11. sdstart() got EIO, so that command is not queued.
That is, NetBSD MI SCSI fails, whenever DRIVER_scsi_cmd() returns
TRY_AGAIN_LATER. Is this true ?
If so, I think this is problematic behavior.
[jmartin's configuration]
[configuration of jmartin's machine]
------------------------------------------------------------------------
eisa0 at mainbus0
ahe0 at eisa0 slot 2: Adaptec AHA-274x SCSI
ahe0: Using Level Sensitive Interrupts
ahe0: aic7770 >= Rev E, Twin Channel, A SCSI Id=7, B SCSI Id=7, 4 SCBs
ahe0: Downloading Sequencer Program...Done
ahe0: interrupting at irq 11
ahe0: Probing channel A
scsibus0 at ahe0
ahe0: target 0 synchronous at 10.0MHz, offset = 0xf
sd0 at scsibus0 targ 0 lun 0: <MICROP, 2217-15MQ1001901, HQ30> SCSI2 0/direct fixed
sd0: 1685MB, 2372 cyl, 15 head, 96 sec, 512 bytes/sec
ahe0: target 2 synchronous at 10.0MHz, offset = 0xf
sd1 at scsibus0 targ 2 lun 0: <SEAGATE, ST15150N, 0017> SCSI2 0/direct fixed
sd1: 4095MB, 3712 cyl, 21 head, 107 sec, 512 bytes/sec
ahe0: target 4 synchronous at 10.0MHz, offset = 0xf
sd2 at scsibus0 targ 4 lun 0: <SEAGATE, ST15150N, 0022> SCSI2 0/direct fixed
sd2: 4095MB, 3712 cyl, 21 head, 107 sec, 512 bytes/sec
ahe0: target 6 synchronous at 10.0MHz, offset = 0xf
sd3 at scsibus0 targ 6 lun 0: <SEAGATE, ST15150N, 0022> SCSI2 0/direct fixed
sd3: 4095MB, 3712 cyl, 21 head, 107 sec, 512 bytes/sec
ahe0: Probing channel B
scsibus1 at ahe0
ahe0: target 3 synchronous at 5.0MHz, offset = 0xf
st0 at scsibus1 targ 3 lun 0: <HP, HP35470A, 1109> SCSI2 1/sequential removable
st0: density code 0x13, variable blocks, write-enabled
device TCM5093 at eisa0 slot 5 not configured
biomask 4840 netmask 4c40 ttymask 4c52
------------------------------------------------------------------------
--
soda@sra.co.jp Software Research Associates, Inc., Japan
(Noriyuki Soda) software tools and technology group