This series allows aio_poll() to work from I/O request completion callbacks. QEMU block drivers are supposed to support this because some code paths rely on this behavior.
There was no measurable performance difference with nested aio_poll() support. This patch series also contains cleanups that I made while examining and benchmarking the code. Stefan Hajnoczi (7): block/nvme: poll queues without q->lock block/nvme: drop tautologous assertion block/nvme: don't access CQE after moving cq.head block/nvme: switch to a NVMeRequest freelist block/nvme: clarify that free_req_queue is protected by q->lock block/nvme: keep BDRVNVMeState pointer in NVMeQueuePair block/nvme: support nested aio_poll() block/nvme.c | 220 ++++++++++++++++++++++++++++++++------------- block/trace-events | 2 +- 2 files changed, 160 insertions(+), 62 deletions(-) -- 2.25.3