summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2020-08-27 13:12:12 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2020-08-27 13:12:52 -0400
commitddb9243b5fb6b6f649e063e226b88c0e70c7ec37 (patch)
tree6e9b678c2af24a0d8a8893d407ffc5836bf0fce4
parent7e10c5dd228febc677d386bb3e3b1ad040fe5d85 (diff)
downloadlongterm-queue-5.2-ddb9243b5fb6b6f649e063e226b88c0e70c7ec37.tar.gz
mm: memcg: ctxt refresh
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--queue/mm-memcg-slab-synchronize-access-to-kmem_cache-dying.patch23
1 files changed, 12 insertions, 11 deletions
diff --git a/queue/mm-memcg-slab-synchronize-access-to-kmem_cache-dying.patch b/queue/mm-memcg-slab-synchronize-access-to-kmem_cache-dying.patch
index 44733c03..73ccd087 100644
--- a/queue/mm-memcg-slab-synchronize-access-to-kmem_cache-dying.patch
+++ b/queue/mm-memcg-slab-synchronize-access-to-kmem_cache-dying.patch
@@ -1,4 +1,4 @@
-From 63b02ef7dc4ec239df45c018ac0adbd02ba30a0c Mon Sep 17 00:00:00 2001
+From 443801ac41eb42cac2c4fbae3a4e5e814fe377aa Mon Sep 17 00:00:00 2001
From: Roman Gushchin <guro@fb.com>
Date: Thu, 11 Jul 2019 20:56:24 -0700
Subject: [PATCH] mm: memcg/slab: synchronize access to kmem_cache dying flag
@@ -31,9 +31,10 @@ Cc: Andrei Vagin <avagin@gmail.com>
Cc: Qian Cai <cai@lca.pw>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
diff --git a/mm/slab_common.c b/mm/slab_common.c
-index afdd73553b88..a15557776d7d 100644
+index 0d247ef3057b..70fb7eec7360 100644
--- a/mm/slab_common.c
+++ b/mm/slab_common.c
@@ -130,6 +130,7 @@ int __kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t nr,
@@ -44,9 +45,9 @@ index afdd73553b88..a15557776d7d 100644
void slab_init_memcg_params(struct kmem_cache *s)
{
-@@ -734,14 +735,22 @@ static void kmemcg_cache_deactivate(struct kmem_cache *s)
-
- __kmemcg_cache_deactivate(s);
+@@ -752,14 +753,22 @@ void slab_deactivate_memcg_cache_rcu_sched(struct kmem_cache *s,
+ WARN_ON_ONCE(s->memcg_params.deact_fn))
+ return;
+ /*
+ * memcg_kmem_wq_lock is used to synchronize memcg_params.dying
@@ -61,25 +62,25 @@ index afdd73553b88..a15557776d7d 100644
/* pin memcg so that @s doesn't get destroyed in the middle */
css_get(&s->memcg_params.memcg->css);
- s->memcg_params.work_fn = __kmemcg_cache_deactivate_after_rcu;
- call_rcu(&s->memcg_params.rcu_head, kmemcg_rcufn);
+ s->memcg_params.deact_fn = deact_fn;
+ call_rcu(&s->memcg_params.deact_rcu_head, kmemcg_deactivate_rcufn);
+unlock:
+ spin_unlock_irq(&memcg_kmem_wq_lock);
}
void memcg_deactivate_kmem_caches(struct mem_cgroup *memcg)
-@@ -851,9 +860,9 @@ static int shutdown_memcg_caches(struct kmem_cache *s)
+@@ -869,9 +878,9 @@ static int shutdown_memcg_caches(struct kmem_cache *s)
- static void flush_memcg_workqueue(struct kmem_cache *s)
+ static void memcg_set_kmem_cache_dying(struct kmem_cache *s)
{
- mutex_lock(&slab_mutex);
+ spin_lock_irq(&memcg_kmem_wq_lock);
s->memcg_params.dying = true;
- mutex_unlock(&slab_mutex);
+ spin_unlock_irq(&memcg_kmem_wq_lock);
+ }
- /*
- * SLAB and SLUB deactivate the kmem_caches through call_rcu. Make
+ static void flush_memcg_workqueue(struct kmem_cache *s)
--
2.27.0