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>
--