• V
    mm, slab: split out the cpu offline variant of flush_slab() · 08beb547
    Vlastimil Babka 提交于
    flush_slab() is called either as part IPI handler on given live cpu, or as a
    cleanup on behalf of another cpu that went offline. The first case needs to
    protect updating the kmem_cache_cpu fields with disabled irqs. Currently the
    whole call happens with irqs disabled by the IPI handler, but the following
    patch will change from IPI to workqueue, and flush_slab() will have to disable
    irqs (to be replaced with a local lock later) in the critical part.
    
    To prepare for this change, replace the call to flush_slab() for the dead cpu
    handling with an opencoded variant that will not disable irqs nor take a local
    lock.
    Suggested-by: NMike Galbraith <efault@gmx.de>
    Signed-off-by: NVlastimil Babka <vbabka@suse.cz>
    08beb547
slub.c 147.1 KB