Messages in this thread | | | Date | Wed, 23 Apr 2008 20:59:30 -0400 | From | "Alan D. Brunelle" <> | Subject | Re: [RFC][PATCH 3/3] Do not use rqhash when merges disabled |
| |
Aaron Carroll wrote: > Hi Alan, > > Alan D. Brunelle wrote: >> --- a/block/elevator.c >> +++ b/block/elevator.c >> @@ -313,7 +313,7 @@ static inline void __elv_rqhash_del(struct request >> *rq) >> >> static void elv_rqhash_del(struct request_queue *q, struct request *rq) >> { >> - if (ELV_ON_HASH(rq)) >> + if (!blk_queue_nomerges(q) && ELV_ON_HASH(rq)) >> __elv_rqhash_del(rq); >> } > > If you switch the nomerges tunable while requests are in flight, it is > possible that > a request is put into the rqhash table but not removed here, leading to > the BUG_ON > in elv_dequeue_request() triggering. ELV_ON_HASH needs to be checked > regardless of > the nomerges state. > > > -- Aaron > >
Hi Aaron -
Good catch - that was a last minute addition, the ELV_ON_HASH should be sufficient without the check for blk_queue_nomerges, right?
Alan
| |