From: Ridong Chen <[email protected]> reclaim_folio_list() passes sc.nr_scanned to mm_vmscan_reclaim_pages as a bare argument. Pass the enclosing struct scan_control instead and read nr_scanned out in TP_fast_assign, consistent with the other reclaim tracepoints. nr_reclaimed stays a separate argument as it is the return value of shrink_folio_list() 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 <[email protected]> --- mm/trace_vmscan.h | 10 +++++----- mm/vmscan.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/trace_vmscan.h b/mm/trace_vmscan.h index 9b4a86fff37c..04f285e77659 100644 --- a/mm/trace_vmscan.h +++ b/mm/trace_vmscan.h @@ -418,11 +418,11 @@ TRACE_EVENT(mm_vmscan_write_folio, TRACE_EVENT(mm_vmscan_reclaim_pages, - TP_PROTO(int nid, - unsigned long nr_scanned, unsigned long nr_reclaimed, - struct reclaim_stat *stat), + TP_PROTO(int nid, struct scan_control *sc, + unsigned long nr_reclaimed, + struct reclaim_stat *stat), - TP_ARGS(nid, nr_scanned, nr_reclaimed, stat), + TP_ARGS(nid, sc, nr_reclaimed, stat), TP_STRUCT__entry( __field(int, nid) @@ -440,7 +440,7 @@ TRACE_EVENT(mm_vmscan_reclaim_pages, TP_fast_assign( __entry->nid = nid; - __entry->nr_scanned = nr_scanned; + __entry->nr_scanned = sc->nr_scanned; __entry->nr_reclaimed = nr_reclaimed; __entry->nr_dirty = stat->nr_dirty; __entry->nr_writeback = stat->nr_writeback; diff --git a/mm/vmscan.c b/mm/vmscan.c index 030f14740cbc..6ec84390ee2a 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2183,7 +2183,7 @@ static unsigned int reclaim_folio_list(struct list_head *folio_list, list_del(&folio->lru); folio_putback_lru(folio); } - trace_mm_vmscan_reclaim_pages(pgdat->node_id, sc.nr_scanned, nr_reclaimed, &stat); + trace_mm_vmscan_reclaim_pages(pgdat->node_id, &sc, nr_reclaimed, &stat); return nr_reclaimed; } -- 2.34.1
