Call qemu_bh_delete at bdrv_aio_bh_cb.
authorDor Laor <dor@redhat.com>
Mon, 1 Jun 2009 09:07:23 +0000 (12:07 +0300)
committerAnthony Liguori <aliguori@us.ibm.com>
Tue, 16 Jun 2009 20:36:47 +0000 (15:36 -0500)
Also replave qemu_bh_cancel with qemu_bh_delete in bdrv_aio_cancel_em.
 Otherwise the bh will live forever in the bh list.

Signed-off-by: Dor Laor <dor@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

block.c

diff --git a/block.c b/block.c
index c7e0dcb..ad5ee7a 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1373,7 +1373,7 @@ typedef struct BlockDriverAIOCBSync {
 static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb)
 {
     BlockDriverAIOCBSync *acb = (BlockDriverAIOCBSync *)blockacb;
-    qemu_bh_cancel(acb->bh);
+    qemu_bh_delete(acb->bh);
     qemu_aio_release(acb);
 }
 
@@ -1390,7 +1390,7 @@ static void bdrv_aio_bh_cb(void *opaque)
         qemu_iovec_from_buffer(acb->qiov, acb->bounce, acb->qiov->size);
     qemu_vfree(acb->bounce);
     acb->common.cb(acb->common.opaque, acb->ret);
-
+    qemu_bh_delete(acb->bh);
     qemu_aio_release(acb);
 }