Hi Matt,

Yes, that patch does eliminate the transfer length error message.

As for the "never initializes" part, I think that I just didn't
wait long enough.  With this patch applied to vanilla 2.5.42,
I am seeing the [attached] longish Maxtor hard drive probing,
with roughly 5-second timeouts between each "giveback urb" line,
and failures in MODE SENSE, READ CAPACITY, and reading the
partition table.  This worked a few minutes earlier on 2.4.18.

Suggestions?

Thanks,
~Randy


> ---------- Forwarded message ----------
> 
> I just sent a patch to Linus to fix this.  Here it is for your testing:
> 
> # This is a BitKeeper generated patch for the following project:
> # Project Name: Linux kernel tree
> # This patch format is intended for GNU patch command version 2.5 or higher.
> # This patch includes the following deltas:
> #                  ChangeSet    1.787   -> 1.788
> #          drivers/scsi/sd.c    1.65    -> 1.66
> #
> # The following is the BitKeeper ChangeSet Log
> # --------------------------------------------
> # 02/10/12      [EMAIL PROTECTED]       1.788
> # Make the buffer length match the size of the request.
> # --------------------------------------------
> #
> diff -Nru a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> --- a/drivers/scsi/sd.c Sat Oct 12 21:25:43 2002
> +++ b/drivers/scsi/sd.c Sat Oct 12 21:25:43 2002
> @@ -916,7 +916,7 @@
> 
>                 SRpnt->sr_data_direction = SCSI_DATA_READ;
>                 scsi_wait_req(SRpnt, (void *) cmd, (void *) buffer,
> -                           24, SD_TIMEOUT, MAX_RETRIES);
> +                           128, SD_TIMEOUT, MAX_RETRIES);
> 
>                 the_result = SRpnt->sr_result;
>                 retries--;
> 
> As you can see, it's neither a protocol or a transport problem.  It's a bad
> initiator of a command.
> 
> As for the 'never initializes' part... likely that's because an endpoint is
> stalled, and somehow endpoint stalls can't be cleared anymore.
> 
> Matt
> 
> On Sat, Oct 12, 2002 at 10:30:12PM -0700, Randy.Dunlap wrote:
> >
> > Hi Matthew,
> >
> > Using 2.5.41 or 2.5.42, I'm getting lots of these messages:
> >
> > midway kernel: drivers/usb/core/hcd.c: giveback urb f75c1400 status -32 len 0
> > midway kernel: USB len=128, request_bufflen=24
> > plus dump_stack() output.
> >
> > I tracked it down to usb/storage/transport.c::usb_stor_transfer_length().
> >
> > Is this a protocol or transport or USB device problem?
> >
> > How can I help with this?
> >
> > Also, the usb-storage module doesn't complete intializing/loading
> > when this happens.
> >
> > --
drivers/usb/core/hub.c: new USB device 00:1f.2-1, assigned address 2
drivers/usb/core/usb.c: new device strings: Mfr=73, Product=90, SerialNumber=110
Product: Maxtor USB Drive 
Manufacturer: Maxtor 
SerialNumber: 1200E000022126098
Initializing USB Mass Storage driver...
scsi1 : SCSI emulation for USB Mass Storage devices
  Vendor: Maxtor 4  Model: D040H2            Rev: DAH0
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f75c3f80 status -32 len 0
sda : MODE SENSE failed.
sda : status = 0, message = 00, host = 7, driver = 00 
sda : sense not available. 
sda : assuming drive cache: write through
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e880 status -32 len 0
sda : READ CAPACITY failed.
sda : status=0, message=00, host=7, driver=00 
sda : sense not available. 
 sda:<7>drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
SCSI disk error : host 1 channel 0 id 0 lun 0 return code = 70000
end_request: I/O error, dev 08:00, sector 0
Buffer I/O error on device sd(8,0), logical block 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e300 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f706e680 status -32 len 0
drivers/usb/core/hcd.c: giveback urb f7df7f00 status -32 len 0
SCSI disk error : host 1 channel 0 id 0 lun 0 return code = 70000
end_request: I/O error, dev 08:00, sector 0
Buffer I/O error on device sd(8,0), logical block 0
 unable to read partition table
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
drivers/usb/core/usb.c: registered new driver usb-storage
USB Mass Storage support registered.

Reply via email to