[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-8.2 0/4] block: Fix deadlocks with the stream job
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH for-8.2 0/4] block: Fix deadlocks with the stream job |
Date: |
Wed, 15 Nov 2023 13:36:01 -0500 |
On Wed, Nov 15, 2023 at 06:20:08PM +0100, Kevin Wolf wrote:
> This series contains three fixes for deadlocks that follow the same
> pattern: A nested event loop in the main thread waits for an iothread to
> make progress, but the AioContext lock of that iothread is still held by
> the main loop, so it can never make progress.
>
> We're planning to fully remove the AioContext lock in 9.0, which would
> automatically get rid of this kind of bugs, but it's still there in 8.2,
> so let's fix them individually for this release.
>
> Kevin Wolf (4):
> block: Fix bdrv_graph_wrlock() call in blk_remove_bs()
> block: Fix deadlocks in bdrv_graph_wrunlock()
> stream: Fix AioContext locking during bdrv_graph_wrlock()
> iotests: Test two stream jobs in a single iothread
>
> include/block/graph-lock.h | 15 +++-
> block.c | 26 +++----
> block/backup.c | 2 +-
> block/blklogwrites.c | 4 +-
> block/blkverify.c | 2 +-
> block/block-backend.c | 10 ++-
> block/commit.c | 10 +--
> block/graph-lock.c | 23 +++++-
> block/mirror.c | 14 ++--
> block/qcow2.c | 2 +-
> block/quorum.c | 4 +-
> block/replication.c | 10 +--
> block/snapshot.c | 2 +-
> block/stream.c | 10 +--
> block/vmdk.c | 10 +--
> blockdev.c | 4 +-
> blockjob.c | 8 +-
> tests/unit/test-bdrv-drain.c | 20 ++---
> tests/unit/test-bdrv-graph-mod.c | 10 +--
> scripts/block-coroutine-wrapper.py | 2 +-
> tests/qemu-iotests/tests/iothreads-stream | 73 +++++++++++++++++++
> tests/qemu-iotests/tests/iothreads-stream.out | 11 +++
> 22 files changed, 197 insertions(+), 75 deletions(-)
> create mode 100755 tests/qemu-iotests/tests/iothreads-stream
> create mode 100644 tests/qemu-iotests/tests/iothreads-stream.out
>
> --
> 2.41.0
>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
signature.asc
Description: PGP signature