Re: [bug report] block: Non-NCQ commands will never be executed while fio is continuously running

From: yangxingui
Date: Mon Sep 09 2024 - 21:09:31 EST




On 2024/9/9 21:21, Damien Le Moal wrote:
On 9/9/24 22:10, yangxingui wrote:
Hello axboe & John,

After the driver exposes all HW queues to the block layer, non-NCQ
commands will never be executed while fio is continuously running, such
as a smartctl command.

The cause of the problem is that other hctx used by the NCQ command is
still active and can continue to issue NCQ commands to the sata disk.
And the pio command keeps retrying in its corresponding hctx because
qc_defer() always returns true.

hctx0: ncq, pio, ncq
hctx1:ncq, ncq, ...
...
hctxn: ncq, ncq, ...

Is there any good solution for this?

SATA devices are single queue so how can you have multiple queues ?
What adapter are you using ?

In the following patch, we expose the host's 16 hardware queues to the block layer. And when connecting to a sata disk, 16 hctx are used.

8d98416a55eb ("scsi: hisi_sas: Switch v3 hw to MQ")

Thanks,
Xingui
.