[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/9] block: pass qiov into before_write notifier
From: |
Denis V. Lunev |
Subject: |
[Qemu-devel] [PATCH 6/9] block: pass qiov into before_write notifier |
Date: |
Tue, 14 Jun 2016 18:25:13 +0300 |
Signed-off-by: Denis V. Lunev <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Fam Zheng <address@hidden>
CC: Kevin Wolf <address@hidden>
CC: Max Reitz <address@hidden>
CC: Jeff Cody <address@hidden>
CC: Eric Blake <address@hidden>
---
block/io.c | 12 +++++++-----
include/block/block_int.h | 1 +
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/block/io.c b/block/io.c
index 2d832aa..d2ad09c 100644
--- a/block/io.c
+++ b/block/io.c
@@ -368,12 +368,14 @@ static void tracked_request_end(BdrvTrackedRequest *req)
*/
static void tracked_request_begin(BdrvTrackedRequest *req,
BlockDriverState *bs,
+ QEMUIOVector *qiov,
int64_t offset,
unsigned int bytes,
enum BdrvTrackedRequestType type)
{
*req = (BdrvTrackedRequest){
.bs = bs,
+ .qiov = qiov,
.offset = offset,
.bytes = bytes,
.type = type,
@@ -1073,7 +1075,7 @@ int coroutine_fn bdrv_co_preadv(BlockDriverState *bs,
bytes = ROUND_UP(bytes, align);
}
- tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ);
+ tracked_request_begin(&req, bs, NULL, offset, bytes, BDRV_TRACKED_READ);
ret = bdrv_aligned_preadv(bs, &req, offset, bytes, align,
use_local_qiov ? &local_qiov : qiov,
flags);
@@ -1391,7 +1393,7 @@ int coroutine_fn bdrv_co_pwritev(BlockDriverState *bs,
* Pad qiov with the read parts and be sure to have a tracked request not
* only for bdrv_aligned_pwritev, but also for the reads of the RMW cycle.
*/
- tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_WRITE);
+ tracked_request_begin(&req, bs, qiov, offset, bytes, BDRV_TRACKED_WRITE);
if (!qiov) {
ret = bdrv_co_do_zero_pwritev(bs, offset, bytes, flags, &req);
@@ -2098,7 +2100,7 @@ int coroutine_fn bdrv_co_flush(BlockDriverState *bs)
return 0;
}
- tracked_request_begin(&req, bs, 0, 0, BDRV_TRACKED_FLUSH);
+ tracked_request_begin(&req, bs, NULL, 0, 0, BDRV_TRACKED_FLUSH);
/* Write back all layers by calling one driver function */
if (bs->drv->bdrv_co_flush) {
@@ -2228,7 +2230,7 @@ int coroutine_fn bdrv_co_discard(BlockDriverState *bs,
int64_t sector_num,
return 0;
}
- tracked_request_begin(&req, bs, sector_num, nb_sectors,
+ tracked_request_begin(&req, bs, NULL, sector_num, nb_sectors,
BDRV_TRACKED_DISCARD);
bdrv_set_dirty(bs, sector_num, nb_sectors);
@@ -2331,7 +2333,7 @@ static int bdrv_co_do_ioctl(BlockDriverState *bs, int
req, void *buf)
};
BlockAIOCB *acb;
- tracked_request_begin(&tracked_req, bs, 0, 0, BDRV_TRACKED_IOCTL);
+ tracked_request_begin(&tracked_req, bs, NULL, 0, 0, BDRV_TRACKED_IOCTL);
if (!drv || !drv->bdrv_aio_ioctl) {
co.ret = -ENOTSUP;
goto out;
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 30a9717..72f463a 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -69,6 +69,7 @@ enum BdrvTrackedRequestType {
typedef struct BdrvTrackedRequest {
BlockDriverState *bs;
+ QEMUIOVector *qiov;
int64_t offset;
unsigned int bytes;
enum BdrvTrackedRequestType type;
--
2.5.0
- [Qemu-devel] [PATCH 3/9] mirror: optimize dirty bitmap filling in mirror_run a bit, (continued)
- [Qemu-devel] [PATCH 3/9] mirror: optimize dirty bitmap filling in mirror_run a bit, Denis V. Lunev, 2016/06/14
- [Qemu-devel] [PATCH 1/9] mirror: fix calling of blk_aio_pwritev/blk_aio_preadv, Denis V. Lunev, 2016/06/14
- [Qemu-devel] [PATCH 4/9] mirror: efficiently zero out target, Denis V. Lunev, 2016/06/14
- [Qemu-devel] [PATCH 2/9] mirror: create mirror_dirty_init helper for mirror_run, Denis V. Lunev, 2016/06/14
- [Qemu-devel] [PATCH 6/9] block: pass qiov into before_write notifier,
Denis V. Lunev <=
- [Qemu-devel] [PATCH 7/9] mirror: allow to save buffer for QEMUIOVector in MirrorOp, Denis V. Lunev, 2016/06/14
- [Qemu-devel] [PATCH 5/9] mirror: improve performance of mirroring of empty disk, Denis V. Lunev, 2016/06/14