[PATCH 5/5] NVMe: IO queue deletion re-write
Christoph Hellwig
hch at infradead.org
Sat Jan 2 09:07:30 PST 2016
> Aww, I really liked the re-queuing! :) It encapsulates deleting a
> queue-pair as a single, two-step operation.
I think it can still be nicely encapsulated when using the
workqueue. And I think that's essential as requeuing for
a different command breaks all kinds of assumptions.
> There's a failure scenario that complicates work item handling. It has
> the same flaw kthread workers had if work is queued deeper than available
> tags, and then the controller stops responding. It's a mess to clean
> that up and synchronize when everything times out. Issuing everything
> from the main thread and irq callback is painless in comparison.
True, that's not getting simpler.
> But I didn't like having to store the "struct command" in the nvme_queue
> either, so I'm happy to consider alternatives if I've missed seeing an
> elegant solution.
Just curious: why do we even both with the async queue shutdown. At
least the controllers I have access to complete queue deletions very
quickly.
More information about the Linux-nvme
mailing list