* [Qemu-devel] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side
2015-05-06 4:52 [Qemu-devel] [PATCH v2 0/6] block: Mirror discarded sectors Fam Zheng
@ 2015-05-06 4:52 ` Fam Zheng
0 siblings, 0 replies; 2+ messages in thread
From: Fam Zheng @ 2015-05-06 4:52 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, qemu-block, Stefan Hajnoczi, pbonzini, jsnow,
wangxiaolong
If guest discards a source cluster during mirror, we would want to
discard target side as well.
Signed-off-by: Fam Zheng <famz@redhat.com>
---
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
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side
@ 2015-05-06 6:36 wangxiaolong
0 siblings, 0 replies; 2+ messages in thread
From: wangxiaolong @ 2015-05-06 6:36 UTC (permalink / raw)
To: qemu-devel, Fam Zheng
Cc: Kevin Wolf, pbonzini, jsnow, qemu-block, Stefan Hajnoczi
[-- Attachment #1: Type: text/html, Size: 7381 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-05-06 7:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-06 6:36 [Qemu-devel] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side wangxiaolong
-- strict thread matches above, loose matches on Subject: below --
2015-05-06 4:52 [Qemu-devel] [PATCH v2 0/6] block: Mirror discarded sectors Fam Zheng
2015-05-06 4:52 ` [Qemu-devel] [PATCH v2 1/6] mirror: Discard target sectors if not allocated at source side Fam Zheng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).