The reclaim code has a single predicate for whether it currently
reclaims on behalf of a memory cgroup, as well as whether it is
reclaiming from the global LRU list or a memory cgroup LRU list.
Up to now, both cases always coincide, but subsequent patches will
change things such that global reclaim will scan memory cgroup lists.
This patch adds a new predicate that tells global reclaim from memory
cgroup reclaim, and then changes all callsites that are actually about
global reclaim heuristics rather than strict LRU list selection.
Signed-off-by: Johannes Weiner<hannes@xxxxxxxxxxx>
---
mm/vmscan.c | 96 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 56 insertions(+), 40 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index f6b435c..ceeb2a5 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -104,8 +104,12 @@ struct scan_control {
*/
reclaim_mode_t reclaim_mode;
- /* Which cgroup do we reclaim from */
- struct mem_cgroup *mem_cgroup;
+ /*
+ * The memory cgroup we reclaim on behalf of, and the one we
+ * are currently reclaiming from.
+ */
+ struct mem_cgroup *memcg;
+ struct mem_cgroup *current_memcg;