aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFiona Ebner <f.ebner@proxmox.com>2025-05-30 17:11:10 +0200
committerKevin Wolf <kwolf@redhat.com>2025-07-14 15:42:04 +0200
commit0a0474b065b97e9a25c2723bde87afbc77ba4bd9 (patch)
tree183910f389c0e81e8553c1ef4823cdef8f6692e3
parentc6b5328b5b81a358df766094a361b747eadc55a8 (diff)
downloadqemu-0a0474b065b97e9a25c2723bde87afbc77ba4bd9.zip
qemu-0a0474b065b97e9a25c2723bde87afbc77ba4bd9.tar.gz
qemu-0a0474b065b97e9a25c2723bde87afbc77ba4bd9.tar.bz2
block/stream: mark stream_prepare() as GRAPH_UNLOCKED
The function stream_prepare() calls bdrv_drain_all_begin(), which must be called with the graph unlocked. Also mark the JobDriver's prepare() callback as GRAPH_UNLOCKED_PTR, because that is the callback via which stream_prepare() is reached. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Message-ID: <20250530151125.955508-34-f.ebner@proxmox.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r--block/stream.c2
-rw-r--r--include/qemu/job.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/block/stream.c b/block/stream.c
index 17e2404..c0616b6 100644
--- a/block/stream.c
+++ b/block/stream.c
@@ -51,7 +51,7 @@ static int coroutine_fn stream_populate(BlockBackend *blk,
return blk_co_preadv(blk, offset, bytes, NULL, BDRV_REQ_PREFETCH);
}
-static int stream_prepare(Job *job)
+static int GRAPH_UNLOCKED stream_prepare(Job *job)
{
StreamBlockJob *s = container_of(job, StreamBlockJob, common.job);
BlockDriverState *unfiltered_bs;
diff --git a/include/qemu/job.h b/include/qemu/job.h
index a5a0415..bb8ee76 100644
--- a/include/qemu/job.h
+++ b/include/qemu/job.h
@@ -263,7 +263,7 @@ struct JobDriver {
* This callback will not be invoked if the job has already failed.
* If it fails, abort and then clean will be called.
*/
- int (*prepare)(Job *job);
+ int GRAPH_UNLOCKED_PTR (*prepare)(Job *job);
/**
* If the callback is not NULL, it will be invoked when all the jobs