diff options
Diffstat (limited to 'gitlab/issues/target_missing/host_missing/accel_missing/2276.toml')
| -rw-r--r-- | gitlab/issues/target_missing/host_missing/accel_missing/2276.toml | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/gitlab/issues/target_missing/host_missing/accel_missing/2276.toml b/gitlab/issues/target_missing/host_missing/accel_missing/2276.toml new file mode 100644 index 00000000..a62e2386 --- /dev/null +++ b/gitlab/issues/target_missing/host_missing/accel_missing/2276.toml @@ -0,0 +1,50 @@ +id = 2276 +title = "qemu crash for suspend and resume vm while backup disk of vm" +state = "opened" +created_at = "2024-04-10T01:06:24.572Z" +closed_at = "n/a" +labels = ["Storage", "device:virtio"] +url = "https://gitlab.com/qemu-project/qemu/-/issues/2276" +host-os = "centos9" +host-arch = "ARM" +qemu-version = "qemu-7.0、qemu-7.1、qemu-7.2、qemu-8.0" +guest-os = "- OS/kernel version:" +guest-arch = "## Description of problem" +description = """""" +reproduce = """1. virsh create vm2.xml +2. virsh backup-begin domid +3. virsh suspend domid +4. sleep 1 && virsh resume domid + +qemu crash""" +additional = """static int blk_do_set_aio_context(BlockBackend *blk, AioContext *new_context, + bool update_root_node, Error **errp) +{ + BlockDriverState *bs = blk_bs(blk); + ThrottleGroupMember *tgm = &blk->public.throttle_group_member; + int ret; + + if (bs) { + bdrv_ref(bs); + + if (update_root_node) { + ret = bdrv_child_try_set_aio_context(bs, new_context, blk->root, + errp); + if (ret < 0) { + bdrv_unref(bs); + return ret; + } + } + if (tgm->throttle_state) { + _ ****bdrv_drained_begin(bs);----- bs->aio_context->lock lock count is 0,so unlock failed**_ + throttle_group_detach_aio_context(tgm); + throttle_group_attach_aio_context(tgm, new_context); + bdrv_drained_end(bs); + } + + bdrv_unref(bs); + } + + blk->ctx = new_context; + return 0; +}""" |