mirror_co_perform() is the sole user of that function, and it looks a bit weird now. This patch inlines it into mirror_co_perform().
Signed-off-by: Max Reitz <mre...@redhat.com> --- block/mirror.c | 53 ++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/block/mirror.c b/block/mirror.c index 62fd499799..053c37b6a6 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -154,35 +154,6 @@ static void coroutine_fn mirror_wait_on_conflicts(MirrorOp *self, } } -static void coroutine_fn mirror_iteration_done(MirrorOp *op, int ret) -{ - MirrorBlockJob *s = op->s; - int64_t chunk_num; - int nb_chunks; - - trace_mirror_iteration_done(s, op->offset, op->bytes, ret); - - s->in_flight--; - s->bytes_in_flight -= op->bytes; - - chunk_num = op->offset / s->granularity; - nb_chunks = DIV_ROUND_UP(op->bytes, s->granularity); - - bitmap_clear(s->in_flight_bitmap, chunk_num, nb_chunks); - QTAILQ_REMOVE(&s->ops_in_flight, op, next); - if (ret >= 0) { - if (s->cow_bitmap) { - bitmap_set(s->cow_bitmap, chunk_num, nb_chunks); - } - if (!s->initial_zeroing_ongoing) { - job_progress_update(&s->common.job, op->bytes); - } - } - - qemu_co_queue_restart_all(&op->waiting_requests); - g_free(op); -} - /* Clip bytes relative to offset to not exceed end-of-file */ static inline int64_t mirror_clip_bytes(MirrorBlockJob *s, int64_t offset, @@ -373,6 +344,8 @@ static void coroutine_fn mirror_co_perform(void *opaque) MirrorOp *op = opaque; MirrorBlockJob *s = op->s; AioContext *aio_context; + int64_t chunk_num; + int nb_chunks; bool failed_on_read = false; int ret; @@ -403,7 +376,27 @@ static void coroutine_fn mirror_co_perform(void *opaque) } } - mirror_iteration_done(op, ret); + trace_mirror_iteration_done(s, op->offset, op->bytes, ret); + + s->in_flight--; + s->bytes_in_flight -= op->bytes; + + chunk_num = op->offset / s->granularity; + nb_chunks = DIV_ROUND_UP(op->bytes, s->granularity); + + bitmap_clear(s->in_flight_bitmap, chunk_num, nb_chunks); + QTAILQ_REMOVE(&s->ops_in_flight, op, next); + if (ret >= 0) { + if (s->cow_bitmap) { + bitmap_set(s->cow_bitmap, chunk_num, nb_chunks); + } + if (!s->initial_zeroing_ongoing) { + job_progress_update(&s->common.job, op->bytes); + } + } + + qemu_co_queue_restart_all(&op->waiting_requests); + g_free(op); aio_context_release(aio_context); } -- 2.17.1