From ca5fd113b8ae5898853a757e06cb8d8a0c5e5d85 Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Thu, 11 Sep 2014 13:41:27 +0800 Subject: [PATCH] block: Drop AIOCBInfo.cancel Now that all the implementations are converted to asynchronous version and we can emulate synchronous cancellation with it. Let's drop the unused member. Signed-off-by: Fam Zheng Signed-off-by: Stefan Hajnoczi --- block.c | 24 ++++++++++-------------- include/block/aio.h | 1 - 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/block.c b/block.c index 45d3a5ba88..3a3648da97 100644 --- a/block.c +++ b/block.c @@ -4640,22 +4640,18 @@ int bdrv_aio_multiwrite(BlockDriverState *bs, BlockRequest *reqs, int num_reqs) void bdrv_aio_cancel(BlockDriverAIOCB *acb) { - if (acb->aiocb_info->cancel) { - acb->aiocb_info->cancel(acb); - } else { - qemu_aio_ref(acb); - bdrv_aio_cancel_async(acb); - while (acb->refcnt > 1) { - if (acb->aiocb_info->get_aio_context) { - aio_poll(acb->aiocb_info->get_aio_context(acb), true); - } else if (acb->bs) { - aio_poll(bdrv_get_aio_context(acb->bs), true); - } else { - abort(); - } + qemu_aio_ref(acb); + bdrv_aio_cancel_async(acb); + while (acb->refcnt > 1) { + if (acb->aiocb_info->get_aio_context) { + aio_poll(acb->aiocb_info->get_aio_context(acb), true); + } else if (acb->bs) { + aio_poll(bdrv_get_aio_context(acb->bs), true); + } else { + abort(); } - qemu_aio_release(acb); } + qemu_aio_release(acb); } /* Async version of aio cancel. The caller is not blocked if the acb implements diff --git a/include/block/aio.h b/include/block/aio.h index ad361e34c7..f2d0582bd1 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -26,7 +26,6 @@ typedef struct BlockDriverAIOCB BlockDriverAIOCB; typedef void BlockDriverCompletionFunc(void *opaque, int ret); typedef struct AIOCBInfo { - void (*cancel)(BlockDriverAIOCB *acb); void (*cancel_async)(BlockDriverAIOCB *acb); AioContext *(*get_aio_context)(BlockDriverAIOCB *acb); size_t aiocb_size; -- 2.11.4.GIT