mbox series

[v2,0/7] block/nvme: support nested aio_poll()

Message ID 20200617132201.1832152-1-stefanha@redhat.com (mailing list archive)
Headers show
Series block/nvme: support nested aio_poll() | expand

Message

Stefan Hajnoczi June 17, 2020, 1:21 p.m. UTC
v2:
 * Reword comment in Patch 1 explainin why its safe not to hold q->lock [Sergio]
 * Fix s/unwiedly/unwieldy/ typo in the Patch 6 commit description [Philippe]

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(-)

Comments

Stefan Hajnoczi June 23, 2020, 2:46 p.m. UTC | #1
On Wed, Jun 17, 2020 at 02:21:54PM +0100, Stefan Hajnoczi wrote:
> v2:
>  * Reword comment in Patch 1 explainin why its safe not to hold q->lock [Sergio]
>  * Fix s/unwiedly/unwieldy/ typo in the Patch 6 commit description [Philippe]
> 
> 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.26.2
> 

Thanks, applied to my HEAD tree:
https://github.com/stefanha/qemu/commits/HEAD

Stefan