summaryrefslogtreecommitdiffstats
path: root/blockdev.c
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2014-08-04 16:56:33 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2014-08-29 15:59:17 +0100
commit2cdff7f620ebd3b5246cf0c0d1f6fa0eededa4ca (patch)
tree579628c500f643464fd8138d68257d1e9dfc1968 /blockdev.c
parent12ade7609004bb1b09a845c144b36ea1850854c7 (diff)
downloadhqemu-2cdff7f620ebd3b5246cf0c0d1f6fa0eededa4ca.zip
hqemu-2cdff7f620ebd3b5246cf0c0d1f6fa0eededa4ca.tar.gz
linux-aio: avoid deadlock in nested aio_poll() calls
If two Linux AIO request completions are fetched in the same io_getevents() call, QEMU will deadlock if request A's callback waits for request B to complete using an aio_poll() loop. This was reported to happen with the mirror blockjob. This patch moves completion processing into a BH and makes it resumable. Nested event loops can resume completion processing so that request B will complete and the deadlock will not occur. Cc: Kevin Wolf <kwolf@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Ming Lei <ming.lei@canonical.com> Cc: Marcin Gibuła <m.gibula@beyond.pl> Reported-by: Marcin Gibuła <m.gibula@beyond.pl> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Tested-by: Marcin Gibuła <m.gibula@beyond.pl>
Diffstat (limited to 'blockdev.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud