From a05958b6e32f1748ea70b1efca13394956c0698b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 7 Oct 2009 15:57:18 +0100 Subject: [PATCH] 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 Signed-off-by: Anthony Liguori [ Backported from 6bbff9a0b495918309074ac60375be5f9dc868b3 by Stefano Stabellini. ] Signed-off-by: Ian Jackson --- block.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/block.c b/block.c index bad2d3da..88e70d3e 100644 --- a/block.c +++ b/block.c @@ -1523,6 +1523,7 @@ static void bdrv_aio_bh_cb(void *opaque) BlockDriverAIOCBSync *acb = opaque; acb->common.cb(acb->common.opaque, acb->ret); qemu_bh_delete(acb->bh); + acb->bh = NULL; qemu_aio_release(acb); } @@ -1562,6 +1563,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); } -- 2.39.5