qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).