public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [linux-usb-devel] Problem with external USB2.0 case and LG GSA 4040-B
       [not found] <200312132137.18128.cornelius.claussen@gmx.de>
@ 2003-12-15 20:49 ` Alan Stern
  2003-12-15 21:08   ` James Bottomley
  2003-12-16 18:36   ` [linux-usb-devel] " James Bottomley
  0 siblings, 2 replies; 3+ messages in thread
From: Alan Stern @ 2003-12-15 20:49 UTC (permalink / raw)
  To: Cornelius Claussen, Patrick Mansfield
  Cc: USB development list, SCSI development list

Patrick:

Cornelius Claussen reported the following problem with error recovery in
2.6.0-test11.  His device is one of those problem-prone Genesys Logic
units, a USB DVD drive.  The complete message and log can be found at

http://marc.theaimsgroup.com/?l=linux-usb-devel&m=107134787817252&w=2

Here's a condensed and annotated version of his log:

usb-storage: Command READ_10 (10 bytes)
usb-storage:  28 00 00 00 b6 91 00 00 2e 00
usb-storage: Status code -75; transferred 68096/94208
usb-storage: -- babble
usb-storage: -- transport indicates error, resetting
usb-storage: Soft reset done
usb-storage: scsi cmd done, result=0x70000

The device messed up; to recover we had to send it a soft reset command.
The scmd->result code was DID_ERROR << 16.  The SCSI layer retried the 
command:

usb-storage: Command READ_10 (10 bytes)
usb-storage:  28 00 00 00 b6 91 00 00 2e 00
usb-storage: -- transport indicates command failure
usb-storage: -- unexpectedly short transfer
usb-storage: Issuing auto-REQUEST_SENSE
usb-storage: -- code: 0x70, key: 0x6, ASC: 0x29, ASCQ: 0x0
usb-storage: Unit Attention: Power on, reset, or bus device reset occurred
usb-storage: scsi cmd done, result=0x2

The device reported the reset via Unit Attention.  The scmd->result code
was SAM_STAT_CHECK_CONDITION.  Presumably another retry at this point
would have worked.  Instead he got...

end_request: I/O error, dev sr1, sector 186948
Buffer I/O error on device sr1, logical block 46737
Buffer I/O error on device sr1, logical block 46738
etc.

In fact, another READ command queued shortly afterward,

usb-storage: Command READ_10 (10 bytes)
usb-storage:  28 00 00 00 b6 bf 00 00 3c 00
usb-storage: Bulk Status S 0x53425355 T 0xec9 R 2048 Stat 0x0
usb-storage: scsi cmd done, result=0x0

succeeded, albeit with a residue of 2048.  But by then it was too late, 
the original request had failed.

What's the right way to fix this?

Alan Stern



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Problem with external USB2.0 case and LG GSA 4040-B
  2003-12-15 20:49 ` [linux-usb-devel] Problem with external USB2.0 case and LG GSA 4040-B Alan Stern
@ 2003-12-15 21:08   ` James Bottomley
  2003-12-16 18:36   ` [linux-usb-devel] " James Bottomley
  1 sibling, 0 replies; 3+ messages in thread
From: James Bottomley @ 2003-12-15 21:08 UTC (permalink / raw)
  To: Alan Stern
  Cc: Cornelius Claussen, Patrick Mansfield, USB development list,
	SCSI development list

On Mon, 2003-12-15 at 15:49, Alan Stern wrote:
> Cornelius Claussen reported the following problem with error recovery in
> 2.6.0-test11.  His device is one of those problem-prone Genesys Logic
> units, a USB DVD drive.  The complete message and log can be found at

It looks like the driver sent a reset to the device on its own without
reporting it to the mid-layer.

There's an expecting_cc_ua flag in the scsi_device.  It gets set on
error recovery actions, or if the device does something to detect or
trigger a reset (that's the scsi_report_device_reset() and
scsi_report_bus_reset() API's).

James




-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
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] 3+ messages in thread

* Re: [linux-usb-devel] Problem with external USB2.0 case and LG GSA 4040-B
  2003-12-15 20:49 ` [linux-usb-devel] Problem with external USB2.0 case and LG GSA 4040-B Alan Stern
  2003-12-15 21:08   ` James Bottomley
@ 2003-12-16 18:36   ` James Bottomley
  1 sibling, 0 replies; 3+ messages in thread
From: James Bottomley @ 2003-12-16 18:36 UTC (permalink / raw)
  To: Alan Stern
  Cc: Cornelius Claussen, Patrick Mansfield, USB development list,
	SCSI development list

I've been thinking some more about this.  Although the driver is
apparently at fault here by issuing a reset without telling the
mid-layer, it might be useful to filter out other common ASC/ASCQ codes
in scsi_io_completion() we retry on "in the process of becoming ready",
then for any other UNIT_ATTENTION, we assume it was a disc change for
removable (this is what causes the I/O error in this case) or a reset
for non-removable.

Perhaps we should do a more dilligent check for the reset case?  ASC
0x29 and ASCQ <= 4 seems to identify all the reset cases.  Since the
tape case doesn't come through here, there's no danger of doing an
incorrect retry for it.

There is, however, one danger to the removable case: a power cycle could
still be accompanied by a medium change, which would now be missed.

On the whole, I'm inclined to leave everything the way it is, but was
wondering if there were any other comments?

James



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-12-16 18:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <200312132137.18128.cornelius.claussen@gmx.de>
2003-12-15 20:49 ` [linux-usb-devel] Problem with external USB2.0 case and LG GSA 4040-B Alan Stern
2003-12-15 21:08   ` James Bottomley
2003-12-16 18:36   ` [linux-usb-devel] " James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox