qemu/include/block
Stefan Hajnoczi dec7d421f8 blockjob: add block_job_defer_to_main_loop()
Block jobs will run in the BlockDriverState's AioContext, which may not
always be the QEMU main loop.

There are some block layer APIs that are either not thread-safe or risk
lock ordering problems.  This includes bdrv_unref(), bdrv_close(), and
anything that calls bdrv_drain_all().

The block_job_defer_to_main_loop() API allows a block job to schedule a
function to run in the main loop with the BlockDriverState AioContext
held.

This function will be used to perform cleanup and backing chain
manipulations in block jobs.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-id: 1413889440-32577-6-git-send-email-stefanha@redhat.com
2014-11-03 11:41:49 +00:00
..
accounting.h block: Make the block accounting functions operate on BlockAcctStats 2014-09-10 10:41:29 +02:00
aio.h block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00
block.h block: Add status callback to bdrv_amend_options() 2014-11-03 11:41:48 +00:00
block_int.h block: Add status callback to bdrv_amend_options() 2014-11-03 11:41:48 +00:00
blockjob.h blockjob: add block_job_defer_to_main_loop() 2014-11-03 11:41:49 +00:00
coroutine.h coroutine: Drop co_sleep_ns 2014-08-29 10:46:58 +01:00
coroutine_int.h coroutine: stop using AioContext in CoQueue 2013-05-24 16:17:56 +02:00
nbd.h nbd: Handle NBD_OPT_LIST option. 2014-06-30 12:50:17 +02:00
qapi.h block/qapi: Convert qmp_query_block() to BlockBackend 2014-10-20 14:03:50 +02:00
scsi.h scsi: Print command name in debug 2014-06-18 08:47:10 +02:00
snapshot.h qemu-nbd: support internal snapshot export 2013-12-04 15:19:00 +01:00
thread-pool.h block: Rename BlockDriverCompletionFunc to BlockCompletionFunc 2014-10-20 13:41:27 +02:00