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 <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
0884657b2e
commit
36afc45159
2
block.c
2
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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user