Reclaimed pages through other means than LRU-based reclaim are tracked through reclaim_state in struct scan_control, which is stashed in current task_struct. These pages are added to the number of reclaimed pages through LRUs. For memcg reclaim, these pages generally cannot be linked to the memcg under reclaim and can cause an overestimated count of reclaimed pages. This short series tries to address that. Patch 1 is just refactoring updating reclaim_state into a helper function, and renames reclaimed_slab to just reclaimed, with a comment describing its true purpose. Patch 2 ignores pages reclaimed outside of LRU reclaim in memcg reclaim. The original draft was a little bit different. It also kept track of uncharged objcg pages, and reported them only in memcg reclaim and only if the uncharged memcg is in the subtree of the memcg under reclaim. This was an attempt to make reporting of memcg reclaim even more accurate, but was dropped due to questionable complexity vs benefit tradeoff. It can be revived if there is interest. Yosry Ahmed (2): mm: vmscan: refactor updating reclaimed pages in reclaim_state mm: vmscan: ignore non-LRU-based reclaim in memcg reclaim fs/inode.c | 3 +-- fs/xfs/xfs_buf.c | 3 +-- include/linux/swap.h | 5 ++++- mm/slab.c | 3 +-- mm/slob.c | 6 ++---- mm/slub.c | 5 ++--- mm/vmscan.c | 19 ++++++++++++++++--- 7 files changed, 27 insertions(+), 17 deletions(-) -- 2.39.1.519.gcb327c4b5f-goog