qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v1 01/18] block/io: add bdrv_aio_{preadv, pwritev}


From: Pavel Butsykin
Subject: [Qemu-devel] [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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]