Subject: CVS commit: syssrc
To: None <source-changes@netbsd.org>
From: Manuel BOUYER <bouyer@netbsd.org>
List: source-changes
Date: 05/18/2001 15:56:29
Module Name: syssrc
Committed By: bouyer
Date: Fri May 18 12:56:29 UTC 2001
Modified Files:
syssrc/sys/dev/scsipi: scsipi_base.c
Log Message:
Workaround for broken drives (explained to me by Chris G. Demetriou):
some devices can't handle tag number larger than some values and always
reject commands with QUEUE FULL if the tag number is larger than this.
Under some circonstances the scsipi system may not decrease periph_openings
(as a workaround of other odd behavior) and we may end up requeuing the command
with a hight tag value again, and the driver could loop on this.
Workaround: in case of queue full, decrease periph_openings to
min(periph_active - 1, periph_openings - 1) so that, after some iteration,
periph_openings is less than the max tag value acceptable by the device.
Solves the problem with tagged queuing on ncr53c9x for me.
To generate a diff of this commit:
cvs rdiff -r1.41 -r1.42 syssrc/sys/dev/scsipi/scsipi_base.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.