On Tue, Jun 13, 2023 at 08:58:47AM +0800, Ming Lei wrote: > And this way is correct because quiesce is enough for driver to handle > error recovery. The only difference is where to wait during error recovery. > With this way, IO is just queued in block layer queue instead of > __bio_queue_enter(), finally waiting for completion is done in upper > layer. Either way, IO can't move on during error recovery. The point was to contain the fallout from modifying the hctx mappings. If you allow IO to queue in the blk-mq layer while a reset is in progress, they may be entering a context that won't be as expected on the other side of the reset.