diff options
author | Avi Kivity <avi@redhat.com> | 2009-06-23 16:12:38 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-06-23 16:32:38 +0300 |
commit | 82ca90548fcd4b7f7f5e541a751f8f82f09b7890 (patch) | |
tree | 64cdee300866380ee2c4034d705b763f3fc33659 | |
parent | 119f9ed1ad0c3f8c4ab78390bc5d0c55b226dc3d (diff) |
Commit 6a7ad299 ("Call qemu_bh_delete at bdrv_aio_bh_cb") deletes emulated
aio bottom halves to prevent endless accumulation. However, it leaves a
stale ->bh pointer, which is then waited on when the aio is reused.
Zeroing the pointer fixes the issue, allowing vmdk format images to be used.
Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r-- | block.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1374,6 +1374,7 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb) { BlockDriverAIOCBSync *acb = (BlockDriverAIOCBSync *)blockacb; qemu_bh_delete(acb->bh); + acb->bh = NULL; qemu_aio_release(acb); } @@ -1391,6 +1392,7 @@ static void bdrv_aio_bh_cb(void *opaque) qemu_vfree(acb->bounce); acb->common.cb(acb->common.opaque, acb->ret); qemu_bh_delete(acb->bh); + acb->bh = NULL; qemu_aio_release(acb); } |