On Tue, Jun 13, 2023 at 11:34:05PM +0300, Sagi Grimberg 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. > > That still happens to *some* commands though right? That is possible only for commands that were already dispatched and subsequently failed with retry disposition. At the point of reset today, nothing new enters a queue till we know what the mapping looks like.