Message ID | 20210510085941.22769-3-eesposit@redhat.com |
---|---|
State | New |
Headers | show |
Series | block-copy: make helper APIs thread safe | expand |
10.05.2021 11:59, Emanuele Giuseppe Esposito wrote: > From: Paolo Bonzini <pbonzini@redhat.com> > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> > --- > block/block-copy.c | 28 ++++++++++------------------ > 1 file changed, 10 insertions(+), 18 deletions(-) > > diff --git a/block/block-copy.c b/block/block-copy.c > index c2e5090412..7e9467d48a 100644 > --- a/block/block-copy.c > +++ b/block/block-copy.c > @@ -113,7 +113,6 @@ typedef struct BlockCopyState { > > SharedResource *mem; > > - uint64_t speed; > RateLimit rate_limit; > } BlockCopyState; > > @@ -619,23 +618,19 @@ block_copy_dirty_clusters(BlockCopyCallState *call_state) > } > task->zeroes = ret & BDRV_BLOCK_ZERO; > > - if (s->speed) { > - if (!call_state->ignore_ratelimit) { > - uint64_t ns = ratelimit_calculate_delay(&s->rate_limit, 0); > - if (ns > 0) { > - block_copy_task_end(task, -EAGAIN); > - g_free(task); > - qemu_co_sleep_ns_wakeable(&call_state->sleep, > - QEMU_CLOCK_REALTIME, ns); > - continue; > - } > + if (!call_state->ignore_ratelimit) { > + uint64_t ns = ratelimit_calculate_delay(&s->rate_limit, 0); > + if (ns > 0) { > + block_copy_task_end(task, -EAGAIN); > + g_free(task); > + qemu_co_sleep_ns_wakeable(&call_state->sleep, > + QEMU_CLOCK_REALTIME, ns); indentation broken > + continue; > } > - > - ratelimit_calculate_delay(&s->rate_limit, task->bytes); > } > > + ratelimit_calculate_delay(&s->rate_limit, task->bytes); > trace_block_copy_process(s, task->offset); > - I'd keep both newlines around trace_, as all three calls has no relation to each other.. > co_get_from_shres(s->mem, task->bytes); > > offset = task_end(task); > @@ -825,10 +820,7 @@ void block_copy_set_skip_unallocated(BlockCopyState *s, bool skip) > > void block_copy_set_speed(BlockCopyState *s, uint64_t speed) > { > - s->speed = speed; > - if (speed > 0) { > - ratelimit_set_speed(&s->rate_limit, speed, BLOCK_COPY_SLICE_TIME); > - } > + ratelimit_set_speed(&s->rate_limit, speed, BLOCK_COPY_SLICE_TIME); > > /* > * Note: it's good to kick all call states from here, but it should be done > With indentation fixed: Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
diff --git a/block/block-copy.c b/block/block-copy.c index c2e5090412..7e9467d48a 100644 --- a/block/block-copy.c +++ b/block/block-copy.c @@ -113,7 +113,6 @@ typedef struct BlockCopyState { SharedResource *mem; - uint64_t speed; RateLimit rate_limit; } BlockCopyState; @@ -619,23 +618,19 @@ block_copy_dirty_clusters(BlockCopyCallState *call_state) } task->zeroes = ret & BDRV_BLOCK_ZERO; - if (s->speed) { - if (!call_state->ignore_ratelimit) { - uint64_t ns = ratelimit_calculate_delay(&s->rate_limit, 0); - if (ns > 0) { - block_copy_task_end(task, -EAGAIN); - g_free(task); - qemu_co_sleep_ns_wakeable(&call_state->sleep, - QEMU_CLOCK_REALTIME, ns); - continue; - } + if (!call_state->ignore_ratelimit) { + uint64_t ns = ratelimit_calculate_delay(&s->rate_limit, 0); + if (ns > 0) { + block_copy_task_end(task, -EAGAIN); + g_free(task); + qemu_co_sleep_ns_wakeable(&call_state->sleep, + QEMU_CLOCK_REALTIME, ns); + continue; } - - ratelimit_calculate_delay(&s->rate_limit, task->bytes); } + ratelimit_calculate_delay(&s->rate_limit, task->bytes); trace_block_copy_process(s, task->offset); - co_get_from_shres(s->mem, task->bytes); offset = task_end(task); @@ -825,10 +820,7 @@ void block_copy_set_skip_unallocated(BlockCopyState *s, bool skip) void block_copy_set_speed(BlockCopyState *s, uint64_t speed) { - s->speed = speed; - if (speed > 0) { - ratelimit_set_speed(&s->rate_limit, speed, BLOCK_COPY_SLICE_TIME); - } + ratelimit_set_speed(&s->rate_limit, speed, BLOCK_COPY_SLICE_TIME); /* * Note: it's good to kick all call states from here, but it should be done