[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 14/17] mirror: Inline mirror_iteration_done()
From: |
Max Reitz |
Subject: |
[Qemu-devel] [PATCH 14/17] mirror: Inline mirror_iteration_done() |
Date: |
Mon, 13 Aug 2018 04:20:03 +0200 |
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 <address@hidden>
---
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
- [Qemu-devel] [PATCH 05/17] mirror: Remove bytes_handled, part 2, (continued)
- [Qemu-devel] [PATCH 05/17] mirror: Remove bytes_handled, part 2, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 07/17] mirror: Make mirror_co_zero() nicer, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 08/17] mirror: Make mirror_co_discard() nicer, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 09/17] mirror: Lock AioContext in mirror_co_perform(), Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 10/17] mirror: Create mirror_co_alloc_qiov(), Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 11/17] mirror: Inline mirror_write_complete(), part 1, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 12/17] mirror: Put QIOV locally into mirror_co_read, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 13/17] mirror: Linearize mirror_co_read(), Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 14/17] mirror: Inline mirror_iteration_done(),
Max Reitz <=
- [Qemu-devel] [PATCH 15/17] mirror: Release AioCtx before queue_restart_all(), Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 17/17] iotests: Add test for active mirror with COR, Max Reitz, 2018/08/12
- [Qemu-devel] [PATCH 16/17] mirror: Support COR with write-blocking, Max Reitz, 2018/08/12