Re: blk-mq: WARN at block/blk-mq.c:585 __blk_mq_run_hw_queue

Jens Axboe
2014-05-07T15:55:27Z

On 05/07/2014 09:53 AM, Sasha Levin wrote:
> On 05/07/2014 11:45 AM, Jens Axboe wrote:
>> On 05/07/2014 09:37 AM, Sasha Levin wrote:
>>> Hi all,
>>>
>>> While fuzzing with trinity inside a KVM tools guest running the latest -next
>>> kernel I've stumbled on the following spew:
>>>
>>> [ 986.962569] WARNING: CPU: 41 PID: 41607 at block/blk-mq.c:585 __blk_mq_run_hw_queue+0x90/0x500()
>>
>> I'm going to need more info than this. What were you running? How as kvm
>> invoked (nr cpus)?
>
> Sure!
>
> It's running in a KVM tools guest (not qemu), with the following options:
>
> '--rng --balloon -m 28000 -c 48 -p "numa=fake=32 init=/virt/init zcache ftrace_dump_on_oops debugpat kvm.mmu_audit=1 slub_debug=FZPU rcutorture.rcutorture_runnable=0 loop.max_loop=64 zram.num_devices=4 rcutorture.nreaders=8 oops=panic nr_hugepages=1000 numa_balancing=enable'.
>
> So basically 48 vcpus (the host has 128 physical ones), and ~28G of RAM.
>
> I've been running trinity as a fuzzer, which doesn't handle logging too well,
> so I can't reproduce it's actions easily.
>
> There was an additional stress of hotplugging CPUs and memory during this recent
> fuzzing run, so it's fair to suspect that this happened as a result of that.

Aha!

> Anything else that might be helpful?

No, not too surprising given the info that cpu hotplug was being
stressed at the same time. blk-mq doesn't quiesce when this happens, so
it's very unlikely that there are races between updating the cpu masks
and flushing out the previously queued work.