On 08/24/2017 08:24 AM, Alberto Garcia wrote: > LeakyBucket.burst_length is defined as an unsigned integer but the > code never checks for overflows and it only makes sure that the value > is not 0. > > In practice this means that the user can set something like > throttling.iops-total-max-length=4294967300 despite being larger than > UINT_MAX and the final value after casting to unsigned int will be 4. > > This patch changes the data type to uint64_t. This does not increase > the storage size of LeakyBucket, and allows us to assign the value > directly from qemu_opt_get_number() or BlockIOThrottle and then do the > checks directly in throttle_is_valid(). > > The value of burst_length does not have a specific upper limit, > but since the bucket size is defined by max * burst_length we have > to prevent overflows. Instead of going for UINT64_MAX or something > similar this patch reuses THROTTLE_VALUE_MAX, which allows I/O bursts > of 1 GiB/s for 10 days in a row. > > Signed-off-by: Alberto Garcia <[email protected]> > --- > include/qemu/throttle.h | 2 +- > util/throttle.c | 5 +++++ > 2 files changed, 6 insertions(+), 1 deletion(-) >
Reviewed-by: Eric Blake <[email protected]> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
