memory hotplug: make kmem_cache_node for SLUB on memory online avoid panic
authorYasunori Goto <y-goto@jp.fujitsu.com>
Sun, 21 Oct 2007 23:41:37 +0000 (16:41 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 22 Oct 2007 15:13:17 +0000 (08:13 -0700)
commitb9049e234401e1fad8459d69a952b174d76c399d
tree619adc6533f33379baf25253ff56603b272453c8
parent7b78d335ac15b10bbcb0397c635d7f0d569b0270
memory hotplug: make kmem_cache_node for SLUB on memory online avoid panic

Fix a panic due to access NULL pointer of kmem_cache_node at discard_slab()
after memory online.

When memory online is called, kmem_cache_nodes are created for all SLUBs
for new node whose memory are available.

slab_mem_going_online_callback() is called to make kmem_cache_node() in
callback of memory online event.  If it (or other callbacks) fails, then
slab_mem_offline_callback() is called for rollback.

In memory offline, slab_mem_going_offline_callback() is called to shrink
all slub cache, then slab_mem_offline_callback() is called later.

[akpm@linux-foundation.org: coding-style fixes]
[akpm@linux-foundation.org: locking fix]
[akpm@linux-foundation.org: build fix]
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/memory.h
mm/slub.c