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

Bart Van Assche bart.vanassche at sandisk.com
Fri Sep 2 00:03:35 UTC 2016


On 09/01/2016 04:48 PM, Mike Snitzer wrote:
> On Thu, Sep 01 2016 at  7:17pm -0400,
> Bart Van Assche <bart.vanassche at sandisk.com> wrote:
>> Sorry that I misread your previous e-mail. After I received your
>> latest e-mail I rebased my tree on top of the devel.bart branch
>> mentioned above. My tests still pass. The only two patches in my
>> tree that are relevant and that are not in the devel.bart branch
>> have been attached to this e-mail. Did your test involve the sd
>> driver? If so, do the attached two patches help? If the sd driver
>> was not involved, can you provide more information about the hang
>> you ran into? The output and log messages generated by the following
>> commands after the hang has been reproduced would be very welcome:
>> * echo w > /proc/sysrq-trigger
>> * (cd /sys/block && grep -a '' dm*/mq/*/{pending,cpu*/rq_list})
> 
> sd is used.  I'll apply those patches and test, tomorrow, but I'm pretty
> skeptical.
> 
> Haven't had any problems with these tests for quite a while.  The tests
> I'm running are just those in the mptest testsuite, see:
> https://github.com/snitm/mptest
> 
> Running them should be as simple as you doing:
> 
> git clone git://github.com/snitm/mptest.git
> cd mptest
> ./runtest
> 
> The default is to use dm-mq on scsi-mq ontop of tcmloop.
> 
> [ ... ]

Hello Mike,

If I run mptest on my setup I can reproduce the hang. But what I see is
that the service-time path selector is in use when the hang is triggered.
I will patch that path selector in the same way as I did with the
queue-length path selector and rerun the test.

# dmsetup table
1Linux_scsi_debug_2000: 0 2097152 multipath 3 retain_attached_hw_handler queue_mode mq 1 alua 3 1 service-time 0 1 2 8:128 1 1 service-time 0 1 2 8:144 1 1 service-time 0 1 2 8:112 1 1 
mp: 0 2097152 multipath 3 retain_attached_hw_handler queue_mode mq 1 alua 2 1 queue-length 0 2 1 8:96 1 8:112 1 queue-length 0 2 1 8:128 1 8:144 1 
# (cd /sys/block && grep -a '' dm*/mq/*/{pending,cpu*/rq_list}) | grep -v ':$'
dm-0/mq/0/pending:      ffff880358610000
dm-1/mq/0/pending:      ffff880358220200
dm-1/mq/0/pending:      ffff880358220400

Bart.




More information about the dm-devel mailing list