mm: move lruvec stats update functions to vmstat.h
[linux-2.6-microblaze.git] / include / linux / memcontrol.h
index a80c59a..f530d63 100644 (file)
@@ -234,11 +234,6 @@ struct mem_cgroup {
        /* vmpressure notifications */
        struct vmpressure vmpressure;
 
-       /*
-        * Should the accounting and control be hierarchical, per subtree?
-        */
-       bool use_hierarchy;
-
        /*
         * Should the OOM killer kill all belonging tasks, had it kill one?
         */
@@ -282,20 +277,6 @@ struct mem_cgroup {
 
        MEMCG_PADDING(_pad1_);
 
-       /*
-        * set > 0 if pages under this cgroup are moving to other cgroup.
-        */
-       atomic_t                moving_account;
-       struct task_struct      *move_lock_task;
-
-       /* Legacy local VM stats and events */
-       struct memcg_vmstats_percpu __percpu *vmstats_local;
-
-       /* Subtree VM stats and events (batched updates) */
-       struct memcg_vmstats_percpu __percpu *vmstats_percpu;
-
-       MEMCG_PADDING(_pad2_);
-
        atomic_long_t           vmstats[MEMCG_NR_STAT];
        atomic_long_t           vmevents[NR_VM_EVENT_ITEMS];
 
@@ -310,13 +291,26 @@ struct mem_cgroup {
        int                     tcpmem_pressure;
 
 #ifdef CONFIG_MEMCG_KMEM
-        /* Index in the kmem_cache->memcg_params.memcg_caches array */
        int kmemcg_id;
        enum memcg_kmem_state kmem_state;
        struct obj_cgroup __rcu *objcg;
        struct list_head objcg_list; /* list of inherited objcgs */
 #endif
 
+       MEMCG_PADDING(_pad2_);
+
+       /*
+        * set > 0 if pages under this cgroup are moving to other cgroup.
+        */
+       atomic_t                moving_account;
+       struct task_struct      *move_lock_task;
+
+       /* Legacy local VM stats and events */
+       struct memcg_vmstats_percpu __percpu *vmstats_local;
+
+       /* Subtree VM stats and events (batched updates) */
+       struct memcg_vmstats_percpu __percpu *vmstats_percpu;
+
 #ifdef CONFIG_CGROUP_WRITEBACK
        struct list_head cgwb_list;
        struct wb_domain cgwb_domain;
@@ -589,8 +583,6 @@ static inline bool mem_cgroup_is_descendant(struct mem_cgroup *memcg,
 {
        if (root == memcg)
                return true;
-       if (!root->use_hierarchy)
-               return false;
        return cgroup_is_descendant(memcg->css.cgroup, root->css.cgroup);
 }
 
@@ -794,19 +786,15 @@ static inline unsigned long lruvec_page_state_local(struct lruvec *lruvec,
 
 void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
                              int val);
-void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
-                       int val);
-void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val);
-
-void mod_memcg_obj_state(void *p, int idx, int val);
+void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val);
 
-static inline void mod_lruvec_slab_state(void *p, enum node_stat_item idx,
+static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
                                         int val)
 {
        unsigned long flags;
 
        local_irq_save(flags);
-       __mod_lruvec_slab_state(p, idx, val);
+       __mod_lruvec_kmem_state(p, idx, val);
        local_irq_restore(flags);
 }
 
@@ -820,43 +808,6 @@ static inline void mod_memcg_lruvec_state(struct lruvec *lruvec,
        local_irq_restore(flags);
 }
 
-static inline void mod_lruvec_state(struct lruvec *lruvec,
-                                   enum node_stat_item idx, int val)
-{
-       unsigned long flags;
-
-       local_irq_save(flags);
-       __mod_lruvec_state(lruvec, idx, val);
-       local_irq_restore(flags);
-}
-
-static inline void __mod_lruvec_page_state(struct page *page,
-                                          enum node_stat_item idx, int val)
-{
-       struct page *head = compound_head(page); /* rmap on tail pages */
-       pg_data_t *pgdat = page_pgdat(page);
-       struct lruvec *lruvec;
-
-       /* Untracked pages have no memcg, no lruvec. Update only the node */
-       if (!head->mem_cgroup) {
-               __mod_node_page_state(pgdat, idx, val);
-               return;
-       }
-
-       lruvec = mem_cgroup_lruvec(head->mem_cgroup, pgdat);
-       __mod_lruvec_state(lruvec, idx, val);
-}
-
-static inline void mod_lruvec_page_state(struct page *page,
-                                        enum node_stat_item idx, int val)
-{
-       unsigned long flags;
-
-       local_irq_save(flags);
-       __mod_lruvec_page_state(page, idx, val);
-       local_irq_restore(flags);
-}
-
 unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
                                                gfp_t gfp_mask,
                                                unsigned long *total_scanned);
