qemu-e2k/tests/unit
Emanuele Giuseppe Esposito d05ab380db block: Mark drain related functions GRAPH_RDLOCK
Draining recursively traverses the graph, therefore we need to make sure
that also such accesses to the graph are protected by the graph rdlock.

There are 3 different drain callers to consider:
1. drain in the main loop: no issue at all, rdlock is nop.
2. drain in an iothread: rdlock only works in main loop or coroutines,
   so disallow it.
3. drain in a coroutine (regardless of AioContext): the drain mechanism
   takes care of scheduling a BH in the bs->aio_context that will
   then take care of perform the actual draining. This is wrong,
   because as pointed in (2) if bs->aio_context is an iothread then
   rdlock won't work. Therefore change bdrv_co_yield_to_drain to
   schedule the BH in the main loop.

Caller (2) also implies that we need to modify test-bdrv-drain.c to
disallow draining in the iothreads.

For some places, we know that they will hold the lock, but we don't have
the GRAPH_RDLOCK annotations yet. In this case, add assume_graph_lock()
with a FIXME comment. These places will be removed once everything is
properly annotated.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-ID: <20230929145157.45443-6-kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2023-10-12 16:31:33 +02:00
..
check-block-qdict.c
check-qdict.c
check-qjson.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
check-qlist.c
check-qlit.c
check-qnull.c
check-qnum.c
check-qobject.c
check-qom-interface.c
check-qom-proplist.c
check-qstring.c
crypto-tls-psk-helpers.c
crypto-tls-psk-helpers.h
crypto-tls-x509-helpers.c
crypto-tls-x509-helpers.h
io-channel-helpers.c
io-channel-helpers.h
iothread.c
iothread.h
meson.build system: Rename softmmu/ directory as system/ 2023-10-08 21:08:08 +02:00
pkix_asn1_tab.c
ptimer-test-stubs.c async: Add an optional reentrancy guard to the BH API 2023-04-28 11:31:07 +02:00
ptimer-test.c
ptimer-test.h
rcutorture.c Updated the FSF address to <https://www.gnu.org/licenses/> 2023-02-27 09:15:39 +01:00
socket-helpers.c win32: replace closesocket() with close() wrapper 2023-03-13 15:39:31 +04:00
socket-helpers.h
test-aio-multithread.c atomics: eliminate mb_read/mb_set 2023-06-06 09:42:14 +02:00
test-aio.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
test-authz-list.c
test-authz-listfile.c
test-authz-pam.c
test-authz-simple.c
test-base64.c
test-bdrv-drain.c block: Mark drain related functions GRAPH_RDLOCK 2023-10-12 16:31:33 +02:00
test-bdrv-graph-mod.c block: Mark bdrv_parent_perms_conflict() and callers GRAPH_RDLOCK 2023-09-20 17:46:01 +02:00
test-bitcnt.c
test-bitmap.c
test-bitops.c
test-block-backend.c
test-block-iothread.c block: Mark bdrv_first_blk() and bdrv_is_root_node() GRAPH_RDLOCK 2023-10-12 16:31:33 +02:00
test-blockjob-txn.c
test-blockjob.c tests/unit/test-blockjob: Disable complete_in_standby test 2023-03-20 12:43:50 +01:00
test-bufferiszero.c
test-char.c
test-clone-visitor.c
test-coroutine.c coroutine: Clean up superfluous inclusion of qemu/lockable.h 2023-01-19 10:18:28 +01:00
test-crypto-afsplit.c
test-crypto-akcipher.c
test-crypto-block.c
test-crypto-cipher.c
test-crypto-der.c
test-crypto-hash.c
test-crypto-hmac.c
test-crypto-ivgen.c
test-crypto-pbkdf.c
test-crypto-secret.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
test-crypto-tlscredsx509.c
test-crypto-tlssession.c Call qemu_socketpair() instead of socketpair() when possible 2023-01-16 17:42:17 +01:00
test-crypto-xts.c
test-cutils.c cutils: Improve qemu_strtosz handling of fractions 2023-06-02 12:29:27 -05:00
test-div128.c
test-error-report.c error: add global &error_warn destination 2023-03-13 15:23:37 +04:00
test-forward-visitor.c
test-hbitmap.c
test-image-locking.c
test-int128.c
test-interval-tree.c
test-io-channel-buffer.c
test-io-channel-command.c tests: fix path separator, use g_build_filename() 2023-03-13 15:39:31 +04:00
test-io-channel-file.c
test-io-channel-null.c
test-io-channel-socket.c io: Add support for MSG_PEEK for socket channel 2023-02-06 19:22:56 +01:00
test-io-channel-tls.c Call qemu_socketpair() instead of socketpair() when possible 2023-01-16 17:42:17 +01:00
test-io-task.c
test-iov.c
test-keyval.c
test-logging.c
test-mul64.c
test-nested-aio-poll.c aio: remove aio_disable_external() API 2023-05-30 17:37:26 +02:00
test-opts-visitor.c
test-qapi-util.c
test-qdev-global-props.c
test-qdist.c
test-qemu-opts.c
test-qga.c qga: Add tests for --allow-rpcs option 2023-07-10 15:54:40 +03:00
test-qgraph.c
test-qht.c
test-qmp-cmds.c tests: add G_GNUC_PRINTF for various functions 2023-01-11 10:44:34 +01:00
test-qmp-event.c
test-qobject-input-visitor.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
test-qobject-output-visitor.c qapi: allow unions to contain further unions 2023-04-26 07:52:45 +02:00
test-qtree.c util: import GTree as QTree 2023-03-28 15:23:10 -07:00
test-rcu-list.c replace TABs with spaces 2023-03-20 12:43:50 +01:00
test-rcu-simpleq.c
test-rcu-slist.c
test-rcu-tailq.c
test-replication.c
test-seccomp.c Don't include headers already included by qemu/osdep.h 2023-02-08 07:28:05 +01:00
test-shift128.c
test-smp-parse.c
test-string-input-visitor.c
test-string-output-visitor.c
test-thread-pool.c tests: mark more coroutine_fns 2023-04-25 13:17:28 +02:00
test-throttle.c test-throttle: don't shadow 'index' variable in do_test_accounting() 2023-09-29 10:07:18 +02:00
test-timed-average.c
test-util-filemonitor.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
test-util-sockets.c
test-uuid.c util/uuid: add a hash function 2023-10-04 18:15:06 -04:00
test-virtio-dmabuf.c hw/display: introduce virtio-dmabuf 2023-10-04 18:15:06 -04:00
test-visitor-serialization.c
test-vmstate.c test-vmstate: fix bad GTree usage, use-after-free 2023-03-02 17:06:27 +01:00
test-write-threshold.c
test-x86-cpuid.c
test-xbzrle.c migration/xbzrle: Use i386 host/cpuinfo.h 2023-05-23 16:51:18 -07:00
test-xs-node.c tests/: spelling fixes 2023-09-08 13:08:52 +03:00
test-yank.c