Messages in this thread Patch in this message | | | Subject | Re: exception in interrupt during elv_completed_request. (3.0) | From | James Bottomley <> | Date | Tue, 09 Aug 2011 08:48:32 -0500 |
| |
On Tue, 2011-08-09 at 08:48 -0400, Dave Jones wrote: > On Mon, Aug 08, 2011 at 10:43:23PM -0700, Greg Kroah-Hartman wrote: > > On Mon, Aug 08, 2011 at 05:16:09PM +0200, Jens Axboe wrote: > > > On 2011-08-08 17:13, Dave Jones wrote: > > > > > On 2011-08-08 16:58, Dave Jones wrote: > > > > > > Jens, > > > > > > > > > > > > We got a report of a panic from a user when he plugged in his usb drive, > > > > > > https://bugzilla.redhat.com/attachment.cgi?id=517141 > > > > > > > > > > > > any ideas what happened here ? > > > > > > > > > > 2.6.40? > > > > > > > > it's 3.0 in all but name. didn't want to risk breaking dumb userspace > > > > in an update for older fedora releases. It does have the > > > > scsi_dispatch_cmd fix that went into 3.0.1, but otherwise block/ > > > > should be stock 3.0 > > > > > > OK > > > > > > > > Looks like the recent SCSI removal oopses, perhaps it happened when he > > > > > yanked it instead of directly on insertion? > > > > > > > > sorry my bad, yes, this was on device removal. > > > > > > > > according to the user, he did everything right, and unmounted safely. > > > > https://bugzilla.redhat.com/show_bug.cgi?id=728872 > > > > > > James? > > > > Should be resolved in 3.0.1 now. > > > > If not, please let James, and me, know. > > Are you talking about the scsi_dispatch_cmd fix ? this is something else.
I'm not so sure ... it looks like a stray block put coming after queue teardown to me. elevator_exit() will NULL e->ops but blk_put_request() uses it unconditionally.
That's more a fix like this, isn't it?
James
---
diff --git a/block/elevator.c b/block/elevator.c index a3b64bc..de4bde9 100644 --- a/block/elevator.c +++ b/block/elevator.c @@ -812,7 +812,7 @@ void elv_completed_request(struct request_queue *q, struct request *rq) */ if (blk_account_rq(rq)) { q->in_flight[rq_is_sync(rq)]--; - if ((rq->cmd_flags & REQ_SORTED) && + if ((rq->cmd_flags & REQ_SORTED) && e->ops && e->ops->elevator_completed_req_fn) e->ops->elevator_completed_req_fn(q, rq); }
| |