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


Reply via email to