qemu/include/block
Emanuele Giuseppe Esposito 90830f5950 block: use co_wrapper_mixed_bdrv_rdlock in functions taking the rdlock
Take the rdlock already, before we add the assertions.

All these functions either read the graph recursively, or call
BlockDriver callbacks that will eventually need to be protected by the
graph rdlock.

Do it now to all functions together, because many of these recursively
call each other.

For example, bdrv_co_truncate calls BlockDriver->bdrv_co_truncate, and
some driver callbacks implement their own .bdrv_co_truncate by calling
bdrv_flush inside. So if bdrv_flush asserts but bdrv_truncate does not
take the rdlock yet, the assertion will always fail.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20221207131838.239125-18-kwolf@redhat.com>
Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2022-12-15 16:08:23 +01:00
..
accounting.h block: pass OnOffAuto instead of bool to block_acct_setup() 2022-09-30 18:02:30 +02:00
aio_task.h block: introduce aio task pool 2019-10-10 10:56:17 +02:00
aio-wait.h aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED 2022-10-07 12:11:41 +02:00
aio.h graph-lock: Introduce a lock to protect block graph operations 2022-12-15 16:07:43 +01:00
block_backup.h block/backup: drop unused synchronization interface 2018-12-14 11:52:40 +01:00
block_int-common.h Mark assert_bdrv_graph_readable/writable() GRAPH_RD/WRLOCK 2022-12-15 16:08:23 +01:00
block_int-global-state.h block: assert that graph read and writes are performed correctly 2022-12-15 16:08:23 +01:00
block_int-io.h block: Remove subtree drains 2022-12-15 16:07:42 +01:00
block_int.h graph-lock: Introduce a lock to protect block graph operations 2022-12-15 16:07:43 +01:00
block-common.h block-coroutine-wrapper.py: introduce annotations that take the graph rdlock 2022-12-15 16:08:23 +01:00
block-copy.h block-copy: add coroutine_fn annotations 2022-12-15 16:07:43 +01:00
block-global-state.h block: Factor out bdrv_drain_all_begin_nopoll() 2022-12-15 16:07:43 +01:00
block-hmp-cmds.h monitor: add missing coroutine_fn annotation 2022-10-27 20:14:11 +02:00
block-io.h block: use co_wrapper_mixed_bdrv_rdlock in functions taking the rdlock 2022-12-15 16:08:23 +01:00
block.h include/block/block: split header into I/O and global state API 2022-03-04 18:18:25 +01:00
blockjob_int.h include/block/blockjob_int.h: split header into I/O and GS API 2022-03-04 18:18:25 +01:00
blockjob.h blockjob: remove unused functions 2022-10-07 12:11:41 +02:00
dirty-bitmap.h block/dirty-bitmap: convert coroutine-only functions to co_wrapper 2022-12-15 16:07:43 +01:00
export.h block/export: Move blk to BlockExport 2020-10-02 15:46:40 +02:00
fuse.h fuse: Allow exporting BDSs via FUSE 2020-12-11 17:52:39 +01:00
graph-lock.h Mark assert_bdrv_graph_readable/writable() GRAPH_RD/WRLOCK 2022-12-15 16:08:23 +01:00
nbd.h nbd: remove incorrect coroutine_fn annotations 2022-10-07 12:11:40 +02:00
nvme.h nvme: Fix misleading macro when mixed with ternary operator 2022-07-15 10:40:33 +02:00
qapi.h qapi: Allow getting flat output from 'query-named-block-nodes' 2020-02-20 16:43:42 +01:00
qdict.h include: move qdict_{crumple,flatten} declarations 2022-04-21 17:03:51 +04:00
raw-aio.h linux-aio: add dev_max_batch parameter to laio_io_unplug() 2021-11-02 13:03:35 +01:00
replication.h replication: move include out of root directory 2021-05-26 14:49:46 +02:00
reqlist.h block/reqlist: add reqlist_wait_all() 2022-03-07 09:33:30 +01:00
snapshot.h include/block/snapshot: global state API + assertions 2022-03-04 18:18:25 +01:00
thread-pool.h util/event-loop-base: Introduce options to set the thread pool size 2022-05-09 10:43:23 +01:00
throttle-groups.h block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit bytes 2021-02-03 08:14:00 -06:00
write-threshold.h write-threshold: deal with includes 2021-05-14 16:14:10 +02:00