On Tue, 28 Dec 2004, David Relson wrote:
> Hi Alan,
>
> Here's the requested dmesg output. If it helps any, I also have
> non-debug output from a 2.4.27 kernel.
Okay, this is very weird. I don't understand how it could have happened.
> 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 0x1 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 0x1 R 0 Stat 0x0
> usb-storage: scsi command aborted
> usb-storage: *** thread sleeping.
>
> usb-storage: command_abort called
> usb-storage: -- nothing to abort
Apparently the command completely successfully, but some part of the
driver thought it had been aborted.
Do you feel up to trying out a diagnostic patch? The changes below will
add extra messages into the debugging log; maybe they can help pinpoint
the source of the error.
Alan Stern
--- a/drivers/usb/storage/protocol.c Tue Dec 28 22:16:44 2004
+++ b/drivers/usb/storage/protocol.c Tue Dec 28 22:17:41 2004
@@ -175,11 +175,13 @@
/* send the command to the transport layer */
usb_stor_invoke_transport(srb, us);
+ US_DEBUGP("Transp. SCSI result = %d\n", srb->result);
if (srb->result == SAM_STAT_GOOD) {
/* Fix the READ CAPACITY result if necessary */
if (us->flags & US_FL_FIX_CAPACITY)
fix_read_capacity(srb);
}
+ US_DEBUGP("Transp. SCSI result = %d\n", srb->result);
}
/***********************************************************************
--- a/drivers/usb/storage/transport.c Tue Dec 28 22:12:35 2004
+++ b/drivers/usb/storage/transport.c Tue Dec 28 22:14:45 2004
@@ -533,6 +533,7 @@
/* send the command to the transport layer */
srb->resid = 0;
result = us->transport(srb, us);
+ US_DEBUGP("result = %d\n", result);
/* if the command gets aborted by the higher layers, we need to
* short-circuit all other processing
@@ -717,11 +718,13 @@
srb->request_bufflen - srb->resid < srb->underflow)
srb->result = (DID_ERROR << 16) | (SUGGEST_RETRY << 24);
+ US_DEBUGP("Transport returns result = %d\n", srb->result);
return;
/* abort processing: the bulk-only transport requires a reset
* following an abort */
Handle_Abort:
+ US_DEBUGP("Handle_Abort\n");
srb->result = DID_ABORT << 16;
if (us->protocol == US_PR_BULK)
us->transport_reset(us);
--- a/drivers/usb/storage/usb.c Tue Dec 28 22:14:51 2004
+++ b/drivers/usb/storage/usb.c Tue Dec 28 22:16:37 2004
@@ -374,6 +374,7 @@
else {
US_DEBUG(usb_stor_show_command(us->srb));
us->proto_handler(us->srb, us);
+ US_DEBUGP("Protocol result = %d\n", us->srb->result);
}
/* lock access to the state */
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users