* [PATCH 15/24] mm/list_lru.c: Rename kvfree_rcu() to local variant [not found] <20200427111113.5956-1-urezki@gmail.com> @ 2020-04-27 11:11 ` Uladzislau Rezki (Sony) 2020-04-27 11:22 ` Uladzislau Rezki 2020-04-27 11:11 ` [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function Uladzislau Rezki (Sony) 1 sibling, 1 reply; 4+ messages in thread From: Uladzislau Rezki (Sony) @ 2020-04-27 11:11 UTC (permalink / raw) To: Joel Fernandes; +Cc: Uladzislau Rezki (Sony), linux-mm, Andrew Morton, rcu Rename kvfree_rcu() function to the kvfree_rcu_local() one. The aim is to introduce the public API that would conflict with this one. So we temporarily rename it and remove it in a later commit. Cc: linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org> Cc: rcu@vger.kernel.org Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> --- mm/list_lru.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/list_lru.c b/mm/list_lru.c index 4d5294c39bba..42c95bcb53ca 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -373,14 +373,14 @@ static void memcg_destroy_list_lru_node(struct list_lru_node *nlru) struct list_lru_memcg *memcg_lrus; /* * This is called when shrinker has already been unregistered, - * and nobody can use it. So, there is no need to use kvfree_rcu(). + * and nobody can use it. So, there is no need to use kvfree_rcu_local(). */ memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true); __memcg_destroy_list_lru_node(memcg_lrus, 0, memcg_nr_cache_ids); kvfree(memcg_lrus); } -static void kvfree_rcu(struct rcu_head *head) +static void kvfree_rcu_local(struct rcu_head *head) { struct list_lru_memcg *mlru; @@ -419,7 +419,7 @@ static int memcg_update_list_lru_node(struct list_lru_node *nlru, rcu_assign_pointer(nlru->memcg_lrus, new); spin_unlock_irq(&nlru->lock); - call_rcu(&old->rcu, kvfree_rcu); + call_rcu(&old->rcu, kvfree_rcu_local); return 0; } -- 2.20.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 15/24] mm/list_lru.c: Rename kvfree_rcu() to local variant 2020-04-27 11:11 ` [PATCH 15/24] mm/list_lru.c: Rename kvfree_rcu() to local variant Uladzislau Rezki (Sony) @ 2020-04-27 11:22 ` Uladzislau Rezki 0 siblings, 0 replies; 4+ messages in thread From: Uladzislau Rezki @ 2020-04-27 11:22 UTC (permalink / raw) To: Joel Fernandes; +Cc: Linux Memory Management List, Andrew Morton, RCU [-- Attachment #1: Type: text/plain, Size: 2051 bytes --] Hello. I apologize. Please ignore this patch and email. Wanted to send it to one person, instead git send-email also handled some emails from commit footer. -- Vlad Rezki On Mon, Apr 27, 2020 at 1:11 PM Uladzislau Rezki (Sony) <urezki@gmail.com> wrote: > Rename kvfree_rcu() function to the kvfree_rcu_local() one. The aim is > to introduce the public API that would conflict with this one. So we > temporarily rename it and remove it in a later commit. > > Cc: linux-mm@kvack.org > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: rcu@vger.kernel.org > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> > Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > --- > mm/list_lru.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/mm/list_lru.c b/mm/list_lru.c > index 4d5294c39bba..42c95bcb53ca 100644 > --- a/mm/list_lru.c > +++ b/mm/list_lru.c > @@ -373,14 +373,14 @@ static void memcg_destroy_list_lru_node(struct > list_lru_node *nlru) > struct list_lru_memcg *memcg_lrus; > /* > * This is called when shrinker has already been unregistered, > - * and nobody can use it. So, there is no need to use kvfree_rcu(). > + * and nobody can use it. So, there is no need to use > kvfree_rcu_local(). > */ > memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true); > __memcg_destroy_list_lru_node(memcg_lrus, 0, memcg_nr_cache_ids); > kvfree(memcg_lrus); > } > > -static void kvfree_rcu(struct rcu_head *head) > +static void kvfree_rcu_local(struct rcu_head *head) > { > struct list_lru_memcg *mlru; > > @@ -419,7 +419,7 @@ static int memcg_update_list_lru_node(struct > list_lru_node *nlru, > rcu_assign_pointer(nlru->memcg_lrus, new); > spin_unlock_irq(&nlru->lock); > > - call_rcu(&old->rcu, kvfree_rcu); > + call_rcu(&old->rcu, kvfree_rcu_local); > return 0; > } > > -- > 2.20.1 > > -- Uladzislau Rezki [-- Attachment #2: Type: text/html, Size: 3083 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function [not found] <20200427111113.5956-1-urezki@gmail.com> 2020-04-27 11:11 ` [PATCH 15/24] mm/list_lru.c: Rename kvfree_rcu() to local variant Uladzislau Rezki (Sony) @ 2020-04-27 11:11 ` Uladzislau Rezki (Sony) 2020-04-27 11:23 ` Uladzislau Rezki 1 sibling, 1 reply; 4+ messages in thread From: Uladzislau Rezki (Sony) @ 2020-04-27 11:11 UTC (permalink / raw) To: Joel Fernandes; +Cc: Uladzislau Rezki (Sony), linux-mm, Andrew Morton, rcu Since there is newly introduced kvfree_rcu() API, there is no need in queuing and using call_rcu() to kvfree() an object after the GP. Remove kvfree_rcu_local() function and replace call_rcu() by new kvfree_rcu() API that does the same but in more efficient way. Cc: linux-mm@kvack.org Cc: Andrew Morton <akpm@linux-foundation.org> Cc: rcu@vger.kernel.org Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> --- mm/list_lru.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/mm/list_lru.c b/mm/list_lru.c index 42c95bcb53ca..a0b08b27a9b9 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -12,6 +12,7 @@ #include <linux/slab.h> #include <linux/mutex.h> #include <linux/memcontrol.h> +#include <linux/rcupdate.h> #include "slab.h" #ifdef CONFIG_MEMCG_KMEM @@ -373,21 +374,13 @@ static void memcg_destroy_list_lru_node(struct list_lru_node *nlru) struct list_lru_memcg *memcg_lrus; /* * This is called when shrinker has already been unregistered, - * and nobody can use it. So, there is no need to use kvfree_rcu_local(). + * and nobody can use it. So, there is no need to use kvfree_rcu(). */ memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true); __memcg_destroy_list_lru_node(memcg_lrus, 0, memcg_nr_cache_ids); kvfree(memcg_lrus); } -static void kvfree_rcu_local(struct rcu_head *head) -{ - struct list_lru_memcg *mlru; - - mlru = container_of(head, struct list_lru_memcg, rcu); - kvfree(mlru); -} - static int memcg_update_list_lru_node(struct list_lru_node *nlru, int old_size, int new_size) { @@ -419,7 +412,7 @@ static int memcg_update_list_lru_node(struct list_lru_node *nlru, rcu_assign_pointer(nlru->memcg_lrus, new); spin_unlock_irq(&nlru->lock); - call_rcu(&old->rcu, kvfree_rcu_local); + kvfree_rcu(old, rcu); return 0; } -- 2.20.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function 2020-04-27 11:11 ` [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function Uladzislau Rezki (Sony) @ 2020-04-27 11:23 ` Uladzislau Rezki 0 siblings, 0 replies; 4+ messages in thread From: Uladzislau Rezki @ 2020-04-27 11:23 UTC (permalink / raw) To: Joel Fernandes; +Cc: Linux Memory Management List, Andrew Morton, RCU [-- Attachment #1: Type: text/plain, Size: 2504 bytes --] Hello. I apologize. Please ignore this patch and email. Wanted to send it to one person, instead git send-email also handled some emails from commit footer. -- Vlad Rezki On Mon, Apr 27, 2020 at 1:11 PM Uladzislau Rezki (Sony) <urezki@gmail.com> wrote: > Since there is newly introduced kvfree_rcu() API, there is no need in > queuing and using call_rcu() to kvfree() an object after the GP. > > Remove kvfree_rcu_local() function and replace call_rcu() by new > kvfree_rcu() API that does the same but in more efficient way. > > Cc: linux-mm@kvack.org > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: rcu@vger.kernel.org > Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> > Reviewed-by: Joel Fernandes (Google) <joel@joelfernandes.org> > Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org> > --- > mm/list_lru.c | 13 +++---------- > 1 file changed, 3 insertions(+), 10 deletions(-) > > diff --git a/mm/list_lru.c b/mm/list_lru.c > index 42c95bcb53ca..a0b08b27a9b9 100644 > --- a/mm/list_lru.c > +++ b/mm/list_lru.c > @@ -12,6 +12,7 @@ > #include <linux/slab.h> > #include <linux/mutex.h> > #include <linux/memcontrol.h> > +#include <linux/rcupdate.h> > #include "slab.h" > > #ifdef CONFIG_MEMCG_KMEM > @@ -373,21 +374,13 @@ static void memcg_destroy_list_lru_node(struct > list_lru_node *nlru) > struct list_lru_memcg *memcg_lrus; > /* > * This is called when shrinker has already been unregistered, > - * and nobody can use it. So, there is no need to use > kvfree_rcu_local(). > + * and nobody can use it. So, there is no need to use kvfree_rcu(). > */ > memcg_lrus = rcu_dereference_protected(nlru->memcg_lrus, true); > __memcg_destroy_list_lru_node(memcg_lrus, 0, memcg_nr_cache_ids); > kvfree(memcg_lrus); > } > > -static void kvfree_rcu_local(struct rcu_head *head) > -{ > - struct list_lru_memcg *mlru; > - > - mlru = container_of(head, struct list_lru_memcg, rcu); > - kvfree(mlru); > -} > - > static int memcg_update_list_lru_node(struct list_lru_node *nlru, > int old_size, int new_size) > { > @@ -419,7 +412,7 @@ static int memcg_update_list_lru_node(struct > list_lru_node *nlru, > rcu_assign_pointer(nlru->memcg_lrus, new); > spin_unlock_irq(&nlru->lock); > > - call_rcu(&old->rcu, kvfree_rcu_local); > + kvfree_rcu(old, rcu); > return 0; > } > > -- > 2.20.1 > > -- Uladzislau Rezki [-- Attachment #2: Type: text/html, Size: 3631 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-04-27 11:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20200427111113.5956-1-urezki@gmail.com>
2020-04-27 11:11 ` [PATCH 15/24] mm/list_lru.c: Rename kvfree_rcu() to local variant Uladzislau Rezki (Sony)
2020-04-27 11:22 ` Uladzislau Rezki
2020-04-27 11:11 ` [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function Uladzislau Rezki (Sony)
2020-04-27 11:23 ` Uladzislau Rezki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox