tracing: Clean up use of trace_create_maxlat_file()
Steven Rostedt
maintainerPATCH 1/1 tracing: Clean up use of trace_create_maxlat_file()
From: Steven Rostedt <[email protected]>
In trace.c, the function trace_create_maxlat_file() is defined behind the
#ifdef CONFIG_TRACER_MAX_TRACE block. The #else part defines it as:
#define trace_create_maxlat_file(tr, d_tracer) \
trace_create_file("tracing_max_latency", TRACE_MODE_WRITE, \
d_tracer, tr, &tracing_max_lat_fops)But the one place that it it used has:
#ifdef CONFIG_TRACER_MAX_TRACE trace_create_maxlat_file(tr, d_tracer);
#endif
Which is pointless and also wrong!
It only gets created when both CONFIG_TRACE_MAX_TRACE and CONFIG_FS_NOTIFY is defined, but the file itself should not be dependent on CONFIG_FS_NOTIFY. Always create that file when TRACE_MAX_TRACE is defined regardless if FS_NOTIFY is or is not.
---
Changes since v2: https://patch.msgid.link/20260206230410.4ed96e9f@robin
- On further inspection, tracing_max_latency should always be created if CONFIG_TRACER_MAX_TRACE is defined regardless if CONFIG_FS_NOTIFY is.
kernel/trace/trace.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-)
kernel/trace/trace.c +16 -22
@@ -1912,10 +1912,7 @@ static ssize_t trace_seq_to_buffer(struct trace_seq *s, void *buf, size_t cnt)unsigned long __read_mostly tracing_thresh;#ifdef CONFIG_TRACER_MAX_TRACE -static const struct file_operations tracing_max_lat_fops; -#ifdef LATENCY_FS_NOTIFY -static struct workqueue_struct *fsnotify_wq;static void latency_fsnotify_workfn (struct work_struct *work)
@@ -1932,17 +1929,6 @@ static void latency_fsnotify_workfn_irq(struct irq_work *iwork)queue_work (fsnotify_wq, &tr->fsnotify_work); } -static void trace_create_maxlat_file (struct trace_array *tr, -struct dentry *d_tracer) -{ -INIT_WORK (&tr->fsnotify_work, latency_fsnotify_workfn); -init_irq_work (&tr->fsnotify_irqwork, latency_fsnotify_workfn_irq); - tr->d_max_latency =trace_create_file ("tracing_max_latency" , -TRACE_MODE_WRITE , - d_tracer, tr, - &tracing_max_lat_fops); -} -__init static int latency_fsnotify_init (void ) { fsnotify_wq = alloc_workqueue("tr_max_lat_wq",
@@ -1967,14 +1953,22 @@ void latency_fsnotify(struct trace_array *tr)*/ irq_work_queue(&tr->fsnotify_irqwork); } +#endif /* !LATENCY_FS_NOTIFY */ -#else /* !LATENCY_FS_NOTIFY */ - -#define trace_create_maxlat_file (tr, d_tracer) \ - trace_create_file("tracing_max_latency", TRACE_MODE_WRITE, \ - d_tracer, tr, &tracing_max_lat_fops) +static const struct file_operations tracing_max_lat_fops; +static void trace_create_maxlat_file (struct trace_array *tr, +struct dentry *d_tracer) +{ +#ifdef LATENCY_FS_NOTIFY +INIT_WORK (&tr->fsnotify_work, latency_fsnotify_workfn); +init_irq_work (&tr->fsnotify_irqwork, latency_fsnotify_workfn_irq);#endif + tr->d_max_latency =trace_create_file ("tracing_max_latency" , +TRACE_MODE_WRITE , + d_tracer, tr, + &tracing_max_lat_fops); +}/* * Copy the new maximum trace into the separate maximum-trace
@@ -2109,7 +2103,9 @@ update_max_tr_single(struct trace_array *tr, struct task_struct *tsk, int cpu)__update_max_tr (tr, tsk, cpu);arch_spin_unlock (&tr->max_lock); } - +#else /* !CONFIG_TRACER_MAX_TRACE */ +static inline void trace_create_maxlat_file (struct trace_array *tr, +struct dentry *d_tracer) { }#endif /* CONFIG_TRACER_MAX_TRACE */ struct pipe_wait {
@@ -10664,9 +10660,7 @@ init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer)create_trace_options_dir (tr); -#ifdef CONFIG_TRACER_MAX_TRACE trace_create_maxlat_file (tr, d_tracer); -#endif if (ftrace_create_function_files (tr, d_tracer))MEM_FAIL (1 ,"Could not allocate function filter files" );
Signature · 1 line
2.51.0
Steven Rostedt
maintainerWas supposed to be "v3" in the subject.
-- Steve
kernel test robot
build botkernel test robot noticed the following build errors:
Hi Steven,
kernel test robot noticed the following build errors:
[auto build test ERROR on trace/for-next]
[also build test ERROR on linus/master v6.19-rc8 next-20260205] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Steven-Rostedt/tracing-Clean-up-use-of-trace_create_maxlat_file/20260208-081407 base: https://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace for-next patch link: https://lore.kernel.org/r/20260207191101.0e014abd%40robin patch subject: [PATCH] tracing: Clean up use of trace_create_maxlat_file() config: arm-randconfig-r071-20260208 (https://download.01.org/0day-ci/archive/20260208/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 11.5.0 smatch version: v0.5.0-8994-gd50c5a4c reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260208/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
kernel/trace/trace.c: In function 'trace_create_maxlat_file':
>> kernel/trace/trace.c:1967:13: error: 'struct trace_array' has no member named 'd_max_latency'; did you mean 'max_latency'?
1967 | tr->d_max_latency = trace_create_file("tracing_max_latency",
| ^~~~~~~~~~~~~
| max_latencyvim +1967 kernel/trace/trace.c
1959
1960 static void trace_create_maxlat_file(struct trace_array *tr,
1961 struct dentry *d_tracer)
1962 {
1963 #ifdef LATENCY_FS_NOTIFY
1964 INIT_WORK(&tr->fsnotify_work, latency_fsnotify_workfn);
1965 init_irq_work(&tr->fsnotify_irqwork, latency_fsnotify_workfn_irq);
1966 #endif
> 1967 tr->d_max_latency = trace_create_file("tracing_max_latency",
1968 TRACE_MODE_WRITE,
1969 d_tracer, tr,
1970 &tracing_max_lat_fops); 1971 }
1972
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki