Re: [PATCH] blk-mq: put the reference of the io scheduler module after switching back

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 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
.





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux