)]}'
{
  "log": [
    {
      "commit": "ba0268a8b056f2ad846f1f8837a764c21bb6425e",
      "tree": "93ab7d2555a98628850dbf917a43ceddef8c980c",
      "parents": [
        "4150d3f549fe2355625017b2a6ff72aec98bcef0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Sep 11 15:24:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Sep 11 17:21:27 2007 -0700"
      },
      "message": "SLUB: accurately compare debug flags during slab cache merge\n\nThis was posted on Aug 28 and fixes an issue that could cause troubles\nwhen slab caches \u003e\u003d128k are created.\n\nhttp://marc.info/?l\u003dlinux-mm\u0026m\u003d118798149918424\u0026w\u003d2\n\nCurrently we simply add the debug flags unconditional when checking for a\nmatching slab.  This creates issues for sysfs processing when slabs exist\nthat are exempt from debugging due to their huge size or because only a\nsubset of slabs was selected for debugging.\n\nWe need to only add the flags if kmem_cache_open() would also add them.\n\nCreate a function to calculate the flags that would be set\nif the cache would be opened and use that function to determine\nthe flags before looking for a compatible slab.\n\n[akpm@linux-foundation.org: fixlets]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5d540fb71552b9f2c542bea967200c48be2d8ef6",
      "tree": "af328bd4d12b2b91c6fa53af94a78fcc370562ce",
      "parents": [
        "4ccdb4c8727c9963c7aa0d6301df283cf1f8a731"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Aug 30 23:56:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Aug 31 01:42:22 2007 -0700"
      },
      "message": "slub: do not fail if we cannot register a slab with sysfs\n\nDo not BUG() if we cannot register a slab with sysfs.  Just print an error.\n The only consequence of not registering is that the slab cache is not\nvisible via /sys/slab.  A BUG() may not be visible that early during boot\nand we have had multiple issues here already.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2f92ee7e704440995cf5474f4cc7b268bf380e0",
      "tree": "8c51ce70ddf96f0a16eccb85f7883c33e143f34e",
      "parents": [
        "9e86943b6c74f214ce0516d56e55636d52252e19"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Aug 22 14:01:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:47 2007 -0700"
      },
      "message": "SLUB: do not fail on broken memory configurations\n\nPrint a big fat warning and do what is necessary to continue if a node is\nmarked as up (meaning either node is online (upstream) or node has memory\n(Andrew\u0027s tree)) but allocations from the node do not succeed.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e86943b6c74f214ce0516d56e55636d52252e19",
      "tree": "f5ba2d57e7a5d5a031f1e6a418e7d5e2c5a838b8",
      "parents": [
        "fe58103a56f05613cb1f0ef228354d4d5f6c2b08"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Aug 22 14:01:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Aug 22 19:52:47 2007 -0700"
      },
      "message": "SLUB: use atomic_long_read for atomic_long variables\n\nSLUB is using atomic_read() for variables declared atomic_long_t.\nSwitch to atomic_long_read().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ceef40249f21eceabf8633934d94962e7d8e1d7",
      "tree": "2b9201a2f7b102d0db7f2790df6f6456fae89e21",
      "parents": [
        "fcda3d89bf1366f6801447eab2d8a75ac5b9c4ce"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Aug 07 15:11:48 2007 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Aug 09 21:57:16 2007 -0700"
      },
      "message": "SLUB: Fix dynamic dma kmalloc cache creation\n\nThe dynamic dma kmalloc creation can run into trouble if a\nGFP_ATOMIC allocation is the first one performed for a certain size\nof dma kmalloc slab.\n\n- Move the adding of the slab to sysfs into a workqueue\n  (sysfs does GFP_KERNEL allocations)\n- Do not call kmem_cache_destroy() (uses slub_lock)\n- Only acquire the slub_lock once and--if we cannot wait--do a trylock.\n\n  This introduces a slight risk of the first kmalloc(x, GFP_DMA|GFP_ATOMIC)\n  for a range of sizes failing due to another process holding the slub_lock.\n  However, we only need to acquire the spinlock once in order to establish\n  each power of two DMA kmalloc cache. The possible conflict is with the\n  slub_lock taken during slab management actions (create / remove slab cache).\n\n  It is rather typical that a driver will first fill its buffers using\n  GFP_KERNEL allocations which will wait until the slub_lock can be acquired.\n  Drivers will also create its slab caches first outside of an atomic\n  context before starting to use atomic kmalloc from an interrupt context.\n\n  If there are any failures then they will occur early after boot or when\n  loading of multiple drivers concurrently. Drivers can already accomodate\n  failures of GFP_ATOMIC for other reasons. Retries will then create the slab.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "fcda3d89bf1366f6801447eab2d8a75ac5b9c4ce",
      "tree": "47382ad57b48a1a0e46a6190991f88a9e6973e45",
      "parents": [
        "6adb31c90c47262c8a25bf5097de9b3426caf3ae"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jul 30 13:06:46 2007 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Aug 09 21:57:15 2007 -0700"
      },
      "message": "SLUB: Remove checks for MAX_PARTIAL from kmem_cache_shrink\n\nThe MAX_PARTIAL checks were supposed to be an optimization. However, slab\nshrinking is a manually triggered process either through running slabinfo\nor by the kernel calling kmem_cache_shrink.\n\nIf one really wants to shrink a slab then all operations should be done\nregardless of the size of the partial list. This also fixes an issue that\ncould surface if the number of partial slabs was initially above MAX_PARTIAL\nin kmem_cache_shrink and later drops below MAX_PARTIAL through the\nelimination of empty slabs on the partial list (rare). In that case a few\nslabs may be left off the partial list (and only be put back when they\nare empty).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "2208b764c14d0f1ad63da64b1a42db6077b6fe42",
      "tree": "eb936f9fce478ffd6252e5dd2e6a88540b78a641",
      "parents": [
        "02febdf7f62f2fbfa89ca9dc5d929beea89c96b1"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 26 20:54:34 2007 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jul 30 12:15:15 2007 -0700"
      },
      "message": "slub: fix bug in slub debug support\n\nWe ClearSlabDebug() before the last SlabDebug() check. Clear it later.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "02febdf7f62f2fbfa89ca9dc5d929beea89c96b1",
      "tree": "8138189066b52f8a4cc4b2ad7b82ce800def8bb9",
      "parents": [
        "9c837fb692b005203765d8a569a2fe43fdff9df1"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Thu Jul 26 20:01:38 2007 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jul 30 12:12:39 2007 -0700"
      },
      "message": "slub: add lock debugging check\n\nIngo noticed that the SLUB code does include the lock debugging free\ncheck.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "9550b105b8646f916862aee3ab7b25020ca14159",
      "tree": "d5e57db2bfd773611e2b77b4bbe6d89ba8449b45",
      "parents": [
        "a5c96d8a1c67f31ef48935a78da2d2076513842b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 13:21:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 13:21:34 2007 -0700"
      },
      "message": "slub: fix ksize() for zero-sized pointers\n\nThe slab and slob allocators already did this right, but slub would call\n\"get_object_page()\" on the magic ZERO_SIZE_PTR, with all kinds of nasty\nend results.\n\nNoted by Ingo Molnar.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ab1372fac5684de56c68f0da1ddc90e1c4ce740",
      "tree": "42594d334c83ff18655731bf4d9f5d023c9c2886",
      "parents": [
        "a0e1d1be204612ee83b3afe8aa24c5d27e63d464"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "SLUB: Fix CONFIG_SLUB_DEBUG use for CONFIG_NUMA\n\nWe currently cannot disable CONFIG_SLUB_DEBUG for CONFIG_NUMA.  Now that\nembedded systems start to use NUMA we may need this.\n\nPut an #ifdef around places where NUMA only code uses fields only valid\nfor CONFIG_SLUB_DEBUG.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0e1d1be204612ee83b3afe8aa24c5d27e63d464",
      "tree": "a32092a7eda82c84c5e195de5efd2cb6c0bff553",
      "parents": [
        "434e245ddd3f14aa8eef97cae16c71b863ab092a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "SLUB: Move sysfs operations outside of slub_lock\n\nSysfs can do a gazillion things when called.  Make sure that we do not call\nany sysfs functions while holding the slub_lock.\n\nJust protect the essentials:\n\n1. The list of all slab caches\n2. The kmalloc_dma array\n3. The ref counters of the slabs.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "434e245ddd3f14aa8eef97cae16c71b863ab092a",
      "tree": "bbfd9d012416e6882fd714650435a78ce4f9da9b",
      "parents": [
        "94f6030ca792c57422f04a73e7a872d8325946d3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "SLUB: Do not allocate object bit array on stack\n\nThe objects per slab increase with the current patches in mm since we allow up\nto order 3 allocs by default.  More patches in mm actually allow to use 2M or\nhigher sized slabs.  For slab validation we need per object bitmaps in order\nto check a slab.  We end up with up to 64k objects per slab resulting in a\npotential requirement of 8K stack space.  That does not look good.\n\nAllocate the bit arrays via kmalloc.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81cda6626178cd55297831296ba8ecedbfd8b52d",
      "tree": "fa35a6a04db63080bbeb42f33f4b4a891b7fc96c",
      "parents": [
        "ce15fea8274acca06daa1674322d37a7d3f0036b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "Slab allocators: Cleanup zeroing allocations\n\nIt becomes now easy to support the zeroing allocs with generic inline\nfunctions in slab.h.  Provide inline definitions to allow the continued use of\nkzalloc, kmem_cache_zalloc etc but remove other definitions of zeroing\nfunctions from the slab allocators and util.c.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce15fea8274acca06daa1674322d37a7d3f0036b",
      "tree": "ade273da0bfdc0eadb176d847012ce1656b75c93",
      "parents": [
        "12ad6843dd145050231ec5a27fe326c2085f9095"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: Do not use length parameter in slab_alloc()\n\nWe can get to the length of the object through the kmem_cache_structure.  The\nadditional parameter does no good and causes the compiler to generate bad\ncode.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "12ad6843dd145050231ec5a27fe326c2085f9095",
      "tree": "36159963da99f44f34b6bb9c7c1a294b2a56642f",
      "parents": [
        "5af328a51067d8dc574c2b2c2629dd436a1e841e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: Style fix up the loop to disable small slabs\n\nDo proper spacing and we only need to do this in steps of 8.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5af328a51067d8dc574c2b2c2629dd436a1e841e",
      "tree": "ca1c305a1019eb49a9ead016e6e31aafc3ce8a46",
      "parents": [
        "7b55f620e6908fec2d51751320c2a9459b5f375f"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Jul 17 04:03:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "mm/slub.c: make code static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b55f620e6908fec2d51751320c2a9459b5f375f",
      "tree": "6fb32a7051b4358018fb26a3125e3b9621418abe",
      "parents": [
        "f1b263393626fe66bee34ccdbf0487cd377e0213"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: Simplify dma index -\u003e size calculation\n\nThere is no need to caculate the dma slab size ourselves. We can simply\nlookup the size of the corresponding non dma slab.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f1b263393626fe66bee34ccdbf0487cd377e0213",
      "tree": "c144c6f8c0fd8f5eeeac1504bf7204c09938135f",
      "parents": [
        "dfce8648d64c07eade40d456d59cb4bfcbba008c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: faster more efficient slab determination for __kmalloc\n\nkmalloc_index is a long series of comparisons.  The attempt to replace\nkmalloc_index with something more efficient like ilog2 failed due to compiler\nissues with constant folding on gcc 3.3 / powerpc.\n\nkmalloc_index()\u0027es long list of comparisons works fine for constant folding\nsince all the comparisons are optimized away.  However, SLUB also uses\nkmalloc_index to determine the slab to use for the __kmalloc_xxx functions.\nThis leads to a large set of comparisons in get_slab().\n\nThe patch here allows to get rid of that list of comparisons in get_slab():\n\n1. If the requested size is larger than 192 then we can simply use\n   fls to determine the slab index since all larger slabs are\n   of the power of two type.\n\n2. If the requested size is smaller then we cannot use fls since there\n   are non power of two caches to be considered. However, the sizes are\n   in a managable range. So we divide the size by 8. Then we have only\n   24 possibilities left and then we simply look up the kmalloc index\n   in a table.\n\nCode size of slub.o decreases by more than 200 bytes through this patch.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfce8648d64c07eade40d456d59cb4bfcbba008c",
      "tree": "7141882bd03d9848ec6299a48bc08796a8382062",
      "parents": [
        "2e443fd003d76394a8ceb78f079260478aa10710"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: do proper locking during dma slab creation\n\nWe modify the kmalloc_cache_dma[] array without proper locking.  Do the proper\nlocking and undo the dma cache creation if another processor has already\ncreated it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e443fd003d76394a8ceb78f079260478aa10710",
      "tree": "e67fe6e1382ec7a2f636ab09285a41620192eb9f",
      "parents": [
        "0c710013200e72b5e0bc680ff4ec6bdac53c5ce8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: extract dma_kmalloc_cache from get_cache.\n\nThe rarely used dma functionality in get_slab() makes the function too\ncomplex.  The compiler begins to spill variables from the working set onto the\nstack.  The created function is only used in extremely rare cases so make sure\nthat the compiler does not decide on its own to merge it back into get_slab().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c710013200e72b5e0bc680ff4ec6bdac53c5ce8",
      "tree": "160c44e8036e9ea65e7863271f925954d05ed091",
      "parents": [
        "d07dbea46405b37d59495eb4de9d1056dcfb7c6d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: add some more inlines and #ifdef CONFIG_SLUB_DEBUG\n\nAdd #ifdefs around data structures only needed if debugging is compiled into\nSLUB.\n\nAdd inlines to small functions to reduce code size.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d07dbea46405b37d59495eb4de9d1056dcfb7c6d",
      "tree": "221376c8c5509a88f8942246180685d5c01baf46",
      "parents": [
        "6cb8f91320d3e720351c21741da795fed580b21b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "Slab allocators: support __GFP_ZERO in all allocators\n\nA kernel convention for many allocators is that if __GFP_ZERO is passed to an\nallocator then the allocated memory should be zeroed.\n\nThis is currently not supported by the slab allocators.  The inconsistency\nmakes it difficult to implement in derived allocators such as in the uncached\nallocator and the pool allocators.\n\nIn addition the support zeroed allocations in the slab allocators does not\nhave a consistent API.  There are no zeroing allocator functions for NUMA node\nplacement (kmalloc_node, kmem_cache_alloc_node).  The zeroing allocations are\nonly provided for default allocs (kzalloc, kmem_cache_zalloc_node).\n__GFP_ZERO will make zeroing universally available and does not require any\naddititional functions.\n\nSo add the necessary logic to all slab allocators to support __GFP_ZERO.\n\nThe code is added to the hot path.  The gfp flags are on the stack and so the\ncacheline is readily available for checking if we want a zeroed object.\n\nZeroing while allocating is now a frequent operation and we seem to be\ngradually approaching a 1-1 parity between zeroing and not zeroing allocs.\nThe current tree has 3476 uses of kmalloc vs 2731 uses of kzalloc.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cb8f91320d3e720351c21741da795fed580b21b",
      "tree": "c9f73c8b82cd0f6c534939b8b9f36e8615b0ab2d",
      "parents": [
        "ef2ad80c7d255ed0449eda947c2d700635b7e0f5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "Slab allocators: consistent ZERO_SIZE_PTR support and NULL result semantics\n\nDefine ZERO_OR_NULL_PTR macro to be able to remove the checks from the\nallocators.  Move ZERO_SIZE_PTR related stuff into slab.h.\n\nMake ZERO_SIZE_PTR work for all slab allocators and get rid of the\nWARN_ON_ONCE(size \u003d\u003d 0) that is still remaining in SLAB.\n\nMake slub return NULL like the other allocators if a too large memory segment\nis requested via __kmalloc.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef2ad80c7d255ed0449eda947c2d700635b7e0f5",
      "tree": "bc44916bdb25de29c8211566a4b5a1c041fa8ab6",
      "parents": [
        "d45f39cb06610ea456e1d689149b9becacda8b40"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "Slab allocators: consolidate code for krealloc in mm/util.c\n\nThe size of a kmalloc object is readily available via ksize().  ksize is\nprovided by all allocators and thus we can implement krealloc in a generic\nway.\n\nImplement krealloc in mm/util.c and drop slab specific implementations of\nkrealloc.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d45f39cb06610ea456e1d689149b9becacda8b40",
      "tree": "b320a92971c43c42ee1e440e8b43c864485452ab",
      "parents": [
        "6300ea75031e7aebfe3331245b7f750d82621223"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB Debug: fix initial object debug state of NUMA bootstrap objects\n\nThe function we are calling to initialize object debug state during early NUMA\nbootstrap sets up an inactive object giving it the wrong redzone signature.\nThe bootstrap nodes are active objects and should have active redzone\nsignatures.\n\nCurrently slab validation complains and reverts the object to active state.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6300ea75031e7aebfe3331245b7f750d82621223",
      "tree": "ccd49c8173ac6b8449b57555bd0070ceafe3f3b8",
      "parents": [
        "68dff6a9af9f27df5aeee6d0339818b0e36c1b51"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: ensure that the number of objects per slab stays low for high orders\n\nCurrently SLUB has no provision to deal with too high page orders that may\nbe specified on the kernel boot line.  If an order higher than 6 (on a 4k\nplatform) is generated then we will BUG() because slabs get more than 65535\nobjects.\n\nAdd some logic that decreases order for slabs that have too many objects.\nThis allow booting with slab sizes up to MAX_ORDER.\n\nFor example\n\n\tslub_min_order\u003d10\n\nwill boot with a default slab size of 4M and reduce slab sizes for small\nobject sizes to lower orders if the number of objects becomes too big.\nLarge slab sizes like that allow a concentration of objects of the same\nslab cache under as few as possible TLB entries and thus potentially\nreduces TLB pressure.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68dff6a9af9f27df5aeee6d0339818b0e36c1b51",
      "tree": "f25cc5e85925a8901e301e8f8d5d04188f27c0ee",
      "parents": [
        "5b95a4acf157eee552e013795b54eaa2ab1ee4a1"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB slab validation: Move tracking information alloc outside of lock\n\nWe currently have to do an GFP_ATOMIC allocation because the list_lock is\nalready taken when we first allocate memory for tracking allocation\ninformation.  It would be better if we could avoid atomic allocations.\n\nAllocate a size of the tracking table that is usually sufficient (one page)\nbefore we take the list lock.  We will then only do the atomic allocation\nif we need to resize the table to become larger than a page (mostly only\nneeded under large NUMA because of the tracking of cpus and nodes otherwise\nthe table stays small).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b95a4acf157eee552e013795b54eaa2ab1ee4a1",
      "tree": "8222033f1db996fd6ce28ce3685edc8b17793b0b",
      "parents": [
        "2492268472e7d326a6fe10f92f9211c4578f2482"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: use list_for_each_entry for loops over all slabs\n\nUse list_for_each_entry() instead of list_for_each().\n\nGet rid of for_all_slabs(). It had only one user. So fold it into the\ncallback. This also gets rid of cpu_slab_flush.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2492268472e7d326a6fe10f92f9211c4578f2482",
      "tree": "5f668469190b96bc0db13f836d774ae73cf385ca",
      "parents": [
        "8e1f936b73150f5095448a0fee6d4f30a1f9001d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 17 04:03:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:01 2007 -0700"
      },
      "message": "SLUB: change error reporting format to follow lockdep loosely\n\nChanges the error reporting format to loosely follow lockdep.\n\nIf data corruption is detected then we generate the following lines:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nBUG \u003cslab-cache\u003e: \u003cproblem\u003e\n--------------------------------------------\n\nINFO: \u003cmore information\u003e [possibly multiple times]\n\n\u003cobject dump\u003e\n\nFIX \u003cslab-cache\u003e: \u003cremedial action\u003e\n\nThis also adds some more intelligence to the data corruption detection. Its\nnow capable of figuring out the start and end.\n\nAdd a comment on how to configure SLUB so that a production system may\ncontinue to operate even though occasional slab corruption occur through\na misbehaving kernel component. See \"Emergency operations\" in\nDocumentation/vm/slub.txt.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0630fff54a239efbbd89faf6a62da071ef1ff78",
      "tree": "4004adc3adf4dbe1a6188ca0bbd56f7606d4d05f",
      "parents": [
        "fc9a07e7bf1a76e710f5df017abb07628db1781d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun Jul 15 23:38:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "SLUB: support slub_debug on by default\n\nAdd a new configuration variable\n\nCONFIG_SLUB_DEBUG_ON\n\nIf set then the kernel will be booted by default with slab debugging\nswitched on. Similar to CONFIG_SLAB_DEBUG. By default slab debugging\nis available but must be enabled by specifying \"slub_debug\" as a\nkernel parameter.\n\nAlso add support to switch off slab debugging for a kernel that was\nbuilt with CONFIG_SLUB_DEBUG_ON. This works by specifying\n\nslub_debug\u003d-\n\nas a kernel parameter.\n\nDave Jones wanted this feature.\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d118072189913045\u0026w\u003d2\n\n[akpm@linux-foundation.org: clean up switch statement]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d23cf676d0e9d1fdc066d2dcb7f8bc0e2d4c75bd",
      "tree": "6a497007f978d7c2993c0c8de1e2e01d0ad6f821",
      "parents": [
        "c3000e031cf6a1f58228357d7c317f66e670627f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jul 06 11:17:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 06 11:45:11 2007 -0700"
      },
      "message": "slub: remove useless EXPORT_SYMBOL\n\nkmem_cache_open is static. EXPORT_SYMBOL was leftover from some earlier\ntime period where kmem_cache_open was usable outside of slub.\n\n(Fixes powerpc build error)\n\nSigned-off-by: Chrsitoph Lameter \u003cclameter@sgi.com\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbc55faa64c12f4c9fab6e2bd131d771bc026ed1",
      "tree": "b43ca5aa30dbfb9ab920db07039f8c76996fd17a",
      "parents": [
        "746976a301ac9c9aa10d7d42454f8d6cdad8ff2b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Jul 03 09:31:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 03 13:56:13 2007 -0700"
      },
      "message": "SLUB: Make lockdep happy by not calling add_partial with interrupts enabled during bootstrap\n\nIf we move the local_irq_enable() to the end of the function then\nadd_partial() in early_kmem_cache_node_alloc() will be called\nwith interrupts disabled like during regular operations.\n\nThis makes lockdep happy.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nTested-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "849663430268db63a9c3c7467984e4e530ded901",
      "tree": "376459d03c5be4757813c5d185e364307bbbbd39",
      "parents": [
        "1e27dbe7746f3bcbcf1f9a37f31df4b886e36ce3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Jun 23 17:16:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:11 2007 -0700"
      },
      "message": "SLUB: fix behavior if the text output of list_locations overflows PAGE_SIZE\n\nIf slabs are allocated or freed from a large set of call sites (typical for\nthe kmalloc area) then we may create more output than fits into a single\nPAGE and sysfs only gives us one page.  The output should be truncated.\nThis patch fixes the checks to do the truncation properly.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b356be019d0c28f67af02809df7072c1c8f7d32",
      "tree": "03c340e3168a1cae72fd7c96855382ac0c195da6",
      "parents": [
        "8dab5241d06bfc9ee141ea78c56cde5070d7460d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Jun 16 10:16:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:16 2007 -0700"
      },
      "message": "SLUB: minimum alignment fixes\n\nIf ARCH_KMALLOC_MINALIGN is set to a value greater than 8 (SLUBs smallest\nkmalloc cache) then SLUB may generate duplicate slabs in sysfs (yes again)\nbecause the object size is padded to reach ARCH_KMALLOC_MINALIGN.  Thus the\nsize of the small slabs is all the same.\n\nNo arch sets ARCH_KMALLOC_MINALIGN larger than 8 though except mips which\nfor some reason wants a 128 byte alignment.\n\nThis patch increases the size of the smallest cache if\nARCH_KMALLOC_MINALIGN is greater than 8.  In that case more and more of the\nsmallest caches are disabled.\n\nIf we do that then the count of the active general caches that is displayed\non boot is not correct anymore since we may skip elements of the kmalloc\narray.  So count them separately.\n\nThis approach was tested by Havard yesterday.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd08c40e3e23f868eb0e49f638eb208736ec7e66",
      "tree": "75b2cabf36cc35d6549dbda5e53b09650ec422f7",
      "parents": [
        "54c6ed7562d59ab238df1ec9ff76d81d7d0f0842"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Jun 16 10:15:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Jun 16 13:16:15 2007 -0700"
      },
      "message": "SLUB slab validation: Alloc while interrupts are disabled must use GFP_ATOMIC\n\nThe data structure to manage the information gathered about functions\nallocating and freeing objects is allocated when the list_lock has already\nbeen taken.  We need to allocate with GFP_ATOMIC instead of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "272c1d21d6fe42979068e14c04fb60fb6045ad74",
      "tree": "6a365c67ed8575d15a59aa2183df609368359724",
      "parents": [
        "a17627ef8833ac30622a7b39b7be390e1b174405"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 08 13:46:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 08 17:23:33 2007 -0700"
      },
      "message": "SLUB: return ZERO_SIZE_PTR for kmalloc(0)\n\nInstead of returning the smallest available object return ZERO_SIZE_PTR.\n\nA ZERO_SIZE_PTR can be legitimately used as an object pointer as long as it\nis not deferenced.  The dereference of ZERO_SIZE_PTR causes a distinctive\nfault.  kfree can handle a ZERO_SIZE_PTR in the same way as NULL.\n\nThis enables functions to use zero sized object. e.g. n \u003d number of objects.\n\n\tobjects \u003d kmalloc(n * sizeof(object));\n\n\tfor (i \u003d 0; i \u003c n; i++)\n\t\tobjects[i].x \u003d y;\n\n\tkfree(objects);\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27390bc335ff86d92c3819cc28035fde23d1a9c2",
      "tree": "2812436fe897a1211c244f85db2a4d79fff673ff",
      "parents": [
        "ac140a8f8396504b33ddafb7309feca77bff8497"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 01 00:47:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jun 01 08:18:30 2007 -0700"
      },
      "message": "SLUB: fix locking for hotplug callbacks\n\nHotplug callbacks are performed with interrupts enabled.  Slub requires\ninterrupts to be disabled for flushing caches.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Michal Piotrowski \u003cmichal.k.k.piotrowski@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ffa68755a0eddf3baeecd0e7612a5106cf2db23",
      "tree": "8c0fa3d0adda180687e7e35d49f978eae3284ddd",
      "parents": [
        "fbe9c9612930e0604dc99ef2da7e063fa3278817"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu May 31 00:40:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 31 07:58:14 2007 -0700"
      },
      "message": "SLUB: Fix NUMA / SYSFS bootstrap issue\n\nWe need this patch in ASAP.  Patch fixes the mysterious hang that remained\non some particular configurations with lockdep on after the first fix that\nmoved the #idef CONFIG_SLUB_DEBUG to the right location.  See\nhttp://marc.info/?t\u003d117963072300001\u0026r\u003d1\u0026w\u003d2\n\nThe kmem_cache_node cache is very special because it is needed for NUMA\nbootstrap.  Under certain conditions (like for example if lockdep is\nenabled and significantly increases the size of spinlock_t) the structure\nmay become exactly the size as one of the larger caches in the kmalloc\narray.\n\nThat early during bootstrap we cannot perform merging properly.  The unique\nid for the kmem_cache_node cache will match one of the kmalloc array.\nSysfs will complain about a duplicate directory entry.  All of this occurs\nwhile the console is not yet fully operational.  Thus boot may appear to be\nsilently failing.\n\nThe kmem_cache_node cache is very special.  During early boostrap the main\nallocation function is not operational yet and so we have to run our own\nsmall special alloc function during early boot.  It is also special in that\nit is never freed.\n\nWe really do not want any merging on that cache.  Set the refcount -1 and\nforbid merging of slabs that have a negative refcount.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33e9e24101abac2bf3535d0d013d6d27d19197cb",
      "tree": "04d4e3952331b66fef36efa0dc0612cd4f6385c9",
      "parents": [
        "418508c13222ddba475873ea95c8aeadd26104f2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 23 13:57:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:13 2007 -0700"
      },
      "message": "SLUB Debug: fix check for super sized slabs (\u003e512k 64bit, \u003e256k 32bit)\n\nThe check for super sized slabs where we can no longer move the free\npointer behind the object for debugging purposes etc is accessing a\nfield that is not setup yet.  We must use objsize here since the size of\nthe slab has not been determined yet.\n\nThe effect of this is that a global slab shrink via \"slabinfo -s\" will\nshow errors about offsets being wrong if booted with slub_debug.\nPotentially there are other troubles with huge slabs under slub_debug\nbecause the calculated free pointer offset is truncated.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c12b3c62513ecf95c979d5c1785f99562b9dd10d",
      "tree": "fd6e14ac0c62a0bc6e00d6543f54beea8abb6e8b",
      "parents": [
        "72fcde966252abd17d70e4e216a0411a34523a8f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 23 13:57:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 23 20:14:11 2007 -0700"
      },
      "message": "SLUB Debug: Fix object size calculation\n\nThe object size calculation is wrong if !CONFIG_SLUB_DEBUG because the\n#ifdef CONFIG_SLUB_DEBUG is now switching off the size adjustments for\nDESTROY_BY_RCU and ctor.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ec0974210fe1b7c0618ad6e39a882a4237d7de2",
      "tree": "a707c84e2dc18cfba9a44e198a44fbb2605f771c",
      "parents": [
        "a35afb830f8d71ec211531aeb9a621b09a2efb39"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:11:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "SLUB: Simplify debug code\n\nConsolidate functionality into the #ifdef section.\n\nExtract tracing into one subroutine.\n\nMove object debug processing into the #ifdef section so that the\ncode in __slab_alloc and __slab_free becomes minimal.\n\nReduce number of functions we need to provide stubs for in the !SLUB_DEBUG case.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a35afb830f8d71ec211531aeb9a621b09a2efb39",
      "tree": "198280081e1f8b2f6c450742a5075cc7904a3d58",
      "parents": [
        "5577bd8a85c8b7643a241789b14fafa9c8a6c7db"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "Remove SLAB_CTOR_CONSTRUCTOR\n\nSLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5577bd8a85c8b7643a241789b14fafa9c8a6c7db",
      "tree": "0ef0a8adb6811277df3f6e41a2578b1118bc80ef",
      "parents": [
        "eefaca9c3246f3daf56e7ed02987f79abcee7087"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:03 2007 -0700"
      },
      "message": "SLUB: Do our own flags based on PG_active and PG_error\n\nThe atomicity when handling flags in SLUB is not necessary since both flags\nused by SLUB are not updated in a racy way.  Flag updates are either done\nduring slab creation or destruction or under slab_lock.  Some of these flags\ndo not have the non atomic variants that we need.  So define our own.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b6f0750457db1f573eb6226960a432da3be8fe2",
      "tree": "9e71084c892b595e4b7383d152d7ebeea936934b",
      "parents": [
        "3ca12ee549f7837b8a685dddc9515f9fc28434ee"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:03 2007 -0700"
      },
      "message": "SLUB: Define functions for cpu slab handling instead of using PageActive\n\nUse inline functions to access the per cpu bit.  Intoduce the notion of\n\"freezing\" a slab to make things more understandable.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c59def9f222d44bb7e2f0a559f2906191a0862d7",
      "tree": "51bc0c12906b13887c6e53d1e06b48b411443129",
      "parents": [
        "afc0cedbe9138e3e8b38bfa1e4dfd01a2c537d62"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:03 2007 -0700"
      },
      "message": "Slab allocators: Drop support for destructors\n\nThere is no user of destructors left.  There is no reason why we should keep\nchecking for destructors calls in the slab allocators.\n\nThe RFC for this patch was discussed at\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d117882364330705\u0026w\u003d2\n\nDestructors were mainly used for list management which required them to take a\nspinlock.  Taking a spinlock in a destructor is a bit risky since the slab\nallocators may run the destructors anytime they decide a slab is no longer\nneeded.\n\nPatch drops destructor support.  Any attempt to use a destructor will BUG().\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1800782016fda6fbc9990a0227fec581070f23af",
      "tree": "b920bd8d09b9ca5bed90ad4888044067b86053b4",
      "parents": [
        "1abd727ed7abf5c19e7d1760671475cbecbccb0e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue May 15 23:57:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 16 21:19:15 2007 -0700"
      },
      "message": "slub: don\u0027t confuse ctor and dtor\n\nkmem_cache_create() was swapping ctor and dtor in calling find_mergeable():\nthough it caused no bug, and probably never would, even if destructors are\nretained; but fix it so as not to generate anxiety ;)\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcf889f96597137760c6edfdd0ee59fd37cb108c",
      "tree": "f9b878addc86abb81d9f376e5226dd1574db4aee",
      "parents": [
        "d4751a2797bc0a37a8e85783d65ffaa9de689e60"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu May 10 03:15:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 10 09:26:53 2007 -0700"
      },
      "message": "SLUB: remove nr_cpu_ids hack\n\nThis was in SLUB in order to head off trouble while the nr_cpu_ids\nfunctionality was not merged.  Its merged now so no need to still have this.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "894b8788d7f265eb7c6f75a9a77cedeb48f51586",
      "tree": "4b00fa4704090876895b8a7528c6fe5e2201fc28",
      "parents": [
        "02b67325a6d34f2ae67484a8802b6ffc9ce9931d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu May 10 03:15:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 10 09:26:52 2007 -0700"
      },
      "message": "slub: support concurrent local and remote frees and allocs on a slab\n\nAvoid atomic overhead in slab_alloc and slab_free\n\nSLUB needs to use the slab_lock for the per cpu slabs to synchronize with\npotential kfree operations.  This patch avoids that need by moving all free\nobjects onto a lockless_freelist.  The regular freelist continues to exist\nand will be used to free objects.  So while we consume the\nlockless_freelist the regular freelist may build up objects.\n\nIf we are out of objects on the lockless_freelist then we may check the\nregular freelist.  If it has objects then we move those over to the\nlockless_freelist and do this again.  There is a significant savings in\nterms of atomic operations that have to be performed.\n\nWe can even free directly to the lockless_freelist if we know that we are\nrunning on the same processor.  So this speeds up short lived objects.\nThey may be allocated and freed without taking the slab_lock.  This is\nparticular good for netperf.\n\nIn order to maximize the effect of the new faster hotpath we extract the\nhottest performance pieces into inlined functions.  These are then inlined\ninto kmem_cache_alloc and kmem_cache_free.  So hotpath allocation and\nfreeing no longer requires a subroutine call within SLUB.\n\n[I am not sure that it is worth doing this because it changes the easy to\nread structure of slub just to reduce atomic ops.  However, there is\nsomeone out there with a benchmark on 4 way and 8 way processor systems\nthat seems to show a 5% regression vs.  Slab.  Seems that the regression is\ndue to increased atomic operations use vs.  SLAB in SLUB).  I wonder if\nthis is applicable or discernable at all in a real workload?]\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4037d452202e34214e8a939fa5621b2b3bbb45b7",
      "tree": "31b59c0ca94fba4d53b6738b0bad3d1e9fde3063",
      "parents": [
        "77461ab33229d48614402decfb1b2eaa6d446861"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Move remote node draining out of slab allocators\n\nCurrently the slab allocators contain callbacks into the page allocator to\nperform the draining of pagesets on remote nodes.  This requires SLUB to have\na whole subsystem in order to be compatible with SLAB.  Moving node draining\nout of the slab allocators avoids a section of code in SLUB.\n\nMove the node draining so that is is done when the vm statistics are updated.\nAt that point we are already touching all the cachelines with the pagesets of\na processor.\n\nAdd a expire counter there.  If we have to update per zone or global vm\nstatistics then assume that the pageset will require subsequent draining.\n\nThe expire counter will be decremented on each vm stats update pass until it\nreaches zero.  Then we will drain one batch from the pageset.  The draining\nwill cause vm counter updates which will then cause another expiration until\nthe pcp is empty.  So we will drain a batch every 3 seconds.\n\nNote that remote node draining is a somewhat esoteric feature that is required\non large NUMA systems because otherwise significant portions of system memory\ncan become trapped in pcp queues.  The number of pcp is determined by the\nnumber of processors and nodes in a system.  A system with 4 processors and 2\nnodes has 8 pcps which is okay.  But a system with 1024 processors and 512\nnodes has 512k pcps with a high potential for large amount of memory being\ncaught in them.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1187ed21026fd512b87851d0ca26d9ae16f9059",
      "tree": "35d77758f134f3b69d3e00ca042a5d5ca6a59373",
      "parents": [
        "455c017ae3934797653549704c286e7bcc3a9397"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "vmstat: use our own timer events\n\nvmstat is currently using the cache reaper to periodically bring the\nstatistics up to date.  The cache reaper does only exists in SLUB as a way to\nprovide compatibility with SLAB.  This patch removes the vmstat calls from the\nslab allocators and provides its own handling.\n\nThe advantage is also that we can use a different frequency for the updates.\nRefreshing vm stats is a pretty fast job so we can run this every second and\nstagger this by only one tick.  This will lead to some overlap in large\nsystems.  F.e a system running at 250 HZ with 1024 processors will have 4 vm\nupdates occurring at once.\n\nHowever, the vm stats update only accesses per node information.  It is only\nnecessary to stagger the vm statistics updates per processor in each node.  Vm\ncounter updates occurring on distant nodes will not cause cacheline\ncontention.\n\nWe could implement an alternate approach that runs the first processor on each\nnode at the second and then each of the other processor on a node on a\nsubsequent tick.  That may be useful to keep a large amount of the second free\nof timer activity.  Maybe the timer folks will have some feedback on this one?\n\n[jirislaby@gmail.com: add missing break]\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ae439ce0c01d7db0c70d1542985969e95ef750d",
      "tree": "7da3778be3e1c80cd834bf72dc33c3c82ff43017",
      "parents": [
        "5e6d444ea1f72b8148354a9baf0ea8fa3dd0425b"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed May 09 02:32:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:46 2007 -0700"
      },
      "message": "krealloc: fix kerneldoc comments\n\nNo \"blank\" (or \"*\") line is allowed between the function name and lines for\nit parameter(s).\n\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e6d444ea1f72b8148354a9baf0ea8fa3dd0425b",
      "tree": "c9c07fd97acd925bfb9c4964240799414243d399",
      "parents": [
        "45edfa580b8e638c44ec26872bfe75b307ba12d1"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:46 2007 -0700"
      },
      "message": "SLUB: rework slab order determination\n\nIn some cases SLUB is creating uselessly slabs that are larger than\nslub_max_order. Also the layout of some of the slabs was not satisfactory.\n\nGo to an iterarive approach.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45edfa580b8e638c44ec26872bfe75b307ba12d1",
      "tree": "1143a378c5a8b6dcf6bfb1cb7c0cfd42df725417",
      "parents": [
        "41ecc55b8a8ca618e6d490982c7ce45d230d4399"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:46 2007 -0700"
      },
      "message": "SLUB: include lifetime stats and sets of cpus / nodes in tracking output\n\nWe have information about how long an object existed and about the nodes and\ncpus where the allocations and frees took place.  Add that information to the\ntracking output in /sys/slab/xx/alloc_calls and /sys/slab/free_calls\n\nThis will then enable slabinfo to output nice reports like this:\n\n  christoph@qirst:~/slub$ ./slabinfo kmalloc-128\n\n  Slabcache: kmalloc-128           Aliases:  0 Order :  0\n\n  Sizes (bytes)     Slabs              Debug                Memory\n  ------------------------------------------------------------------------\n  Object :     128  Total  :      12   Sanity Checks : On   Total:   49152\n  SlabObj:     200  Full   :       7   Redzoning     : On   Used :   24832\n  SlabSiz:    4096  Partial:       4   Poisoning     : On   Loss :   24320\n  Loss   :      72  CpuSlab:       1   Tracking      : On   Lalig:   13968\n  Align  :       8  Objects:      20   Tracing       : Off  Lpadd:    1152\n\n  kmalloc-128 has no kmem_cache operations\n\n  kmalloc-128: Kernel object allocation\n  -----------------------------------------------------------------------\n        6 param_sysfs_setup+0x71/0x130 age\u003d284512/284512/284512 pid\u003d1 nodes\u003d0-1,3\n       11 percpu_populate+0x39/0x80 age\u003d283914/284428/284512 pid\u003d1 nodes\u003d0\n       21 __register_chrdev_region+0x31/0x170 age\u003d282896/284347/284473 pid\u003d1-1705 nodes\u003d0-2\n        1 sys_inotify_init+0x76/0x1c0 age\u003d283423 pid\u003d1004 nodes\u003d0\n       19 as_get_io_context+0x32/0xd0 age\u003d6/247567/283988 pid\u003d1-11782 nodes\u003d0,2\n       10 ida_pre_get+0x4a/0x80 age\u003d277666/283773/284526 pid\u003d0-2177 nodes\u003d0,2\n       24 kobject_kset_add_dir+0x37/0xb0 age\u003d282727/283860/284472 pid\u003d1-1723 nodes\u003d0-2\n        1 acpi_ds_build_internal_buffer_obj+0xd3/0x11d age\u003d284508 pid\u003d1 nodes\u003d0\n       24 con_insert_unipair+0xd7/0x110 age\u003d284438/284438/284438 pid\u003d1 nodes\u003d0,2\n        1 uart_open+0x2d2/0x4b0 age\u003d283896 pid\u003d1 nodes\u003d0\n       26 dma_pool_create+0x73/0x1a0 age\u003d282762/282833/282916 pid\u003d1705-1723 nodes\u003d0\n        1 neigh_table_init_no_netlink+0xd2/0x210 age\u003d284461 pid\u003d1 nodes\u003d0\n        2 neigh_parms_alloc+0x2b/0xe0 age\u003d284410/284411/284412 pid\u003d1 nodes\u003d2\n        2 neigh_resolve_output+0x1e1/0x280 age\u003d276289/276291/276293 pid\u003d0-2443 nodes\u003d0\n        1 netlink_kernel_create+0x90/0x170 age\u003d284472 pid\u003d1 nodes\u003d0\n        4 xt_alloc_table_info+0x39/0xf0 age\u003d283958/283958/283959 pid\u003d1 nodes\u003d1\n        3 fn_hash_insert+0x473/0x720 age\u003d277653/277661/277666 pid\u003d2177-2185 nodes\u003d0\n        1 get_mtrr_state+0x285/0x2a0 age\u003d284526 pid\u003d0 nodes\u003d0\n        1 cacheinfo_cpu_callback+0x26d/0x3e0 age\u003d284458 pid\u003d1 nodes\u003d0\n       29 kernel_param_sysfs_setup+0x25/0x90 age\u003d284511/284511/284512 pid\u003d1 nodes\u003d0-1,3\n        5 process_zones+0x5e/0x170 age\u003d284546/284546/284546 pid\u003d0 nodes\u003d0\n        1 drm_core_init+0x48/0x160 age\u003d284421 pid\u003d1 nodes\u003d2\n\n  kmalloc-128: Kernel object freeing\n  ------------------------------------------------------------------------\n      163 \u003cnot-available\u003e age\u003d4295176847 pid\u003d0 nodes\u003d0-3\n        1 __vunmap+0x6e/0xf0 age\u003d282907 pid\u003d1723 nodes\u003d0\n       28 free_as_io_context+0x12/0x90 age\u003d9243/262197/283474 pid\u003d42-11754 nodes\u003d0\n        1 acpi_get_object_info+0x1b7/0x1d4 age\u003d284475 pid\u003d1 nodes\u003d0\n        1 do_acpi_find_child+0x45/0x4e age\u003d284475 pid\u003d1 nodes\u003d0\n\n  NUMA nodes           :    0    1    2    3\n  ------------------------------------------\n  All slabs                 7    2    2    1\n  Partial slabs             2    2    0    0\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41ecc55b8a8ca618e6d490982c7ce45d230d4399",
      "tree": "ba2f416a2ea92eb335cae028c586b3cd3797d66c",
      "parents": [
        "02cbc874463924de2c3403379b698bce3cd277a5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: add CONFIG_SLUB_DEBUG\n\nCONFIG_SLUB_DEBUG can be used to switch off the debugging and sysfs components\nof SLUB.  Thus SLUB will be able to replace SLOB.  SLUB can arrange objects in\na denser way than SLOB and the code size should be minimal without debugging\nand sysfs support.\n\nNote that CONFIG_SLUB_DEBUG is materially different from CONFIG_SLAB_DEBUG.\nCONFIG_SLAB_DEBUG is used to enable slab debugging in SLAB.  SLUB enables\ndebugging via a boot parameter.  SLUB debug code should always be present.\n\nCONFIG_SLUB_DEBUG can be modified in the embedded config section.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02cbc874463924de2c3403379b698bce3cd277a5",
      "tree": "e7049877addb956ec53d98ead01d993e06558044",
      "parents": [
        "636f0d7de8dc0282cce9905e035c04dd60db19dd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: move tracking definitions and check_valid_pointer() away from debug code\n\nMove the tracking definitions and the check_valid_pointer() function away from\nthe debugging related functions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "636f0d7de8dc0282cce9905e035c04dd60db19dd",
      "tree": "a4fcb99b6fdc47ca865746bbbdcf9f693e4655b1",
      "parents": [
        "35e5d7ee27680aef6dc3fab45a5ecd9952d9791a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: consolidate trace code\n\nTrace in both slab_alloc and slab_free has a lot of common code.  Use a single\nfunction for both.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35e5d7ee27680aef6dc3fab45a5ecd9952d9791a",
      "tree": "47660b2ac98ca94c42164952520700644411a6cc",
      "parents": [
        "b345970905e34c1b632fe4d80e2af14c7de99b45"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: introduce DebugSlab(page)\n\nThis replaces the PageError() checking.  DebugSlab is clearer and allows for\nfuture changes to the page bit used.  We also need it to support\nCONFIG_SLUB_DEBUG.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b345970905e34c1b632fe4d80e2af14c7de99b45",
      "tree": "0e495a2b5cbbfdbaf7dfd126bb6a5a2060a23ae4",
      "parents": [
        "7656c72b5a631452ace361037ccf8384454d0f72"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: move resiliency check into SYSFS section\n\nMove the resiliency check into the SYSFS section after validate_slab that is\nused by the resiliency check.  This will avoid a forward declaration.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7656c72b5a631452ace361037ccf8384454d0f72",
      "tree": "de14c2fe8b9145f8c618f2e11b6ebc2d2e047de0",
      "parents": [
        "672bba3a4b2e65ed95ebd0cf764bd628bd1da74f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: add macros for scanning objects in a slab\n\nScanning of objects happens in a number of functions.  Consolidate that code.\nDECLARE_BITMAP instead of coding the declaration for bitmaps.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "672bba3a4b2e65ed95ebd0cf764bd628bd1da74f",
      "tree": "765147d9add5e256b79c7b0d5edbff4bd0fe55d3",
      "parents": [
        "26a7bd030254c462a9e771f6edc54cb972044034"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: update comments\n\nUpdate comments throughout SLUB to reflect the new developments.  Fix up\nvarious awkward sentences.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26a7bd030254c462a9e771f6edc54cb972044034",
      "tree": "dbbcd0c5dccc8b1ecd71e342e2c26aa7b61be143",
      "parents": [
        "1f99a283dc13b167b93b2e453a30782955f165c2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: get rid of finish_bootstrap\n\nIts only purpose was to bring some sort of symmetry to sysfs usage when\ndealing with bootstrapping per cpu flushing.  Since we do not time out slabs\nanymore we have no need to run finish_bootstrap even without sysfs.  Fold it\nback into slab_sysfs_init and drop the initcall for the !SYFS case.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f99a283dc13b167b93b2e453a30782955f165c2",
      "tree": "85960206f9b5757680b768d6900c60928f1c2117",
      "parents": [
        "abcd08a6f564171ffa05bc77d1c2ba4cfa949653"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:45 2007 -0700"
      },
      "message": "SLUB: clean up krealloc\n\nWe really do not need all this gaga there.\n\nksize gives us all the information we need to figure out if the object can\ncope with the new size.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abcd08a6f564171ffa05bc77d1c2ba4cfa949653",
      "tree": "10760411326e881329851707e93aebd8c6782737",
      "parents": [
        "a87615b8f9e2349f6d3770af3d72fd6a41ab4239"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:44 2007 -0700"
      },
      "message": "SLUB: use check_valid_pointer in kmem_ptr_validate\n\nWe needlessly duplicate code. Also make check_valid_pointer inline.\n\nSigned-off-by: Christoph LAemter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be7b3fbcef34452127bed93632b8e788f685d70e",
      "tree": "a2d1e80103982fd606390d4bb15131d1dd544b45",
      "parents": [
        "65c02d4cfbbd10188ded3d6577922ab034d943ba"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:44 2007 -0700"
      },
      "message": "SLUB: after object padding only needed for Redzoning\n\nIf no redzoning is selected then we do not need padding before the next\nobject.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "65c02d4cfbbd10188ded3d6577922ab034d943ba",
      "tree": "c7b5165775951bb8e78f4e483b69c969042e8208",
      "parents": [
        "97416ce82e20a9511ec369822098a8d20998398a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:32:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:44 2007 -0700"
      },
      "message": "SLUB: add support for dynamic cacheline size determination\n\nSLUB currently assumes that the cacheline size is static.  However, i386 f.e.\nsupports dynamic cache line size determination.\n\nUse cache_line_size() instead of L1_CACHE_BYTES in the allocator.\n\nThat also explains the purpose of SLAB_HWCACHE_ALIGN.  So we will need to keep\nthat one around to allow dynamic aligning of objects depending on boot\ndetermination of the cache line size.\n\n[akpm@linux-foundation.org: need to define it before we use it]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f9008ef38d5a6305d94bbdd8f20d68fc75c63b6",
      "tree": "046dd1a4f68593fa2be9d2e157111f70b448525a",
      "parents": [
        "5cefcab3db2b13093480f2a42bf081574dd72d3d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:31:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:31:58 2007 -0700"
      },
      "message": "Fix up SLUB compile\n\nThe newly merged SLUB allocator patches had been generated before the\nremoval of \"struct subsystem\", and ended up applying fine, but wouldn\u0027t\nbuild based on the current tree as a result.\n\nFix up that merge error - not that SLUB is likely really ready for\nshowtime yet, but at least I can fix the trivial stuff.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfce66047f1893cb7d3abb0d53e65cbbd8d605f0",
      "tree": "b6e533a6b3deee686c42abf6c9117154548c0aaf",
      "parents": [
        "4f104934591ed98534b3a4c3d17d972b790e9c42"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "Slab allocators: remove useless __GFP_NO_GROW flag\n\nThere is no user remaining and I have never seen any use of that flag.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f104934591ed98534b3a4c3d17d972b790e9c42",
      "tree": "149d7ba5ab6b9b7f8a82eb3ce41cb36f28bccaf9",
      "parents": [
        "50953fe9e00ebbeffa032a565ab2f08312d51a87"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_CTOR_ATOMIC\n\nSLAB_CTOR atomic is never used which is no surprise since I cannot imagine\nthat one would want to do something serious in a constructor or destructor.\n In particular given that the slab allocators run with interrupts disabled.\n Actions in constructors and destructors are by their nature very limited\nand usually do not go beyond initializing variables and list operations.\n\n(The i386 pgd ctor and dtors do take a spinlock in constructor and\ndestructor.....  I think that is the furthest we go at this point.)\n\nThere is no flag passed to the destructor so removing SLAB_CTOR_ATOMIC also\nestablishes a certain symmetry.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50953fe9e00ebbeffa032a565ab2f08312d51a87",
      "tree": "9f95f56f0b51600959a76cd88ce17f6e9c7a98a3",
      "parents": [
        "4b1d89290b62bb2db476c94c82cf7442aab440c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_DEBUG_INITIAL flag\n\nI have never seen a use of SLAB_DEBUG_INITIAL.  It is only supported by\nSLAB.\n\nI think its purpose was to have a callback after an object has been freed\nto verify that the state is the constructor state again?  The callback is\nperformed before each freeing of an object.\n\nI would think that it is much easier to check the object state manually\nbefore the free.  That also places the check near the code object\nmanipulation of the object.\n\nAlso the SLAB_DEBUG_INITIAL callback is only performed if the kernel was\ncompiled with SLAB debugging on.  If there would be code in a constructor\nhandling SLAB_DEBUG_INITIAL then it would have to be conditional on\nSLAB_DEBUG otherwise it would just be dead code.  But there is no such code\nin the kernel.  I think SLUB_DEBUG_INITIAL is too problematic to make real\nuse of, difficult to understand and there are easier ways to accomplish the\nsame effect (i.e.  add debug code before kfree).\n\nThere is a related flag SLAB_CTOR_VERIFY that is frequently checked to be\nclear in fs inode caches.  Remove the pointless checks (they would even be\npointless without removeal of SLAB_DEBUG_INITIAL) from the fs constructors.\n\nThis is the last slab flag that SLUB did not support.  Remove the check for\nunimplemented flags from SLUB.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5af60839909b8e3b28ca7cd7912fa0b23475617f",
      "tree": "774b068673ad7bb6fc67d29339c9a07bf12a7789",
      "parents": [
        "96018fdacbfcaf6a0694d066b525f67c24025688"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "slab allocators: Remove obsolete SLAB_MUST_HWCACHE_ALIGN\n\nThis patch was recently posted to lkml and acked by Pekka.\n\nThe flag SLAB_MUST_HWCACHE_ALIGN is\n\n1. Never checked by SLAB at all.\n\n2. A duplicate of SLAB_HWCACHE_ALIGN for SLUB\n\n3. Fulfills the role of SLAB_HWCACHE_ALIGN for SLOB.\n\nThe only remaining use is in sparc64 and ppc64 and their use there\nreflects some earlier role that the slab flag once may have had. If\nits specified then SLAB_HWCACHE_ALIGN is also specified.\n\nThe flag is confusing, inconsistent and has no purpose.\n\nRemove it.\n\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70d71228af9360cc4a0198ecd6351a1b34fa6d01",
      "tree": "ad85cc79ad684062cbb3cf2e56fafa7d3df65ee1",
      "parents": [
        "2086d26a05a4b5bda4a2f677bc143933bbdfa9f8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: remove object activities out of checking functions\n\nMake sure that the check function really only check things and do not perform\nactivities.  Extract the tracing and object seeding out of the two check\nfunctions and place them into slab_alloc and slab_free\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2086d26a05a4b5bda4a2f677bc143933bbdfa9f8",
      "tree": "7c07b8319f80119066d9dbd0c1a0910c94a1259c",
      "parents": [
        "88a420e4e21c1ff6592a668cf4e8af42eff30bad"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "SLUB: Free slabs and sort partial slab lists in kmem_cache_shrink\n\nAt kmem_cache_shrink check if we have any empty slabs on the partial\nif so then remove them.\n\nAlso--as an anti-fragmentation measure--sort the partial slabs so that\nthe most fully allocated ones come first and the least allocated last.\n\nThe next allocations may fill up the nearly full slabs. Having the\nleast allocated slabs last gives them the maximum chance that their\nremaining objects may be freed. Thus we can hopefully minimize the\npartial slabs.\n\nI think this is the best one can do in terms antifragmentation\nmeasures. Real defragmentation (meaning moving objects out of slabs with\nthe least free objects to those that are almost full) can be implemted\nby reverse scanning through the list produced here but that would mean\nthat we need to provide a callback at slab cache creation that allows\nthe deletion or moving of an object. This will involve slab API\nchanges, so defer for now.\n\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88a420e4e21c1ff6592a668cf4e8af42eff30bad",
      "tree": "4e946ac5b187d13382d5e790404f7864b324b28e",
      "parents": [
        "e95eed571e85d7ad4cde73576296c615f305f59f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: add ability to list alloc / free callers per slab\n\nThis patch enables listing the callers who allocated or freed objects in a\ncache.\n\nFor example to list the allocators for kmalloc-128 do\n\ncat /sys/slab/kmalloc-128/alloc_calls\n      7 sn_io_slot_fixup+0x40/0x700\n      7 sn_io_slot_fixup+0x80/0x700\n      9 sn_bus_fixup+0xe0/0x380\n      6 param_sysfs_setup+0xf0/0x280\n    276 percpu_populate+0xf0/0x1a0\n     19 __register_chrdev_region+0x30/0x360\n      8 expand_files+0x2e0/0x6e0\n      1 sys_epoll_create+0x60/0x200\n      1 __mounts_open+0x140/0x2c0\n     65 kmem_alloc+0x110/0x280\n      3 alloc_disk_node+0xe0/0x200\n     33 as_get_io_context+0x90/0x280\n     74 kobject_kset_add_dir+0x40/0x140\n     12 pci_create_bus+0x2a0/0x5c0\n      1 acpi_ev_create_gpe_block+0x120/0x9e0\n     41 con_insert_unipair+0x100/0x1c0\n      1 uart_open+0x1c0/0xba0\n      1 dma_pool_create+0xe0/0x340\n      2 neigh_table_init_no_netlink+0x260/0x4c0\n      6 neigh_parms_alloc+0x30/0x200\n      1 netlink_kernel_create+0x130/0x320\n      5 fz_hash_alloc+0x50/0xe0\n      2 sn_common_hubdev_init+0xd0/0x6e0\n     28 kernel_param_sysfs_setup+0x30/0x180\n     72 process_zones+0x70/0x2e0\n\ncat /sys/slab/kmalloc-128/free_calls\n    558 \u003cnot-available\u003e\n      3 sn_io_slot_fixup+0x600/0x700\n     84 free_fdtable_rcu+0x120/0x260\n      2 seq_release+0x40/0x60\n      6 kmem_free+0x70/0xc0\n     24 free_as_io_context+0x20/0x200\n      1 acpi_get_object_info+0x3a0/0x3e0\n      1 acpi_add_single_object+0xcf0/0x1e40\n      2 con_release_unimap+0x80/0x140\n      1 free+0x20/0x40\n\nSLAB_STORE_USER must be enabled for a slab cache by either booting with\n\"slab_debug\" or enabling user tracking specifically for the slab of interest.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e95eed571e85d7ad4cde73576296c615f305f59f",
      "tree": "6ee56b3248ccd89db45f6bd8d532005fc61cc00b",
      "parents": [
        "53e15af03be4fdaaf20802d78f141487d7272985"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "SLUB: Add MIN_PARTIAL\n\nWe leave a mininum of partial slabs on nodes when we search for\npartial slabs on other node. Define a constant for that value.\n\nThen modify slub to keep MIN_PARTIAL slabs around.\n\nThis avoids bad situations where a function frees the last object\nin a slab (which results in the page being returned to the page\nallocator) only to then allocate one again (which requires getting\na page back from the page allocator if the partial list was empty).\nKeeping a couple of slabs on the partial list reduces overhead.\n\nEmpty slabs are added to the end of the partial list to insure that\npartially allocated slabs are consumed first (defragmentation).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53e15af03be4fdaaf20802d78f141487d7272985",
      "tree": "d930a2240a9bb28187387377a699b2bf57ea579a",
      "parents": [
        "643b113849d8faa68c9f01c3c9d929bfbffd50bd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: validation of slabs (metadata and guard zones)\n\nThis enables validation of slab.  Validation means that all objects are\nchecked to see if there are redzone violations, if padding has been\noverwritten or any pointers have been corrupted.  Also checks the consistency\nof slab counters.\n\nValidation enables the detection of metadata corruption without the kernel\nhaving to execute code that actually uses (allocs/frees) and object.  It\nallows one to make sure that the slab metainformation and the guard values\naround an object have not been compromised.\n\nA single slabcache can be checked by writing a 1 to the \"validate\" file.\n\ni.e.\n\necho 1 \u003e/sys/slab/kmalloc-128/validate\n\nor use the slabinfo tool to check all slabs\n\nslabinfo -v\n\nError messages will show up in the syslog.\n\nNote that validation can only reach slabs that are on a list.  This means that\nwe are usually restricted to partial slabs and active slabs unless\nSLAB_STORE_USER is active which will build a full slab list and allows\nvalidation of slabs that are fully in use.  Booting with \"slub_debug\" set will\nenable SLAB_STORE_USER and then full diagnostic are available.\n\nNote that we attempt to push cpu slabs back to the lists when we start the\ncheck.  If the cpu slab is reactivated before we get to it (another processor\ngrabs it before we get to it) then it cannot be checked.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "643b113849d8faa68c9f01c3c9d929bfbffd50bd",
      "tree": "d8eea2326ccee49892acaa970bf015ee69a31e8a",
      "parents": [
        "77c5e2d01af871f4bfbe08feefa3d5118cb1001b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: enable tracking of full slabs\n\nIf slab tracking is on then build a list of full slabs so that we can verify\nthe integrity of all slabs and are also able to built list of alloc/free\ncallers.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77c5e2d01af871f4bfbe08feefa3d5118cb1001b",
      "tree": "434fb61e1570f0d8bab479508181e034fc6b6c45",
      "parents": [
        "b49af68ff9fc5d6e0d96704a1843968b91cc73c6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "slub: fix object tracking\n\nObject tracking did not work the right way for several call chains. Fix this up\nby adding a new parameter to slub_alloc and slub_free that specifies the\ncaller address explicitly.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b49af68ff9fc5d6e0d96704a1843968b91cc73c6",
      "tree": "eb5e6d9425a9069cdfc45b09a1d0f61f1419d2c2",
      "parents": [
        "6d7779538f765963ced45a3fa4bed7ba8d2c277d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:54 2007 -0700"
      },
      "message": "Add virt_to_head_page and consolidate code in slab and slub\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d85f33855c303acfa87fa457157cef755b6087df",
      "tree": "f1184a1a24b432727b0399594ede37c7539db888",
      "parents": [
        "30520864839dc796fd314812e7036e754880b47d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Make page-\u003eprivate usable in compound pages\n\nIf we add a new flag so that we can distinguish between the first page and the\ntail pages then we can avoid to use page-\u003eprivate in the first page.\npage-\u003eprivate \u003d\u003d page for the first page, so there is no real information in\nthere.\n\nFreeing up page-\u003eprivate makes the use of compound pages more transparent.\nThey become more usable like real pages.  Right now we have to be careful f.e.\n if we are going beyond PAGE_SIZE allocations in the slab on i386 because we\ncan then no longer use the private field.  This is one of the issues that\ncause us not to support debugging for page size slabs in SLAB.\n\nHaving page-\u003eprivate available for SLUB would allow more meta information in\nthe page struct.  I can probably avoid the 16 bit ints that I have in there\nright now.\n\nAlso if page-\u003eprivate is available then a compound page may be equipped with\nbuffer heads.  This may free up the way for filesystems to support larger\nblocks than page size.\n\nWe add PageTail as an alias of PageReclaim.  Compound pages cannot currently\nbe reclaimed.  Because of the alias one needs to check PageCompound first.\n\nThe RFC for the this approach was discussed at\nhttp://marc.info/?t\u003d117574302800001\u0026r\u003d1\u0026w\u003d2\n\n[nacc@us.ibm.com: fix hugetlbfs]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "614410d5892af5f86d0ec14e28f9f6d5f4ac9e9b",
      "tree": "616c8437f45590a0ca6e2efdc2a5dfb61799d0ec",
      "parents": [
        "47bfdc0d5a18a4b760ffb6a332932aaa5c0859e0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB: allocate smallest object size if the user asks for 0 bytes\n\nMakes SLUB behave like SLAB in this area to avoid issues....\n\nThrow a stack dump to alert people.\n\nAt some point the behavior should be switched back.  NULL is no memory as\nfar as I can tell and if the use asked for 0 bytes then he need to get no\nmemory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47bfdc0d5a18a4b760ffb6a332932aaa5c0859e0",
      "tree": "721dc3790b5300bad8ca2c011e02f210d5a20bfc",
      "parents": [
        "81819f0fc8285a2a5a921c019e3e3d7b6169d225"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB: change default alignments\n\nStructures may contain u64 items on 32 bit platforms that are only able to\naddress 64 bit items on 64 bit boundaries.  Change the mininum alignment of\nslabs to conform to those expectations.\n\nARCH_KMALLOC_MINALIGN must be changed for good since a variety of structure\nare mixed in the general slabs.\n\nARCH_SLAB_MINALIGN is changed because currently there is no consistent\nspecification of object alignment.  We may have that in the future when the\nKMEM_CACHE and related macros are used to generate slabs.  These pass the\nalignment of the structure generated by the compiler to the slab.\n\nWith KMEM_CACHE etc we could align structures that do not contain 64\nbit values to 32 bit boundaries potentially saving some memory.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81819f0fc8285a2a5a921c019e3e3d7b6169d225",
      "tree": "47e3da44d3ef6c74ceae6c3771b191b46467bb48",
      "parents": [
        "543691a6cd70b606dd9bed5e77b120c5d9c5c506"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "SLUB core\n\nThis is a new slab allocator which was motivated by the complexity of the\nexisting code in mm/slab.c. It attempts to address a variety of concerns\nwith the existing implementation.\n\nA. Management of object queues\n\n   A particular concern was the complex management of the numerous object\n   queues in SLAB. SLUB has no such queues. Instead we dedicate a slab for\n   each allocating CPU and use objects from a slab directly instead of\n   queueing them up.\n\nB. Storage overhead of object queues\n\n   SLAB Object queues exist per node, per CPU. The alien cache queue even\n   has a queue array that contain a queue for each processor on each\n   node. For very large systems the number of queues and the number of\n   objects that may be caught in those queues grows exponentially. On our\n   systems with 1k nodes / processors we have several gigabytes just tied up\n   for storing references to objects for those queues  This does not include\n   the objects that could be on those queues. One fears that the whole\n   memory of the machine could one day be consumed by those queues.\n\nC. SLAB meta data overhead\n\n   SLAB has overhead at the beginning of each slab. This means that data\n   cannot be naturally aligned at the beginning of a slab block. SLUB keeps\n   all meta data in the corresponding page_struct. Objects can be naturally\n   aligned in the slab. F.e. a 128 byte object will be aligned at 128 byte\n   boundaries and can fit tightly into a 4k page with no bytes left over.\n   SLAB cannot do this.\n\nD. SLAB has a complex cache reaper\n\n   SLUB does not need a cache reaper for UP systems. On SMP systems\n   the per CPU slab may be pushed back into partial list but that\n   operation is simple and does not require an iteration over a list\n   of objects. SLAB expires per CPU, shared and alien object queues\n   during cache reaping which may cause strange hold offs.\n\nE. SLAB has complex NUMA policy layer support\n\n   SLUB pushes NUMA policy handling into the page allocator. This means that\n   allocation is coarser (SLUB does interleave on a page level) but that\n   situation was also present before 2.6.13. SLABs application of\n   policies to individual slab objects allocated in SLAB is\n   certainly a performance concern due to the frequent references to\n   memory policies which may lead a sequence of objects to come from\n   one node after another. SLUB will get a slab full of objects\n   from one node and then will switch to the next.\n\nF. Reduction of the size of partial slab lists\n\n   SLAB has per node partial lists. This means that over time a large\n   number of partial slabs may accumulate on those lists. These can\n   only be reused if allocator occur on specific nodes. SLUB has a global\n   pool of partial slabs and will consume slabs from that pool to\n   decrease fragmentation.\n\nG. Tunables\n\n   SLAB has sophisticated tuning abilities for each slab cache. One can\n   manipulate the queue sizes in detail. However, filling the queues still\n   requires the uses of the spin lock to check out slabs. SLUB has a global\n   parameter (min_slab_order) for tuning. Increasing the minimum slab\n   order can decrease the locking overhead. The bigger the slab order the\n   less motions of pages between per CPU and partial lists occur and the\n   better SLUB will be scaling.\n\nG. Slab merging\n\n   We often have slab caches with similar parameters. SLUB detects those\n   on boot up and merges them into the corresponding general caches. This\n   leads to more effective memory use. About 50% of all caches can\n   be eliminated through slab merging. This will also decrease\n   slab fragmentation because partial allocated slabs can be filled\n   up again. Slab merging can be switched off by specifying\n   slub_nomerge on boot up.\n\n   Note that merging can expose heretofore unknown bugs in the kernel\n   because corrupted objects may now be placed differently and corrupt\n   differing neighboring objects. Enable sanity checks to find those.\n\nH. Diagnostics\n\n   The current slab diagnostics are difficult to use and require a\n   recompilation of the kernel. SLUB contains debugging code that\n   is always available (but is kept out of the hot code paths).\n   SLUB diagnostics can be enabled via the \"slab_debug\" option.\n   Parameters can be specified to select a single or a group of\n   slab caches for diagnostics. This means that the system is running\n   with the usual performance and it is much more likely that\n   race conditions can be reproduced.\n\nI. Resiliency\n\n   If basic sanity checks are on then SLUB is capable of detecting\n   common error conditions and recover as best as possible to allow the\n   system to continue.\n\nJ. Tracing\n\n   Tracing can be enabled via the slab_debug\u003dT,\u003cslabcache\u003e option\n   during boot. SLUB will then protocol all actions on that slabcache\n   and dump the object contents on free.\n\nK. On demand DMA cache creation.\n\n   Generally DMA caches are not needed. If a kmalloc is used with\n   __GFP_DMA then just create this single slabcache that is needed.\n   For systems that have no ZONE_DMA requirement the support is\n   completely eliminated.\n\nL. Performance increase\n\n   Some benchmarks have shown speed improvements on kernbench in the\n   range of 5-10%. The locking overhead of slub is based on the\n   underlying base allocation size. If we can reliably allocate\n   larger order pages then it is possible to increase slub\n   performance much further. The anti-fragmentation patches may\n   enable further performance increases.\n\nTested on:\ni386 UP + SMP, x86_64 UP + SMP + NUMA emulation, IA64 NUMA + Simulator\n\nSLUB Boot options\n\nslub_nomerge\t\tDisable merging of slabs\nslub_min_order\u003dx\tRequire a minimum order for slab caches. This\n\t\t\tincreases the managed chunk size and therefore\n\t\t\treduces meta data and locking overhead.\nslub_min_objects\u003dx\tMininum objects per slab. Default is 8.\nslub_max_order\u003dx\tAvoid generating slabs larger than order specified.\nslub_debug\t\tEnable all diagnostics for all caches\nslub_debug\u003d\u003coptions\u003e\tEnable selective options for all caches\nslub_debug\u003d\u003co\u003e,\u003ccache\u003e\tEnable selective options for a certain set of\n\t\t\tcaches\n\nAvailable Debug options\nF\t\tDouble Free checking, sanity and resiliency\nR\t\tRed zoning\nP\t\tObject / padding poisoning\nU\t\tTrack last free / alloc\nT\t\tTrace all allocs / frees (only use for individual slabs).\n\nTo use SLUB: Apply this patch and then select SLUB as the default slab\nallocator.\n\n[hugh@veritas.com: fix an oops-causing locking error]\n[akpm@linux-foundation.org: various stupid cleanups and small fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
