mm/list_lru.c: Rename kvfree_rcu() to local variant
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): [email protected]
Uladzislau Rezki (Sony)
maintainerPATCH 15/24 mm/list_lru.c: Rename kvfree_rcu() to local variant
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.
--- mm/list_lru.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
mm/list_lru.c +3 -3
@@ -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 ; }
Signature · 1 line
2.20.1
Uladzislau Rezki
maintainerHello.
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
Quoted 51 lines · Uladzislau Rezki (Sony)
Rename
kvfree_rcu()function to thekvfree_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 Andrew Morton <[email protected]>Signed-off-by Uladzislau Rezki (Sony) <[email protected]>Reviewed-by Joel Fernandes (Google) <[email protected]>Signed-off-by Joel Fernandes (Google) <[email protected]>--- mm/list_lru.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)mm/list_lru.c +1
-1@@ -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);}
mm/list_lru.c +2
-3-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
Signature · 1 line
Uladzislau Rezki
Uladzislau Rezki (Sony)
maintainerPATCH 18/24 mm/list_lru.c: Remove kvfree_rcu_local() function
In reply to a message not in the archiveSince 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.
--- mm/list_lru.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-)
mm/list_lru.c +3 -10
@@ -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 ; }
Signature · 1 line
2.20.1
Uladzislau Rezki
maintainerRe: [PATCH 18/24] mm/list_lru.c: Remove kvfree_rcu_local() function
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
Quoted 67 lines · Uladzislau Rezki (Sony)
Since there is newly introduced
kvfree_rcu()API, there is no need in queuing and usingcall_rcu()tokvfree()an object after the GP.Remove
kvfree_rcu_local()function and replacecall_rcu()by newkvfree_rcu()API that does the same but in more efficient way.Cc Andrew Morton <[email protected]>Signed-off-by Uladzislau Rezki (Sony) <[email protected]>Reviewed-by Joel Fernandes (Google) <[email protected]>Signed-off-by Joel Fernandes (Google) <[email protected]>--- mm/list_lru.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-)mm/list_lru.c +1
-1@@ -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().mm/list_lru.c +2
-10+* 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
Signature · 1 line
Uladzislau Rezki