1. 07 Apr, 2010 1 commit
    • David Rientjes's avatar
      slab: add memory hotplug support · 8f9f8d9e
      David Rientjes authored
      Slab lacks any memory hotplug support for nodes that are hotplugged
      without cpus being hotplugged.  This is possible at least on x86
      CONFIG_MEMORY_HOTPLUG_SPARSE kernels where SRAT entries are marked
      ACPI_SRAT_MEM_HOT_PLUGGABLE and the regions of RAM represent a seperate
      node.  It can also be done manually by writing the start address to
      /sys/devices/system/memory/probe for kernels that have
      CONFIG_ARCH_MEMORY_PROBE set, which is how this patch was tested, and
      then onlining the new memory region.
      
      When a node is hotadded, a nodelist for that node is allocated and
      initialized for each slab cache.  If this isn't completed due to a lack
      of memory, the hotadd is aborted: we have a reasonable expectation that
      kmalloc_node(nid) will work for all caches if nid is online and memory is
      available.
      
      Since nodelists must be allocated and initialized prior to the new node's
      memory actually being online, the struct kmem_list3 is allocated off-node
      due to kmalloc_node()'s fallback.
      
      When an entire node would be offlined, its nodelists are subsequently
      drained.  If slab objects still exist and cannot be freed, the offline is
      aborted.  It is possible that objects will be allocated between this
      drain and page isolation, so it's still possible that the offline will
      still fail, however.
      Acked-by: default avatarChristoph Lameter <cl@linux-foundation.org>
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
      8f9f8d9e
  2. 20 Mar, 2010 3 commits
  3. 19 Mar, 2010 36 commits