Re: exception in interrupt during elv_completed_request. (3.0)

From: Dave Jones
Date: Mon Aug 15 2011 - 13:48:57 EST


On Tue, Aug 09, 2011 at 08:48:32AM -0500, James Bottomley wrote:

> > > > > > 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);
> }

I did a build with this change for the user seeing the problem.
Apparentely, it didn't change anything.

Dave

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/