[PATCH 5/5] NVMe: IO queue deletion re-write

Keith Busch keith.busch at intel.com
Sun Jan 3 07:43:31 PST 2016


On Sun, Jan 03, 2016 at 03:40:52AM -0800, Christoph Hellwig wrote:
> How about something like the lightly tested patch below.  It uses
> synchronous command submission, but schedules a work item on the
> system unbound workqueue for each queue, allowing the scheduler
> to execture them in parallel.

This works if everything else works, but the failure cases are the hard
ones. This'll deadlock if the controller stops responding during a reset,
which might be why the reset occured in the first place, and we can't
invoke another reset to clean up a failed reset.

We can use "wait_event_timeout" to fix the deadlock in the reset handler.
The handler will cancel IO's, ending work queue items waiting for command
responses. But that's only half of it. You'll also need something to end
work waiting for a request when more queues exist than admin tags.



More information about the Linux-nvme mailing list