]> Git Repo - linux.git/blobdiff - mm/list_lru.c
mm/list_lru.c: add memcg argument to list_lru_from_kmem()
[linux.git] / mm / list_lru.c
index 5aebbb9b2f5ba9535157f7bfb8193636049ad7d2..1fc5be746e69bf1c9ccb38f01eb58242b2445d8c 100644 (file)
@@ -65,18 +65,24 @@ static __always_inline struct mem_cgroup *mem_cgroup_from_kmem(void *ptr)
 }
 
 static inline struct list_lru_one *
-list_lru_from_kmem(struct list_lru_node *nlru, void *ptr)
+list_lru_from_kmem(struct list_lru_node *nlru, void *ptr,
+                  struct mem_cgroup **memcg_ptr)
 {
-       struct mem_cgroup *memcg;
+       struct list_lru_one *l = &nlru->lru;
+       struct mem_cgroup *memcg = NULL;
 
        if (!nlru->memcg_lrus)
-               return &nlru->lru;
+               goto out;
 
        memcg = mem_cgroup_from_kmem(ptr);
        if (!memcg)
-               return &nlru->lru;
+               goto out;
 
-       return list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg));
+       l = list_lru_from_memcg_idx(nlru, memcg_cache_id(memcg));
+out:
+       if (memcg_ptr)
+               *memcg_ptr = memcg;
+       return l;
 }
 #else
 static void list_lru_register(struct list_lru *lru)
@@ -99,8 +105,11 @@ list_lru_from_memcg_idx(struct list_lru_node *nlru, int idx)
 }
 
 static inline struct list_lru_one *
-list_lru_from_kmem(struct list_lru_node *nlru, void *ptr)
+list_lru_from_kmem(struct list_lru_node *nlru, void *ptr,
+                  struct mem_cgroup **memcg_ptr)
 {
+       if (memcg_ptr)
+               *memcg_ptr = NULL;
        return &nlru->lru;
 }
 #endif /* CONFIG_MEMCG_KMEM */
@@ -113,7 +122,7 @@ bool list_lru_add(struct list_lru *lru, struct list_head *item)
 
        spin_lock(&nlru->lock);
        if (list_empty(item)) {
-               l = list_lru_from_kmem(nlru, item);
+               l = list_lru_from_kmem(nlru, item, NULL);
                list_add_tail(item, &l->list);
                l->nr_items++;
                nlru->nr_items++;
@@ -133,7 +142,7 @@ bool list_lru_del(struct list_lru *lru, struct list_head *item)
 
        spin_lock(&nlru->lock);
        if (!list_empty(item)) {
-               l = list_lru_from_kmem(nlru, item);
+               l = list_lru_from_kmem(nlru, item, NULL);
                list_del_init(item);
                l->nr_items--;
                nlru->nr_items--;
This page took 0.031502 seconds and 4 git commands to generate.