)]}'
{
  "commit": "765c4507af71c39aba21006bbd3ec809fe9714ff",
  "tree": "8bf1f5f940af830e18321b4e8ceac55457e5b981",
  "parents": [
    "77f700dab4c05f8ee17584ec869672796d7bcb87"
  ],
  "author": {
    "name": "Christoph Lameter",
    "email": "clameter@sgi.com",
    "time": "Wed Sep 27 01:50:08 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Wed Sep 27 08:26:12 2006 -0700"
  },
  "message": "[PATCH] GFP_THISNODE for the slab allocator\n\nThis patch insures that the slab node lists in the NUMA case only contain\nslabs that belong to that specific node.  All slab allocations use\nGFP_THISNODE when calling into the page allocator.  If an allocation fails\nthen we fall back in the slab allocator according to the zonelists appropriate\nfor a certain context.\n\nThis allows a replication of the behavior of alloc_pages and alloc_pages node\nin the slab layer.\n\nCurrently allocations requested from the page allocator may be redirected via\ncpusets to other nodes.  This results in remote pages on nodelists and that in\nturn results in interrupt latency issues during cache draining.  Plus the slab\nis handing out memory as local when it is really remote.\n\nFallback for slab memory allocations will occur within the slab allocator and\nnot in the page allocator.  This is necessary in order to be able to use the\nexisting pools of objects on the nodes that we fall back to before adding more\npages to a slab.\n\nThe fallback function insures that the nodes we fall back to obey cpuset\nrestrictions of the current context.  We do not allocate objects from outside\nof the current cpuset context like before.\n\nNote that the implementation of locality constraints within the slab allocator\nrequires importing logic from the page allocator.  This is a mischmash that is\nnot that great.  Other allocators (uncached allocator, vmalloc, huge pages)\nface similar problems and have similar minimal reimplementations of the basic\nfallback logic of the page allocator.  There is another way of implementing a\nslab by avoiding per node lists (see modular slab) but this wont work within\nthe existing slab.\n\nV1-\u003eV2:\n- Use NUMA_BUILD to avoid #ifdef CONFIG_NUMA\n- Exploit GFP_THISNODE being 0 in the NON_NUMA case to avoid another\n  #ifdef\n\n[akpm@osdl.org: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "38f89650bc84962d9209b5035297b173c3b16c44",
      "old_mode": 33188,
      "old_path": "mm/mempolicy.c",
      "new_id": "cf18f0942553554ae4977958dc06109335eb8abd",
      "new_mode": 33188,
      "new_path": "mm/mempolicy.c"
    },
    {
      "type": "modify",
      "old_id": "69e11c45002fe01b628ca19b2d018426b124c435",
      "old_mode": 33188,
      "old_path": "mm/slab.c",
      "new_id": "792bfe320a8b2c0896f8568f8d07de40203f8cf2",
      "new_mode": 33188,
      "new_path": "mm/slab.c"
    }
  ]
}
