From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-db5eur01on0104.outbound.protection.outlook.com ([104.47.2.104]:15808 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727235AbeHaBnE (ORCPT ); Thu, 30 Aug 2018 21:43:04 -0400 Subject: Re: [PATCH AUTOSEL 4.18 025/113] mm/list_lru.c: add memcg argument to list_lru_from_kmem() To: Sasha Levin , "stable@vger.kernel.org" Cc: Al Viro , Andrey Ryabinin , Chris Wilson , Greg Kroah-Hartman , Guenter Roeck , "Huang, Ying" , Johannes Weiner , Josef Bacik , Li RongQing , Matthew Wilcox , Matthias Kaehlcke , Mel Gorman , Michal Hocko , Minchan Kim , Philippe Ombredanne , Roman Gushchin , Sahitya Tummala , Stephen Rothwell , Tetsuo Handa , Thomas Gleixner , Waiman Long , Andrew Morton , Linus Torvalds References: <20180830180050.35735-1-alexander.levin@microsoft.com> <20180830180050.35735-25-alexander.levin@microsoft.com> From: Kirill Tkhai Message-ID: <8a09fa9a-cf8a-c993-301e-f52d36c35916@virtuozzo.com> Date: Fri, 31 Aug 2018 00:38:35 +0300 MIME-Version: 1.0 In-Reply-To: <20180830180050.35735-25-alexander.levin@microsoft.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: On 30.08.2018 21:02, Sasha Levin wrote: > From: Kirill Tkhai > > [ 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 > Acked-by: Vladimir Davydov > Tested-by: Shakeel Butt > Cc: Al Viro > Cc: Andrey Ryabinin > Cc: Chris Wilson > Cc: Greg Kroah-Hartman > Cc: Guenter Roeck > Cc: "Huang, Ying" > Cc: Johannes Weiner > Cc: Josef Bacik > Cc: Li RongQing > Cc: Matthew Wilcox > Cc: Matthias Kaehlcke > Cc: Mel Gorman > Cc: Michal Hocko > Cc: Minchan Kim > Cc: Philippe Ombredanne > Cc: Roman Gushchin > Cc: Sahitya Tummala > Cc: Stephen Rothwell > Cc: Tetsuo Handa > Cc: Thomas Gleixner > Cc: Waiman Long > Signed-off-by: Andrew Morton > Signed-off-by: Linus Torvalds > Signed-off-by: Sasha Levin > --- > 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--; >