Re: "blk-mq: fix tag_get wait task can't be awakened" causes hangs

From: Alex Xu (Hello71)
Date: Tue Jan 25 2022 - 10:18:24 EST


Excerpts from QiuLaibin's message of January 24, 2022 11:08 pm:
> Hi Alex
>
> 1、Please help to import this structure:
>
> blk_mq_tags <= request_queue->blk_mq_hw_ctx->blk_mq_tags

I don't understand what you mean.

> If there is no kernel dump, help to see the value of
>
> cat /sys/block/sda/mq/0/nr_tags
> __ <= Change it to the problem device

The affected device returns 1. My understanding is that mq does not work
with legacy non-UAS devices.

> And how many block devices in total by lsblk.

My device topology roughly looks like:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 [snip] 0 disk
├─sda1 8:1 0 [snip] 0 part
├─sda2 8:2 0 [snip] 0 part
└─sda3 8:3 0 [snip] 0 part
sdb 8:16 0 [snip] 0 disk
├─sdb1 8:17 0 [snip] 0 part
├─sdb2 8:18 0 [snip] 0 part
├─sdb3 8:19 0 [snip] 0 part
└─sdb4 8:20 0 [snip] 0 part
sdc 8:32 1 [snip] 0 disk
├─sdc1 8:33 1 [snip] 0 part
└─sdc2 8:34 1 [snip] 0 part
nvme0n1 259:0 0 [snip] 0 disk
├─nvme0n1p1 259:1 0 [snip] 0 part
└─nvme0n1p2 259:2 0 [snip] 0 part
└─root 254:0 0 [snip] 0 crypt /

> 2、Please describe in detail how to reproduce the issue,

1. Plug in the device.
2. Execute Show Blocked Tasks. udev is stuck.

> And what type of USB device?

It is a cheap unbranded USB flash drive.

> 3、Please help to try the attachment patch and see if it can be reproduced.

>From a quick test, it appears to resolve the issue.

> Thanks.

Cheers,
Alex.