On Thu, 11 Oct 2007, Akinobu Mita wrote: > > Why would get_cpu_slab not work? > > > case CPU_DEAD: > case CPU_DEAD_FROZEN: > down_read(&slub_lock); > list_for_each_entry(s, &slab_caches, list) { > struct kmem_cache_cpu *c = get_cpu_slab(s, cpu); > > local_irq_save(flags); > __flush_cpu_slab(s, cpu); > local_irq_restore(flags); > free_kmem_cache_cpu(c, cpu); > s->cpu_slab[cpu] = NULL; <---------------------- > } > up_read(&slub_lock); > break; > > When CPU is offlined, cpu-hotplug notifier sets s->cpu_slab[cpu] = NULL. > This means get_cpu_slab() always return NULL when CPU is being onlined. > So I can't use get_cpu_slab to check whether kmem_cache_cpu_free > initalization for the CPU has already been done or not.
If you have set it to NULL then the earlier kmem_cache_cpu structures has been freed. Why is it a problem to allocate another one when the cpu comes up again? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/