On Mon, Jun 19, 2017 at 03:32:09PM +0200, Paolo Valente wrote:
> > static void bfq_finish_request(struct request *rq)
> > {
> > -   struct bfq_queue *bfqq = RQ_BFQQ(rq);
> > -   struct bfq_data *bfqd = bfqq->bfqd;
> > +   struct bfq_queue *bfqq;
> > +   struct bfq_data *bfqd;
> > +
> > +   if (!rq->elv.icq)
> > +           return;
> > +
> 
> If this is a rq dispatched from a bfqq (or even a request still in the
> scheduler), then just exiting here will break bfq state seriously.
> However, I guess that this case can never occur.

It is a request for which we didn't manage to allocate the ioc.

Previously those wouldn't have REQ_ELVPRIV set and thus we wouldn't
call into the finish method.  Now they do and the finish method needs
to handle those just like the init method.

Reply via email to