W dniu 2014-08-04 17:56, Stefan Hajnoczi pisze:
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 <kw...@redhat.com>
Cc: Paolo Bonzini <pbonz...@redhat.com>
Cc: Ming Lei <ming....@canonical.com>
Cc: Marcin Gibuła <m.gib...@beyond.pl>
Reported-by: Marcin Gibuła <m.gib...@beyond.pl>
Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com>

This patch fixes the block-commit hang when using linux-aio, so:

Tested-by: Marcin Gibuła <m.gib...@beyond.pl>

--
mg


Reply via email to