Subject: Re: a couple of proposed patches fo SCSI midlayer
To: Matthew Jacob <mjacob@feral.com>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: tech-kern
Date: 03/20/2002 22:31:43
On Tue, Mar 19, 2002 at 07:24:27PM -0800, Matthew Jacob wrote:
> 
> Problem I'm trying to solve:
> 
>   I want to have commands completing XS_SELTIMEMOUT be retried like
>   XS_TIMEOUT. That is- I want the retry count in the command to be
>   honoured.
> 
> This turned out to be a tad more then just changing scsipi_complete to
> have XS_SELTIMEOUT have the same case as XS_TIMEOUT.
> 
> What you need to do is to make sure that *probing* doesn't take forever.
> 
> So- what I did was to make sure that we don't retry the TEST UNIT READY
> that's done as part of device discovery. Ditto for INQUIRY.

I don't really like the idea of doing this based on commands.
I think a better test would be to see whenever the device is already
attached or not (if it attached it's that it was present at one time).
scsipi_lookup_periph() be used for this.

Also I wouldn't do it by setting retries to 0, because xs->xs_retries
is used for other failure cases than XS_TIMEOUT. I would do this in 
scsipi_complete() for the XS_SELTIMEOUT/XS_TIMEOUT case:
	case XS_SELTIMEOUT
	case XS_TIMEOUT
		if (scsipi_lookup_periph(chan, periph->periph_target,
		    periph->periph_lun) && xs->xs_retries != 0) {
			xs->xs_retries--;
			error = ERESTART;
		} else
			error = EIO;

> 
> Additionally, and this area still needs some more work particularly as we want
> to add (soon) things like REPORT LUNS here so we can ask a device how many of
> a possible 65535 luns it actually supports, the loop where we're evaluating a
> bus should:
> 
> 	+ If we're probing a whole bus, and this is lun 0, and things
> 	  fail to probe, we shouldn't just continue probing (a working
> 	  lun 0 is a *requirement*, IIRC, for the SAM-2 specs).
> 
> 	+ We should only set xfer mode if we actually ever found anything

This looks good.

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
--