qemu-e2k/block
Kevin Wolf 80fc5d2600 graph-lock: Disable locking for now
In QEMU 8.0, we've been seeing deadlocks in bdrv_graph_wrlock(). They
come from callers that hold an AioContext lock, which is not allowed
during polling. In theory, we could temporarily release the lock, but
callers are inconsistent about whether they hold a lock, and if they do,
some are also confused about which one they hold. While all of this is
fixable, it's not trivial, and the best course of action for 8.0.1 is
probably just disabling the graph locking code temporarily.

We don't currently rely on graph locking yet. It is supposed to replace
the AioContext lock eventually to enable multiqueue support, but as long
as we still have the AioContext lock, it is sufficient without the graph
lock. Once the AioContext lock goes away, the deadlock doesn't exist any
more either and this commit can be reverted. (Of course, it can also be
reverted while the AioContext lock still exists if the callers have been
fixed.)

Cc: qemu-stable@nongnu.org
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230517152834.277483-2-kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2023-05-19 19:16:53 +02:00
..
export block/export: Fix null pointer dereference in error path 2023-05-19 19:12:12 +02:00
monitor block/monitor: Fix crash when executing HMP commit 2023-04-25 15:11:57 +02:00
accounting.c
aio_task.c
amend.c block: Mark BlockDriver callbacks for amend job GRAPH_RDLOCK 2023-05-10 14:16:54 +02:00
backup.c
blkdebug.c blkdebug: add missing coroutine_fn annotation 2023-04-25 13:17:28 +02:00
blkio.c
blklogwrites.c
blkreplay.c
blkverify.c block: Mark bdrv_recurse_can_replace() and callers GRAPH_RDLOCK 2023-05-10 14:16:54 +02:00
block-backend.c block: introduce zone append write for zoned devices 2023-05-15 08:18:10 -04:00
block-copy.c
block-gen.h
block-ram-registrar.c
bochs.c
cloop.c
commit.c blockjob: Adhere to rate limit even when reentered early 2023-05-19 19:12:12 +02:00
copy-before-write.c
copy-before-write.h
copy-on-read.c
copy-on-read.h
coroutines.h nbd: Mark nbd_co_do_establish_connection() and callers GRAPH_RDLOCK 2023-05-10 14:16:53 +02:00
create.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
crypto.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
crypto.h
curl.c
dirty-bitmap.c
dmg-bz2.c
dmg-lzfse.c
dmg.c block/dmg: Declare a type definition for DMG uncompress function 2023-04-24 13:53:44 -04:00
dmg.h block/dmg: Declare a type definition for DMG uncompress function 2023-04-24 13:53:44 -04:00
file-posix.c block: add some trace events for zone append 2023-05-15 08:18:10 -04:00
file-win32.c thread-pool: avoid passing the pool parameter every time 2023-04-25 13:17:28 +02:00
filter-compress.c
gluster.c
graph-lock.c graph-lock: Disable locking for now 2023-05-19 19:16:53 +02:00
io_uring.c block: introduce zone append write for zoned devices 2023-05-15 08:18:10 -04:00
io.c block: introduce zone append write for zoned devices 2023-05-15 08:18:10 -04:00
iscsi-opts.c
iscsi.c
linux-aio.c block: introduce zone append write for zoned devices 2023-05-15 08:18:10 -04:00
meson.build block/meson.build: prefer positive condition for replication 2023-05-10 18:48:11 +02:00
mirror.c blockjob: Adhere to rate limit even when reentered early 2023-05-19 19:12:12 +02:00
nbd.c nbd: Mark nbd_co_do_establish_connection() and callers GRAPH_RDLOCK 2023-05-10 14:16:53 +02:00
nfs.c block/nfs: do not poll within a coroutine 2023-04-12 18:26:51 +02:00
null.c
nvme.c
parallels-ext.c
parallels.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
parallels.h
preallocate.c
progress_meter.c
qapi-sysemu.c block: add accounting for zone append operation 2023-05-15 08:18:10 -04:00
qapi.c block: add accounting for zone append operation 2023-05-15 08:18:10 -04:00
qcow2-bitmap.c qcow2: mark various functions as coroutine_fn and GRAPH_RDLOCK 2023-04-25 13:17:28 +02:00
qcow2-cache.c
qcow2-cluster.c qcow2: mark various functions as coroutine_fn and GRAPH_RDLOCK 2023-04-25 13:17:28 +02:00
qcow2-refcount.c qcow2: Don't call bdrv_getlength() in coroutine_fns 2023-05-10 14:16:53 +02:00
qcow2-snapshot.c qcow2: mark various functions as coroutine_fn and GRAPH_RDLOCK 2023-04-25 13:17:28 +02:00
qcow2-threads.c thread-pool: avoid passing the pool parameter every time 2023-04-25 13:17:28 +02:00
qcow2.c qcow2: Unlock the graph in qcow2_do_open() where necessary 2023-05-19 19:12:12 +02:00
qcow2.h qcow2: Don't call bdrv_getlength() in coroutine_fns 2023-05-10 14:16:53 +02:00
qcow.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
qed.h
quorum.c block: Mark bdrv_recurse_can_replace() and callers GRAPH_RDLOCK 2023-05-10 14:16:54 +02:00
raw-format.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
rbd.c
replication.c
reqlist.c
snapshot-access.c
snapshot.c
ssh.c
stream.c blockjob: Adhere to rate limit even when reentered early 2023-05-19 19:12:12 +02:00
throttle-groups.c
throttle.c
trace-events block: add some trace events for zone append 2023-05-15 08:18:10 -04:00
trace.h
vdi.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
vhdx-endian.c
vhdx-log.c
vhdx.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
vhdx.h
vmdk.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
vpc.c block: Call .bdrv_co_create(_opts) unlocked 2023-05-19 19:12:12 +02:00
vvfat.c vvfat: mark various functions as coroutine_fn 2023-04-25 13:17:28 +02:00
win32-aio.c
write-threshold.c