[dm-devel] [PATCH 8/9] dm: Fix two race conditions related to stopping and starting queues

Bart Van Assche bart.vanassche at sandisk.com
Thu Sep 1 15:31:30 UTC 2016


On 09/01/2016 08:05 AM, Mike Snitzer wrote:
> I've staged most of your changes (with slight tweaks), see:
> https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/log/?h=dm-4.9
>
> Only remaining issue is the queue dying race(s) in dm-multipath.

Thanks Mike! Two minor comments though:
* In dm_start_queue(), I think that the queue_flag_clear_unlocked()
   call should be converted into queue_flag_clear() and that it should
   be protected by the block layer queue lock. Every call of
   queue_flag_clear_unlocked() after block device initialization has
   finished is wrong if blk_cleanup_queue() can be called concurrently.
* I think that adding blk_mq_{freeze,unfreeze}_queue() calls in
   dm_stop_queue() not only allows to remove the "queue stopped" test
   from dm_mq_queue_rq() but also that it allows to remove that test
   from dm_mq_requeue_request().

Bart.





More information about the dm-devel mailing list