[137] in linux-scsi channel archive
Re: BusLogic/HP-DAT Problems - Solved
daemon@ATHENA.MIT.EDU (Kai Makisara)
Mon Apr 10 11:57:33 1995
Date: Mon, 10 Apr 1995 17:01:03 +0300 (EET DST)
From: Kai Makisara <makisara@abies.metla.fi>
Reply-To: Kai.Makisara@metla.fi
To: Michael Weller <eowmob@exp-math.uni-essen.de>
Cc: linux-scsi@vger.rutgers.edu, "Leonard N. Zubkoff" <lnz@dandelion.com>
In-Reply-To: <Pine.3.89.9504101229.B29610-0100000@werner.exp-math.uni-essen.de>
I think Leonard's patch was correct and it has already been submitted to
Linus. The byte counts in the scsi_do_cmd calls in the tape driver were
fixed some time last year but I missed this call. The earlier versions of
the driver used mostly the buffer size as the byte count. This explains
the behaviour you (Michael) have seen earlier.
There are several perfectly natural situations where the tape drive does not
return the predicted number of bytes or would have more data to deliver
(reading up to EOF or EOD, the block shorter or longer than expected,
etc.). In all these cases the CHECK CONDITION status is returned and the
situation can be cleared based on this. However, if everything goes well
(status GOOD), underrun/overrun means that something may be wrong (an
error or an errant driver programmer :-).
IMHO an intelligent adapter should not signal overrun/underrun if it
returns CHECK CONDITION status. If it does signal overrun/underrun in
this case, the driver should filter it out.
Kai