Re: [PATCH AUTOSEL 4.18 025/113] mm/list_lru.c: add memcg argument to list_lru_from_kmem()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30.08.2018 21:02, Sasha Levin wrote:
> From: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx>
> 
> [ Upstream commit 44bd4a4759d5a714767aa6be7e806ab54b7fa3a8 ]

This commit is not needed for stable. And I think, there are no more
commits in this series, which depend on it.

> This is just refactoring to allow the next patches to have memcg pointer
> in list_lru_from_kmem().
> 
> Link: http://lkml.kernel.org/r/153063060664.1818.9541345386733498582.stgit@localhost.localdomain
> Signed-off-by: Kirill Tkhai <ktkhai@xxxxxxxxxxxxx>
> Acked-by: Vladimir Davydov <vdavydov.dev@xxxxxxxxx>
> Tested-by: Shakeel Butt <shakeelb@xxxxxxxxxx>
> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
> Cc: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx>
> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
> Cc: "Huang, Ying" <ying.huang@xxxxxxxxx>
> Cc: Johannes Weiner <hannes@xxxxxxxxxxx>
> Cc: Josef Bacik <jbacik@xxxxxx>
> Cc: Li RongQing <lirongqing@xxxxxxxxx>
> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
> Cc: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
> Cc: Mel Gorman <mgorman@xxxxxxxxxxxxxxxxxxx>
> Cc: Michal Hocko <mhocko@xxxxxxxxxx>
> Cc: Minchan Kim <minchan@xxxxxxxxxx>
> Cc: Philippe Ombredanne <pombredanne@xxxxxxxx>
> Cc: Roman Gushchin <guro@xxxxxx>
> Cc: Sahitya Tummala <stummala@xxxxxxxxxxxxxx>
> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> Cc: Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Waiman Long <longman@xxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Sasha Levin <alexander.levin@xxxxxxxxxxxxx>
> ---
>  mm/list_lru.c | 25 +++++++++++++++++--------
>  1 file changed, 17 insertions(+), 8 deletions(-)
> 
> diff --git a/mm/list_lru.c b/mm/list_lru.c
> index fcfb6c89ed47..426ec49f9325 100644
> --- a/mm/list_lru.c
> +++ b/mm/list_lru.c
> @@ -75,18 +75,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 inline bool list_lru_memcg_aware(struct list_lru *lru)
> @@ -101,8 +107,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 && !CONFIG_SLOB */
> @@ -115,7 +124,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++;
> @@ -135,7 +144,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--;
> 




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux