From 82ca90548fcd4b7f7f5e541a751f8f82f09b7890 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Tue, 23 Jun 2009 16:12:38 +0300 Subject: block: Clean up after deleting BHs 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 --- block.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block.c b/block.c index aca5a6d28..cefbe7748 100644 --- a/block.c +++ b/block.c @@ -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); } -- cgit v1.2.3