Re: [PATCH v2 1/9] tracing/boot: Fix a hist trigger dependency for boot time tracing

From: Masami Hiramatsu
Date: Sun Aug 08 2021 - 10:43:33 EST


On Fri, 6 Aug 2021 21:47:10 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> On Fri, 6 Aug 2021 01:25:29 +0900
> Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:
>
> > Fixes a build error when CONFIG_HIST_TRIGGERS=n with boot-time
> > tracing. Since the trigger_process_regex() is defined only
> > when CONFIG_HIST_TRIGGERS=y, if it is disabled, the 'actions'
> > event option also must be disabled.
> >
> > Fixes: 81a59555ff15 ("tracing/boot: Add per-event settings")
> > Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
> > ---
> > 0 files changed
> >
> > diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c
> > index 94ef2d099e32..e6dc9269ad75 100644
> > --- a/kernel/trace/trace_boot.c
> > +++ b/kernel/trace/trace_boot.c
> > @@ -204,13 +204,14 @@ trace_boot_init_one_event(struct trace_array *tr, struct xbc_node *gnode,
> > else if (apply_event_filter(file, buf) < 0)
> > pr_err("Failed to apply filter: %s\n", buf);
> > }
> > -
> > +#ifdef CONFIG_HIST_TRIGGERS
>
> Hi Masamai,
>
> Can we instead define trigger_process_regex() in trace.h to be:
>
> static inline int trigger_process_regex(struct trace_event_file *file, char *buff)
> {
> return -1;
> }
>
> When this config is not set?
>
> This makes the code a bit cleaner, and you get the "Failed to apply an
> action" error as well.

Ah, OK.
But it seems that the error message should be changed a bit in that
case, because the actions string is correct, but the kernel
just doesn't support it. Moreover, it loops on the array, so, it will
show same error repeatedly.

I think it should be ignored, or just warn once with correct reason.
(for example, if the kernel supports hist-trigger, the error will
be shown in 'error_log' file.)

Thank you,


>
> -- Steve
>
>
>
> > xbc_node_for_each_array_value(enode, "actions", anode, p) {
> > if (strlcpy(buf, p, ARRAY_SIZE(buf)) >= ARRAY_SIZE(buf))
> > pr_err("action string is too long: %s\n", p);
> > else if (trigger_process_regex(file, buf) < 0)
> > pr_err("Failed to apply an action: %s\n", buf);
> > }
> > +#endif
> >
> > if (xbc_node_find_value(enode, "enable", NULL)) {
> > if (trace_event_enable_disable(file, 1, 0) < 0)
>


--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>