qemu/include/block
Kevin Wolf 6460440f34 block: Allow wait_serialising_requests() at any point
We can only have a single wait_serialising_requests() call per request
because otherwise we can run into deadlocks where requests are waiting
for each other. The same is true when wait_serialising_requests() is not
at the very beginning of a request, so that other requests can be issued
between the start of the tracking and wait_serialising_requests().

Fix this by changing wait_serialising_requests() to ignore requests that
are already (directly or indirectly) waiting for the calling request.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Benoit Canet <benoit@irqsave.net>
2014-01-24 17:40:02 +01:00
..
aio.h aio / timers: Add aio_timer_init & aio_timer_new wrappers 2013-08-22 19:10:28 +02:00
block_int.h block: Allow wait_serialising_requests() at any point 2014-01-24 17:40:02 +01:00
block.h block: rename buffer_alignment to guest_block_size 2014-01-24 17:40:01 +01:00
blockjob.h qapi: make use of new BlockJobType 2013-10-11 10:52:54 +02:00
coroutine_int.h coroutine: stop using AioContext in CoQueue 2013-05-24 16:17:56 +02:00
coroutine.h coroutine: remove unused CoQueue AioContext 2013-12-02 17:11:49 +01:00
nbd.h nbd: support large NBD requests 2013-05-03 13:05:49 +02:00
qapi.h qmp: Add QMP query-named-block-nodes to list the named BlockDriverState nodes. 2014-01-24 16:07:08 +01:00
scsi.h hw: move headers to include/ 2013-04-08 18:13:10 +02:00
snapshot.h qemu-nbd: support internal snapshot export 2013-12-04 15:19:00 +01:00
thread-pool.h threadpool: drop global thread pool 2013-03-15 16:07:51 +01:00