[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v1 01/18] block/io: add bdrv_aio_{preadv, pwritev}
From: |
Pavel Butsykin |
Subject: |
[Qemu-block] [PATCH v1 01/18] block/io: add bdrv_aio_{preadv, pwritev} |
Date: |
Tue, 15 Nov 2016 09:36:58 +0300 |
It's just byte-based wrappers over bdrv_co_aio_prw_vector(), which provide
a byte-based interface for AIO read/write.
Signed-off-by: Pavel Butsykin <address@hidden>
---
block/io.c | 16 ++++++++++++++++
include/block/block.h | 7 +++++++
2 files changed, 23 insertions(+)
diff --git a/block/io.c b/block/io.c
index fdf7080..099bddb 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1991,6 +1991,22 @@ int bdrv_readv_vmstate(BlockDriverState *bs,
QEMUIOVector *qiov, int64_t pos)
/**************************************************************/
/* async I/Os */
+BlockAIOCB *bdrv_aio_preadv(BdrvChild *child, int64_t offset,
+ QEMUIOVector *qiov, unsigned int bytes,
+ BlockCompletionFunc *cb, void *opaque)
+{
+ assert(bytes == qiov->size);
+ return bdrv_co_aio_prw_vector(child, offset, qiov, 0, cb, opaque, false);
+}
+
+BlockAIOCB *bdrv_aio_pwritev(BdrvChild *child, int64_t offset,
+ QEMUIOVector *qiov, unsigned int bytes,
+ BlockCompletionFunc *cb, void *opaque)
+{
+ assert(bytes == qiov->size);
+ return bdrv_co_aio_prw_vector(child, offset, qiov, 0, cb, opaque, true);
+}
+
BlockAIOCB *bdrv_aio_readv(BdrvChild *child, int64_t sector_num,
QEMUIOVector *qiov, int nb_sectors,
BlockCompletionFunc *cb, void *opaque)
diff --git a/include/block/block.h b/include/block/block.h
index e18233a..6728219 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -305,6 +305,13 @@ BlockDriverState *check_to_replace_node(BlockDriverState
*parent_bs,
const char *node_name, Error **errp);
/* async block I/O */
+
+BlockAIOCB *bdrv_aio_preadv(BdrvChild *child, int64_t offset,
+ QEMUIOVector *qiov, unsigned int bytes,
+ BlockCompletionFunc *cb, void *opaque);
+BlockAIOCB *bdrv_aio_pwritev(BdrvChild *child, int64_t offset,
+ QEMUIOVector *qiov, unsigned int bytes,
+ BlockCompletionFunc *cb, void *opaque);
BlockAIOCB *bdrv_aio_readv(BdrvChild *child, int64_t sector_num,
QEMUIOVector *iov, int nb_sectors,
BlockCompletionFunc *cb, void *opaque);
--
2.10.1
- [Qemu-block] [PATCH v1 03/18] util/rbtree: add rbtree from linux kernel, (continued)
- [Qemu-block] [PATCH v1 11/18] block/pcache: cache invalidation on AIO write requests, Pavel Butsykin, 2016/11/15
- [Qemu-block] [PATCH v1 15/18] block/pcache: drop used pcache nodes, Pavel Butsykin, 2016/11/15
- [Qemu-block] [PATCH v1 17/18] block/pcache: add tracepoints, Pavel Butsykin, 2016/11/15
- [Qemu-block] [PATCH v1 18/18] block/pcache: debug build, Pavel Butsykin, 2016/11/15
- [Qemu-block] [PATCH v1 01/18] block/io: add bdrv_aio_{preadv, pwritev},
Pavel Butsykin <=
[Qemu-block] [PATCH v1 09/18] block/pcache: add AIO readahead, Pavel Butsykin, 2016/11/15
[Qemu-block] [PATCH v1 16/18] block/pcache: write through, Pavel Butsykin, 2016/11/15
Re: [Qemu-block] [Qemu-devel] [PATCH v1 00/18] I/O prefetch cache, no-reply, 2016/11/15