[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 3/5] block/block-backend: add blk_co_pwritev_part
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v2 3/5] block/block-backend: add blk_co_pwritev_part |
Date: |
Fri, 11 Oct 2019 12:07:09 +0300 |
Add blk write function with qiov_offset parameter. It's needed for the
following commit.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
---
include/sysemu/block-backend.h | 4 ++++
block/block-backend.c | 17 +++++++++++++----
2 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 368d53af77..73f2cef7fe 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -121,6 +121,10 @@ void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps
*ops, void *opaque);
int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
unsigned int bytes, QEMUIOVector *qiov,
BdrvRequestFlags flags);
+int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset,
+ unsigned int bytes,
+ QEMUIOVector *qiov, size_t qiov_offset,
+ BdrvRequestFlags flags);
int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset,
unsigned int bytes, QEMUIOVector *qiov,
BdrvRequestFlags flags);
diff --git a/block/block-backend.c b/block/block-backend.c
index 1c605d5444..b3d00478af 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -1176,9 +1176,10 @@ int coroutine_fn blk_co_preadv(BlockBackend *blk,
int64_t offset,
return ret;
}
-int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset,
- unsigned int bytes, QEMUIOVector *qiov,
- BdrvRequestFlags flags)
+int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset,
+ unsigned int bytes,
+ QEMUIOVector *qiov, size_t qiov_offset,
+ BdrvRequestFlags flags)
{
int ret;
BlockDriverState *bs;
@@ -1205,11 +1206,19 @@ int coroutine_fn blk_co_pwritev(BlockBackend *blk,
int64_t offset,
flags |= BDRV_REQ_FUA;
}
- ret = bdrv_co_pwritev(blk->root, offset, bytes, qiov, flags);
+ ret = bdrv_co_pwritev_part(blk->root, offset, bytes, qiov, qiov_offset,
+ flags);
bdrv_dec_in_flight(bs);
return ret;
}
+int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset,
+ unsigned int bytes, QEMUIOVector *qiov,
+ BdrvRequestFlags flags)
+{
+ return blk_co_pwritev_part(blk, offset, bytes, qiov, 0, flags);
+}
+
typedef struct BlkRwCo {
BlockBackend *blk;
int64_t offset;
--
2.21.0
- [PATCH v2 0/5] active-mirror: support unaligned guest operations, Vladimir Sementsov-Ogievskiy, 2019/10/11
- [PATCH v2 1/5] hbitmap: handle set/reset with zero length, Vladimir Sementsov-Ogievskiy, 2019/10/11
- [PATCH v2 2/5] block/mirror: simplify do_sync_target_write, Vladimir Sementsov-Ogievskiy, 2019/10/11
- [PATCH v2 5/5] Revert "mirror: Only mirror granularity-aligned chunks", Vladimir Sementsov-Ogievskiy, 2019/10/11
- [PATCH v2 4/5] block/mirror: support unaligned write in active mirror, Vladimir Sementsov-Ogievskiy, 2019/10/11
- [PATCH v2 3/5] block/block-backend: add blk_co_pwritev_part,
Vladimir Sementsov-Ogievskiy <=
- Re: [PATCH v2 0/5] active-mirror: support unaligned guest operations, Max Reitz, 2019/10/18