Re: [RFC v2 29/34] mm: slub: Move flush_cpu_slab() invocations __free_slab() invocations out of IRQ context
From: Cyrill Gorcunov <hidden>
Date: 2021-06-09 22:29:25
Also in:
lkml
From: Cyrill Gorcunov <hidden>
Date: 2021-06-09 22:29:25
Also in:
lkml
On Wed, Jun 09, 2021 at 01:38:58PM +0200, Vlastimil Babka wrote:
+static DEFINE_MUTEX(flush_lock);
+static DEFINE_PER_CPU(struct slub_flush_work, slub_flush);
+
static void flush_all(struct kmem_cache *s)
{
- on_each_cpu_cond(has_cpu_slab, flush_cpu_slab, s, 1);
+ struct slub_flush_work *sfw;
+ unsigned int cpu;
+
+ cpus_read_lock();
+ mutex_lock(&flush_lock);
+Hi, Vlastimil! Could you please point why do you lock cpus first and mutex only after? Why not mutex_lock + cpus_read_lock instead?