@@ -1215,31 +1166,7 @@ static inline void __mod_memcg_lruvec_state(struct lruvec *lruvec,
 {
 }
 
-static inline void __mod_lruvec_state(struct lruvec *lruvec,
-                                     enum node_stat_item idx, int val)
-{
-       __mod_node_page_state(lruvec_pgdat(lruvec), idx, val);
-}
-
-static inline void mod_lruvec_state(struct lruvec *lruvec,
-                                   enum node_stat_item idx, int val)
-{
-       mod_node_page_state(lruvec_pgdat(lruvec), idx, val);
-}
-
-static inline void __mod_lruvec_page_state(struct page *page,
-                                          enum node_stat_item idx, int val)
-{
-       __mod_node_page_state(page_pgdat(page), idx, val);
-}
-
-static inline void mod_lruvec_page_state(struct page *page,
-                                        enum node_stat_item idx, int val)
-{
-       mod_node_page_state(page_pgdat(page), idx, val);
-}
-
-static inline void __mod_lruvec_slab_state(void *p, enum node_stat_item idx,
+static inline void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
                                           int val)
 {
        struct page *page = virt_to_head_page(p);
@@ -1247,7 +1174,7 @@ static inline void __mod_lruvec_slab_state(void *p, enum node_stat_item idx,
        __mod_node_page_state(page_pgdat(page), idx, val);
 }
 
-static inline void mod_lruvec_slab_state(void *p, enum node_stat_item idx,
+static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
                                         int val)
 {
        struct page *page = virt_to_head_page(p);
@@ -1255,10 +1182,6 @@ static inline void mod_lruvec_slab_state(void *p, enum node_stat_item idx,
        mod_node_page_state(page_pgdat(page), idx, val);
 }
 
-static inline void mod_memcg_obj_state(void *p, int idx, int val)
-{
-}
-
 static inline
 unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
                                            gfp_t gfp_mask,
@@ -1322,38 +1245,14 @@ static inline void __dec_memcg_page_state(struct page *page,
        __mod_memcg_page_state(page, idx, -1);
 }
 
-static inline void __inc_lruvec_state(struct lruvec *lruvec,
-                                     enum node_stat_item idx)
+static inline void __inc_lruvec_kmem_state(void *p, enum node_stat_item idx)
 {
-       __mod_lruvec_state(lruvec, idx, 1);
+       __mod_lruvec_kmem_state(p, idx, 1);
 }
 
-static inline void __dec_lruvec_state(struct lruvec *lruvec,
-                                     enum node_stat_item idx)
+static inline void __dec_lruvec_kmem_state(void *p, enum node_stat_item idx)
 {
-       __mod_lruvec_state(lruvec, idx, -1);
-}
-
-static inline void __inc_lruvec_page_state(struct page *page,
-                                          enum node_stat_item idx)
-{
-       __mod_lruvec_page_state(page, idx, 1);
-}
-
-static inline void __dec_lruvec_page_state(struct page *page,
-                                          enum node_stat_item idx)
-{
-       __mod_lruvec_page_state(page, idx, -1);
-}
-
-static inline void __inc_lruvec_slab_state(void *p, enum node_stat_item idx)
-{
-       __mod_lruvec_slab_state(p, idx, 1);
-}
-
-static inline void __dec_lruvec_slab_state(void *p, enum node_stat_item idx)
-{
-       __mod_lruvec_slab_state(p, idx, -1);
+       __mod_lruvec_kmem_state(p, idx, -1);
 }
 
 /* idx can be of type enum memcg_stat_item or node_stat_item */
@@ -1384,30 +1283,6 @@ static inline void dec_memcg_page_state(struct page *page,
        mod_memcg_page_state(page, idx, -1);
 }
 
-static inline void inc_lruvec_state(struct lruvec *lruvec,
-                                   enum node_stat_item idx)
-{
-       mod_lruvec_state(lruvec, idx, 1);
-}
-
-static inline void dec_lruvec_state(struct lruvec *lruvec,
-                                   enum node_stat_item idx)
-{
-       mod_lruvec_state(lruvec, idx, -1);
-}
-
-static inline void inc_lruvec_page_state(struct page *page,
-                                        enum node_stat_item idx)
-{
-       mod_lruvec_page_state(page, idx, 1);
-}
-
-static inline void dec_lruvec_page_state(struct page *page,
-                                        enum node_stat_item idx)
-{
-       mod_lruvec_page_state(page, idx, -1);
-}
-
 static inline struct lruvec *parent_lruvec(struct lruvec *lruvec)
 {
        struct mem_cgroup *memcg;
@@ -1568,9 +1443,8 @@ static inline void memcg_kmem_uncharge(struct mem_cgroup *memcg,
 }
 
 /*
- * helper for accessing a memcg's index. It will be used as an index in the
- * child cache array in kmem_cache, and also to derive its name. This function
- * will return -1 when this is not a kmem-limited memcg.
+ * A helper for accessing memcg's kmem_id, used for getting
+ * corresponding LRU lists.
  */
 static inline int memcg_cache_id(struct mem_cgroup *memcg)
 {