On 14/07/2020 11:19, Hannes Reinecke wrote:
Correct. There is only one tagset per host, even if the host supports several queues (guess why it's called smart PQI:-). And mainline code isn't really wrong, it just allocates the next free tag from the host tagset; it's not using the block-layer tags at all. Precisely because the block layer currently cannot guarantee that tags are unique per host.
ok, but it's not exemplary in what it does. And I suppose that's why it needs to spin indefinitely for a free tag in pqi_alloc_io_request(), instead of failing immediately when none are free.
And the point of this patchset is exactly that the block layer will only send up to 'can_queue' requests, irrespective on how many hardware queues are present. But anyway, I'll test it on smartpqi, too.
Great, thanks.