Re: [PATCH V2 1/2] blk-mq: init hctx sched after update ctx and hctx mapping

From: Ming Lei
Date: Sun Aug 19 2018 - 22:24:36 EST


On Mon, Aug 20, 2018 at 9:29 AM jianchao.wang
<jianchao.w.wang@xxxxxxxxxx> wrote:
>
> Hi Ming
>
> On 08/17/2018 05:33 PM, Ming Lei wrote:
> >> + /*
> >> + * elevator_release will put it.
> >> + */
> >> + __module_get(q->elv_type->elevator_owner);
> > I understand what elevator_release() frees is the 'ref-counter' got in
> > elevator_get(), but who will be the counter-pair of the above __module_get()?
>
>
> Sorry for my bad description.
>
> The code path is:
>
> elevator_release
> -> elevator_put(e->type)
> -> module_put(e->elevator_owner)
>
> In normal elevator switch path, elevator_get will hold a reference counter of the
> elevator_owner.
> In this patch set, the elevator_type is saved directly. To prevent the io scheduler module
> is removed, we need to hold a reference of the module.

Yeah, I agree that the module reference need to be held, but it need to be
released too.

My concern is that this introduced getting module reference in your patch
isn't released. The module reference is a counter too, so the get and
put operation should be matched.


thanks,
Ming Lei