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