nvme-blkmq fixes
Get series with b4
b4 am [email protected]Versions newest first
- v1 Latest0 of 4 patches 0 repliesNew
Patches in v1 No applies recorded yet
None of the 4 patches the cover letter announces are in this archive.
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/4] nvme-blkmq fixes
Quoted 32 lines · Jens Axboe
Quoted 28 lines · Keith Busch
Quoted 7 lines · Keith Busch
Quoted 5 lines · Jens Axboe
Should be enough to just check for ->rq_pool being initialized or not
- if it is, we could have waiters and we know the waitqueues have been setup, etc.V2 attached.
Quoted 7 lines
Yep, that fixes the bug.
I'm not sure I follow your suggestion for forcing
bt_get()to abandon allocating a request tag when the queue is dying. Ifhctx_may_queue()fails, it returns a generic error andbt_get()reschedules itself. Should
a different error than -1 be returned if the queue is dying?We're making good incremental improvements, but finding oddities the more I test this. This one's a doozy.
Requeued IO's are automatically dispatched, and I don't see an immediately
available way stop them. It causes a bug because the queue doorbells are unmapped during reset, so you can't touch them when the queue should be quiesced. I could fix that by having the driver not kick therequeue_listwhen it knows a reset is in progress, but there's no immediate way to drain the list if the reset fails and the device requires removal, andblk_cleanup_queue()will be stuck.Quoted 2 lines
Is there something available to call that I'm missing or do I need to add more removal handling?
Quoted 9 lines
So that's actually a case where having the queues auto-started on requeue run is harmful, since we should be able to handle this situation by stopping queues, requeueing, and then having a helper to eventually abort pending requeued work, if we have to. But if you simply requeue them and defer kicking the requeue list it might work. At that point you'd either kick the requeues (and hence start processing them) if things went well on the reset, or we could have some
blk_mq_abort_requeues()helper that'd kill them with-EIOinstead. Would that work for you?
Something like this.
Signature · 9 lines
Jens Axboe -------------- next part -------------- A non-text attachment was scrubbed... Name: blk-mq-abort-requeue-list.patch Type: text/x-patch Size: 1461 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-nvme/attachments/20141223/b92098c3/attachment.bin>