Re: [RFC PATCH] blk-mq: Clean up references when freeing rqs

From: John Garry
Date: Wed Dec 09 2020 - 04:57:11 EST


On 09/12/2020 01:01, Ming Lei wrote:
blk_mq_queue_tag_busy_iter() can be run on another request queue just
between one driver tag is allocated and updating the request map, so one
extra request reference still can be grabbed.

So looks only holding one queue's usage_counter doesn't help this issue, since
bt_for_each() always iterates on driver tags wide.

But I didn't see such a guard for blk_mq_tagset_busy_iter().
IMO there isn't real difference between the two iteration.

ok, I see. Let me try to recreate that one, which will prob again require artificial delays added.

Apart from this, my concern is that we come with for a solution, but it's a complicated solution and may not be accepted as this issue is not seen as a problem in practice.

Thanks,
John