diff options
author | Kevin Wolf <kwolf@redhat.com> | 2023-05-25 14:47:06 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2023-05-30 17:21:23 +0200 |
commit | 2626d27f50f3c993936db04bc6e92d553e1dc914 (patch) | |
tree | 6b445ed22eb5578a109ac06235c834bab860e02c /block | |
parent | 4c20dd24b1178c78c47bf323173360b85e65e1e1 (diff) | |
download | qemu-2626d27f50f3c993936db04bc6e92d553e1dc914.zip qemu-2626d27f50f3c993936db04bc6e92d553e1dc914.tar.gz qemu-2626d27f50f3c993936db04bc6e92d553e1dc914.tar.bz2 |
mirror: Hold main AioContext lock for calling bdrv_open_backing_file()
bdrv_open_backing_file() calls bdrv_open_inherit(), so all callers must
hold the main AioContext lock.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230525124713.401149-6-kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/mirror.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/block/mirror.c b/block/mirror.c index b7d92d1..d3cacd1 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -662,11 +662,15 @@ static int mirror_exit_common(Job *job) bool abort = job->ret < 0; int ret = 0; + GLOBAL_STATE_CODE(); + if (s->prepared) { return 0; } s->prepared = true; + aio_context_acquire(qemu_get_aio_context()); + mirror_top_bs = s->mirror_top_bs; bs_opaque = mirror_top_bs->opaque; src = mirror_top_bs->backing->bs; @@ -789,6 +793,8 @@ static int mirror_exit_common(Job *job) bdrv_unref(mirror_top_bs); bdrv_unref(src); + aio_context_release(qemu_get_aio_context()); + return ret; } |