[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