[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 6/9] blkdebug: Implement .cancel_async
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [RFC PATCH 6/9] blkdebug: Implement .cancel_async |
Date: |
Thu, 21 Aug 2014 19:56:53 +0800 |
Very similar to .cancel, except that cb is called before releasing the
aio.
Signed-off-by: Fam Zheng <address@hidden>
---
block/blkdebug.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/block/blkdebug.c b/block/blkdebug.c
index 1586ed9..d269956 100644
--- a/block/blkdebug.c
+++ b/block/blkdebug.c
@@ -48,13 +48,6 @@ typedef struct BlkdebugSuspendedReq {
QLIST_ENTRY(BlkdebugSuspendedReq) next;
} BlkdebugSuspendedReq;
-static void blkdebug_aio_cancel(BlockDriverAIOCB *blockacb);
-
-static const AIOCBInfo blkdebug_aiocb_info = {
- .aiocb_size = sizeof(BlkdebugAIOCB),
- .cancel = blkdebug_aio_cancel,
-};
-
enum {
ACTION_INJECT_ERROR,
ACTION_SET_STATE,
@@ -446,12 +439,25 @@ static void error_callback_bh(void *opaque)
qemu_aio_release(acb);
}
+static void blkdebug_aio_cancel_async(BlockDriverAIOCB *blockacb)
+{
+ BlkdebugAIOCB *acb = container_of(blockacb, BlkdebugAIOCB, common);
+ blockacb->cb(blockacb->opaque, -ECANCELED);
+ qemu_aio_release(acb);
+}
+
static void blkdebug_aio_cancel(BlockDriverAIOCB *blockacb)
{
BlkdebugAIOCB *acb = container_of(blockacb, BlkdebugAIOCB, common);
qemu_aio_release(acb);
}
+static const AIOCBInfo blkdebug_aiocb_info = {
+ .aiocb_size = sizeof(BlkdebugAIOCB),
+ .cancel = blkdebug_aio_cancel,
+ .cancel_async = blkdebug_aio_cancel_async,
+};
+
static BlockDriverAIOCB *inject_error(BlockDriverState *bs,
BlockDriverCompletionFunc *cb, void *opaque, BlkdebugRule *rule)
{
--
2.0.3
- [Qemu-devel] [RFC PATCH 2/9] tests: Add testing code for bdrv_aio_cancel_async, (continued)
- [Qemu-devel] [RFC PATCH 2/9] tests: Add testing code for bdrv_aio_cancel_async, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 3/9] iscsi: Implement .cancel_async in acb info, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 4/9] linux-aio: Implement .cancel_async, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 5/9] thread-pool: Implement .cancel_async, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 7/9] dma: Implement .cancel_async, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 8/9] block: Implement stub bdrv_em_co_aiocb_info.cancel_async, Fam Zheng, 2014/08/21
- [Qemu-devel] [RFC PATCH 6/9] blkdebug: Implement .cancel_async,
Fam Zheng <=
- [Qemu-devel] [RFC PATCH 9/9] scsi: Cancel request asynchronously, Fam Zheng, 2014/08/21