Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09d23a1d authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Steven Rostedt
Browse files

tracing: Create cmdline tracer options on tracing fs init



The options for cmdline tracers are not created if the debugfs system
is not ready yet. If tracing has started before debugfs is up, then the
option files for the tracer are not created. Create them when creating
the tracing directory if the current tracer requires option files.

Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 0f67f04f
Loading
Loading
Loading
Loading
+21 −9
Original line number Original line Diff line number Diff line
@@ -4105,9 +4105,24 @@ static void tracing_set_nop(struct trace_array *tr)
	tr->current_trace = &nop_trace;
	tr->current_trace = &nop_trace;
}
}


static int tracing_set_tracer(struct trace_array *tr, const char *buf)
static void update_tracer_options(struct trace_array *tr, struct tracer *t)
{
{
	static struct trace_option_dentry *topts;
	static struct trace_option_dentry *topts;

	/* Only enable if the directory has been created already. */
	if (!tr->dir)
		return;

	/* Currently, only the top instance has options */
	if (!(tr->flags & TRACE_ARRAY_FL_GLOBAL))
		return;

	destroy_trace_option_files(topts);
	topts = create_trace_option_files(tr, t);
}

static int tracing_set_tracer(struct trace_array *tr, const char *buf)
{
	struct tracer *t;
	struct tracer *t;
#ifdef CONFIG_TRACER_MAX_TRACE
#ifdef CONFIG_TRACER_MAX_TRACE
	bool had_max_tr;
	bool had_max_tr;
@@ -4172,14 +4187,7 @@ static int tracing_set_tracer(struct trace_array *tr, const char *buf)
		free_snapshot(tr);
		free_snapshot(tr);
	}
	}
#endif
#endif
	/*
	update_tracer_options(tr, t);
	 * Only enable if the directory has been created already.
	 * Currently, only the top instance has options
	 */
	if (tr->dir && tr->flags & TRACE_ARRAY_FL_GLOBAL) {
		destroy_trace_option_files(topts);
		topts = create_trace_option_files(tr, t);
	}


#ifdef CONFIG_TRACER_MAX_TRACE
#ifdef CONFIG_TRACER_MAX_TRACE
	if (t->use_max_tr && !had_max_tr) {
	if (t->use_max_tr && !had_max_tr) {
@@ -6578,6 +6586,10 @@ static __init int tracer_init_debugfs(void)


	create_trace_options_dir(&global_trace);
	create_trace_options_dir(&global_trace);


	/* If the tracer was started via cmdline, create options for it here */
	if (global_trace.current_trace != &nop_trace)
		update_tracer_options(&global_trace, global_trace.current_trace);

	return 0;
	return 0;
}
}