diff --git a/blockdev.c b/blockdev.c index 14e89dea170249573c7e9add2da0768f67b7a13f..52aabf7b9034330a8aee32fa38bd5ed304b573c1 100644 --- a/blockdev.c +++ b/blockdev.c @@ -355,9 +355,7 @@ static bool check_throttle_config(ThrottleConfig *cfg, Error **errp) return false; } - if (throttle_max_is_missing_limit(cfg)) { - error_setg(errp, "bps_max/iops_max require corresponding" - " bps/iops values"); + if (throttle_max_is_missing_limit(cfg, errp)) { return false; } diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h index 69cf171b1aae134a1e49254cb7d966d4698fb598..03bdec07ea61f9d2e9510e7add4a2729e071bd0d 100644 --- a/include/qemu/throttle.h +++ b/include/qemu/throttle.h @@ -110,7 +110,7 @@ bool throttle_conflicting(ThrottleConfig *cfg, Error **errp); bool throttle_is_valid(ThrottleConfig *cfg); -bool throttle_max_is_missing_limit(ThrottleConfig *cfg); +bool throttle_max_is_missing_limit(ThrottleConfig *cfg, Error **errp); void throttle_config(ThrottleState *ts, ThrottleTimers *tt, diff --git a/tests/test-throttle.c b/tests/test-throttle.c index 579b8af87e7e508158f025c406bfe661f15bd824..49bd3bccafd2e05861a6b22b7c359b8dd6688288 100644 --- a/tests/test-throttle.c +++ b/tests/test-throttle.c @@ -338,15 +338,15 @@ static void test_max_is_missing_limit(void) memset(&cfg, 0, sizeof(cfg)); cfg.buckets[i].max = 100; cfg.buckets[i].avg = 0; - g_assert(throttle_max_is_missing_limit(&cfg)); + g_assert(throttle_max_is_missing_limit(&cfg, NULL)); cfg.buckets[i].max = 0; cfg.buckets[i].avg = 0; - g_assert(!throttle_max_is_missing_limit(&cfg)); + g_assert(!throttle_max_is_missing_limit(&cfg, NULL)); cfg.buckets[i].max = 0; cfg.buckets[i].avg = 100; - g_assert(!throttle_max_is_missing_limit(&cfg)); + g_assert(!throttle_max_is_missing_limit(&cfg, NULL)); } } diff --git a/util/throttle.c b/util/throttle.c index 564e13261e35469a39f92900b17d94d3ae4227e2..77010b4a1af6c5d9c40fdedf852235161737d188 100644 --- a/util/throttle.c +++ b/util/throttle.c @@ -306,13 +306,16 @@ bool throttle_is_valid(ThrottleConfig *cfg) /* check if bps_max/iops_max is used without bps/iops * @cfg: the throttling configuration to inspect + * @errp: error object */ -bool throttle_max_is_missing_limit(ThrottleConfig *cfg) +bool throttle_max_is_missing_limit(ThrottleConfig *cfg, Error **errp) { int i; for (i = 0; i < BUCKETS_COUNT; i++) { if (cfg->buckets[i].max && !cfg->buckets[i].avg) { + error_setg(errp, "bps_max/iops_max require corresponding" + " bps/iops values"); return true; } }