From: Ian Jackson Date: Wed, 7 Oct 2009 14:57:18 +0000 (+0100) Subject: block: Clean up after deleting BHs X-Git-Tag: xen-4.0.0-rc1~18 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a05958b6e32f1748ea70b1efca13394956c0698b;p=qemu-xen-4.3-testing.git 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 --- diff --git a/block.c b/block.c index bad2d3da9..88e70d3e1 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); }