> > So I think there is a redundant call to blk_freeze_queue_start(), we > > just need to call blk_mq_freeze_queue_wait() after calling > > blk_queue_start_drain(). > > I think it is on purpose that blk_queue_start_drain() freezes the > request queue and never unfreezes it. So if you want to change this > behavior it's up to you to motivate why you want to change this behavior > and also why it is safe to make that change. See also commit > d3cfb2a0ac0b ("block: block new I/O just after queue is set as dying"). > > Bart. I think there might be some misunderstanding. I didn't touch blk_queue_start_drain(), so its behavior is not changed. What I have done is just replacing blk_freeze_queue() with blk_mq_freeze_queue_wait() in blk_mq_destroy_queue(). See: - https://lore.kernel.org/linux-block/20221030084011.GA5262@xxxxxx/T/#t Thanks! Jinlong Chen