qemu/tests
Fiona Ebner a1ea8eb591 block: move drain outside of bdrv_try_change_aio_context()
This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

Convert the function to a _locked() version that has to be called with
the graph lock held and add a convenience wrapper that has to be
called with the graph unlocked, which drains and takes the lock
itself. Since bdrv_try_change_aio_context() is global state code, the
wrapper is too.

Callers are adapted to use the appropriate variant, depending on
whether the caller already holds the lock. In the
test_set_aio_context() unit test, prior drains can be removed, because
draining already happens inside the new wrapper.

Note that bdrv_attach_child_common_abort(), bdrv_attach_child_common()
and bdrv_root_unref_child() hold the graph lock and are not actually
allowed to drain either. This will be addressed in the following
commits.

Functions like qmp_blockdev_mirror() query the nodes to act on before
draining and locking. In theory, draining could invalidate those nodes.
This kind of issue is not addressed by these commits.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20250530151125.955508-10-f.ebner@proxmox.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2025-06-04 18:16:34 +02:00
..
bench tests/bench: Rename test_akcipher_keys.inc -> test_akcipher_keys.c.inc 2024-09-20 10:08:24 +03:00
data tests/data/uefi-boot-images: Add ISO image for LoongArch system 2025-06-01 06:38:53 -04:00
decode tests/: spelling fixes 2023-09-08 13:08:52 +03:00
docker tests: Add Dockerfile containing dependencies for Emscripten build 2025-05-06 16:02:04 +02:00
fp fpu: allow flushing of output denormals to be after rounding 2025-02-11 16:22:07 +00:00
functional target-arm queue: 2025-05-30 11:41:21 -04:00
guest-debug tests/tcg: Add late gdbstub attach test 2025-02-10 13:47:59 +00:00
image-fuzzer image-fuzzer: Use OSerror.strerror instead of tuple subscript 2019-11-05 16:36:11 +01:00
include tests: add missing generated sources to testqapi 2020-10-17 10:45:50 -04:00
keys tests/vm: Add Haiku test based on their vagrant images 2020-11-17 09:45:24 +01:00
lcitool lcitool: use newer Rust for Debian and Ubuntu 2025-05-06 16:02:04 +02:00
migration-stress guestperf: Add test result data into report 2025-02-14 15:19:07 -03:00
multiboot Remove superfluous .gitignore files 2020-10-13 12:48:17 +02:00
perf/block/qcow2 tests/perf: Test lseek influence on qcow2 block-status 2019-06-04 15:20:41 +02:00
qapi-schema docs/sphinx/qmp_lexer: Generalize elision syntax 2025-04-08 09:04:34 +02:00
qemu-iotests iotests: Filter out ZFS in several tests 2025-05-29 16:40:00 -05:00
qtest virtio,pci,pc: features, fixes, tests 2025-06-02 14:52:45 -04:00
rocker
tcg hw/loongarch/virt: Get physical entry address with elf file 2025-05-06 09:17:32 +08:00
tsan block: remove AioContext locking 2023-12-21 22:49:27 +01:00
uefi-test-tools uefi-test-tools:: Add LoongArch64 support 2025-06-01 06:38:53 -04:00
unit block: move drain outside of bdrv_try_change_aio_context() 2025-06-04 18:16:34 +02:00
vm tests/vm: bump timeout for shutdown 2025-03-10 10:30:00 +00:00
vmstate-static-checker-data hw: Replace anti-social QOM type names 2021-03-19 15:18:43 +01:00
dbus-vmstate-daemon.sh tests: add dbus-vmstate-test 2020-01-06 18:41:32 +04:00
Makefile.include Remove the remainders of the Avocado tests 2025-04-23 07:51:25 +02:00
meson.build qapi: expose all schema features to code 2025-02-10 15:45:04 +01:00
test-qht-par.c
vhost-user-bridge.c error handling: Use RETRY_ON_EINTR() macro where applicable 2023-01-09 13:50:47 +01:00