On Fri, Mar 10, 2000 at 02:35:15AM -0600, Ralston, Steve wrote:
> I've tried various flavors over the past few weeks with
> strange to interesting results.
>  1) sc->result = DID_BUS_BUSY << 16;
>     // YIKES!  This seems to kill linux interrupt handler!!!
>  2) sc->result = 0x08;                // Try SCSI BUSY!
>     // Sort of works, but end up with corrupted file system
>  3) sc->result = 0x28;                // Try SCSI QUEUE_FULL!
>     // Best results so far...
> 
> Just curious if anyone out there recommends these
> or other methods.

Your host adapter driver needs to be able to give back commands to the
mid-layer anyway, as the needs also exists on aborting a command (being done
by an ABORT or an ABORT_TAG message) or when a device or a bus reset occurs.

Just giving the commands back with DID_ABORT<<16 or DID_RESET<<16 works and
is actually what my drivers do.
For new EH, you also have the possibility to return 1 from queuecommand().

There's one thing you should be aware of: If there are writes and reads to
the same blocks, the order of the commands is important. Give back the
oldest command first, as it will be requeued first.
Of course, you need to make sure, you don't loose a command ...

Regards,
-- 
Kurt Garloff  <[EMAIL PROTECTED]>                          Eindhoven, NL
GPG key: See mail header, key servers         Linux kernel development
SuSE GmbH, Nuernberg, FRG                               SCSI, Security

PGP signature

Reply via email to