From: Jonathan Rajotte Date: Thu, 4 Feb 2021 20:46:27 +0000 (-0500) Subject: condition: buffer usage: validation does not check for ratio and bytes threshold X-Git-Tag: v2.13.0-rc3~68 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=0879b5fefc747e458f1529b99895ef2a47428393;p=lttng-tools.git condition: buffer usage: validation does not check for ratio and bytes threshold Buffer usage condition do not support having both ratio and bytes threshold set. Using `!usage->threshold_ratio.set && !usage->threshold_bytes.set` does not error out for `threshold_ratio.set == 1` and `usage->threshold_bytes.set == 1` 0 0 : 1 0 1 : 0 1 0 : 0 1 1 : 0 We want to check for a xnor (`usage->threshold_ratio.set == usage->threshold_bytes.set`) 0 0 : 1 0 1 : 0 1 0 : 0 1 1 : 1 We could also do 2 error check one for not set and one validating that both are not set. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau Change-Id: I5bfcf43bcaf9687ddf9fdebe5ace4f15bda28261 --- diff --git a/src/common/conditions/buffer-usage.c b/src/common/conditions/buffer-usage.c index cc9e9cde8..a97f6d59f 100644 --- a/src/common/conditions/buffer-usage.c +++ b/src/common/conditions/buffer-usage.c @@ -62,8 +62,8 @@ bool lttng_condition_buffer_usage_validate( ERR("Invalid buffer condition: a target channel name must be set."); goto end; } - if (!usage->threshold_ratio.set && !usage->threshold_bytes.set) { - ERR("Invalid buffer condition: a threshold must be set."); + if (usage->threshold_ratio.set == usage->threshold_bytes.set) { + ERR("Invalid buffer condition: a threshold must be set or both type cannot be used simultaneously."); goto end; } if (!usage->domain.set) {