On 9/10/24 10:09 AM, yangxingui wrote: > > > 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") OK, so the HBA is a hisi one, using libsas... What is the device ? An SSD ? and HDD ? Do you set a block I/O scheduler for the drive, e.g. mq-deadline. If not, does setting a scheduler resolve the issue ? I do not have any hisi HBA. I use a lot of mpt3sas and mpi3mr HBAs which also have multiple queues with a shared tagset. Never seen the issue you are reporting though using HDDs with mq-deadline or bfq as the scheduler. -- Damien Le Moal Western Digital Research