[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v2 6/7] throttle: Make burst_length
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v2 6/7] throttle: Make burst_length 64bit and add range checks |
Date: |
Tue, 29 Aug 2017 16:30:44 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
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 <address@hidden>
> ---
> include/qemu/throttle.h | 2 +-
> util/throttle.c | 5 +++++
> 2 files changed, 6 insertions(+), 1 deletion(-)
>
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-block] [PATCH v2 1/7] throttle: Fix wrong variable name in the header documentation, (continued)
- [Qemu-block] [PATCH v2 1/7] throttle: Fix wrong variable name in the header documentation, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 3/7] throttle: Make throttle_is_valid() a bit less verbose, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 4/7] throttle: Remove throttle_fix_bucket() / throttle_unfix_bucket(), Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 7/7] throttle: Test the valid range of config values, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 5/7] throttle: Make LeakyBucket.avg and LeakyBucket.max integer types, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 2/7] throttle: Update the throttle_fix_bucket() documentation, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 6/7] throttle: Make burst_length 64bit and add range checks, Alberto Garcia, 2017/08/24
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 6/7] throttle: Make burst_length 64bit and add range checks,
Eric Blake <=
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 0/7] Misc throttle fixes, Stefan Hajnoczi, 2017/08/29