On Wed, 6 May 2026 16:36:52 +0800 "qiwu.chen" <[email protected]> wrote:
> Currently, reclaim_flags always contains RECLAIM_WB_ASYNC in lru_shrink
> tracepoints since commit 41ac1999c3e35 ("mm: vmscan: do not stall on
> writeback during memory compaction"), which is useless for debugging
> memory pressure issues. Other RECLAIM_WB_* flags are not used anywhere
> else, so they can be directly removed.
> This patch reworks the lru_shrink and write_folio tracepoints for better
> correlation and analysis:
> - traces each folio lru type instead of reclaim_flags.
> - traces each lru_shrink with reason.
> - remove the printing of the unnecessary PFN for mm_vmscan_write_folio.
Applying this to 7.1-rc1, my x86_64 allmodconfig blew up.
In file included from ./include/trace/define_trace.h:132,
from ./include/trace/events/vmscan.h:602,
from mm/vmscan.c:72:
./include/trace/events/vmscan.h: In function
'trace_raw_output_mm_vmscan_write_folio':
./include/trace/events/vmscan.h:358:19: error: format '%p' expects argument of
type 'void *', but argument 3 has type 'long unsigned int' [-Werror=format=]
358 | TP_printk("folio=%p lru=%s",
| ^~~~~~~~~~~~~~~~~
./include/trace/trace_events.h:219:34: note: in definition of macro
'DECLARE_EVENT_CLASS'
219 | trace_event_printf(iter, print);
\
| ^~~~~
./include/trace/trace_events.h:45:30: note: in expansion of macro 'PARAMS'
45 | PARAMS(print)); \
| ^~~~~~
./include/trace/events/vmscan.h:342:1: note: in expansion of macro 'TRACE_EVENT'
342 | TRACE_EVENT(mm_vmscan_write_folio,
| ^~~~~~~~~~~
./include/trace/events/vmscan.h:358:9: note: in expansion of macro 'TP_printk'
358 | TP_printk("folio=%p lru=%s",
| ^~~~~~~~~
In file included from ./include/trace/trace_events.h:256:
./include/trace/events/vmscan.h:358:27: note: format string is defined here
358 | TP_printk("folio=%p lru=%s",
| ~^
| |
| void *
| %ld
./include/trace/events/vmscan.h: In function
'do_trace_event_raw_event_mm_vmscan_write_folio':
./include/trace/events/vmscan.h:354:32: error: assignment to 'long unsigned
int' from 'struct folio *' makes integer from pointer without a cast
[-Wint-conversion]
354 | __entry->folio = folio;
| ^
./include/trace/trace_events.h:427:11: note: in definition of macro
'__DECLARE_EVENT_CLASS'
427 | { assign; }
\
| ^~~~~~
./include/trace/trace_events.h:435:23: note: in expansion of macro 'PARAMS'
435 | PARAMS(assign), PARAMS(print))
\
| ^~~~~~
./include/trace/trace_events.h:40:9: note: in expansion of macro
'DECLARE_EVENT_CLASS'
40 | DECLARE_EVENT_CLASS(name, \
| ^~~~~~~~~~~~~~~~~~~
./include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS'
44 | PARAMS(assign), \
| ^~~~~~
./include/trace/events/vmscan.h:342:1: note: in expansion of macro 'TRACE_EVENT'
342 | TRACE_EVENT(mm_vmscan_write_folio,
| ^~~~~~~~~~~
./include/trace/events/vmscan.h:353:9: note: in expansion of macro
'TP_fast_assign'
353 | TP_fast_assign(
| ^~~~~~~~~~~~~~
In file included from ./include/trace/define_trace.h:133:
./include/trace/events/vmscan.h: In function
'do_perf_trace_mm_vmscan_write_folio':
./include/trace/events/vmscan.h:354:32: error: assignment to 'long unsigned
int' from 'struct folio *' makes integer from pointer without a cast
[-Wint-conversion]
354 | __entry->folio = folio;
| ^
./include/trace/perf.h:51:11: note: in definition of macro
'__DECLARE_EVENT_CLASS'
51 | { assign; }
\
| ^~~~~~
./include/trace/perf.h:67:23: note: in expansion of macro 'PARAMS'
67 | PARAMS(assign), PARAMS(print))
\
| ^~~~~~
./include/trace/trace_events.h:40:9: note: in expansion of macro
'DECLARE_EVENT_CLASS'
40 | DECLARE_EVENT_CLASS(name, \
| ^~~~~~~~~~~~~~~~~~~
./include/trace/trace_events.h:44:30: note: in expansion of macro 'PARAMS'
44 | PARAMS(assign), \
| ^~~~~~
./include/trace/events/vmscan.h:342:1: note: in expansion of macro 'TRACE_EVENT'
342 | TRACE_EVENT(mm_vmscan_write_folio,
| ^~~~~~~~~~~
./include/trace/events/vmscan.h:353:9: note: in expansion of macro
'TP_fast_assign'
353 | TP_fast_assign(
| ^~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[3]: *** [scripts/Makefile.build:289: mm/vmscan.o] Error 1
make[2]: *** [scripts/Makefile.build:548: mm] Error 2
make[1]: *** [/usr/src/25/Makefile:2141: .] Error 2
make: *** [Makefile:248: __sub-make] Error 2