[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v2 1/6] mirror: Discard target sectors if not alloca
From: |
Fam Zheng |
Subject: |
[Qemu-block] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side |
Date: |
Wed, 6 May 2015 12:52:03 +0800 |
If guest discards a source cluster during mirror, we would want to
discard target side as well.
Signed-off-by: Fam Zheng <address@hidden>
---
block/mirror.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/block/mirror.c b/block/mirror.c
index 58f391a..37a5b61 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -163,6 +163,7 @@ static uint64_t coroutine_fn
mirror_iteration(MirrorBlockJob *s)
int64_t end, sector_num, next_chunk, next_sector, hbitmap_next_sector;
uint64_t delay_ns = 0;
MirrorOp *op;
+ int pnum;
s->sector_num = hbitmap_iter_next(&s->hbi);
if (s->sector_num < 0) {
@@ -289,8 +290,15 @@ static uint64_t coroutine_fn
mirror_iteration(MirrorBlockJob *s)
s->in_flight++;
s->sectors_in_flight += nb_sectors;
trace_mirror_one_iteration(s, sector_num, nb_sectors);
- bdrv_aio_readv(source, sector_num, &op->qiov, nb_sectors,
- mirror_read_complete, op);
+
+ if (!bdrv_is_allocated_above(source, NULL, sector_num,
+ nb_sectors, &pnum)) {
+ bdrv_aio_discard(s->target, sector_num, nb_sectors,
+ mirror_write_complete, op);
+ } else {
+ bdrv_aio_readv(source, sector_num, &op->qiov, nb_sectors,
+ mirror_read_complete, op);
+ }
return delay_ns;
}
--
1.9.3
- [Qemu-block] [PATCH v2 0/6] block: Mirror discarded sectors, Fam Zheng, 2015/05/06
- [Qemu-block] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side,
Fam Zheng <=
- [Qemu-block] [PATCH v2 3/6] block: Remove bdrv_reset_dirty, Fam Zheng, 2015/05/06
- [Qemu-block] [PATCH v2 2/6] block: Fix dirty bitmap in bdrv_co_discard, Fam Zheng, 2015/05/06
- [Qemu-block] [PATCH v2 4/6] qemu-iotests: Make block job methods common, Fam Zheng, 2015/05/06
- [Qemu-block] [PATCH v2 5/6] qemu-iotests: Add test case for mirror with unmap, Fam Zheng, 2015/05/06
- [Qemu-block] [PATCH v2 6/6] iotests: Use event_wait in wait_ready, Fam Zheng, 2015/05/06