BACKPORT: mm: multi-gen LRU: exploit locality in rmap
[platform/kernel/linux-rpi.git] / include / linux / memcontrol.h
index fa12e18..c00fb7e 100644 (file)
@@ -643,6 +643,23 @@ static inline unsigned long memcg_page_state_local(struct mem_cgroup *memcg,
 
 void __mod_memcg_state(struct mem_cgroup *memcg, int idx, int val);
 
+/* try to stablize page_memcg() for all the pages in a memcg */
+static inline bool mem_cgroup_trylock_pages(struct mem_cgroup *memcg)
+{
+       rcu_read_lock();
+
+       if (mem_cgroup_disabled() || !atomic_read(&memcg->moving_account))
+               return true;
+
+       rcu_read_unlock();
+       return false;
+}
+
+static inline void mem_cgroup_unlock_pages(void)
+{
+       rcu_read_unlock();
+}
+
 /* idx can be of type enum memcg_stat_item or node_stat_item */
 static inline void mod_memcg_state(struct mem_cgroup *memcg,
                                   int idx, int val)
@@ -1055,6 +1072,18 @@ static inline void unlock_page_memcg(struct page *page)
 {
 }
 
+static inline bool mem_cgroup_trylock_pages(struct mem_cgroup *memcg)
+{
+       /* to match page_memcg_rcu() */
+       rcu_read_lock();
+       return true;
+}
+
+static inline void mem_cgroup_unlock_pages(void)
+{
+       rcu_read_unlock();
+}
+
 static inline void mem_cgroup_handle_over_high(void)
 {
 }