[dm-devel] [PATCH 8/9] dm: Fix two race conditions related to stopping and starting queues
Mike Snitzer
snitzer at redhat.com
Thu Sep 1 15:50:51 UTC 2016
On Thu, Sep 01 2016 at 11:31am -0400,
Bart Van Assche <bart.vanassche at sandisk.com> wrote:
> 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.
OK, I'll have a look.
> * 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().
I'm aware you think that but I need to circle back to
dm_mq_requeue_request() vs blk_queue_stopped(). The code as is isn't a
problem, just might be an extra check that isn't needed any more.
More information about the dm-devel
mailing list