]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/memcontrol.h
Merge tag 'riscv/for-v5.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv...
[linux.git] / include / linux / memcontrol.h
index ae703ea3ef4841e293990b250252c2f562395065..a7a0a1a5c8d5916c7a2946d369d11f61076cbac7 100644 (file)
@@ -58,7 +58,6 @@ enum mem_cgroup_protection {
 
 struct mem_cgroup_reclaim_cookie {
        pg_data_t *pgdat;
-       int priority;
        unsigned int generation;
 };
 
@@ -81,7 +80,6 @@ struct mem_cgroup_id {
 enum mem_cgroup_events_target {
        MEM_CGROUP_TARGET_THRESH,
        MEM_CGROUP_TARGET_SOFTLIMIT,
-       MEM_CGROUP_TARGET_NUMAINFO,
        MEM_CGROUP_NTARGETS,
 };
 
@@ -112,7 +110,7 @@ struct memcg_shrinker_map {
 };
 
 /*
- * per-zone information in memory controller.
+ * per-node information in memory controller.
  */
 struct mem_cgroup_per_node {
        struct lruvec           lruvec;
@@ -126,7 +124,7 @@ struct mem_cgroup_per_node {
 
        unsigned long           lru_zone_size[MAX_NR_ZONES][NR_LRU_LISTS];
 
-       struct mem_cgroup_reclaim_iter  iter[DEF_PRIORITY + 1];
+       struct mem_cgroup_reclaim_iter  iter;
 
        struct memcg_shrinker_map __rcu *shrinker_map;
 
@@ -134,9 +132,6 @@ struct mem_cgroup_per_node {
        unsigned long           usage_in_excess;/* Set to the value by which */
                                                /* the soft limit is exceeded*/
        bool                    on_tree;
-       bool                    congested;      /* memcg has many dirty pages */
-                                               /* backed by a congested BDI */
-
        struct mem_cgroup       *memcg;         /* Back pointer, we cannot */
                                                /* use container_of        */
 };
@@ -313,13 +308,6 @@ struct mem_cgroup {
        struct list_head kmem_caches;
 #endif
 
-       int last_scanned_node;
-#if MAX_NUMNODES > 1
-       nodemask_t      scan_nodes;
-       atomic_t        numainfo_events;
-       atomic_t        numainfo_updating;
-#endif
-
 #ifdef CONFIG_CGROUP_WRITEBACK
        struct list_head cgwb_list;
        struct wb_domain cgwb_domain;
@@ -394,25 +382,27 @@ mem_cgroup_nodeinfo(struct mem_cgroup *memcg, int nid)
 }
 
 /**
- * mem_cgroup_lruvec - get the lru list vector for a node or a memcg zone
- * @node: node of the wanted lruvec
+ * mem_cgroup_lruvec - get the lru list vector for a memcg & node
  * @memcg: memcg of the wanted lruvec
  *
- * Returns the lru list vector holding pages for a given @node or a given
- * @memcg and @zone. This can be the node lruvec, if the memory controller
- * is disabled.
+ * Returns the lru list vector holding pages for a given @memcg &
+ * @node combination. This can be the node lruvec, if the memory
+ * controller is disabled.
  */
-static inline struct lruvec *mem_cgroup_lruvec(struct pglist_data *pgdat,
-                               struct mem_cgroup *memcg)
+static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
+                                              struct pglist_data *pgdat)
 {
        struct mem_cgroup_per_node *mz;
        struct lruvec *lruvec;
 
        if (mem_cgroup_disabled()) {
-               lruvec = node_lruvec(pgdat);
+               lruvec = &pgdat->__lruvec;
                goto out;
        }
 
+       if (!memcg)
+               memcg = root_mem_cgroup;
+
        mz = mem_cgroup_nodeinfo(memcg, pgdat->node_id);
        lruvec = &mz->lruvec;
 out:
@@ -728,7 +718,7 @@ static inline void __mod_lruvec_page_state(struct page *page,
                return;
        }
 
-       lruvec = mem_cgroup_lruvec(pgdat, page->mem_cgroup);
+       lruvec = mem_cgroup_lruvec(page->mem_cgroup, pgdat);
        __mod_lruvec_state(lruvec, idx, val);
 }
 
@@ -899,16 +889,21 @@ static inline void mem_cgroup_migrate(struct page *old, struct page *new)
 {
 }
 
-static inline struct lruvec *mem_cgroup_lruvec(struct pglist_data *pgdat,
-                               struct mem_cgroup *memcg)
+static inline struct lruvec *mem_cgroup_lruvec(struct mem_cgroup *memcg,
+                                              struct pglist_data *pgdat)
 {
-       return node_lruvec(pgdat);
+       return &pgdat->__lruvec;
 }
 
 static inline struct lruvec *mem_cgroup_page_lruvec(struct page *page,
                                                    struct pglist_data *pgdat)
 {
-       return &pgdat->lruvec;
+       return &pgdat->__lruvec;
+}
+
+static inline struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg)
+{
+       return NULL;
 }
 
 static inline bool mm_match_cgroup(struct mm_struct *mm,