diff options
-rw-r--r-- | include/qemu/throttle.h | 2 | ||||
-rw-r--r-- | util/throttle.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h index 6e31155fd4..8e01885d29 100644 --- a/include/qemu/throttle.h +++ b/include/qemu/throttle.h @@ -81,7 +81,7 @@ typedef struct LeakyBucket { uint64_t max; /* leaky bucket max burst in units */ double level; /* bucket level in units */ double burst_level; /* bucket level in units (for computing bursts) */ - unsigned burst_length; /* max length of the burst period, in seconds */ + uint64_t burst_length; /* max length of the burst period, in seconds */ } LeakyBucket; /* The following structure is used to configure a ThrottleState diff --git a/util/throttle.c b/util/throttle.c index 80660ffd2c..b8c524336c 100644 --- a/util/throttle.c +++ b/util/throttle.c @@ -354,6 +354,11 @@ bool throttle_is_valid(ThrottleConfig *cfg, Error **errp) return false; } + if (bkt->max && bkt->burst_length > THROTTLE_VALUE_MAX / bkt->max) { + error_setg(errp, "burst length too high for this burst rate"); + return false; + } + if (bkt->max && !bkt->avg) { error_setg(errp, "bps_max/iops_max require corresponding" " bps/iops values"); |