[PATCH 2/2] nvme: don't freeze/unfreeze queues from different contexts

Keith Busch kbusch at kernel.org
Tue Jun 13 15:43:34 PDT 2023


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.



More information about the Linux-nvme mailing list