throttle: refuse iops-size without iops-total/read/write
In a similar vein to commit ee2bdc33c913b7d765baa5aa338c29fb30a05c9a ("throttle: refuse bps_max/iops_max without bps/iops") it is likely that the user made a configuration error if iops-size has been set but no iops limit has been set. Print an error message so the user can check their throttling configuration. They should either remove iops-size if they don't want any throttling or specify one of iops-total, iops-read, or iops-write. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Alberto Garcia <berto@igalia.com> Message-id: 1464828031-25601-1-git-send-email-stefanha@redhat.com
This commit is contained in:
parent
c8a9fd8071
commit
8860eabdee
@ -398,6 +398,14 @@ static void test_max_is_missing_limit(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_iops_size_is_missing_limit(void)
|
||||||
|
{
|
||||||
|
/* A total/read/write iops limit is required */
|
||||||
|
throttle_config_init(&cfg);
|
||||||
|
cfg.op_size = 4096;
|
||||||
|
g_assert(!throttle_is_valid(&cfg, NULL));
|
||||||
|
}
|
||||||
|
|
||||||
static void test_have_timer(void)
|
static void test_have_timer(void)
|
||||||
{
|
{
|
||||||
/* zero structures */
|
/* zero structures */
|
||||||
@ -653,6 +661,8 @@ int main(int argc, char **argv)
|
|||||||
g_test_add_func("/throttle/config/conflicting", test_conflicting_config);
|
g_test_add_func("/throttle/config/conflicting", test_conflicting_config);
|
||||||
g_test_add_func("/throttle/config/is_valid", test_is_valid);
|
g_test_add_func("/throttle/config/is_valid", test_is_valid);
|
||||||
g_test_add_func("/throttle/config/max", test_max_is_missing_limit);
|
g_test_add_func("/throttle/config/max", test_max_is_missing_limit);
|
||||||
|
g_test_add_func("/throttle/config/iops_size",
|
||||||
|
test_iops_size_is_missing_limit);
|
||||||
g_test_add_func("/throttle/config_functions", test_config_functions);
|
g_test_add_func("/throttle/config_functions", test_config_functions);
|
||||||
g_test_add_func("/throttle/accounting", test_accounting);
|
g_test_add_func("/throttle/accounting", test_accounting);
|
||||||
g_test_add_func("/throttle/groups", test_groups);
|
g_test_add_func("/throttle/groups", test_groups);
|
||||||
|
@ -315,6 +315,14 @@ bool throttle_is_valid(ThrottleConfig *cfg, Error **errp)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cfg->op_size &&
|
||||||
|
!cfg->buckets[THROTTLE_OPS_TOTAL].avg &&
|
||||||
|
!cfg->buckets[THROTTLE_OPS_READ].avg &&
|
||||||
|
!cfg->buckets[THROTTLE_OPS_WRITE].avg) {
|
||||||
|
error_setg(errp, "iops size requires an iops value to be set");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < BUCKETS_COUNT; i++) {
|
for (i = 0; i < BUCKETS_COUNT; i++) {
|
||||||
if (cfg->buckets[i].avg < 0 ||
|
if (cfg->buckets[i].avg < 0 ||
|
||||||
cfg->buckets[i].max < 0 ||
|
cfg->buckets[i].max < 0 ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user