Hi, 在 2022/10/13 21:03, Jinlong Chen 写道:
Sorry for the disturbance. This patch is just wrong. elevator_switch_mq does not increase the reference count of the io scheduler module to which we are switching. Hence, we do not need to put the reference back manually.
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 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 Thanks, Kuai
Sincerely Jinlong Chen .