Re: blk-mq + bfq IO hangs after writing partition table

From: Ivan Kozik
Date: Fri Dec 01 2017 - 07:19:03 EST


On Fri, Dec 1, 2017 at 8:50 AM, Ming Lei <ming.lei@xxxxxxxxxx> wrote:
> Could you run the following script[1] and provide us the result after
> the IO hang is triggered?
>
> #./dump-blk-info /dev/sdX #/dev/sdX is name of your USB disk
>
> [1] http://people.redhat.com/minlei/tests/tools/dump-blk-info

Hi Ming,

Thanks for taking a look. I have pasted and attached (in case of
gmail corruption) these files:

Samsung-128GB-before: Samsung 128GB USB 3.0 Fit plugged into HP 8460p,
before gdisk write

Samsung-128GB-after: Samsung 128GB USB 3.0 Fit plugged into HP 8460p,
after gdisk write

Generic-4GB-after: some awful generic but working 4GB USB flash
drive plugged into HP 8460p, after gdisk write

I have reproduced this again on the same kernel revision and blk-mq bfq with:

minimized cmdline: scsi_mod.use_blk_mq=y
gdisk writing the partition table as-is, no changes

and confirmed again that kyber never triggers this.

Thanks,

Ivan




Samsung-128GB-before
=============sdc/hctx0==================
$active
0

$busy

$/sys/kernel/debug/block/sdc//hctx0/cpu0
$completed
3 14
$dispatched
3 14
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu1
$completed
159 76
$dispatched
159 76
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu2
$completed
84 57
$dispatched
84 57
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu3
$completed
154 54
$dispatched
155 54
$merged
1
$rq_list

$ctx_map
00000000: 00

$dispatch

$dispatched
0 8
1 701
2 0
4 0
8 0
16 0
32+ 0

$flags
alloc_policy=FIFO SHOULD_MERGE|SG_MERGE

$io_poll
considered=0
invoked=0
success=0

$queued
602

$run
843

$sched_tags
nr_tags=2
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=2
busy=1
bits_per_word=64
map_nr=1
alloc_hint={0, 1, 0, 0, 0, 1, 1, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$sched_tags_bitmap
00000000: 01

$state


$tags
nr_tags=1
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=1
busy=0
bits_per_word=64
map_nr=1
alloc_hint={0, 0, 0, 0, 0, 0, 0, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$tags_bitmap
00000000: 00




Samsung-128GB-after
=============sdc/hctx0==================
$active
0

$busy

$/sys/kernel/debug/block/sdc//hctx0/cpu0
$completed
3 14
$dispatched
3 14
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu1
$completed
159 95
$dispatched
159 96
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu2
$completed
84 58
$dispatched
84 58
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu3
$completed
154 54
$dispatched
155 54
$merged
1
$rq_list

$ctx_map
00000000: 00

$dispatch

$dispatched
0 8
1 721
2 0
4 0
8 0
16 0
32+ 0

$flags
alloc_policy=FIFO SHOULD_MERGE|SG_MERGE

$io_poll
considered=0
invoked=0
success=0

$queued
623

$run
887

$sched_tags
nr_tags=2
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=2
busy=2
bits_per_word=64
map_nr=1
alloc_hint={0, 0, 0, 0, 0, 1, 1, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$sched_tags_bitmap
00000000: 03

$state


$tags
nr_tags=1
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=1
busy=0
bits_per_word=64
map_nr=1
alloc_hint={0, 0, 0, 0, 0, 0, 0, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$tags_bitmap
00000000: 00




Generic-4GB-after
=============sdc/hctx0==================
$active
0

$busy

$/sys/kernel/debug/block/sdc//hctx0/cpu0
$completed
94 32
$dispatched
94 33
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu1
$completed
561 113
$dispatched
562 113
$merged
0
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu2
$completed
251 179
$dispatched
251 179
$merged
4
$rq_list

$/sys/kernel/debug/block/sdc//hctx0/cpu3
$completed
228 63
$dispatched
228 63
$merged
0
$rq_list

$ctx_map
00000000: 00

$dispatch

$dispatched
0 21
1 1707
2 0
4 0
8 0
16 0
32+ 0

$flags
alloc_policy=FIFO SHOULD_MERGE|SG_MERGE

$io_poll
considered=0
invoked=0
success=0

$queued
1523

$run
2000

$sched_tags
nr_tags=2
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=2
busy=2
bits_per_word=64
map_nr=1
alloc_hint={0, 0, 0, 0, 1, 1, 0, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=active},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$sched_tags_bitmap
00000000: 03

$state


$tags
nr_tags=1
nr_reserved_tags=0
active_queues=0

bitmap_tags:
depth=1
busy=0
bits_per_word=64
map_nr=1
alloc_hint={0, 0, 0, 0, 0, 0, 0, 0}
wake_batch=1
wake_index=0
ws={
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
{.wait_cnt=1, .wait=inactive},
}
round_robin=0

$tags_bitmap
00000000: 00

Attachment: Generic-4GB-after
Description: Binary data

Attachment: Samsung-128GB-after
Description: Binary data

Attachment: Samsung-128GB-before
Description: Binary data