[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/5] ratelimit: treat zero speed as unlimited
From: |
Emanuele Giuseppe Esposito |
Subject: |
[PATCH v3 1/5] ratelimit: treat zero speed as unlimited |
Date: |
Mon, 14 Jun 2021 10:11:26 +0200 |
From: Paolo Bonzini <pbonzini@redhat.com>
Both users of RateLimit, block-copy.c and blockjob.c, treat
a speed of zero as unlimited, while RateLimit treats it as
"as slow as possible". The latter is nicer from the code
point of view but pretty useless, so disable rate limiting
if a speed of zero is provided.
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
include/qemu/ratelimit.h | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/include/qemu/ratelimit.h b/include/qemu/ratelimit.h
index 003ea6d5a3..48bf59e857 100644
--- a/include/qemu/ratelimit.h
+++ b/include/qemu/ratelimit.h
@@ -43,7 +43,11 @@ static inline int64_t ratelimit_calculate_delay(RateLimit
*limit, uint64_t n)
double delay_slices;
QEMU_LOCK_GUARD(&limit->lock);
- assert(limit->slice_quota && limit->slice_ns);
+ if (!limit->slice_quota) {
+ /* Throttling disabled. */
+ return 0;
+ }
+ assert(limit->slice_ns);
if (limit->slice_end_time < now) {
/* Previous, possibly extended, time slice finished; reset the
@@ -83,7 +87,11 @@ static inline void ratelimit_set_speed(RateLimit *limit,
uint64_t speed,
{
QEMU_LOCK_GUARD(&limit->lock);
limit->slice_ns = slice_ns;
- limit->slice_quota = MAX(((double)speed * slice_ns) / 1000000000ULL, 1);
+ if (speed == 0) {
+ limit->slice_quota = 0;
+ } else {
+ limit->slice_quota = MAX(((double)speed * slice_ns) / 1000000000ULL,
1);
+ }
}
#endif
--
2.31.1
- [PATCH v3 0/5] block-copy: make helper APIs thread safe, Emanuele Giuseppe Esposito, 2021/06/14
- [PATCH v3 1/5] ratelimit: treat zero speed as unlimited,
Emanuele Giuseppe Esposito <=
- [PATCH v3 2/5] block-copy: let ratelimit handle a speed of 0, Emanuele Giuseppe Esposito, 2021/06/14
- [PATCH v3 3/5] blockjob: let ratelimit handle a speed of 0, Emanuele Giuseppe Esposito, 2021/06/14
- [PATCH v3 4/5] progressmeter: protect with a mutex, Emanuele Giuseppe Esposito, 2021/06/14
- [PATCH v3 5/5] co-shared-resource: protect with a mutex, Emanuele Giuseppe Esposito, 2021/06/14
- Re: [PATCH v3 0/5] block-copy: make helper APIs thread safe, Emanuele Giuseppe Esposito, 2021/06/14
- Re: [PATCH v3 0/5] block-copy: make helper APIs thread safe, Vladimir Sementsov-Ogievskiy, 2021/06/25