[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.0811070953460.2437-100000@iolanthe.rowland.org>
Date: Fri, 7 Nov 2008 10:00:29 -0500 (EST)
From: Alan Stern <stern@...land.harvard.edu>
To: Brian Kysela <brian.kysela@...il.com>
cc: Andrew Morton <akpm@...ux-foundation.org>,
<linux-kernel@...r.kernel.org>, Jens Axboe <jens.axboe@...cle.com>,
<linux-usb@...r.kernel.org>, <linux-scsi@...r.kernel.org>
Subject: Re: [BUG] usb-storage: Error in queuecommand: us->srb = ffff88006a338480
On Thu, 6 Nov 2008, Brian Kysela wrote:
> On 2008-11-06 at 14:36 -0500, Alan Stern wrote:
> > On Thu, 6 Nov 2008, Andrew Morton wrote:
> >
> > > > The error message:
> > > >
> > > > > [ 152.701070] usb-storage: Error in queuecommand: us->srb = ffff88007dfd0680
> > > >
> > > > means that the SCSI layer has told usb-storage to start a new command
> > > > before the old one completed. This could happen, for example, if the
> > > > SCSI layer had gotten confused and tried to cancel a command that
> > > > wasn't running -- then it would think usb-storage was idle when in fact
> > > > it was still busy. (This was the failure mechanism resulting from the
> > > > timeout changes.)
> > > >
> > >
> > > OK, thanks. I'll cc linux-scsi, but I have this-wont-be-getting-fixed
> > > feelings on this one :(
> > >
> > > I wonder what's special about Brian's setup.
> >
> > Brian, if you can use usbmon to monitor what happens during the file
> > copy and subsequent error, it might provide a clue. Instructions are
> > in the kernel source file Documentation/usb/usbmon.txt.
>
> Since it's a large file, I have posted the content of usbmon here:
>
> http://www.kysela.org/pub/1.mon.out
>
> I also got another kernel bug and system freeze on that copy, after the
> copy process hung, when I pulled the drive out:
This is exactly the failure mechanism I described earlier. The usbmon
log shows that a communications error occurred and usb-storage tried to
carry out error recovery. The drive apparently did not reset itself,
because when the READ was reissued no data was received. In fact, the
log _ends_ at the point where the READ was reissued; no more data was
transferred in either direction. Presumably the next thing to occur
was a command timeout.
And since the block-layer timeout code in 2.6.28-rc2 is known to be
buggy, it's not surprising that the copy process hung at that point.
It would be better to run this test under 2.6.27; that way we might
learn something new.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists