Re: 2.6.8 release
On Fri, Aug 13, 2004 at 03:08:45PM +0100, Matthew Wilcox wrote:
> I think you're mistaken. The known bug in the DV scsi core was fixed
> 9 weeks ago (according to Linus' bkweb). There's still at least one
> other bug which Dann can replicate at will on one of his machines.
> Last I heard, he was working on putting it outside the firewall for
> James to look at.
scsi_transport_spi.c diff from 2.6.7 to 2.6.8-rc is below, the period
thing did manifest itself as sym2 hang on boot.
--- linux-2.6.7/drivers/scsi/scsi_transport_spi.c 2004-07-06 15:24:56.000000000 +0200
+++ linux-2.5/drivers/scsi/scsi_transport_spi.c 2004-06-25 14:23:50.000000000 +0200
@@ -152,7 +152,7 @@
spi_transport_store_function(field, format_string) \
static CLASS_DEVICE_ATTR(field, S_IRUGO | S_IWUSR, \
show_spi_transport_##field, \
- store_spi_transport_##field)
+ store_spi_transport_##field);
/* The Parallel SCSI Tranport Attributes: */
spi_transport_rd_attr(offset, "%d\n");
@@ -173,7 +173,7 @@
spi_dv_device(sdev);
return count;
}
-static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate)
+static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate);
/* Translate the period into ns according to the current spec
* for SDTR/PPR messages */
@@ -390,10 +390,11 @@
{
struct spi_internal *i = to_spi_internal(sreq->sr_host->transportt);
struct scsi_device *sdev = sreq->sr_device;
- int period, prevperiod = 0;
+ int period = 0, prevperiod = 0;
for (;;) {
+ int newperiod;
if (compare_fn(sreq, buffer, ptr, DV_LOOPS))
/* Successful DV */
break;
@@ -401,7 +402,8 @@
/* OK, retrain, fallback */
if (i->f->get_period)
i->f->get_period(sdev);
- period = spi_period(sdev);
+ newperiod = spi_period(sdev);
+ period = newperiod > period ? newperiod : period;
if (period < 0x0d)
period++;
else
Reply to: