Messages in this thread | | | Subject | Re: [PATCH] blk-mq: put the reference of the io scheduler module after switching back | From | Yu Kuai <> | Date | Thu, 13 Oct 2022 22:05:53 +0800 |
| |
在 2022/10/13 21:47, Jinlong Chen 写道: > Hi, Yu Kuai! > >> >> I'm confused here, cause I do think this patch make sense. >> >> blk_mq_update_nr_hw_queues >> // for each queue using the tagset >> blk_mq_freeze_queue >> // if current elevator is not none, swith to none >> blk_mq_elv_switch_none >> // elevator need to be switched back, got a reference to >> // prevent module to be removed. >> __module_get >> elevator_switch(q, NULL); >> >> // switch back from none elevator >> blk_mq_elv_switch_back >> -> should release the module reference here >> blk_mq_unfreeze_queue >> > > We need to release the reference only if blk_mq_elv_switch_back got its own > reference. However, blk_mq_elv_switch_back (precisely elevator_switch_mq) > does not increase the reference of the module it is switching to. > Hence, the reference got in blk_mq_elv_switch_none does not need to be released, > or we'll have to re-increase the reference count manually.'
But I don't see elevator_switch() release the referenct of the module it is switching from. It's still not balance to me.
Thanks, Kuai > >> >> By the way, I do not test yet, but I think problem can be reporduced: >> >> >> 1. modprobe bfq >> 2. switch elevator to bfq >> 3. trigger blk_mq_update_nr_hw_queues >> 4. switch elevator to none >> 5. rmmod bfq will fail >> > > I tried to reproduce the problem but failed, so I found my mistake. > > Sincerely, > Jinlong Chen > . >
| |