* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
[not found] <20030922004943.E32009@one-eyed-alien.net>
@ 2003-09-22 14:25 ` Alan Stern
2003-09-22 14:31 ` Christoph Hellwig
2003-09-22 15:29 ` [linux-usb-devel] " Linus Torvalds
0 siblings, 2 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 14:25 UTC (permalink / raw)
To: Matthew Dharm
Cc: Linus Torvalds, David Brownell, Greg KH, USB development list,
SCSI development list
This problem has been cropping up with many, many USB storage devices.
They just don't handle MODE-SENSE page 8 correctly. Some devices are okay
with a 128-byte transfer and others aren't. Some are okay with a 64-byte
transfer and others aren't. Some are okay transferring the actual size of
the page (as given in the header) and others aren't. Some are okay
transferring the minimum amount we actually need (12 bytes IIRC) and
others aren't.
Although it may not directly address all the problems that Linus observed,
a solution has been floating around in the linux-scsi and usb-storage
development lists. It looks to me like it's ready to be merged, although
no one has done so yet. Basically, it amounts to a per-device flag that
can be inherited by default from the host template or set/cleared
specifically by the host driver, rather like the flag for using 10-byte
READ/WRITE commands. The flag tells sd.c not to ask for page 8 but to
assume a write-through cache. The patch is in
http://marc.theaimsgroup.com/?l=linux-scsi&m=106366112221507&w=2
At the moment, this MODE-SENSE page 8 is probably the most severe
outstanding problem with the usb-storage driver. I'm all in favor of the
patch being adopted (hint, hint...).
I've been assuming that the "babble" problem arises because the device
either tries to send more than 128 bytes of mode-sense data or because it
tries to send the data and the subsequent 13-byte status in the same
packet. Whether or not this would be detected as an error depends on the
maxpacket size, which depends on the speed of the USB bus. (Maybe the
device even tries to send an over-sized packet.) Of course, it's always
possible that reading page 8 just triggers a bug in the device firmware,
and from then on it's all over.
On Mon, 22 Sep 2003, Matthew Dharm wrote:
> You say this worked with UHCI 'some time ago'? Perhaps that was before all
> this mode page 8 stuff got settled?
The MODE-SENSE page 8 stuff was added sometime during the 2.5 development
cycle. Before it was put in, quite likely the device would have worked
fine with UHCI.
Alan Stern
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 14:25 ` [linux-usb-devel] Re: USB storage problems on OHCI Alan Stern
@ 2003-09-22 14:31 ` Christoph Hellwig
2003-09-22 15:11 ` Christoph Hellwig
2003-09-22 15:29 ` [linux-usb-devel] " Linus Torvalds
1 sibling, 1 reply; 39+ messages in thread
From: Christoph Hellwig @ 2003-09-22 14:31 UTC (permalink / raw)
To: Alan Stern
Cc: Matthew Dharm, Linus Torvalds, David Brownell, Greg KH,
USB development list, SCSI development list
On Mon, Sep 22, 2003 at 10:25:28AM -0400, Alan Stern wrote:
> http://marc.theaimsgroup.com/?l=linux-scsi&m=106366112221507&w=2
>
> At the moment, this MODE-SENSE page 8 is probably the most severe
> outstanding problem with the usb-storage driver. I'm all in favor of the
> patch being adopted (hint, hint...).
Patch looks mostly fine to me, but please all flags should be unsigned instead
of signed and scsi_devinfo.h needs some inclusion guards.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 14:31 ` Christoph Hellwig
@ 2003-09-22 15:11 ` Christoph Hellwig
2003-09-22 15:49 ` Patrick Mansfield
2003-09-22 15:50 ` Alan Stern
0 siblings, 2 replies; 39+ messages in thread
From: Christoph Hellwig @ 2003-09-22 15:11 UTC (permalink / raw)
To: Alan Stern
Cc: Matthew Dharm, Linus Torvalds, David Brownell, Greg KH,
USB development list, SCSI development list
On Mon, Sep 22, 2003 at 03:31:24PM +0100, Christoph Hellwig wrote:
> Patch looks mostly fine to me, but please all flags should be unsigned instead
> of signed and scsi_devinfo.h needs some inclusion guards.
Actually I think it could be made much simpler by killing the per-template
bflags and just setting the scsi_device flags from slave_alloc or
slave_configure. Could you cook up a patch like that?
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 14:25 ` [linux-usb-devel] Re: USB storage problems on OHCI Alan Stern
2003-09-22 14:31 ` Christoph Hellwig
@ 2003-09-22 15:29 ` Linus Torvalds
2003-09-22 16:22 ` David Brownell
1 sibling, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 15:29 UTC (permalink / raw)
To: Alan Stern
Cc: Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list
On Mon, 22 Sep 2003, Alan Stern wrote:
>
> This problem has been cropping up with many, many USB storage devices.
Interesting data-point: the device is a happy EHCI camper, and is totally
able to read codepage 8 on EHCI.
However, if I put it behind a USB-1 hub on the EHCI port, I see the same
problems I saw with OHCI.
So it is somehow related to USB-1 vs USB-2. I don't understand why the
device would make a difference for something like mode page 8, but it
looks like it transfers data fine for _small_ mode page requests under
USB-1, and under USB-2 it works even for big ones.
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 15:11 ` Christoph Hellwig
@ 2003-09-22 15:49 ` Patrick Mansfield
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:37 ` [linux-usb-devel] " Christoph Hellwig
2003-09-22 15:50 ` Alan Stern
1 sibling, 2 replies; 39+ messages in thread
From: Patrick Mansfield @ 2003-09-22 15:49 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Alan Stern, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 04:11:04PM +0100, Christoph Hellwig wrote:
> On Mon, Sep 22, 2003 at 03:31:24PM +0100, Christoph Hellwig wrote:
> > Patch looks mostly fine to me, but please all flags should be unsigned instead
> > of signed and scsi_devinfo.h needs some inclusion guards.
>
> Actually I think it could be made much simpler by killing the per-template
> bflags and just setting the scsi_device flags from slave_alloc or
> slave_configure. Could you cook up a patch like that?
You mean add the flags to scsi_device rather than scsi_host?
And allow setting the sdev->flags only in slave_alloc.
I can modify the patch for that.
-- Patrick Mansfield
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 15:11 ` Christoph Hellwig
2003-09-22 15:49 ` Patrick Mansfield
@ 2003-09-22 15:50 ` Alan Stern
2003-09-22 15:58 ` Patrick Mansfield
2003-09-22 16:38 ` Christoph Hellwig
1 sibling, 2 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 15:50 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Patrick Mansfield, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, 22 Sep 2003, Christoph Hellwig wrote:
> On Mon, Sep 22, 2003 at 03:31:24PM +0100, Christoph Hellwig wrote:
> > Patch looks mostly fine to me, but please all flags should be unsigned instead
> > of signed and scsi_devinfo.h needs some inclusion guards.
>
> Actually I think it could be made much simpler by killing the per-template
> bflags and just setting the scsi_device flags from slave_alloc or
> slave_configure. Could you cook up a patch like that?
Interestingly, my original patch was a lot like you describe. It can be
found in
http://marc.theaimsgroup.com/?l=linux-scsi&m=106340167723122&w=2
Patrick Mansfield later beefed it up to the version you were looking at.
I don't care which version of the patch gets accepted, so long as
_something_ is done. Patrick, what do you think?
Alan Stern
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 15:50 ` Alan Stern
@ 2003-09-22 15:58 ` Patrick Mansfield
2003-09-22 16:36 ` [linux-usb-devel] " Alan Stern
2003-09-22 16:38 ` Christoph Hellwig
1 sibling, 1 reply; 39+ messages in thread
From: Patrick Mansfield @ 2003-09-22 15:58 UTC (permalink / raw)
To: Alan Stern
Cc: Christoph Hellwig, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 11:50:47AM -0400, Alan Stern wrote:
> Interestingly, my original patch was a lot like you describe. It can be
> found in
>
> http://marc.theaimsgroup.com/?l=linux-scsi&m=106340167723122&w=2
>
> Patrick Mansfield later beefed it up to the version you were looking at.
>
> I don't care which version of the patch gets accepted, so long as
> _something_ is done. Patrick, what do you think?
I would rather we can modify the flags for any broken device and override
a host's setting for known functioning devices. But let's get some patch
applied.
If there is a problem (per Linus' post) in the USB transport this isn't a
real fix.
-- Patrick Mansfield
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 15:49 ` Patrick Mansfield
@ 2003-09-22 16:09 ` Linus Torvalds
2003-09-22 16:42 ` Alan Stern
` (2 more replies)
2003-09-22 16:37 ` [linux-usb-devel] " Christoph Hellwig
1 sibling, 3 replies; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 16:09 UTC (permalink / raw)
To: Patrick Mansfield
Cc: Christoph Hellwig, Alan Stern, Matthew Dharm, David Brownell,
Greg KH, USB development list, SCSI development list,
Andries.Brouwer
[ Andries added to the cc ]
On Mon, 22 Sep 2003, Patrick Mansfield wrote:
>
> I can modify the patch for that.
How about just making the sd.c layer more robust? That has worked well in
the past, and it seems wrong to have to add more and more flags.
In particular, while hunting down the usb-1/usb-2 differences, it became
clear that all the mode sense transfers that _worked_ under usb-1 were
short. With 64 bytes than with 128 bytes it no longer babbled, and the
whole thing worked fine with 11 bytes (the minimum required to get the
caching status).
Adding some printk's showed that the initial (successful) 4-byte page read
resulted in:
- page len=1538 (pretty obviously crap)
- header len=8 (correct)
- block descriptor len=0 (correct)
and the thing is, we were using the "pretty obviously crap" value for
judging the size of the thing.
So my suggestion would be to just replace that usage (in sd.c):
len = data.length;
if (len > 128)
len = 128;
with something like this instead:
/* We need three bytes past the block descriptor length */
len = data.header_length + data.block_descriptor_length + 3;
/* Sanity check */
if (len > data.len || len < 11 || len > 128)
.. fail ..
Basically, Andries Brouwer's strategy of making sd.c more conservative has
been a very successful one in the past. Why not continue on that?
(Btw, where are the different mode sense pages documented?)
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 15:29 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 16:22 ` David Brownell
2003-09-22 16:31 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:58 ` [linux-usb-devel] " Martin Diehl
0 siblings, 2 replies; 39+ messages in thread
From: David Brownell @ 2003-09-22 16:22 UTC (permalink / raw)
To: Linus Torvalds
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
Linus Torvalds wrote:
> On Mon, 22 Sep 2003, Alan Stern wrote:
>
>>This problem has been cropping up with many, many USB storage devices.
>
>
> Interesting data-point: the device is a happy EHCI camper, and is totally
> able to read codepage 8 on EHCI.
>
> However, if I put it behind a USB-1 hub on the EHCI port, I see the same
> problems I saw with OHCI.
Can you be more clear? Is that
(EHCI/OHCI) root port --> USB 2.0 hub --> USB 1.1 hub --> storage device
Or instead
(EHCI/OHCI) root port --> USB 1.1 hub --> storage device
The former is certainly using EHCI, and the transaction translator in
that USB 2.0 hub ... but I'd expect it to give a different failure mode.
Maybe the same net result, but a different fault code (not -EOVERFLOW),
and likely different recovery procedure in usb-storage/scsi.
The latter is identical with the OHCI-only case, the only involvement
of EHCI being to hand that port over to the (OHCI) companion.
> So it is somehow related to USB-1 vs USB-2. I don't understand why the
> device would make a difference for something like mode page 8, but it
> looks like it transfers data fine for _small_ mode page requests under
> USB-1, and under USB-2 it works even for big ones.
It could be some kind of logic in the device forgetting that to use
the right maxpacket setting in that specific case.
I'm a bit more used to seeing failures the other way around, where
the storage adapter doesn't quite respond correctly at high speed.
- Dave
>
> Linus
>
>
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 16:22 ` David Brownell
@ 2003-09-22 16:31 ` Linus Torvalds
2003-09-22 17:13 ` David Brownell
2003-09-22 16:58 ` [linux-usb-devel] " Martin Diehl
1 sibling, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 16:31 UTC (permalink / raw)
To: David Brownell
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
On Mon, 22 Sep 2003, David Brownell wrote:
>
> Linus Torvalds wrote:
> > Interesting data-point: the device is a happy EHCI camper, and is
> > totally able to read codepage 8 on EHCI.
> >
> > However, if I put it behind a USB-1 hub on the EHCI port, I see the
> > same problems I saw with OHCI.
>
> Can you be more clear?
That is with the exact same external port on the computer, but with an
added external (old) USB 1 hub in between. I have no idea how the internal
EHCI logic switching ends up working, so I'll just append the full
/proc/bus/usb/devices output for you to judge.
(this is from a kernel that actually is able to access the device
correctly, by virtue of the sd.c change I outlined in the previous email).
Linus
----
T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.0-test5 uhci-hcd
S: Product=UHCI Host Controller
S: SerialNumber=0000:00:1d.2
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 11/900 us ( 1%), #Int= 1, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.0-test5 uhci-hcd
S: Product=UHCI Host Controller
S: SerialNumber=0000:00:1d.1
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 4
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0451 ProdID=1446 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=03 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=05e3 ProdID=0703 Rev= 0.04
S: Product=USB TO IDE
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 96mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.0-test5 uhci-hcd
S: Product=UHCI Host Controller
S: SerialNumber=0000:00:1d.0
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=04f9 ProdID=0100 Rev= 1.00
C:* #Ifs= 3 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=07(print) Sub=01 Prot=02 Driver=usblp
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 16 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=03(O) Atr=02(Bulk) MxPS= 16 Ivl=0ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=05(O) Atr=02(Bulk) MxPS= 16 Ivl=0ms
E: Ad=86(I) Atr=02(Bulk) MxPS= 16 Ivl=0ms
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.0-test5 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:1d.7
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=256ms
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 15:58 ` Patrick Mansfield
@ 2003-09-22 16:36 ` Alan Stern
0 siblings, 0 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 16:36 UTC (permalink / raw)
To: Patrick Mansfield
Cc: Christoph Hellwig, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, 22 Sep 2003, Patrick Mansfield wrote:
> On Mon, Sep 22, 2003 at 11:50:47AM -0400, Alan Stern wrote:
>
> > I don't care which version of the patch gets accepted, so long as
> > _something_ is done. Patrick, what do you think?
>
> I would rather we can modify the flags for any broken device and override
> a host's setting for known functioning devices. But let's get some patch
> applied.
Yes. But be sure to allow host drivers to adjust the flag within
slave_config(); slave_alloc() may be too early. (Although since sd.c is
the only driver that uses the flag, I guess it doesn't matter.)
> If there is a problem (per Linus' post) in the USB transport this isn't a
> real fix.
The problems that Linus and many other people are seeing aren't in the USB
transport; they are bugs in the device firmware. These bugs manifest as
errors reported by the transport drivers.
Alan Stern
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 15:49 ` Patrick Mansfield
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 16:37 ` Christoph Hellwig
2003-09-22 16:44 ` Patrick Mansfield
1 sibling, 1 reply; 39+ messages in thread
From: Christoph Hellwig @ 2003-09-22 16:37 UTC (permalink / raw)
To: Patrick Mansfield
Cc: Alan Stern, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 08:49:30AM -0700, Patrick Mansfield wrote:
> On Mon, Sep 22, 2003 at 04:11:04PM +0100, Christoph Hellwig wrote:
> > On Mon, Sep 22, 2003 at 03:31:24PM +0100, Christoph Hellwig wrote:
> > > Patch looks mostly fine to me, but please all flags should be unsigned instead
> > > of signed and scsi_devinfo.h needs some inclusion guards.
> >
> > Actually I think it could be made much simpler by killing the per-template
> > bflags and just setting the scsi_device flags from slave_alloc or
> > slave_configure. Could you cook up a patch like that?
>
> You mean add the flags to scsi_device rather than scsi_host?
> And allow setting the sdev->flags only in slave_alloc.
What I meant is not adding a blist flags member at all but rather
setting skip_ms_page_8 and skip_ms_page_3f from ->slave_alloc.
But I probably missed something obvious :)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 15:50 ` Alan Stern
2003-09-22 15:58 ` Patrick Mansfield
@ 2003-09-22 16:38 ` Christoph Hellwig
1 sibling, 0 replies; 39+ messages in thread
From: Christoph Hellwig @ 2003-09-22 16:38 UTC (permalink / raw)
To: Alan Stern
Cc: Patrick Mansfield, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 11:50:47AM -0400, Alan Stern wrote:
> Interestingly, my original patch was a lot like you describe. It can be
> found in
>
> http://marc.theaimsgroup.com/?l=linux-scsi&m=106340167723122&w=2
Yupp, that's what I meant. Much less complicated :)
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 16:42 ` Alan Stern
2003-09-22 17:23 ` Patrick Mansfield
2003-09-22 18:46 ` Alan Cox
2 siblings, 0 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 16:42 UTC (permalink / raw)
To: Linus Torvalds
Cc: Patrick Mansfield, Christoph Hellwig, Matthew Dharm,
David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Mon, 22 Sep 2003, Linus Torvalds wrote:
>
> [ Andries added to the cc ]
>
> On Mon, 22 Sep 2003, Patrick Mansfield wrote:
> >
> > I can modify the patch for that.
>
> How about just making the sd.c layer more robust? That has worked well in
> the past, and it seems wrong to have to add more and more flags.
<snip>
> Basically, Andries Brouwer's strategy of making sd.c more conservative has
> been a very successful one in the past. Why not continue on that?
I would be interested in hearing what Andries has to say. But there has
been a large number of reports from users trying out various patches, and
it's clear that no single strategy will work with every device. The
variety of ways in which these things fail is truly amazing.
Alan Stern
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 16:37 ` [linux-usb-devel] " Christoph Hellwig
@ 2003-09-22 16:44 ` Patrick Mansfield
2003-09-22 17:21 ` Christoph Hellwig
0 siblings, 1 reply; 39+ messages in thread
From: Patrick Mansfield @ 2003-09-22 16:44 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Alan Stern, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 05:37:32PM +0100, Christoph Hellwig wrote:
>
> What I meant is not adding a blist flags member at all but rather
> setting skip_ms_page_8 and skip_ms_page_3f from ->slave_alloc.
>
> But I probably missed something obvious :)
The current code allows us to set or clear a given bit, but not both. So
if we set them in slave_alloc, they can't be cleared without adding
other flags or code.
-- Patrick Mansfield
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 16:22 ` David Brownell
2003-09-22 16:31 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 16:58 ` Martin Diehl
2003-09-22 17:19 ` David Brownell
1 sibling, 1 reply; 39+ messages in thread
From: Martin Diehl @ 2003-09-22 16:58 UTC (permalink / raw)
To: David Brownell
Cc: Linus Torvalds, Alan Stern, Matthew Dharm, Greg KH,
USB development list, SCSI development list
On Mon, 22 Sep 2003, David Brownell wrote:
> > So it is somehow related to USB-1 vs USB-2. I don't understand why the
> > device would make a difference for something like mode page 8, but it
> > looks like it transfers data fine for _small_ mode page requests under
> > USB-1, and under USB-2 it works even for big ones.
>
> It could be some kind of logic in the device forgetting that to use
> the right maxpacket setting in that specific case.
Just a wild guess: If the device misbehaved on HS/FS transition and would
send packets >64 bytes in FS mode, I think it would explain the babble
issue:
* the 128 byte read which reported babble was the first IN transfer >64
byte and the babble condition was reported after receiving 64 bytes,
i.e. at a point where the HC has stored _less_ data than expected!
* limiting the transfer length to 64 bytes made the babble disappear
* works with EHCI because HS can handle bigger packets
Unfortunately I don't see an easy way to check the sourced packed size on
the wire - except using a bus analyzer of course.
I'm not sure how uhci behaves with packets exceeding FS max packet size -
if it doesn't fit into the read buffer it should report babble as well -
but what if the buffer is big enough and it's just the packet is to big?
IIRC the TD's actlen is 11-bit anyway. Could it be this device (mis)uses
HS maxpacket when operating at fullspeed?
Martin
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 16:31 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 17:13 ` David Brownell
2003-09-22 17:29 ` Linus Torvalds
0 siblings, 1 reply; 39+ messages in thread
From: David Brownell @ 2003-09-22 17:13 UTC (permalink / raw)
To: Linus Torvalds
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
[-- Attachment #1: Type: text/plain, Size: 2395 bytes --]
Linus Torvalds wrote:
> On Mon, 22 Sep 2003, David Brownell wrote:
>
>>Linus Torvalds wrote:
>>
>>>Interesting data-point: the device is a happy EHCI camper, and is
>>>totally able to read codepage 8 on EHCI.
>>>
>>>However, if I put it behind a USB-1 hub on the EHCI port, I see the
>>>same problems I saw with OHCI.
>>
>>Can you be more clear?
>
>
> That is with the exact same external port on the computer, but with an
> added external (old) USB 1 hub in between. I have no idea how the internal
> EHCI logic switching ends up working, so I'll just append the full
> /proc/bus/usb/devices output for you to judge.
In this case, because it's not "EHCI + USB 2.0 hub", it's still using
the OHCI companion controller. So that wasn't a new case.
Yes, that's awkward to figure out. "lsusb -t" doesn't know about device
speeds, but I've attached a Perl script (originally from Randy Dunlap)
that shows the usb tree structure more clearly. (Although it's still
not smart about trimming out some alternate interface settings, which
is why the cdc devices here have multiple "interface 1" entries.)
[db@xenon]$ usbtree
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=usb-ohci/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=usb-ohci/1p, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=usb-ohci/3p, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=usb-ohci/3p, 12M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/3p, 480M
|__ Port 2: Dev 2, If 0, Class=hub, Driver=hub/4p, 480M
|__ Port 1: Dev 7, If 0, Class=comm., Driver=CDCEther, 12M
|__ Port 1: Dev 7, If 1, Class=comm., Driver=CDCEther, 12M
|__ Port 1: Dev 7, If 1, Class=comm., Driver=CDCEther, 12M
|__ Port 3: Dev 8, If 0, Class=stor., Driver=usb-storage, 12M
|__ Port 4: Dev 9, If 0, Class=hub, Driver=hub/4p, 12M
|__ Port 3: Dev 6, If 0, Class=comm., Driver=CDCEther, 480M
|__ Port 3: Dev 6, If 1, Class=comm., Driver=CDCEther, 480M
|__ Port 3: Dev 6, If 1, Class=comm., Driver=CDCEther, 480M
[db@xenon]$
That's on a 2.4.23-pre host. The "ehci handling full speed device"
case always involves going through a 480 Mbit/s hub. If I were to
connect a highspeed-capable device to that dev9 hub, it'd run only
at full speed ... but it would do so through EHCI.
- Dave
[-- Attachment #2: usbtree --]
[-- Type: text/plain, Size: 2791 bytes --]
#!/usr/bin/perl
#
# Reads /proc/bus/usb/devices and selectively lists and/or
# interprets it.
#
# Originally written by Randy Dunlap.
#
$DEVFILENAME = "/proc/bus/usb/devices";
$PROGNAME = $0;
if (! open (DEVNUM, "<$DEVFILENAME"))
{
print "$PROGNAME: cannot open '$DEVFILENAME'\n";
exit 1;
}
while ($line = <DEVNUM>) # read a text line from DEVNUM
{
# skip all lines except those that begin with "T:", "S:", "D:" or "I:".
if (($line !~ "^T:") && ($line !~ "^I:") && ($line !~ "^D:") && ($line !~ "^S:"))
{
next; # to the next line
}
chomp $line; # remove line endings
# First convert '=' signs to spaces.
$line =~ tr/=/ /;
# and convert all '(' and ')' to spaces.
$line =~ tr/(/ /;
$line =~ tr/)/ /;
# split the line at spaces.
@fields = split / +/, $line;
if ($line =~ "^T:")
{
# split yields: $bus, $level, $parent, $port, $count, $devnum, $speed, $maxchild.
$bus = @fields [2];
$level = @fields [4];
$parent = @fields [6]; # parent devnum
$port = @fields [8] + 1; # make $port 1-based
$count = @fields [10];
$devnum = @fields [12];
$speed = @fields [14];
$maxchild = @fields [16];
$devclass = "?";
$intclass = "?";
$driver = "?";
$ifnum = "?";
$showclass = "?"; # derived from $devclass or $intclass
$lastif = "?"; # show only first altsetting
$HCtype = "?";
next;
} # end T: line
elsif ($line =~ "^D:")
{ # for D: line
$devclass = @fields [5];
next;
}
elsif ( $line =~ "^S:" )
{ # for S: line
if ( $level == 00 && $line =~ "hcd" )
{
$HCtype = @fields [4];
}
elsif ( $level == 00 && $line =~ "HCI" )
{
$HCtype = @fields [3];
}
next;
}
else
{ # for I: line
$intclass = @fields [9];
$ifnum = @fields [2];
$driver = @fields [15];
} # end I: line
if (($devclass eq ">ifc") || ($devclass eq "unk."))
{ # then use InterfaceClass, not DeviceClass
$showclass = $intclass;
$show = "interface";
}
else
{ # use DeviceClass
$showclass = $devclass;
$show = "device";
}
if ($level == 0)
{
# substitute read driver name
if ( $HCtype =~ "UHCI-alt" )
{
$HC = "uhci";
}
elsif ( $HCtype =~ "UHCI" )
{
$HC = "usb-uhci";
}
elsif ( $HCtype =~ "OHCI" )
{
$HC = "usb-ohci";
}
else
{
$HC = $HCtype;
}
print sprintf ("/: Bus $bus.Port $port: Dev $devnum, Class=root_hub, Driver=%s/%sp, %sM\n",
$HC, $maxchild, $speed );
}
elsif ($show eq "device" || $lastif ne $ifnum)
{
$temp = $level;
while ($temp >= 1)
{
print " ";
$temp--;
}
print sprintf ("|__ Port $port: Dev $devnum, If $ifnum, Class=$showclass, Driver=$driver%s, %sM\n",
($maxchild == 0) ? "" : ("/" . $maxchild . "p"),
$speed);
$lastif = $ifnum;
}
} # end while DEVNUM
close (DEVNUM);
# END.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 16:58 ` [linux-usb-devel] " Martin Diehl
@ 2003-09-22 17:19 ` David Brownell
0 siblings, 0 replies; 39+ messages in thread
From: David Brownell @ 2003-09-22 17:19 UTC (permalink / raw)
To: Martin Diehl
Cc: Linus Torvalds, Alan Stern, Matthew Dharm, Greg KH,
USB development list, SCSI development list
Martin Diehl wrote:
> Unfortunately I don't see an easy way to check the sourced packed size on
> the wire - except using a bus analyzer of course.
Right. There are not-easy ways to do this, involving tricked out
host controller drivers usable only to debug things like this, but
I wouldn't want to go there myself! :)
- Dave
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 16:44 ` Patrick Mansfield
@ 2003-09-22 17:21 ` Christoph Hellwig
2003-09-22 19:01 ` Alan Stern
0 siblings, 1 reply; 39+ messages in thread
From: Christoph Hellwig @ 2003-09-22 17:21 UTC (permalink / raw)
To: Patrick Mansfield
Cc: Alan Stern, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, Sep 22, 2003 at 09:44:04AM -0700, Patrick Mansfield wrote:
> The current code allows us to set or clear a given bit, but not both. So
> if we set them in slave_alloc, they can't be cleared without adding
> other flags or code.
If we want drivers to mess with blist flags that's the more general
solution, yes. But the blist flags really are a target thing and
I'd prefer to keep host drivers a bit away from this. Of course
this doesn't really work for the usb case where the host driver only
deals with emulated targets that are all completly hosed.
Maybe sdev->scsi_level should recognize a new level, SCSI_TOTALLY_B0RKED
for those usb-storage devices where the vendor somehow heard of the
spec but nothing that isn't excercised by the windows drivers has
the slightest chance of working..
>
> -- Patrick Mansfield
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
---end quoted text---
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:42 ` Alan Stern
@ 2003-09-22 17:23 ` Patrick Mansfield
2003-09-22 17:41 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 18:46 ` Alan Cox
2 siblings, 1 reply; 39+ messages in thread
From: Patrick Mansfield @ 2003-09-22 17:23 UTC (permalink / raw)
To: Linus Torvalds
Cc: Christoph Hellwig, Alan Stern, Matthew Dharm, David Brownell,
Greg KH, USB development list, SCSI development list,
Andries.Brouwer
On Mon, Sep 22, 2003 at 09:09:47AM -0700, Linus Torvalds wrote:
>
> (Btw, where are the different mode sense pages documented?)
>
The latest SCSI 3 draft standards are online as follows, the SCSI 2 specs
are also online at www.t10.org (.ORG!).
For block (applies to some USB mass storage) specific pages:
http://www.t10.org/ftp/t10/drafts/sbc/sbc-r08c.pdf
See page 105 section 7.1.3 of the above (table 73 the "Mode page codes").
General MODE SENSE stuff is in:
http://www.t10.org/ftp/t10/drafts/spc3/spc3r15.pdf
See page 151 section 6.9.1 for MODE SENSE, page 261 section 7.4.5 or so
for page codes applying to all devices.
-- Patrick Mansfield
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 17:13 ` David Brownell
@ 2003-09-22 17:29 ` Linus Torvalds
2003-09-22 17:49 ` [linux-usb-devel] " David Brownell
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 17:29 UTC (permalink / raw)
To: David Brownell
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
On Mon, 22 Sep 2003, David Brownell wrote:
>
> In this case, because it's not "EHCI + USB 2.0 hub", it's still using
> the OHCI companion controller. So that wasn't a new case.
Ok. Here's the broken case with an added usb-2 hub in between. It is
indeed a bit different.
Again, this case worked fine with the sd.c changes, so it does seem to be
all related to "big" transfers out of the mode page.
Linus
---
hub 1-4.1:0: new USB device on port 1, assigned address 4
usb-storage: USB Mass Storage device detected
usb-storage: act_altsetting is 0, id_index is 76
usb-storage: -- associate_dev
usb-storage: Transport: Bulk
usb-storage: Protocol: Transparent SCSI
usb-storage: Endpoints: In: 0xe9d80140 Out: 0xe9d80154 Int: 0x00000000 (Period 0)
usb-storage: usb_stor_control_msg: rq=fe rqtype=a1 value=0000 index=00 len=1
usb-storage: GetMaxLUN command result is -32, data is 0
usb-storage: *** thread sleeping.
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command INQUIRY (6 bytes)
usb-storage: 12 00 00 00 24 00
usb-storage: Bulk Command S 0x43425355 T 0x1 L 36 F 128 Trg 0 LUN 0 CL 6
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes
usb-storage: Status code 0; transferred 36/36
usb-storage: -- transfer complete
usb-storage: Bulk data transfer result 0x0
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x1 R 0 Stat 0x0
usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command INQUIRY (6 bytes)
usb-storage: 12 00 00 00 25 00
usb-storage: Bulk Command S 0x43425355 T 0x2 L 37 F 128 Trg 0 LUN 0 CL 6
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 37 bytes
usb-storage: Status code 0; transferred 36/37
usb-storage: -- short transfer
usb-storage: Bulk data transfer result 0x1
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x2 R 0 Stat 0x0
usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
Vendor: TOSHIBA Model: THNCF1G02MA Rev: 0811
Type: Direct-Access ANSI SCSI revision: 02
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command TEST_UNIT_READY (6 bytes)
usb-storage: 00 00 00 00 00 00
usb-storage: Bulk Command S 0x43425355 T 0x3 L 0 F 0 Trg 0 LUN 0 CL 6
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x3 R 0 Stat 0x0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command READ_CAPACITY (10 bytes)
usb-storage: 25 00 00 00 00 00 00 00 00 00
usb-storage: Bulk Command S 0x43425355 T 0x4 L 8 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
usb-storage: Status code 0; transferred 8/8
usb-storage: -- transfer complete
usb-storage: Bulk data transfer result 0x0
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x4 R 0 Stat 0x0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
SCSI device sda: 2000880 512-byte hdwr sectors (1024 MB)
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 3f 00 00 00 00 00 08 00
usb-storage: Bulk Command S 0x43425355 T 0x5 L 8 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
usb-storage: Status code 0; transferred 8/8
usb-storage: -- transfer complete
usb-storage: Bulk data transfer result 0x0
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x5 R 0 Stat 0x0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
sda: Write Protect is off
sda: Mode Sense: 06 00 00 00
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 08 00 00 00 00 00 08 00
usb-storage: Bulk Command S 0x43425355 T 0x6 L 8 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
usb-storage: Status code 0; transferred 8/8
usb-storage: -- transfer complete
usb-storage: Bulk data transfer result 0x0
usb-storage: Attempting to get CSW...
usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes
usb-storage: Status code 0; transferred 13/13
usb-storage: -- transfer complete
usb-storage: Bulk status result = 0
usb-storage: Bulk Status S 0x53425355 T 0x6 R 0 Stat 0x0
usb-storage: scsi cmd done, result=0x0
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 08 00 00 00 00 00 80 00
usb-storage: Bulk Command S 0x43425355 T 0x7 L 128 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 128 bytes
usb-storage: Status code -32; transferred 0/128
usb-storage: clearing endpoint halt for pipe 0xc0008480
usb-storage: usb_stor_control_msg: rq=01 rqtype=02 value=0000 index=81 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: usb_stor_clear_halt: result = -104
usb-storage: Bulk data transfer result 0x4
usb-storage: -- transport indicates error, resetting
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: scsi cmd done, result=0x70000
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 08 00 00 00 00 00 80 00
usb-storage: Bulk Command S 0x43425355 T 0x8 L 128 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 128 bytes
usb-storage: Status code -32; transferred 0/128
usb-storage: clearing endpoint halt for pipe 0xc0008480
usb-storage: usb_stor_control_msg: rq=01 rqtype=02 value=0000 index=81 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: usb_stor_clear_halt: result = -104
usb-storage: Bulk data transfer result 0x4
usb-storage: -- transport indicates error, resetting
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: scsi cmd done, result=0x70000
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 08 00 00 00 00 00 80 00
usb-storage: Bulk Command S 0x43425355 T 0x9 L 128 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: Status code 0; transferred 31/31
usb-storage: -- transfer complete
usb-storage: Bulk command transfer result=0
usb-storage: usb_stor_bulk_transfer_buf: xfer 128 bytes
usb-storage: Status code -32; transferred 0/128
usb-storage: clearing endpoint halt for pipe 0xc0008480
usb-storage: usb_stor_control_msg: rq=01 rqtype=02 value=0000 index=81 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: usb_stor_clear_halt: result = -104
usb-storage: Bulk data transfer result 0x4
usb-storage: -- transport indicates error, resetting
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: scsi cmd done, result=0x70000
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command MODE_SENSE_10 (10 bytes)
usb-storage: 5a 00 08 00 00 00 00 00 80 00
usb-storage: Bulk Command S 0x43425355 T 0xa L 128 F 128 Trg 0 LUN 0 CL 10
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: command_abort called
usb-storage: usb_stor_stop_transport called
usb-storage: -- cancelling URB
usb-storage: Status code -104; transferred 0/31
usb-storage: -- transfer cancelled
usb-storage: Bulk command transfer result=4
usb-storage: -- command was aborted
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: scsi command aborted
usb-storage: *** thread sleeping.
usb-storage: queuecommand called
usb-storage: *** thread awakened.
usb-storage: Command TEST_UNIT_READY (6 bytes)
usb-storage: 00 00 00 00 00 00
usb-storage: Bulk Command S 0x43425355 T 0xa L 0 F 0 Trg 0 LUN 0 CL 6
usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes
usb-storage: command_abort called
usb-storage: usb_stor_stop_transport called
usb-storage: -- cancelling URB
usb-storage: Status code -104; transferred 0/31
usb-storage: -- transfer cancelled
usb-storage: Bulk command transfer result=4
usb-storage: -- command was aborted
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: scsi command aborted
usb-storage: *** thread sleeping.
usb-storage: device_reset called
usb-storage: usb_stor_Bulk_reset called
usb-storage: usb_stor_control_msg: rq=ff rqtype=21 value=0000 index=00 len=0
usb-storage: Timeout -- cancelling URB
usb-storage: Soft reset failed: -104
usb-storage: bus_reset called
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 17:23 ` Patrick Mansfield
@ 2003-09-22 17:41 ` Linus Torvalds
2003-09-22 17:55 ` James Bottomley
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 17:41 UTC (permalink / raw)
To: Patrick Mansfield
Cc: Christoph Hellwig, Alan Stern, Matthew Dharm, David Brownell,
Greg KH, USB development list, SCSI development list,
Andries.Brouwer
On Mon, 22 Sep 2003, Patrick Mansfield wrote:
> On Mon, Sep 22, 2003 at 09:09:47AM -0700, Linus Torvalds wrote:
> >
> > (Btw, where are the different mode sense pages documented?)
>
> The latest SCSI 3 draft standards are online as follows, the SCSI 2 specs
> are also online at www.t10.org (.ORG!).
>
> For block (applies to some USB mass storage) specific pages:
>
> http://www.t10.org/ftp/t10/drafts/sbc/sbc-r08c.pdf
>
> See page 105 section 7.1.3 of the above (table 73 the "Mode page codes").
Ok, thanks. In particular, it seems to be pointless to read anything past
byte 20 - nothing past there is even defined.
What's the general sense of things - for a random SCSI device with bugs
(and they all have _some_ sort of bugs, let's not just rain on USB here),
is it saner to try to read just the bytes we need (3 bytes: page code,
page size and the cache bits), or the full 20 bytes?
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 17:29 ` Linus Torvalds
@ 2003-09-22 17:49 ` David Brownell
2003-09-22 18:40 ` Linus Torvalds
0 siblings, 1 reply; 39+ messages in thread
From: David Brownell @ 2003-09-22 17:49 UTC (permalink / raw)
To: Linus Torvalds
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
Linus Torvalds wrote:
> On Mon, 22 Sep 2003, David Brownell wrote:
>
>>In this case, because it's not "EHCI + USB 2.0 hub", it's still using
>>the OHCI companion controller. So that wasn't a new case.
>
>
> Ok. Here's the broken case with an added usb-2 hub in between. It is
> indeed a bit different.
Yes. Instead of getting 64/128 bytes transferred, with -EOVERFLOW
reported, it gets 0/128, with -EPIPE. And the recovery got a bit
confused; it's a STALL but not from the device, it's from the hub.
It might be worth making EHCI use a different code in that case,
if this class of TT-related errors starts to be trouble.
> Again, this case worked fine with the sd.c changes, so it does seem to be
> all related to "big" transfers out of the mode page.
Or at any rate, "big enough" to confuse the device.
Thanks for the additional test results.
- Dave
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 17:41 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-22 17:55 ` James Bottomley
2003-09-22 19:55 ` [linux-usb-devel] " Linus Torvalds
0 siblings, 1 reply; 39+ messages in thread
From: James Bottomley @ 2003-09-22 17:55 UTC (permalink / raw)
To: Linus Torvalds
Cc: Patrick Mansfield, Christoph Hellwig, Alan Stern, Matthew Dharm,
David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Mon, 2003-09-22 at 12:41, Linus Torvalds wrote:
> Ok, thanks. In particular, it seems to be pointless to read anything past
> byte 20 - nothing past there is even defined.
>
> What's the general sense of things - for a random SCSI device with bugs
> (and they all have _some_ sort of bugs, let's not just rain on USB here),
> is it saner to try to read just the bytes we need (3 bytes: page code,
> page size and the cache bits), or the full 20 bytes?
Generally, we used to do that...we did run across devices (I won't say
which) which tried to send more...i.e. there was a minimum size they
wouldn't transfer below. By and large, I think it was the headers of
translated commands, though, so as long as we ask for the header +
minimum we need, we should be safe.
I think we could try 4 bytes for this (even to avoid wide residue
problems) and see how it goes.
James
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 17:49 ` [linux-usb-devel] " David Brownell
@ 2003-09-22 18:40 ` Linus Torvalds
2003-09-22 19:14 ` Alan Stern
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 18:40 UTC (permalink / raw)
To: David Brownell
Cc: Alan Stern, Matthew Dharm, Greg KH, USB development list,
SCSI development list
On Mon, 22 Sep 2003, David Brownell wrote:
> > Again, this case worked fine with the sd.c changes, so it does seem to be
> > all related to "big" transfers out of the mode page.
>
> Or at any rate, "big enough" to confuse the device.
Yes. Additional testing (making the code just increase the size of the
transfer until it fails) shows that a size of 63 still works, but a size
of 64 bytes fails.
Actually - with a 64-byte transfer, we appear to get the 64 bytes ok, but
the subsequent CSW status word read fails, so the 64-byte case seems to be
the one that starts confusing the device.
If I remember right, USB-1 "big packets" are 64 bytes in size, and a
64-byte bulk transfer would be two packets (one full-sized one, one
zero-sized one). So this seems to support the notion that the device is
fine as long as it can fit the whole bulk transfer in just one packet.
Which cleanly explains why EHCI "just worked".
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:42 ` Alan Stern
2003-09-22 17:23 ` Patrick Mansfield
@ 2003-09-22 18:46 ` Alan Cox
2 siblings, 0 replies; 39+ messages in thread
From: Alan Cox @ 2003-09-22 18:46 UTC (permalink / raw)
To: Linus Torvalds
Cc: Patrick Mansfield, Christoph Hellwig, Alan Stern, Matthew Dharm,
David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Llu, 2003-09-22 at 17:09, Linus Torvalds wrote:
> - page len=1538 (pretty obviously crap)
> - header len=8 (correct)
> - block descriptor len=0 (correct)
1538 smells like they forgot to clear the top byte
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
@ 2003-09-22 18:55 Andries.Brouwer
0 siblings, 0 replies; 39+ messages in thread
From: Andries.Brouwer @ 2003-09-22 18:55 UTC (permalink / raw)
To: patmans, torvalds
Cc: Andries.Brouwer, david-b, greg, hch, linux-scsi, linux-usb-devel,
mdharm-usb, stern
> Basically, Andries Brouwer's strategy of making sd.c more conservative has
> been a very successful one in the past. Why not continue on that?
% I would be interested in hearing what Andries has to say. ...
% The variety of ways in which these things fail is truly amazing.
Yes.
We have just seen this for keyboards: keypresses work, modifier key
releases work, and as soon as one assumes anything more there turn
out to be keyboards that fail.
Similarly, USB storage devices tend to fail whatever one tries,
and only systematically work if one does precisely what Windows
does. For SCSI disks things are not nearly as bad - there are
only a few manufacturers and they mostly produce quality stuff.
This means that carefully reading the SCSI standard is a useful
activity if one writes for SCSI disks. But for USB storage it
is more productive to trace the commands the various flavours
of Windows send.
(Yes, I am willing to collect whatever people send me, and put up
a web page describing the Windows way of addressing USB storage.)
So, I agree with Linus (and with myself :-)) - in the absence of
precise knowledge about the device and about its Windows drivers
all that is left is being as conservative as possible.
And I agree with Alan - even though being careful is a very good idea,
it does not help in all cases.
There are some general things we can do - for CF cards and the like
we probably do not want to read the cache type - USB is hot pluggable,
so it should not be necessary to send a flush cache command at shutdown.
Today I see
if (sdkp->media_present) {
sd_read_capacity(sdkp, disk->disk_name, sreq, buffer);
if (sdp->removable)
sd_read_write_protect_flag(sdkp, disk->disk_name,
sreq, buffer);
sd_read_cache_type(sdkp, disk->disk_name, sreq, buffer);
}
and I suppose we could skip sd_read_cache_type() in the
hot-pluggable case - a flag that USB storage could set.
Andries
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 17:21 ` Christoph Hellwig
@ 2003-09-22 19:01 ` Alan Stern
0 siblings, 0 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 19:01 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Patrick Mansfield, Matthew Dharm, Linus Torvalds, David Brownell,
Greg KH, USB development list, SCSI development list
On Mon, 22 Sep 2003, Christoph Hellwig wrote:
> If we want drivers to mess with blist flags that's the more general
> solution, yes. But the blist flags really are a target thing and
> I'd prefer to keep host drivers a bit away from this. Of course
> this doesn't really work for the usb case where the host driver only
> deals with emulated targets that are all completly hosed.
>
> Maybe sdev->scsi_level should recognize a new level, SCSI_TOTALLY_B0RKED
> for those usb-storage devices where the vendor somehow heard of the
> spec but nothing that isn't excercised by the windows drivers has
> the slightest chance of working..
Please be careful when setting this up. The mode-sense pages are vitally
important for USB CD devices, and they all seem to work fine. It's just
the disk-type devices that have been causing trouble.
Many of them seem to share the failure mode observed by Linus: when asked
to send 128 bytes of m-s page 8 they apparently forget that the connection
is only full-speed with a 64-byte packet maximum, and they try to send all
128 bytes in a single packet. But other failure modes have cropped up as
well.
Alan Stern
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-22 18:40 ` Linus Torvalds
@ 2003-09-22 19:14 ` Alan Stern
0 siblings, 0 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-22 19:14 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Brownell, Matthew Dharm, Greg KH, USB development list,
SCSI development list
On Mon, 22 Sep 2003, Linus Torvalds wrote:
> Yes. Additional testing (making the code just increase the size of the
> transfer until it fails) shows that a size of 63 still works, but a size
> of 64 bytes fails.
>
> Actually - with a 64-byte transfer, we appear to get the 64 bytes ok, but
> the subsequent CSW status word read fails, so the 64-byte case seems to be
> the one that starts confusing the device.
>
> If I remember right, USB-1 "big packets" are 64 bytes in size, and a
> 64-byte bulk transfer would be two packets (one full-sized one, one
> zero-sized one).
It's not quite that simple. If the host requested a transfer that was
larger than 64 bytes and the device only had 64 bytes of data available,
then yes, it would send a 64-byte packet followed by a short 0-byte packet
to indicate an early termination. But if (as in this case) the host
requested a 64-byte transfer, the device would send exactly those 64 bytes
in a single packet and nothing else -- there being no need to indicate an
early termination.
> So this seems to support the notion that the device is
> fine as long as it can fit the whole bulk transfer in just one packet.
>
> Which cleanly explains why EHCI "just worked".
Alan Stern
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 17:55 ` James Bottomley
@ 2003-09-22 19:55 ` Linus Torvalds
2003-09-23 17:47 ` Ruud Linders
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-22 19:55 UTC (permalink / raw)
To: James Bottomley
Cc: Patrick Mansfield, Christoph Hellwig, Alan Stern, Matthew Dharm,
David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On 22 Sep 2003, James Bottomley wrote:
>
> I think we could try 4 bytes for this (even to avoid wide residue
> problems) and see how it goes.
How about just trusting the size (and as far as I can tell from the SCSI
specs, the size is the size _without_ the header and block descriptors),
and capping it at 20?
If the device reports a size that is smaller than the required one (3), we
just fail the request - instead of doing a small read and then making
decisions on data that isn't even there, like we used to do!
(The old code would use the "size" as the read length argument, which
really looks fundamentally wrong. At the very least it should add in the
header length etc).
Can people try this attached patch? It looks bigger than it is - in order
to do sane error handling for the "size is too small" case I re-organized
the thing a bit. The real change is just
- capping size at 20 (real value) instead of 128 (random crud)
- properly add in the header and block descriptor sizes
Comments?
Linus
-----
===== drivers/scsi/sd.c 1.134 vs edited =====
--- 1.134/drivers/scsi/sd.c Wed Jun 25 04:47:26 2003
+++ edited/drivers/scsi/sd.c Mon Sep 22 12:42:32 2003
@@ -1108,14 +1108,26 @@
/* cautiously ask */
res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer, 4, &data);
- if (scsi_status_is_good(res)) {
- /* that went OK, now ask for the proper length */
- len = data.length;
- if (len > 128)
- len = 128;
- res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer,
- len, &data);
- }
+ if (!scsi_status_is_good(res))
+ goto bad_sense;
+
+ /* that went OK, now ask for the proper length */
+ len = data.length;
+
+ /*
+ * We're only interested in the first three bytes, actually.
+ * But the data cache page is defined for the first 20.
+ */
+ if (len < 3)
+ goto bad_sense;
+ if (len > 20)
+ len = 20;
+
+ /* Take headers and block descriptors into account */
+ len += data.header_length + data.block_descriptor_length;
+
+ /* Get the data */
+ res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer, len, &data);
if (scsi_status_is_good(res)) {
const char *types[] = {
@@ -1133,23 +1145,26 @@
printk(KERN_NOTICE "SCSI device %s: drive cache: %s\n",
diskname, types[ct]);
+
+ return;
+ }
+
+bad_sense:
+ if ((SRpnt->sr_sense_buffer[0] & 0x70) == 0x70
+ && (SRpnt->sr_sense_buffer[2] & 0x0f) == ILLEGAL_REQUEST
+ /* ASC 0x24 ASCQ 0x00: Invalid field in CDB */
+ && SRpnt->sr_sense_buffer[12] == 0x24
+ && SRpnt->sr_sense_buffer[13] == 0x00) {
+ printk(KERN_NOTICE "%s: cache data unavailable\n",
+ diskname);
} else {
- if ((SRpnt->sr_sense_buffer[0] & 0x70) == 0x70
- && (SRpnt->sr_sense_buffer[2] & 0x0f) == ILLEGAL_REQUEST
- /* ASC 0x24 ASCQ 0x00: Invalid field in CDB */
- && SRpnt->sr_sense_buffer[12] == 0x24
- && SRpnt->sr_sense_buffer[13] == 0x00) {
- printk(KERN_NOTICE "%s: cache data unavailable\n",
- diskname);
- } else {
- printk(KERN_ERR "%s: asking for cache data failed\n",
- diskname);
- }
- printk(KERN_ERR "%s: assuming drive cache: write through\n",
+ printk(KERN_ERR "%s: asking for cache data failed\n",
diskname);
- sdkp->WCE = 0;
- sdkp->RCD = 0;
}
+ printk(KERN_ERR "%s: assuming drive cache: write through\n",
+ diskname);
+ sdkp->WCE = 0;
+ sdkp->RCD = 0;
}
/**
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Re: USB storage problems on OHCI..
2003-09-23 14:51 [linux-usb-devel] " James Bottomley
@ 2003-09-23 15:23 ` Alan Stern
0 siblings, 0 replies; 39+ messages in thread
From: Alan Stern @ 2003-09-23 15:23 UTC (permalink / raw)
To: James Bottomley
Cc: Andries.Brouwer, david-b, greg, hch, SCSI Mailing List,
linux-usb-devel, mdharm-usb, Patrick Mansfield, Linus Torvalds
On 23 Sep 2003, James Bottomley wrote:
> On Tue, 2003-09-23 at 09:37, Andries.Brouwer@cwi.nl wrote:
>
> > Pulling out a device while it is actively reading or writing
> > will probably break something. But if a device is hot-pluggable
> > it should be OK to pull it out when it has been inactive for
> > a second or so.
> >
> > But if that is really true, then it should not be necessary
> > to send the device any "synchronise cache" commands when we
> > shut down.
>
> For a FC array, suprise unplug would be caveat emptor (possibly because
> fibre connection transience is going to cause it to come back), but
> notified unplug would still want to flush the cache on the assumption
> the next action might be to power down the array.
Is there any way to notify the system that you are about to unplug a
drive? It seems to me that the best approach is to flush the cache on an
unmount. People naturally assume that it's safe to unplug a device once
it has been unmounted, and they also realize that it's unsafe to unplug a
device containing a mounted filesystem.
That doesn't address the problem of raw device access, but perhaps
whatever ioctl is used by blockdev --flushbufs can also flush the cache.
Is there any harm in sending a SYNCHRONIZE command to a device that
doesn't need it (write-through cache)? Maybe doing that is less dangerous
than trying to read mode-sense page 8 on these buggy USB devices.
(Although I'm not aware of anyone who has tried the experiment.)
Alan Stern
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-22 19:55 ` [linux-usb-devel] " Linus Torvalds
@ 2003-09-23 17:47 ` Ruud Linders
2003-09-23 18:16 ` Linus Torvalds
0 siblings, 1 reply; 39+ messages in thread
From: Ruud Linders @ 2003-09-23 17:47 UTC (permalink / raw)
To: Linus Torvalds
Cc: James Bottomley, Patrick Mansfield, Christoph Hellwig, Alan Stern,
Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
I tried the patch but it doesn't work for me using an USB-2 Memory stick
"DiskonKey" on an USB-2 port (with uhci_hcd & ehci_hcd loaded).
After a 3 minute time-out I get
"SCSI device sda: drive cache: write through"
and the device starts working just fine.
Unloading the ehci_hcd module doesn't make any difference.
Only when ripping out the whole mode-sense call it works immediately :-)
so it appears the device is just unhappy about the sd_do_mode_sense.
_
Regards,
Ruud Linders
Linus Torvalds wrote:
> On 22 Sep 2003, James Bottomley wrote:
>
>>I think we could try 4 bytes for this (even to avoid wide residue
>>problems) and see how it goes.
>
>
> How about just trusting the size (and as far as I can tell from the SCSI
> specs, the size is the size _without_ the header and block descriptors),
> and capping it at 20?
>
> If the device reports a size that is smaller than the required one (3), we
> just fail the request - instead of doing a small read and then making
> decisions on data that isn't even there, like we used to do!
>
> (The old code would use the "size" as the read length argument, which
> really looks fundamentally wrong. At the very least it should add in the
> header length etc).
>
> Can people try this attached patch? It looks bigger than it is - in order
> to do sane error handling for the "size is too small" case I re-organized
> the thing a bit. The real change is just
>
> - capping size at 20 (real value) instead of 128 (random crud)
> - properly add in the header and block descriptor sizes
>
> Comments?
>
> Linus
>
> -----
> ===== drivers/scsi/sd.c 1.134 vs edited =====
> --- 1.134/drivers/scsi/sd.c Wed Jun 25 04:47:26 2003
> +++ edited/drivers/scsi/sd.c Mon Sep 22 12:42:32 2003
> @@ -1108,14 +1108,26 @@
> /* cautiously ask */
> res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer, 4, &data);
>
> - if (scsi_status_is_good(res)) {
> - /* that went OK, now ask for the proper length */
> - len = data.length;
> - if (len > 128)
> - len = 128;
> - res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer,
> - len, &data);
> - }
> + if (!scsi_status_is_good(res))
> + goto bad_sense;
> +
> + /* that went OK, now ask for the proper length */
> + len = data.length;
> +
> + /*
> + * We're only interested in the first three bytes, actually.
> + * But the data cache page is defined for the first 20.
> + */
> + if (len < 3)
> + goto bad_sense;
> + if (len > 20)
> + len = 20;
> +
> + /* Take headers and block descriptors into account */
> + len += data.header_length + data.block_descriptor_length;
> +
> + /* Get the data */
> + res = sd_do_mode_sense(SRpnt, dbd, modepage, buffer, len, &data);
>
> if (scsi_status_is_good(res)) {
> const char *types[] = {
> @@ -1133,23 +1145,26 @@
>
> printk(KERN_NOTICE "SCSI device %s: drive cache: %s\n",
> diskname, types[ct]);
> +
> + return;
> + }
> +
> +bad_sense:
> + if ((SRpnt->sr_sense_buffer[0] & 0x70) == 0x70
> + && (SRpnt->sr_sense_buffer[2] & 0x0f) == ILLEGAL_REQUEST
> + /* ASC 0x24 ASCQ 0x00: Invalid field in CDB */
> + && SRpnt->sr_sense_buffer[12] == 0x24
> + && SRpnt->sr_sense_buffer[13] == 0x00) {
> + printk(KERN_NOTICE "%s: cache data unavailable\n",
> + diskname);
> } else {
> - if ((SRpnt->sr_sense_buffer[0] & 0x70) == 0x70
> - && (SRpnt->sr_sense_buffer[2] & 0x0f) == ILLEGAL_REQUEST
> - /* ASC 0x24 ASCQ 0x00: Invalid field in CDB */
> - && SRpnt->sr_sense_buffer[12] == 0x24
> - && SRpnt->sr_sense_buffer[13] == 0x00) {
> - printk(KERN_NOTICE "%s: cache data unavailable\n",
> - diskname);
> - } else {
> - printk(KERN_ERR "%s: asking for cache data failed\n",
> - diskname);
> - }
> - printk(KERN_ERR "%s: assuming drive cache: write through\n",
> + printk(KERN_ERR "%s: asking for cache data failed\n",
> diskname);
> - sdkp->WCE = 0;
> - sdkp->RCD = 0;
> }
> + printk(KERN_ERR "%s: assuming drive cache: write through\n",
> + diskname);
> + sdkp->WCE = 0;
> + sdkp->RCD = 0;
> }
>
> /**
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> linux-usb-devel@lists.sourceforge.net
> To unsubscribe, use the last form field at:
> https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
>
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-23 17:47 ` Ruud Linders
@ 2003-09-23 18:16 ` Linus Torvalds
2003-09-24 16:40 ` Ruud Linders
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-23 18:16 UTC (permalink / raw)
To: Ruud Linders
Cc: James Bottomley, Patrick Mansfield, Christoph Hellwig, Alan Stern,
Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Tue, 23 Sep 2003, Ruud Linders wrote:
>
> I tried the patch but it doesn't work for me using an USB-2 Memory stick
> "DiskonKey" on an USB-2 port (with uhci_hcd & ehci_hcd loaded).
>
> After a 3 minute time-out I get
> "SCSI device sda: drive cache: write through"
> and the device starts working just fine.
Is this different from a plain kernel _without_ the patch?
> Unloading the ehci_hcd module doesn't make any difference.
> Only when ripping out the whole mode-sense call it works immediately :-)
> so it appears the device is just unhappy about the sd_do_mode_sense.
Yes, I think we might want to mark USB devices as being write-through by
default. That said, I think the patch is still better than what we have
now (which just doesn't make any sense at all).
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-23 18:16 ` Linus Torvalds
@ 2003-09-24 16:40 ` Ruud Linders
2003-09-24 16:53 ` Linus Torvalds
0 siblings, 1 reply; 39+ messages in thread
From: Ruud Linders @ 2003-09-24 16:40 UTC (permalink / raw)
To: Linus Torvalds
Cc: James Bottomley, Patrick Mansfield, Christoph Hellwig, Alan Stern,
Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
Linus Torvalds wrote:
> On Tue, 23 Sep 2003, Ruud Linders wrote:
>
>>I tried the patch but it doesn't work for me using an USB-2 Memory stick
>>"DiskonKey" on an USB-2 port (with uhci_hcd & ehci_hcd loaded).
>>
>>After a 3 minute time-out I get
>> "SCSI device sda: drive cache: write through"
>>and the device starts working just fine.
>
>
> Is this different from a plain kernel _without_ the patch?
>
No difference.
>
>>Unloading the ehci_hcd module doesn't make any difference.
>>Only when ripping out the whole mode-sense call it works immediately :-)
>>so it appears the device is just unhappy about the sd_do_mode_sense.
>
>
> Yes, I think we might want to mark USB devices as being write-through by
> default. That said, I think the patch is still better than what we have
> now (which just doesn't make any sense at all).
>
Fully agree here, 2.4.2x doesn't appear to do this mode_sense checking
and works with all the usb-mass-storage devices I tried.
> Linus
>
>
_
Ruud
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-24 16:40 ` Ruud Linders
@ 2003-09-24 16:53 ` Linus Torvalds
2003-09-26 18:43 ` Alan Stern
0 siblings, 1 reply; 39+ messages in thread
From: Linus Torvalds @ 2003-09-24 16:53 UTC (permalink / raw)
To: Ruud Linders
Cc: James Bottomley, Patrick Mansfield, Christoph Hellwig, Alan Stern,
Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Wed, 24 Sep 2003, Ruud Linders wrote:
> >
> > Is this different from a plain kernel _without_ the patch?
>
> No difference.
Ok. I committed my version as "better than what is there now", but clearly
it's not good enough.
So we should really add code to sd_read_cache_type() to default to
write-through for USB devices. The question is, what kind of flag do we
want to use?
We already have the combination "removable && !lockable", which would make
a lot of sense. But I don't think USB even touches those flags, and
"removable" wrt USB is actually a bit ambiguous (in the USB unplug case,
it's actually the _controller_ that is removed, not the medium).
Suggestions? Just add a new flag like the "use_10_for_ms" flag?
Linus
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-24 16:53 ` Linus Torvalds
@ 2003-09-26 18:43 ` Alan Stern
2003-10-03 14:18 ` Alan Stern
0 siblings, 1 reply; 39+ messages in thread
From: Alan Stern @ 2003-09-26 18:43 UTC (permalink / raw)
To: Linus Torvalds
Cc: Ruud Linders, James Bottomley, Patrick Mansfield,
Christoph Hellwig, Matthew Dharm, David Brownell, Greg KH,
USB development list, SCSI development list, Andries.Brouwer
On Wed, 24 Sep 2003, Linus Torvalds wrote:
> Ok. I committed my version as "better than what is there now", but clearly
> it's not good enough.
>
> So we should really add code to sd_read_cache_type() to default to
> write-through for USB devices. The question is, what kind of flag do we
> want to use?
>
> We already have the combination "removable && !lockable", which would make
> a lot of sense. But I don't think USB even touches those flags, and
> "removable" wrt USB is actually a bit ambiguous (in the USB unplug case,
> it's actually the _controller_ that is removed, not the medium).
>
> Suggestions? Just add a new flag like the "use_10_for_ms" flag?
Here's a suggestion. This patch (as115) implements the concepts brought
up by Andries and Linus. It adds a flag "randomly_unpluggable", meaning
that a host or device might be disconnected at some unknown and
uncontrollable time. The flag is present in the host template, the host
structure (copied from the template), and the device structure (inherited
from the host), and it can be changed at will. (Remember that a USB mass
storage device is treated as a SCSI host -- in fact, some such devices
actually _are_ hosts.)
The only place the flag gets used is in sd.c, where it prevents
sd_read_cache_type() from being called. And the only place the flag gets
set is in the usb-storage host template.
Although not ideal, this is one of the simplest ways of doing what we
want. One thing that should be added is some way to SYNCHRONIZE the cache
at the appropriate times. Unfortunately, I don't know when those times
should be -- unmount of course, but what else in addition? (Also I don't
know how to tell at the level of sd.c when an unmount has occurred.) And
I don't know what the effect of a SYNCHRONIZE command will be on a USB
device that doesn't like it; only experimentation with different devices
can answer that.
On the other hand, perhaps it's not necessary to worry about this. Any
hot-unpluggable device compatible with the Windows/MacOS mass market ought
to survive an impromptu disconnect without losing any data.
This patch applies to 2.6.0-test5-bk10.
Alan Stern
===== include/scsi/scsi_device.h 1.5 vs edited =====
--- 1.5/include/scsi/scsi_device.h Fri Sep 5 07:48:41 2003
+++ edited/include/scsi/scsi_device.h Fri Sep 26 11:41:48 2003
@@ -85,6 +85,7 @@
* because we did a bus reset. */
unsigned use_10_for_rw:1; /* first try 10-byte read / write */
unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */
+ unsigned randomly_unpluggable:1; /* May disappear at any time */
unsigned no_start_on_add:1; /* do not issue start on add */
unsigned int device_blocked; /* Device returned QUEUE_FULL. */
===== include/scsi/scsi_host.h 1.3 vs edited =====
--- 1.3/include/scsi/scsi_host.h Thu Aug 14 18:37:32 2003
+++ edited/include/scsi/scsi_host.h Fri Sep 26 11:40:51 2003
@@ -312,6 +312,12 @@
*/
unsigned emulated:1;
+ /*
+ * True for hosts that may be unplugged at unpredictable times
+ * (e.g. USB)
+ */
+ unsigned randomly_unpluggable:1;
+
/*
* True if the driver wishes to use the generic block layer
* tag queueing functions
@@ -431,6 +437,7 @@
unsigned unchecked_isa_dma:1;
unsigned use_clustering:1;
unsigned highmem_io:1;
+ unsigned randomly_unpluggable:1;
unsigned use_blk_tcq:1;
/*
===== drivers/scsi/hosts.c 1.33 vs edited =====
--- 1.33/drivers/scsi/hosts.c Tue Sep 2 02:15:39 2003
+++ edited/drivers/scsi/hosts.c Fri Sep 26 11:44:41 2003
@@ -236,6 +236,7 @@
shost->cmd_per_lun = sht->cmd_per_lun;
shost->unchecked_isa_dma = sht->unchecked_isa_dma;
shost->use_clustering = sht->use_clustering;
+ shost->randomly_unpluggable = sht->randomly_unpluggable;
shost->use_blk_tcq = sht->use_blk_tcq;
if (sht->max_host_blocked)
===== drivers/scsi/sd.c 1.56 vs edited =====
--- 1.56/drivers/scsi/sd.c Fri Sep 5 12:16:39 2003
+++ edited/drivers/scsi/sd.c Fri Sep 26 11:51:38 2003
@@ -1206,7 +1206,9 @@
if (sdp->removable)
sd_read_write_protect_flag(sdkp, disk->disk_name,
sreq, buffer);
- sd_read_cache_type(sdkp, disk->disk_name, sreq, buffer);
+ if (!sdp->randomly_unpluggable)
+ sd_read_cache_type(sdkp, disk->disk_name, sreq,
+ buffer);
}
set_capacity(disk, sdkp->capacity);
===== drivers/scsi/scsi_scan.c 1.50 vs edited =====
--- 1.50/drivers/scsi/scsi_scan.c Fri Sep 5 12:16:39 2003
+++ edited/drivers/scsi/scsi_scan.c Fri Sep 26 11:49:14 2003
@@ -632,6 +632,7 @@
sdev->use_10_for_rw = 1;
sdev->use_10_for_ms = 0;
+ sdev->randomly_unpluggable = sdev->host->randomly_unpluggable;
if(sdev->host->hostt->slave_configure)
sdev->host->hostt->slave_configure(sdev);
===== drivers/usb/storage/scsiglue.c 1.59 vs edited =====
--- 1.59/drivers/usb/storage/scsiglue.c Mon Jul 28 14:29:04 2003
+++ edited/drivers/usb/storage/scsiglue.c Fri Sep 26 12:11:10 2003
@@ -324,6 +324,9 @@
/* emulated HBA */
.emulated = TRUE,
+ /* may be unplugged at any time */
+ .randomly_unpluggable = TRUE,
+
/* module management */
.module = THIS_MODULE
};
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-09-26 18:43 ` Alan Stern
@ 2003-10-03 14:18 ` Alan Stern
2003-10-03 15:05 ` James Bottomley
0 siblings, 1 reply; 39+ messages in thread
From: Alan Stern @ 2003-10-03 14:18 UTC (permalink / raw)
To: Linus Torvalds
Cc: Ruud Linders, James Bottomley, Patrick Mansfield,
Christoph Hellwig, Matthew Dharm, David Brownell, Greg KH,
USB development list, SCSI development list, Andries.Brouwer
There haven't been any replies to my suggestion from a week ago
http://marc.theaimsgroup.com/?l=linux-scsi&m=106462295800726&w=2
for a way to resolve the mode-sense page 8 problem. One way or another, I
wish somebody would do _something_ about this, particularly before
2.6.0-final comes out.
Alan Stern
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-10-03 14:18 ` Alan Stern
@ 2003-10-03 15:05 ` James Bottomley
2003-10-03 21:35 ` Patrick Mansfield
0 siblings, 1 reply; 39+ messages in thread
From: James Bottomley @ 2003-10-03 15:05 UTC (permalink / raw)
To: Alan Stern
Cc: Linus Torvalds, Ruud Linders, Patrick Mansfield,
Christoph Hellwig, Matthew Dharm, David Brownell, Greg KH,
USB development list, SCSI development list, Andries.Brouwer
On Fri, 2003-10-03 at 09:18, Alan Stern wrote:
> There haven't been any replies to my suggestion from a week ago
>
> http://marc.theaimsgroup.com/?l=linux-scsi&m=106462295800726&w=2
>
> for a way to resolve the mode-sense page 8 problem. One way or another, I
> wish somebody would do _something_ about this, particularly before
> 2.6.0-final comes out.
Well, the patch isn't quite correct because if it's not going to probe
the cache it should set up a write through cache (or disabled cache) as
the default.
Patrick's patch
http://marc.theaimsgroup.com/?l=linux-scsi&m=106366112221507
Does get this right.
But my principle objection, as I've stated before, is that it isn't true
that we don't need to manage the caches of hot pluggable devices, fibre
channel being the counter example.
Even for devices whose model is always forced remove, knowing the cache
type is valuable information (especially as writeback cache type would
be a rather grave error).
The reason not to try to read the cache type for USB is that some of the
devices barf on receiving the command. These type of devices are the
ones we don't want to make any attempt to manage the cache for, and I'd
like the flag name we settle on to reflect this.
However, if there's no further objections on the naming front, I'll put
Patrick's patch into the SCSI repository.
James
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [linux-usb-devel] Re: USB storage problems on OHCI..
2003-10-03 15:05 ` James Bottomley
@ 2003-10-03 21:35 ` Patrick Mansfield
0 siblings, 0 replies; 39+ messages in thread
From: Patrick Mansfield @ 2003-10-03 21:35 UTC (permalink / raw)
To: James Bottomley
Cc: Alan Stern, Linus Torvalds, Ruud Linders, Christoph Hellwig,
Matthew Dharm, David Brownell, Greg KH, USB development list,
SCSI development list, Andries.Brouwer
On Fri, Oct 03, 2003 at 10:05:52AM -0500, James Bottomley wrote:
> Well, the patch isn't quite correct because if it's not going to probe
> the cache it should set up a write through cache (or disabled cache) as
> the default.
Alan's original patch is included in my patch.
> Patrick's patch
>
> http://marc.theaimsgroup.com/?l=linux-scsi&m=106366112221507
>
> Does get this right.
I am re-rolling the patch based on current 2.6, plus a couple comments
Christoph had, I'll resend to you and linux-scsi.
> But my principle objection, as I've stated before, is that it isn't true
> that we don't need to manage the caches of hot pluggable devices, fibre
> channel being the counter example.
I agree - the type of transport does not indicate the capabilties of the
device. If connectors were free and took no space (yeh never), we would
have usb, firewire, spi, and fcp available on all disk drives.
But for some reason with USB, we are more likely to have devices that
cannot handle mode sense page 8 (cache). So shove some code into the
usb-storage driver, and make it possible to set policy allowing us to
disable page 8 for any device.
Though I do not see the utility in syncing the cache, especially given the
failure to figure out the caching method.
High end storage won't care (probably battery backed ram, redundant
storage, and separate out-of-band monitoring facilities).
If the cache sync fails, the best we can do is notify the user, we can't
reissue the write or even tell the user what block failed to make it to
disk, the best we can do is say "your hosed".
-- Patrick Mansfield
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2003-10-03 21:37 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20030922004943.E32009@one-eyed-alien.net>
2003-09-22 14:25 ` [linux-usb-devel] Re: USB storage problems on OHCI Alan Stern
2003-09-22 14:31 ` Christoph Hellwig
2003-09-22 15:11 ` Christoph Hellwig
2003-09-22 15:49 ` Patrick Mansfield
2003-09-22 16:09 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:42 ` Alan Stern
2003-09-22 17:23 ` Patrick Mansfield
2003-09-22 17:41 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 17:55 ` James Bottomley
2003-09-22 19:55 ` [linux-usb-devel] " Linus Torvalds
2003-09-23 17:47 ` Ruud Linders
2003-09-23 18:16 ` Linus Torvalds
2003-09-24 16:40 ` Ruud Linders
2003-09-24 16:53 ` Linus Torvalds
2003-09-26 18:43 ` Alan Stern
2003-10-03 14:18 ` Alan Stern
2003-10-03 15:05 ` James Bottomley
2003-10-03 21:35 ` Patrick Mansfield
2003-09-22 18:46 ` Alan Cox
2003-09-22 16:37 ` [linux-usb-devel] " Christoph Hellwig
2003-09-22 16:44 ` Patrick Mansfield
2003-09-22 17:21 ` Christoph Hellwig
2003-09-22 19:01 ` Alan Stern
2003-09-22 15:50 ` Alan Stern
2003-09-22 15:58 ` Patrick Mansfield
2003-09-22 16:36 ` [linux-usb-devel] " Alan Stern
2003-09-22 16:38 ` Christoph Hellwig
2003-09-22 15:29 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 16:22 ` David Brownell
2003-09-22 16:31 ` [linux-usb-devel] " Linus Torvalds
2003-09-22 17:13 ` David Brownell
2003-09-22 17:29 ` Linus Torvalds
2003-09-22 17:49 ` [linux-usb-devel] " David Brownell
2003-09-22 18:40 ` Linus Torvalds
2003-09-22 19:14 ` Alan Stern
2003-09-22 16:58 ` [linux-usb-devel] " Martin Diehl
2003-09-22 17:19 ` David Brownell
2003-09-22 18:55 Andries.Brouwer
-- strict thread matches above, loose matches on Subject: below --
2003-09-23 14:51 [linux-usb-devel] " James Bottomley
2003-09-23 15:23 ` Alan Stern
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox