From: Ridong Chen <[email protected]> balance_pgdat() passes sc.order and sc.nr_reclaimed to mm_vmscan_balance_pgdat_end as bare arguments. Pass the enclosing struct scan_control instead and read the fields out in TP_fast_assign, consistent with the other reclaim tracepoints. highest_zoneidx stays a separate argument: it is a balance_pgdat() parameter, and sc.reclaim_idx may differ from it by the time the end event fires.
No functional change. The tracefs event format (TP_STRUCT__entry and TP_printk) is unchanged, so tracefs-based consumers are unaffected. BPF programs attached via raw_tp/tp_btf see the new TP_PROTO and need to be adjusted; tracepoints are not a stable ABI (see Documentation/bpf/bpf_design_QA.rst). Assisted-by: LLM Signed-off-by: Ridong Chen <[email protected]> --- mm/trace_vmscan.h | 9 ++++----- mm/vmscan.c | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/mm/trace_vmscan.h b/mm/trace_vmscan.h index 96e41f444924..10b3cda1c435 100644 --- a/mm/trace_vmscan.h +++ b/mm/trace_vmscan.h @@ -124,10 +124,9 @@ TRACE_EVENT(mm_vmscan_balance_pgdat_begin, TRACE_EVENT(mm_vmscan_balance_pgdat_end, - TP_PROTO(int nid, int order, int highest_zoneidx, - unsigned long nr_reclaimed), + TP_PROTO(int nid, struct scan_control *sc, int highest_zoneidx), - TP_ARGS(nid, order, highest_zoneidx, nr_reclaimed), + TP_ARGS(nid, sc, highest_zoneidx), TP_STRUCT__entry( __field(int, nid) @@ -138,9 +137,9 @@ TRACE_EVENT(mm_vmscan_balance_pgdat_end, TP_fast_assign( __entry->nid = nid; - __entry->order = order; + __entry->order = sc->order; __entry->highest_zoneidx = highest_zoneidx; - __entry->nr_reclaimed = nr_reclaimed; + __entry->nr_reclaimed = sc->nr_reclaimed; ), TP_printk("nid=%d order=%d highest_zoneidx=%-8s nr_reclaimed=%lu", diff --git a/mm/vmscan.c b/mm/vmscan.c index b3278dbe47bf..561e14dd490c 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -7403,8 +7403,7 @@ static int balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx) psi_memstall_leave(&pflags); set_task_reclaim_state(current, NULL); - trace_mm_vmscan_balance_pgdat_end(pgdat->node_id, sc.order, - highest_zoneidx, sc.nr_reclaimed); + trace_mm_vmscan_balance_pgdat_end(pgdat->node_id, &sc, highest_zoneidx); /* * Return the order kswapd stopped reclaiming at as -- 2.34.1
