Message ID | 1486134413-19988-1-git-send-email-den@openvz.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 02/03/2017 06:06 PM, Denis V. Lunev wrote: > From: Anton Nefedov <anton.nefedov@virtuozzo.com> > > If explicit zeroing out before mirroring is required for the target image, > it moves the block job offset counter to EOF, then offset and len counters > count the image size twice. There is no harm but stats are confusing, > specifically the progress of the operation is always reported as 99% by > management tools. > > The patch skips offset increase for the first "technical" pass over the > image. This should not cause any further harm. > > Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com> > Signed-off-by: Denis V. Lunev <den@openvz.org> > Reviewed-by: Eric Blake <eblake@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > CC: Jeff Cody <jcody@redhat.com> > CC: Kevin Wolf <kwolf@redhat.com> > CC: Max Reitz <mreitz@redhat.com> actually this is V3 patch. Sorry for broken subject. Den
On 02/03/2017 06:08 PM, Denis V. Lunev wrote: > On 02/03/2017 06:06 PM, Denis V. Lunev wrote: >> From: Anton Nefedov <anton.nefedov@virtuozzo.com> >> >> If explicit zeroing out before mirroring is required for the target image, >> it moves the block job offset counter to EOF, then offset and len counters >> count the image size twice. There is no harm but stats are confusing, >> specifically the progress of the operation is always reported as 99% by >> management tools. >> >> The patch skips offset increase for the first "technical" pass over the >> image. This should not cause any further harm. >> >> Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com> >> Signed-off-by: Denis V. Lunev <den@openvz.org> >> Reviewed-by: Eric Blake <eblake@redhat.com> >> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> >> CC: Jeff Cody <jcody@redhat.com> >> CC: Kevin Wolf <kwolf@redhat.com> >> CC: Max Reitz <mreitz@redhat.com> > actually this is V3 patch. Sorry for broken subject. > > Den ping
On 13.02.2017 08:10, Denis V. Lunev wrote: > On 02/03/2017 06:08 PM, Denis V. Lunev wrote: >> On 02/03/2017 06:06 PM, Denis V. Lunev wrote: >>> From: Anton Nefedov <anton.nefedov@virtuozzo.com> >>> >>> If explicit zeroing out before mirroring is required for the target image, >>> it moves the block job offset counter to EOF, then offset and len counters >>> count the image size twice. There is no harm but stats are confusing, >>> specifically the progress of the operation is always reported as 99% by >>> management tools. >>> >>> The patch skips offset increase for the first "technical" pass over the >>> image. This should not cause any further harm. >>> >>> Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com> >>> Signed-off-by: Denis V. Lunev <den@openvz.org> >>> Reviewed-by: Eric Blake <eblake@redhat.com> >>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> >>> CC: Jeff Cody <jcody@redhat.com> >>> CC: Kevin Wolf <kwolf@redhat.com> >>> CC: Max Reitz <mreitz@redhat.com> >> actually this is V3 patch. Sorry for broken subject. >> >> Den > ping Didn't Jeff merge v2? http://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg01319.html Max
On Mon, Feb 13, 2017 at 06:16:36PM +0100, Max Reitz wrote: > On 13.02.2017 08:10, Denis V. Lunev wrote: > > On 02/03/2017 06:08 PM, Denis V. Lunev wrote: > >> On 02/03/2017 06:06 PM, Denis V. Lunev wrote: > >>> From: Anton Nefedov <anton.nefedov@virtuozzo.com> > >>> > >>> If explicit zeroing out before mirroring is required for the target image, > >>> it moves the block job offset counter to EOF, then offset and len counters > >>> count the image size twice. There is no harm but stats are confusing, > >>> specifically the progress of the operation is always reported as 99% by > >>> management tools. > >>> > >>> The patch skips offset increase for the first "technical" pass over the > >>> image. This should not cause any further harm. > >>> > >>> Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com> > >>> Signed-off-by: Denis V. Lunev <den@openvz.org> > >>> Reviewed-by: Eric Blake <eblake@redhat.com> > >>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > >>> CC: Jeff Cody <jcody@redhat.com> > >>> CC: Kevin Wolf <kwolf@redhat.com> > >>> CC: Max Reitz <mreitz@redhat.com> > >> actually this is V3 patch. Sorry for broken subject. > >> > >> Den > > ping > > Didn't Jeff merge v2? > > http://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg01319.html > > Max > Yes, I did.
On 02/13/2017 10:13 PM, Jeff Cody wrote: > On Mon, Feb 13, 2017 at 06:16:36PM +0100, Max Reitz wrote: >> On 13.02.2017 08:10, Denis V. Lunev wrote: >>> On 02/03/2017 06:08 PM, Denis V. Lunev wrote: >>>> On 02/03/2017 06:06 PM, Denis V. Lunev wrote: >>>>> From: Anton Nefedov <anton.nefedov@virtuozzo.com> >>>>> >>>>> If explicit zeroing out before mirroring is required for the target image, >>>>> it moves the block job offset counter to EOF, then offset and len counters >>>>> count the image size twice. There is no harm but stats are confusing, >>>>> specifically the progress of the operation is always reported as 99% by >>>>> management tools. >>>>> >>>>> The patch skips offset increase for the first "technical" pass over the >>>>> image. This should not cause any further harm. >>>>> >>>>> Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com> >>>>> Signed-off-by: Denis V. Lunev <den@openvz.org> >>>>> Reviewed-by: Eric Blake <eblake@redhat.com> >>>>> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> >>>>> CC: Jeff Cody <jcody@redhat.com> >>>>> CC: Kevin Wolf <kwolf@redhat.com> >>>>> CC: Max Reitz <mreitz@redhat.com> >>>> actually this is V3 patch. Sorry for broken subject. >>>> >>>> Den >>> ping >> Didn't Jeff merge v2? >> >> http://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg01319.html >> >> Max >> > > Yes, I did. thank you very much for clarification Den
diff --git a/block/mirror.c b/block/mirror.c index 301ba92..688bc91 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -69,6 +69,7 @@ typedef struct MirrorBlockJob { bool waiting_for_io; int target_cluster_sectors; int max_iov; + bool init_pass; } MirrorBlockJob; typedef struct MirrorOp { @@ -117,7 +118,9 @@ static void mirror_iteration_done(MirrorOp *op, int ret) if (s->cow_bitmap) { bitmap_set(s->cow_bitmap, chunk_num, nb_chunks); } - s->common.offset += (uint64_t)op->nb_sectors * BDRV_SECTOR_SIZE; + if (!s->init_pass) { + s->common.offset += (uint64_t)op->nb_sectors * BDRV_SECTOR_SIZE; + } } qemu_iovec_destroy(&op->qiov); @@ -566,6 +569,7 @@ static int coroutine_fn mirror_dirty_init(MirrorBlockJob *s) return 0; } + s->init_pass = true; for (sector_num = 0; sector_num < end; ) { int nb_sectors = MIN(end - sector_num, QEMU_ALIGN_DOWN(INT_MAX, s->granularity) >> BDRV_SECTOR_BITS); @@ -573,6 +577,7 @@ static int coroutine_fn mirror_dirty_init(MirrorBlockJob *s) mirror_throttle(s); if (block_job_is_cancelled(&s->common)) { + s->init_pass = false; return 0; } @@ -587,6 +592,7 @@ static int coroutine_fn mirror_dirty_init(MirrorBlockJob *s) } mirror_wait_for_all_io(s); + s->init_pass = false; } /* First part, loop on the sectors and initialize the dirty bitmap. */