On Tue, 2005-05-17 at 21:56 +0200, Grégoire Favre wrote: > On Tue, May 17, 2005 at 02:50:31PM -0500, James Bottomley wrote: > > > Right, but the problem I think it will fix is the initial inquiry being > > sent with the wrong transport parameters. > > > > You have a different problem, I think ... it looks like your Toshiba DVD > > does somthing strange during Domain Validation ... the question I don't > > have an answer to yet, is what. > > Oh, sorry, thank you for the patch :-) Well, the attached is what I'd like you to try, capturing the information from the initial inquiry on ... it will be quite a bit. Hopefully it will give me a clearer idea of what's going on. Thanks, James --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c @@ -669,14 +669,23 @@ spi_dv_retrain(struct scsi_request *sreq { struct spi_internal *i = to_spi_internal(sreq->sr_host->transportt); struct scsi_device *sdev = sreq->sr_device; + struct scsi_target *starget = sdev->sdev_target; int period = 0, prevperiod = 0; enum spi_compare_returns retval; for (;;) { int newperiod; + retval = compare_fn(sreq, buffer, ptr, DV_LOOPS); + if(i->f->get_period) + i->f->get_period(starget); + if (i->f->get_offset) + i->f->get_offset(starget); + + spi_display_xfer_agreement(starget); + if (retval == SPI_COMPARE_SUCCESS || retval == SPI_COMPARE_SKIP_TEST) break; @@ -765,6 +774,8 @@ spi_dv_device_internal(struct scsi_reque /* first set us up for narrow async */ DV_SET(offset, 0); DV_SET(width, 0); + + printk("BEGINNING ASYNC, inq len = %d\n", sdev->inquiry_len); if (spi_dv_device_compare_inquiry(sreq, buffer, buffer, DV_LOOPS) != SPI_COMPARE_SUCCESS) { @@ -773,11 +784,13 @@ spi_dv_device_internal(struct scsi_reque return; } + printk("ASYNC INQUIRY SUCCEEDED\n"); + /* test width */ if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) { i->f->set_width(sdev->sdev_target, 1); - printk("WIDTH IS %d\n", spi_max_width(starget)); + printk("TRYING WIDE ASYNC INQUIRY\n"); if (spi_dv_device_compare_inquiry(sreq, buffer, buffer + len, @@ -802,12 +815,17 @@ spi_dv_device_internal(struct scsi_reque if (sdev->ppr) len = spi_dv_device_get_echo_buffer(sreq, buffer); + printk("ECHO BUFFER HAS LEN %d\n", len); + retry: /* now set up to the maximum */ DV_SET(offset, spi_max_offset(starget)); DV_SET(period, spi_min_period(starget)); + printk("DV SETTING TO period %d, offset %d\n", spi_min_period(starget), + spi_max_offset(starget)); + if (len == 0) { SPI_PRINTK(sdev->sdev_target, KERN_INFO, "Domain Validation skipping write tests\n"); spi_dv_retrain(sreq, buffer, buffer + len, - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html