)]}'
{
  "commit": "8f9f8d9e8080a2ff46caa7decef47810d093d252",
  "tree": "c9adbf892104431816b4a6aaf96083c649f3b36a",
  "parents": [
    "220bf991b0366cc50a94feede3d7341fa5710ee4"
  ],
  "author": {
    "name": "David Rientjes",
    "email": "rientjes@google.com",
    "time": "Sat Mar 27 19:40:47 2010 -0700"
  },
  "committer": {
    "name": "Pekka Enberg",
    "email": "penberg@cs.helsinki.fi",
    "time": "Wed Apr 07 19:28:31 2010 +0300"
  },
  "message": "slab: add memory hotplug support\n\nSlab lacks any memory hotplug support for nodes that are hotplugged\nwithout cpus being hotplugged.  This is possible at least on x86\nCONFIG_MEMORY_HOTPLUG_SPARSE kernels where SRAT entries are marked\nACPI_SRAT_MEM_HOT_PLUGGABLE and the regions of RAM represent a seperate\nnode.  It can also be done manually by writing the start address to\n/sys/devices/system/memory/probe for kernels that have\nCONFIG_ARCH_MEMORY_PROBE set, which is how this patch was tested, and\nthen onlining the new memory region.\n\nWhen a node is hotadded, a nodelist for that node is allocated and\ninitialized for each slab cache.  If this isn\u0027t completed due to a lack\nof memory, the hotadd is aborted: we have a reasonable expectation that\nkmalloc_node(nid) will work for all caches if nid is online and memory is\navailable.\n\nSince nodelists must be allocated and initialized prior to the new node\u0027s\nmemory actually being online, the struct kmem_list3 is allocated off-node\ndue to kmalloc_node()\u0027s fallback.\n\nWhen an entire node would be offlined, its nodelists are subsequently\ndrained.  If slab objects still exist and cannot be freed, the offline is\naborted.  It is possible that objects will be allocated between this\ndrain and page isolation, so it\u0027s still possible that the offline will\nstill fail, however.\n\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a9f325b28bed145a4aab6ff8414b074d3b233280",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "3230cd2c6b3b2051a1dd35b902dc6db2b5e92259",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    }
  ]
}
