aboutsummaryrefslogtreecommitdiff
path: root/linux-user/sparc
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2020-06-17 14:22:01 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2020-06-23 15:46:08 +0100
commit7838c67f22a81fcf669785cd6c0876438422071a (patch)
tree55d08313439c1728cd0883cf2c924213a861701c /linux-user/sparc
parentb75fd5f55467307a6e367bc349a8ea6ce30d8a1c (diff)
downloadqemu-7838c67f22a81fcf669785cd6c0876438422071a.zip
qemu-7838c67f22a81fcf669785cd6c0876438422071a.tar.gz
qemu-7838c67f22a81fcf669785cd6c0876438422071a.tar.bz2
block/nvme: support nested aio_poll()
QEMU block drivers are supposed to support aio_poll() from I/O completion callback functions. This means completion processing must be re-entrant. The standard approach is to schedule a BH during completion processing and cancel it at the end of processing. If aio_poll() is invoked by a callback function then the BH will run. The BH continues the suspended completion processing. All of this means that request A's cb() can synchronously wait for request B to complete. Previously the nvme block driver would hang because it didn't process completions from nested aio_poll(). Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Sergio Lopez <slp@redhat.com> Message-id: 20200617132201.1832152-8-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'linux-user/sparc')
0 files changed, 0 insertions, 0 deletions