Hi Bart
Thanks for your kindly response.
On 04/10/2018 09:01 PM, Bart Van Assche wrote:
On Tue, 2018-04-10 at 15:59 +0800, jianchao.wang wrote:
If yes, how does the timeout handler get the freed request when the tag has been freed ?
Hello Jianchao,
Have you noticed that the timeout handler does not check whether or not the request tag is freed? Additionally, I don't think it would be possible to add such a check to the timeout code without introducing a new race condition.
Doesn't blk_mq_queue_tag_busy_iter only iterate the tags that has been allocated/set ? When the request is freed, the tag will be cleared through blk_mq_put_tag->sbitmap_queue_clear Do I miss something else ?
Thanks Jianchao