On 11/10/2021 11:14 AM, Christoph Hellwig wrote:
Hi Jens and Ming, I've been looking into properly supporting queue freezing for bio based drivers (that is only release q_usage_counter on bio completion for them). And the deeper I look into the code the more I'm confused by us having the blk_mq_quiesce* interface in addition to blk_freeze_queue. What is a good reason to do a quiesce separately from a freeze?
I think that quiesce_q will guarantee that no new requests will be passed to LLD (completions can still arrive from LLD).
And freeze_q will notify that the internal request_q state will not change and completions will not arrive from LLD (and if they will, the block layer can ignore it).
At least this is what we aim to do in other areas such as Live migration.