qemu/include/block
Paolo Bonzini 3c18a92dc4 aio-wait: delegate polling of main AioContext if BQL not held
Any thread that is not a iothread returns NULL for qemu_get_current_aio_context().
As a result, it would also return true for
in_aio_context_home_thread(qemu_get_aio_context()), causing
AIO_WAIT_WHILE to invoke aio_poll() directly.  This is incorrect
if the BQL is not held, because aio_poll() does not expect to
run concurrently from multiple threads, and it can actually
happen when savevm writes to the vmstate file from the
migration thread.

Therefore, restrict in_aio_context_home_thread to return true
for the main AioContext only if the BQL is held.

The function is moved to aio-wait.h because it is mostly used
there and to avoid a circular reference between main-loop.h
and block/aio.h.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20200407140746.8041-5-pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2020-04-09 16:16:28 +01:00
..
accounting.h block: add empty account cookie type 2019-10-10 10:56:18 +02:00
aio_task.h block: introduce aio task pool 2019-10-10 10:56:17 +02:00
aio-wait.h aio-wait: delegate polling of main AioContext if BQL not held 2020-04-09 16:16:28 +01:00
aio.h aio-wait: delegate polling of main AioContext if BQL not held 2020-04-09 16:16:28 +01:00
block_backup.h block/backup: drop unused synchronization interface 2018-12-14 11:52:40 +01:00
block_int.h block: trickle down the fallback image creation function use to the block drivers 2020-03-26 14:44:33 +01:00
block-copy.h block/block-copy: hide structure definitions 2020-03-11 12:42:30 +01:00
block-hmp-cmds.h monitor/hmp: move hmp_info_block* to block-hmp-cmds.c 2020-03-09 18:20:21 +00:00
block.h block: trickle down the fallback image creation function use to the block drivers 2020-03-26 14:44:33 +01:00
blockjob_int.h job: drop job_drain 2019-09-10 08:58:43 +02:00
blockjob.h blockdev: blockdev_mark_auto_del: drop usage of bs->job 2019-06-18 16:41:10 +02:00
dirty-bitmap.h block/dirty-bitmap: improve _next_dirty_area API 2020-03-18 14:03:46 -04:00
nbd.h qemu-storage-daemon: Add --nbd-server option 2020-03-06 17:21:28 +01:00
nvme.h nvme: fix NSSRS offset in CAP register 2019-11-04 09:21:45 +01:00
qapi.h qapi: Allow getting flat output from 'query-named-block-nodes' 2020-02-20 16:43:42 +01:00
qdict.h block: Factor out qobject_input_visitor_new_flat_confused() 2018-06-15 14:49:44 +02:00
raw-aio.h block/io_uring: implements interfaces for io_uring 2020-01-30 20:59:41 +00:00
snapshot.h block/snapshot: rename Error ** parameter to more common errp 2019-12-18 08:43:19 +01:00
thread-pool.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
throttle-groups.h throttle-groups: fix restart coroutine iothread race 2019-01-24 10:02:28 +00:00
write-threshold.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00