mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 02:24:51 +00:00
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>
This commit is contained in:
@@ -51,7 +51,7 @@ static int coroutine_fn stream_populate(BlockBackend *blk,
|
|||||||
return blk_co_preadv(blk, offset, bytes, NULL, BDRV_REQ_PREFETCH);
|
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);
|
StreamBlockJob *s = container_of(job, StreamBlockJob, common.job);
|
||||||
BlockDriverState *unfiltered_bs;
|
BlockDriverState *unfiltered_bs;
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ struct JobDriver {
|
|||||||
* This callback will not be invoked if the job has already failed.
|
* This callback will not be invoked if the job has already failed.
|
||||||
* If it fails, abort and then clean will be called.
|
* 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
|
* If the callback is not NULL, it will be invoked when all the jobs
|
||||||
|
|||||||
Reference in New Issue
Block a user