Merge tag 'omap-for-v5.8/dt-missed-signed' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / include / linux / memcontrol.h
index 977edd3..e77197a 100644 (file)
@@ -29,10 +29,7 @@ struct kmem_cache;
 
 /* Cgroup-specific page state, on top of universal node page state */
 enum memcg_stat_item {
-       MEMCG_CACHE = NR_VM_NODE_STAT_ITEMS,
-       MEMCG_RSS,
-       MEMCG_RSS_HUGE,
-       MEMCG_SWAP,
+       MEMCG_SWAP = NR_VM_NODE_STAT_ITEMS,
        MEMCG_SOCK,
        /* XXX: why are these zone and not node counters? */
        MEMCG_KERNEL_STACK_KB,
@@ -45,6 +42,7 @@ enum memcg_memory_event {
        MEMCG_MAX,
        MEMCG_OOM,
        MEMCG_OOM_KILL,
+       MEMCG_SWAP_HIGH,
        MEMCG_SWAP_MAX,
        MEMCG_SWAP_FAIL,
        MEMCG_NR_MEMORY_EVENTS,
@@ -215,9 +213,6 @@ struct mem_cgroup {
        struct page_counter kmem;
        struct page_counter tcpmem;
 
-       /* Upper bound of normal memory consumption range */
-       unsigned long high;
-
        /* Range enforcement for interrupt charges */
        struct work_struct high_work;
 
@@ -360,16 +355,8 @@ static inline unsigned long mem_cgroup_protection(struct mem_cgroup *memcg,
 enum mem_cgroup_protection mem_cgroup_protected(struct mem_cgroup *root,
                                                struct mem_cgroup *memcg);
 
-int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
-                         gfp_t gfp_mask, struct mem_cgroup **memcgp,
-                         bool compound);
-int mem_cgroup_try_charge_delay(struct page *page, struct mm_struct *mm,
-                         gfp_t gfp_mask, struct mem_cgroup **memcgp,
-                         bool compound);
-void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg,
-                             bool lrucare, bool compound);
-void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg,
-               bool compound);
+int mem_cgroup_charge(struct page *page, struct mm_struct *mm, gfp_t gfp_mask);
+
 void mem_cgroup_uncharge(struct page *page);
 void mem_cgroup_uncharge_list(struct list_head *page_list);
 
@@ -570,7 +557,7 @@ struct mem_cgroup *mem_cgroup_get_oom_group(struct task_struct *victim,
 void mem_cgroup_print_oom_group(struct mem_cgroup *memcg);
 
 #ifdef CONFIG_MEMCG_SWAP
-extern int do_swap_account;
+extern bool cgroup_memory_noswap;
 #endif
 
 struct mem_cgroup *lock_page_memcg(struct page *page);
@@ -710,16 +697,17 @@ static inline void mod_lruvec_state(struct lruvec *lruvec,
 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 (!page->mem_cgroup) {
+       if (!head->mem_cgroup) {
                __mod_node_page_state(pgdat, idx, val);
                return;
        }
 
-       lruvec = mem_cgroup_lruvec(page->mem_cgroup, pgdat);
+       lruvec = mem_cgroup_lruvec(head->mem_cgroup, pgdat);
        __mod_lruvec_state(lruvec, idx, val);
 }
 
@@ -849,37 +837,12 @@ static inline enum mem_cgroup_protection mem_cgroup_protected(
        return MEMCG_PROT_NONE;
 }
 
-static inline int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
-                                       gfp_t gfp_mask,
-                                       struct mem_cgroup **memcgp,
-                                       bool compound)
-{
-       *memcgp = NULL;
-       return 0;
-}
-
-static inline int mem_cgroup_try_charge_delay(struct page *page,
-                                             struct mm_struct *mm,
-                                             gfp_t gfp_mask,
-                                             struct mem_cgroup **memcgp,
-                                             bool compound)
+static inline int mem_cgroup_charge(struct page *page, struct mm_struct *mm,
+                                   gfp_t gfp_mask)
 {
-       *memcgp = NULL;
        return 0;
 }
 
-static inline void mem_cgroup_commit_charge(struct page *page,
-                                           struct mem_cgroup *memcg,
-                                           bool lrucare, bool compound)
-{
-}
-
-static inline void mem_cgroup_cancel_charge(struct page *page,
-                                           struct mem_cgroup *memcg,
-                                           bool compound)
-{
-}
-
 static inline void mem_cgroup_uncharge(struct page *page)
 {
 }
@@ -1279,6 +1242,19 @@ static inline void dec_lruvec_page_state(struct page *page,
        mod_lruvec_page_state(page, idx, -1);
 }
 
+static inline struct lruvec *parent_lruvec(struct lruvec *lruvec)
+{
+       struct mem_cgroup *memcg;
+
+       memcg = lruvec_memcg(lruvec);
+       if (!memcg)
+               return NULL;
+       memcg = parent_mem_cgroup(memcg);
+       if (!memcg)
+               return NULL;
+       return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));
+}
+
 #ifdef CONFIG_CGROUP_WRITEBACK
 
 struct wb_domain *mem_cgroup_wb_domain(struct bdi_writeback *wb);