Hi Jens,
If I run the following subset of blktests:
while :; do ./check -q srp && ./check -q nvmeof-mp; done
against today's for-next branch (commit dd2bf2df85a7) then after some
time the following hang is reported:
INFO: task fio:14869 blocked for more than 120 seconds.
Not tainted 4.20.0-rc6-dbg+ #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
fio D25272 14869 14195 0x00000000
Call Trace:
__schedule+0x401/0xe50
schedule+0x4e/0xd0
io_schedule+0x21/0x50
blk_mq_get_tag+0x46d/0x640
blk_mq_get_request+0x7c0/0xa00
blk_mq_make_request+0x241/0xa70
generic_make_request+0x411/0x950
submit_bio+0x9b/0x250
blkdev_direct_IO+0x7fb/0x870
generic_file_direct_write+0x119/0x210
__generic_file_write_iter+0x11c/0x280
blkdev_write_iter+0x13c/0x220
aio_write+0x204/0x310
io_submit_one+0x9c6/0xe70
__x64_sys_io_submit+0x115/0x340
do_syscall_64+0x71/0x210
entry_SYSCALL_64_after_hwframe+0x49/0xbe
When that hang occurs my list-pending-block-requests script does not show
any pending requests:
# list-pending-block-requests
dm-0
loop0
loop1
loop2
loop3
loop4
loop5
loop6
loop7
nullb0
nullb1
sda
sdb
sdc
sdd
vda
vdb
Enabling fail_if_no_path mode did not resolve the hang so I don't think
that the root cause is in any of the dm drivers used in this test:
# dmsetup ls | while read dm rest; do dmsetup message $dm 0 fail_if_no_path;
done; dmsetup remove_all; dmsetup table
360014056e756c6c62300000000000000: 0 65536 multipath 0 1 alua 1 1 service-time
0 1 2 8:16 1 1
The same test passes against kernel v4.20-rc6.
Thanks,
Bart.