diff options
author | Kevin Wolf <kwolf@redhat.com> | 2018-01-18 18:08:22 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2018-05-15 16:11:49 +0200 |
commit | 05df8a6a2b4e36e8d69de2130e616d5ac28e8837 (patch) | |
tree | 69a1ee332e3b77767f2df4ced3066b08e9baae7b /block/mirror.c | |
parent | 37aa19b63c46d933f1e4ea944cfccee54e2caf4a (diff) | |
download | qemu-05df8a6a2b4e36e8d69de2130e616d5ac28e8837.zip qemu-05df8a6a2b4e36e8d69de2130e616d5ac28e8837.tar.gz qemu-05df8a6a2b4e36e8d69de2130e616d5ac28e8837.tar.bz2 |
blockjob: Wrappers for progress counter access
Block job drivers are not expected to mess with the internals of the
BlockJob object, so provide wrapper functions for one of the cases where
they still do it: Updating the progress counter.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Diffstat (limited to 'block/mirror.c')
-rw-r--r-- | block/mirror.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/block/mirror.c b/block/mirror.c index 99da9c0..56a7ce2 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -121,7 +121,7 @@ static void mirror_iteration_done(MirrorOp *op, int ret) bitmap_set(s->cow_bitmap, chunk_num, nb_chunks); } if (!s->initial_zeroing_ongoing) { - s->common.offset += op->bytes; + block_job_progress_update(&s->common, op->bytes); } } qemu_iovec_destroy(&op->qiov); @@ -792,11 +792,10 @@ static void coroutine_fn mirror_run(void *opaque) block_job_pause_point(&s->common); cnt = bdrv_get_dirty_count(s->dirty_bitmap); - /* s->common.offset contains the number of bytes already processed so - * far, cnt is the number of dirty bytes remaining and - * s->bytes_in_flight is the number of bytes currently being - * processed; together those are the current total operation length */ - s->common.len = s->common.offset + s->bytes_in_flight + cnt; + /* cnt is the number of dirty bytes remaining and s->bytes_in_flight is + * the number of bytes currently being processed; together those are + * the current remaining operation length */ + block_job_progress_set_remaining(&s->common, s->bytes_in_flight + cnt); /* Note that even when no rate limit is applied we need to yield * periodically with no pending I/O so that bdrv_drain_all() returns. |