[PATCH RFC v2 7/7] mm/vmscan: pass scan_control to mm_vmscan_balance_pgdat_end

From: Ridong Chen

Date: Mon Sep 28 2026 - 08:10:58 EST


From: Ridong Chen <chenridong@xxxxxxxxxx>

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,
mirroring mm_vmscan_balance_pgdat_begin. highest_zoneidx stays a
separate argument as it is a local of balance_pgdat() rather than a
scan_control field.

The exported event format is unchanged.

No functional change.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Ridong Chen <chenridong@xxxxxxxxxx>
---
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 04f285e77659..c27bc7cc6063 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 6ec84390ee2a..52d90a32091e 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