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

From: yangxingui
Date: Mon Sep 09 2024 - 09:12:28 EST


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?

Thanks.
Xingui