)]}'
{
  "log": [
    {
      "commit": "02b71b70129aaaa38f280af2aa5a767a4dec9107",
      "tree": "a964cdde0a75171fe82bf700cd07375f035169bb",
      "parents": [
        "bc45eb8950b8c14487385cfd2bda1613ca8d9703"
      ],
      "author": {
        "name": "Salman Qazi",
        "email": "sqazi@google.com",
        "time": "Thu Sep 11 12:25:41 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Sep 15 09:49:05 2008 +0300"
      },
      "message": "slub: fixed uninitialized counter in struct kmem_cache_node\n\nInitialized total objects atomic for the node in init_kmem_cache_node.  The\nuninitialized value was ruining the stats in /proc/slabinfo.\n\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Salman Qazi \u003csqazi@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "e2cb96b7ecba46888cf00252ffdb8ef1e92c4258",
      "tree": "98bb362ab0fc0eab37b206a3b8330354406bb357",
      "parents": [
        "30a2f3c60a84092c8084dfe788b710f8d0768cd4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Tue Aug 19 08:51:22 2008 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Aug 20 21:50:21 2008 +0300"
      },
      "message": "slub: Disable NUMA remote node defragmentation by default\n\nSwitch remote node defragmentation off by default. The current settings can\ncause excessive node local allocations with hackbench:\n\n  SLAB:\n\n    % cat /proc/meminfo\n    MemTotal:        7701760 kB\n    MemFree:         5940096 kB\n    Slab:             123840 kB\n\n  SLUB:\n\n    % cat /proc/meminfo\n    MemTotal:        7701376 kB\n    MemFree:         4740928 kB\n    Slab:            1591680 kB\n\n[Note: this feature is not related to slab defragmentation.]\n\nYou can find the original discussion here:\n\n  http://lkml.org/lkml/2008/8/4/308\n\nReported-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "5595cffc8248e4672c5803547445e85e4053c8fc",
      "tree": "39aa137d63777fd345f5946f7b1662a6ed78dfda",
      "parents": [
        "231367fd9bccbb36309ab5bf5012e11a84231031"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Aug 05 09:28:47 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Aug 05 09:28:47 2008 +0300"
      },
      "message": "SLUB: dynamic per-cache MIN_PARTIAL\n\nThis patch changes the static MIN_PARTIAL to a dynamic per-cache -\u003emin_partial\nvalue that is calculated from object size. The bigger the object size, the more\npages we keep on the partial list.\n\nI tested SLAB, SLUB, and SLUB with this patch on Jens Axboe\u0027s \u0027netio\u0027 example\nscript of the fio benchmarking tool. The script stresses the networking\nsubsystem which should also give a fairly good beating of kmalloc() et al.\n\nTo run the test yourself, first clone the fio repository:\n\n  git clone git://git.kernel.dk/fio.git\n\nand then run the following command n times on your machine:\n\n  time ./fio examples/netio\n\nThe results on my 2-way 64-bit x86 machine are as follows:\n\n  [ the minimum, maximum, and average are captured from 50 individual runs ]\n\n                 real time (seconds)\n                 min      max      avg      sd\n  SLAB           22.76    23.38    22.98    0.17\n  SLUB           22.80    25.78    23.46    0.72\n  SLUB (dynamic) 22.74    23.54    23.00    0.20\n\n                 sys time (seconds)\n                 min      max      avg      sd\n  SLAB           6.90     8.28     7.70     0.28\n  SLUB           7.42     16.95    8.89     2.28\n  SLUB (dynamic) 7.17     8.64     7.73     0.29\n\n                 user time (seconds)\n                 min      max      avg      sd\n  SLAB           36.89    38.11    37.50    0.29\n  SLUB           30.85    37.99    37.06    1.67\n  SLUB (dynamic) 36.75    38.07    37.59    0.32\n\nAs you can see from the above numbers, this patch brings SLUB to the same level\nas SLAB for this particular workload fixing a ~2% regression. I\u0027d expect this\nchange to help similar workloads that allocate a lot of objects that are close\nto the size of a page.\n\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "231367fd9bccbb36309ab5bf5012e11a84231031",
      "tree": "31c9282fd2c4f17ec8f7d22bb975ba84e081a22a",
      "parents": [
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 20:21:16 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Jul 29 23:44:26 2008 +0300"
      },
      "message": "mm: unexport ksize\n\nThis patch removes the obsolete and no longer used exports of ksize.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a38082d21cbc5ec961da7dda195e98a9a064dcf",
      "tree": "e68f8c612c9f4be60d9e8b11a654e10416470155",
      "parents": [
        "0cad47cf13bc2e9142d3a11d9f50523797d0d4ea"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Jul 23 21:27:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:15 2008 -0700"
      },
      "message": "slub: record page flag overlays explicitly\n\nSLUB reuses two page bits for internal purposes, it overlays PG_active and\nPG_error.  This is hidden away in slub.c.  Document these overlays\nexplicitly in the main page-flags enum along with all the others.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nTested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ebd652b35e988c0be3390e49b39cc064ba1cfce",
      "tree": "320df368cab858929101325f9e3b956e9cd3c52c",
      "parents": [
        "41ab8592ca35a20580665cae18c172816236b21e"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Jul 19 14:17:22 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Jul 19 14:17:22 2008 +0300"
      },
      "message": "slub: dump more data on slab corruption\n\nThe limit of 128 bytes is too small when debugging slab corruption of the skb\ncache, for example. So increase the limit to PAGE_SIZE to make debugging\ncorruptions easier.\n\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "41ab8592ca35a20580665cae18c172816236b21e",
      "tree": "eca24fc6861ef6a3228089bd72d2e0a723995817",
      "parents": [
        "a3cf859321486f69506326146ab3e2fd15c05c3f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Jul 16 21:29:02 2008 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Jul 16 23:55:00 2008 +0300"
      },
      "message": "SLUB: simplify re on_each_cpu()\n\non_each_cpu() expands to function call on UP, too.\n\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "1a781a777b2f6ac46523fe92396215762ced624d",
      "tree": "4f34bb4aade85c0eb364b53d664ec7f6ab959006",
      "parents": [
        "b9d2252c1e44fa83a4e65fdc9eb93db6297c55af",
        "42a2f217a5e324ed5f2373ab1b7a0a15187c4d6c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 15 21:55:59 2008 +0200"
      },
      "message": "Merge branch \u0027generic-ipi\u0027 into generic-ipi-for-linus\n\nConflicts:\n\n\tarch/powerpc/Kconfig\n\tarch/s390/kernel/time.c\n\tarch/x86/kernel/apic_32.c\n\tarch/x86/kernel/cpu/perfctr-watchdog.c\n\tarch/x86/kernel/i8259_64.c\n\tarch/x86/kernel/ldt.c\n\tarch/x86/kernel/nmi_64.c\n\tarch/x86/kernel/smpboot.c\n\tarch/x86/xen/smp.c\n\tinclude/asm-x86/hw_irq_32.h\n\tinclude/asm-x86/hw_irq_64.h\n\tinclude/asm-x86/mach-default/irq_vectors.h\n\tinclude/asm-x86/mach-voyager/irq_vectors.h\n\tinclude/asm-x86/smp.h\n\tkernel/Makefile\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "88e4ccf294ca62c2da998012a83533ce150c8dce",
      "tree": "bfb5e1a3bc4b5f0459cdd2d7ebe6ace2593f4e9d",
      "parents": [
        "0937502af7c9b648ed4e884ccb7f504b01a005a1"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jun 23 02:58:37 2008 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Jul 15 20:36:01 2008 +0300"
      },
      "message": "slub: current is always valid\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0937502af7c9b648ed4e884ccb7f504b01a005a1",
      "tree": "25ed40b554b3c5e5e8a34351b38ccffe336a1b40",
      "parents": [
        "4d3702b62e004172f44870763cf56793d8de0cbf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 28 10:32:22 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Jul 15 20:36:01 2008 +0300"
      },
      "message": "slub: Add check for kfree() of non slab objects.\n\nWe can detect kfree()s on non slab objects by checking for PageCompound().\nWorks in the same way as for ksize. This helped me catch an invalid\nkfree().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "7daf705f362e349983e92037a198b8821db198af",
      "tree": "cf51f77b975718852dc5819dfe90c02a1c1a6bd5",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 12:12:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 12:12:53 2008 -0700"
      },
      "message": "Start using the new \u0027%pS\u0027 infrastructure to print symbols\n\nThis simplifies the code significantly, and was the whole point of the\nexercise.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bdb21928512a860a60e6a24a849dc5b63cbaf96a",
      "tree": "440a0e418d9eeb8480b26b1e7e47bbff01b4c3de",
      "parents": [
        "96a8e13ed44e380fc2bb6c711d74d5ba698c00b2"
      ],
      "author": {
        "name": "Dmitry Adamushko",
        "email": "dmitry.adamushko@gmail.com",
        "time": "Thu Jul 10 22:21:58 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 10 15:18:50 2008 -0700"
      },
      "message": "slub: Fix use-after-preempt of per-CPU data structure\n\nVegard Nossum reported a crash in kmem_cache_alloc():\n\n\tBUG: unable to handle kernel paging request at da87d000\n\tIP: [\u003cc01991c7\u003e] kmem_cache_alloc+0xc7/0xe0\n\t*pde \u003d 28180163 *pte \u003d 1a87d160\n\tOops: 0002 [#1] PREEMPT SMP DEBUG_PAGEALLOC\n\tPid: 3850, comm: grep Not tainted (2.6.26-rc9-00059-gb190333 #5)\n\tEIP: 0060:[\u003cc01991c7\u003e] EFLAGS: 00210203 CPU: 0\n\tEIP is at kmem_cache_alloc+0xc7/0xe0\n\tEAX: 00000000 EBX: da87c100 ECX: 1adad71a EDX: 6b6b6b6b\n\tESI: 00200282 EDI: da87d000 EBP: f60bfe74 ESP: f60bfe54\n\tDS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\n\nand analyzed it:\n\n  \"The register %ecx looks innocent but is very important here. The disassembly:\n\n       mov    %edx,%ecx\n       shr    $0x2,%ecx\n       rep stos %eax,%es:(%edi) \u003c-- the fault\n\n   So %ecx has been loaded from %edx... which is 0x6b6b6b6b/POISON_FREE.\n   (0x6b6b6b6b \u003e\u003e 2 \u003d\u003d 0x1adadada.)\n\n   %ecx is the counter for the memset, from here:\n\n       memset(object, 0, c-\u003eobjsize);\n\n  i.e. %ecx was loaded from c-\u003eobjsize, so \"c\" must have been freed.\n  Where did \"c\" come from? Uh-oh...\n\n       c \u003d get_cpu_slab(s, smp_processor_id());\n\n  This looks like it has very much to do with CPU hotplug/unplug. Is\n  there a race between SLUB/hotplug since the CPU slab is used after it\n  has been freed?\"\n\nGood analysis.\n\nYeah, it\u0027s possible that a caller of kmem_cache_alloc() -\u003e slab_alloc()\ncan be migrated on another CPU right after local_irq_restore() and\nbefore memset().  The inital cpu can become offline in the mean time (or\na migration is a consequence of the CPU going offline) so its\n\u0027kmem_cache_cpu\u0027 structure gets freed ( slab_cpuup_callback).\n\nAt some point of time the caller continues on another CPU having an\nobsolete pointer...\n\nSigned-off-by: Dmitry Adamushko \u003cdmitry.adamushko@gmail.com\u003e\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cde53535991fbb5c34a1566f25955297c1487b8d",
      "tree": "4f87e67b52c8761cfc421a619379263733b91159",
      "parents": [
        "a926c063738f31c8c8b5c2b883812a40e7868072"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jul 04 09:59:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 10:40:04 2008 -0700"
      },
      "message": "Christoph has moved\n\nRemove all clameter@sgi.com addresses from the kernel tree since they will\nbecome invalid on June 27th.  Change my maintainer email address for the\nslab allocators to cl@linux-foundation.org (which will be the new email\naddress for the future).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41d54d3bf83f62d3ff5948cb788fe6007e66a0d0",
      "tree": "7aef950af184b3f9b406127415be1f0b52bca8c7",
      "parents": [
        "481c5346d0981940ee63037eb53e4e37b0735c10"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Thu Jul 03 09:14:26 2008 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Jul 03 19:01:55 2008 +0300"
      },
      "message": "slub: Do not use 192 byte sized cache if minimum alignment is 128 byte\n\nThe 192 byte cache is not necessary if we have a basic alignment of 128\nbyte. If it would be used then the 192 would be aligned to the next 128 byte\nboundary which would result in another 256 byte cache. Two 256 kmalloc caches\ncause sysfs to complain about a duplicate entry.\n\nMIPS needs 128 byte aligned kmalloc caches and spits out warnings on boot without\nthis patch.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "15c8b6c1aaaf1c4edd67e2f02e4d8e1bd1a51c0d",
      "tree": "3658f893c2f89ea0be4c6cc08aa11fa54476d0f4",
      "parents": [
        "8691e5a8f691cc2a4fda0651e8d307aaba0e7d68"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 09 09:39:44 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jun 26 11:24:38 2008 +0200"
      },
      "message": "on_each_cpu(): kill unused \u0027retry\u0027 parameter\n\nIt\u0027s not even passed on to smp_call_function() anymore, since that\nwas removed. So kill it.\n\nAcked-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "76994412f8e824e79a593d6777ec327d85f942b2",
      "tree": "9acd5883a43daf1bf21ab23608915c1181fd2008",
      "parents": [
        "239f49c0800778c863585a103805c58afbad6748"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu May 22 19:22:25 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu May 22 19:52:18 2008 +0300"
      },
      "message": "slub: ksize() abuse checks\n\nAdd a WARN_ON for pages that don\u0027t have PageSlab nor PageCompound set to catch\nthe worst abusers of ksize() in the kernel.\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "4ea33e2dc2dab10960877e1649ee527c033f42c0",
      "tree": "5e66cd116868336d7a0fa3e6da38ebbf3e8d5a32",
      "parents": [
        "ba719baeabbff5476eeb91c223e6921ba29e1490"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Tue May 06 20:42:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:46:56 2008 -0700"
      },
      "message": "slub: fix atomic usage in any_slab_objects()\n\nany_slab_objects() does an atomic_read on an atomic_long_t, this\nfixes it to use atomic_long_read instead.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: 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": "f6acb63508700b5f8cd817082b62c96ba907775e",
      "tree": "0fc0cdd4660fdf186f3becc1b80d743f8d3edbea",
      "parents": [
        "f715e6f15ee167026581a8a2e09b2ed644b974aa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 29 16:16:06 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri May 02 00:27:13 2008 +0300"
      },
      "message": "slub: #ifdef simplification\n\nIf we make SLUB_DEBUG depend on SYSFS then we can simplify some\n#ifdefs and avoid others.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0121c619d03820d965745e56f80f6eb5994533fe",
      "tree": "75ecdc5dee9c3a6bb64ee095f51cc831be2cd475",
      "parents": [
        "886c35fbcf6fb2eee15687efc2d64d99b6ad9a4a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 29 16:11:12 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri May 02 00:26:31 2008 +0300"
      },
      "message": "slub: Whitespace cleanup and use of strict_strtoul\n\nFix some issues with wrapping and use strict_strtoul to make parameter\npassing from sysfs safer.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "f8bd2258e2d520dff28c855658bd24bdafb5102d",
      "tree": "d76db1dc858cb316bc7d5b8473f690a753fd2c93",
      "parents": [
        "6f6d6a1a6a1336431a6cba60ace9e97c3a496a19"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 01 04:34:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:58 2008 -0700"
      },
      "message": "remove div_long_long_rem\n\nx86 is the only arch right now, which provides an optimized for\ndiv_long_long_rem and it has the downside that one has to be very careful that\nthe divide doesn\u0027t overflow.\n\nThe API is a little akward, as the arguments for the unsigned divide are\nsigned.  The signed version also doesn\u0027t handle a negative divisor and\nproduces worse code on 64bit archs.\n\nThere is little incentive to keep this API alive, so this converts the few\nusers to the new API.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.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": "3ac7fe5a4aab409bd5674d0b070bce97f9d20872",
      "tree": "5e12e8864bb8737695e4eb9c63970602d5f69e73",
      "parents": [
        "30327acf7846c5eb97c8e31c78317a2918d3e515"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "infrastructure to debug (dynamic) objects\n\nWe can see an ever repeating problem pattern with objects of any kind in the\nkernel:\n\n1) freeing of active objects\n2) reinitialization of active objects\n\nBoth problems can be hard to debug because the crash happens at a point where\nwe have no chance to decode the root cause anymore.  One problem spot are\nkernel timers, where the detection of the problem often happens in interrupt\ncontext and usually causes the machine to panic.\n\nWhile working on a timer related bug report I had to hack specialized code\ninto the timer subsystem to get a reasonable hint for the root cause.  This\ndebug hack was fine for temporary use, but far from a mergeable solution due\nto the intrusiveness into the timer code.\n\nThe code further lacked the ability to detect and report the root cause\ninstantly and keep the system operational.\n\nKeeping the system operational is important to get hold of the debug\ninformation without special debugging aids like serial consoles and special\nknowledge of the bug reporter.\n\nThe problems described above are not restricted to timers, but timers tend to\nexpose it usually in a full system crash.  Other objects are less explosive,\nbut the symptoms caused by such mistakes can be even harder to debug.\n\nInstead of creating specialized debugging code for the timer subsystem a\ngeneric infrastructure is created which allows developers to verify their code\nand provides an easy to enable debug facility for users in case of trouble.\n\nThe debugobjects core code keeps track of operations on static and dynamic\nobjects by inserting them into a hashed list and sanity checking them on\nobject operations and provides additional checks whenever kernel memory is\nfreed.\n\nThe tracked object operations are:\n- initializing an object\n- adding an object to a subsystem list\n- deleting an object from a subsystem list\n\nEach operation is sanity checked before the operation is executed and the\nsubsystem specific code can provide a fixup function which allows to prevent\nthe damage of the operation.  When the sanity check triggers a warning message\nand a stack trace is printed.\n\nThe list of operations can be extended if the need arises.  For now it\u0027s\nlimited to the requirements of the first user (timers).\n\nThe core code enqueues the objects into hash buckets.  The hash index is\ngenerated from the address of the object to simplify the lookup for the check\non kfree/vfree.  Each bucket has it\u0027s own spinlock to avoid contention on a\nglobal lock.\n\nThe debug code can be compiled in without being active.  The runtime overhead\nis minimal and could be optimized by asm alternatives.  A kernel command line\noption enables the debugging code.\n\nThanks to Ingo Molnar for review, suggestions and cleanup patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c40ba4fd64f98e7a5cba8ffaedbd68642a85700",
      "tree": "8aba0ac7b89f436d73c1cf74058315aee8b6025f",
      "parents": [
        "4d89dc6ab2711258bfd12c72d753f3ad56b244e2"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Tue Apr 29 01:00:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:12 2008 -0700"
      },
      "message": "ipc: define the slab_memory_callback priority as a constant\n\nThis is a trivial patch that defines the priority of slab_memory_callback in\nthe callback chain as a constant.  This is to prepare for next patch in the\nseries.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e97e386b126c2d60b8da61ce1e4964b41b3d1514",
      "tree": "7e04b7f735004330777200c6742568fc130ff893",
      "parents": [
        "d9dedc13851f9cbd568fbc631a17b0be83404957",
        "c124f5b54f879e5870befcc076addbd5d614663f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 14:08:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 14:08:56 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: pack objects denser\n  slub: Calculate min_objects based on number of processors.\n  slub: Drop DEFAULT_MAX_ORDER / DEFAULT_MIN_OBJECTS\n  slub: Simplify any_slab_object checks\n  slub: Make the order configurable for each slab cache\n  slub: Drop fallback to page allocator method\n  slub: Fallback to minimal order during slab page allocation\n  slub: Update statistics handling for variable order slabs\n  slub: Add kmem_cache_order_objects struct\n  slub: for_each_object must be passed the number of objects in a slab\n  slub: Store max number of objects in the page struct.\n  slub: Dump list of objects not freed on kmem_cache_close()\n  slub: free_list() cleanup\n  slub: improve kmem_cache_destroy() error message\n  slob: fix bug - when slob allocates \"struct kmem_cache\", it does not force alignment.\n"
    },
    {
      "commit": "1b27d05b6e21249d2338be26dfcbe8f8d8ff8a5b",
      "tree": "c5413d5f64efed1aa84bfa0ab718f1e2a2f6f9cb",
      "parents": [
        "19fc3f0acde32636529969570055c7e2a744787c"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 28 02:12:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mm: move cache_line_size() to \u003clinux/cache.h\u003e\n\nNot all architectures define cache_line_size() so as suggested by Andrew move\nthe private implementations in mm/slab.c and mm/slob.c to \u003clinux/cache.h\u003e.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-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": "dd1a239f6f2d4d3eedd318583ec319aa145b324c",
      "tree": "aff4224c96b5e2e67588c3946858a724863eeaf9",
      "parents": [
        "54a6eb5c4765aa573a030ceeba2c14e3d2ea5706"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: have zonelist contains structs with both a zone pointer and zone_idx\n\nFiltering zonelists requires very frequent use of zone_idx().  This is costly\nas it involves a lookup of another structure and a substraction operation.  As\nthe zone_idx is often required, it should be quickly accessible.  The node idx\ncould also be stored here if it was found that accessing zone-\u003enode is\nsignificant which may be the case on workloads where nodemasks are heavily\nused.\n\nThis patch introduces a struct zoneref to store a zone pointer and a zone\nindex.  The zonelist then consists of an array of these struct zonerefs which\nare looked up as necessary.  Helpers are given for accessing the zone index as\nwell as the node index.\n\n[kamezawa.hiroyu@jp.fujitsu.com: Suggested struct zoneref instead of embedding information in pointers]\n[hugh@veritas.com: mm-have-zonelist: fix memcg ooms]\n[hugh@veritas.com: just return do_try_to_free_pages]\n[hugh@veritas.com: do_try_to_free_pages gfp_mask redundant]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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"
    },
    {
      "commit": "54a6eb5c4765aa573a030ceeba2c14e3d2ea5706",
      "tree": "547176a090beb787722a153cf2b8b942dc0e68db",
      "parents": [
        "18ea7e710d2452fa726814a406779188028cf1bf"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: use two zonelist that are filtered by GFP mask\n\nCurrently a node has two sets of zonelists, one for each zone type in the\nsystem and a second set for GFP_THISNODE allocations.  Based on the zones\nallowed by a gfp mask, one of these zonelists is selected.  All of these\nzonelists consume memory and occupy cache lines.\n\nThis patch replaces the multiple zonelists per-node with two zonelists.  The\nfirst contains all populated zones in the system, ordered by distance, for\nfallback allocations when the target/preferred node has no free pages.  The\nsecond contains all populated zones in the node suitable for GFP_THISNODE\nallocations.\n\nAn iterator macro is introduced called for_each_zone_zonelist() that interates\nthrough each zone allowed by the GFP flags in the selected zonelist.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e88460da6ab7bb6a7ef83675412ed5b6315d741",
      "tree": "1feb4de2362e4998a0deeab66af1efb9c7b8bb34",
      "parents": [
        "dac1d27bc8d5ca636d3014ecfdf94407031d1970"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Apr 28 02:12:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:18 2008 -0700"
      },
      "message": "mm: introduce node_zonelist() for accessing the zonelist for a GFP mask\n\nIntroduce a node_zonelist() helper function.  It is used to lookup the\nappropriate zonelist given a node and a GFP mask.  The patch on its own is a\ncleanup but it helps clarify parts of the two-zonelist-per-node patchset.  If\nnecessary, it can be merged with the next patch in this set without problems.\n\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c124f5b54f879e5870befcc076addbd5d614663f",
      "tree": "bedc4ce7ae68ea6de4c8aa6696b30801fedb15f6",
      "parents": [
        "9b2cd506e5f2117f94c28a0040bf5da058105316"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:13:29 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:40 2008 +0300"
      },
      "message": "slub: pack objects denser\n\nSince we now have more orders available use a denser packing.\nIncrease slab order if more than 1/16th of a slab would be wasted.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "9b2cd506e5f2117f94c28a0040bf5da058105316",
      "tree": "670857a0cea6723124301901cb5261811c64d701",
      "parents": [
        "114e9e89e668ec561c9b0f3dea7bcc8af7c29d21"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:41 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:40 2008 +0300"
      },
      "message": "slub: Calculate min_objects based on number of processors.\n\nThe mininum objects per slab is calculated based on the number of processors\nthat may come online.\n\nProcessors    min_objects\n---------------------------\n1             8\n2             12\n4             16\n8             20\n16            24\n32            28\n64            32\n1024          48\n4096          56\n\nThe higher the number of processors the large the order sizes used for various\nslab caches will become. This has been shown to address the performance issues\nin hackbench on 16p etc.\n\nThe calculation is only performed if slub_min_objects is zero (default). If one\nspecifies a slub_min_objects on boot then that setting is taken.\n\nAs suggested by Zhang Yanmin\u0027s performance tests on 16-core Tigerton, use the\nformula \u00274 * (fls(nr_cpu_ids) + 1)\u0027:\n\n  ./hackbench 100 process 2000:\n\n  1) 2.6.25-rc6slab: 23.5 seconds\n  2) 2.6.25-rc7SLUB+slub_min_objects\u003d20: 31 seconds\n  3) 2.6.25-rc7SLUB+slub_min_objects\u003d24: 23.5 seconds\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Zhang Yanmin \u003cyanmin.zhang@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "114e9e89e668ec561c9b0f3dea7bcc8af7c29d21",
      "tree": "12ee7fdc5e3068d7c5e9bf8d7e5f65f75673bf7b",
      "parents": [
        "31d33baf36bda7a2fea800648d87c9fe6155e7ca"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:41 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:39 2008 +0300"
      },
      "message": "slub: Drop DEFAULT_MAX_ORDER / DEFAULT_MIN_OBJECTS\n\nWe can now fallback to order 0 slabs. So set the slub_max_order to\nPAGE_CACHE_ORDER_COSTLY but keep the slub_min_objects at 4. This\nwill mostly preserve the orders used in 2.6.25. F.e. The 2k kmalloc slab\nwill use order 1 allocs and the 4k kmalloc slab order 2.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "31d33baf36bda7a2fea800648d87c9fe6155e7ca",
      "tree": "d84cdc6976f1417958a5b613541e216b9b6fbf16",
      "parents": [
        "06b285dc3d6194abe79ab9dcaaab703d6f75627c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:41 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:18 2008 +0300"
      },
      "message": "slub: Simplify any_slab_object checks\n\nSince we now have total_objects counter per node use that to\ncheck for the presence of any objects. The loop over all cpu slabs\nis not that useful since any cpu slab would require an object allocation\nfirst. So drop that.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "06b285dc3d6194abe79ab9dcaaab703d6f75627c",
      "tree": "4443514e99740054028f6eb035c796a74a540ab1",
      "parents": [
        "319d1e240683d37924ea8977c91730c3393fd453"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:41 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:18 2008 +0300"
      },
      "message": "slub: Make the order configurable for each slab cache\n\nMakes /sys/kernel/slab/\u003cslabname\u003e/order writable. The allocation\norder of a slab cache can then be changed dynamically during runtime.\nThis can be used to override the objects per slabs value establisheed\nwith the slub_min_objects setting that was manually specified or\ncalculated on bootup.\n\nThe changes of the slab order can occur while allocate_slab() runs.\nAllocate slab needs the order and the number of slab objects that\nare both changed by the change of order. Both are put into\na single word (struct kmem_cache_order_objects). They can then\nbe atomically updated and retrieved.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "319d1e240683d37924ea8977c91730c3393fd453",
      "tree": "8c59f466123d9628ee441b5d3b65564ff8b997e3",
      "parents": [
        "65c3376aaca96c66aa76014aaf430398964b68cb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:41 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:18 2008 +0300"
      },
      "message": "slub: Drop fallback to page allocator method\n\nThere is now a generic method of falling back to a slab page of minimal\norder. No need anymore for the fallback to kmalloc_large().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "65c3376aaca96c66aa76014aaf430398964b68cb",
      "tree": "9cd8d64a2cf211e76afbad0de5ec1484af6bfafb",
      "parents": [
        "205ab99dd103e3dd5b0964dad8a16dfe2db69b2e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:40 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:18 2008 +0300"
      },
      "message": "slub: Fallback to minimal order during slab page allocation\n\nIf any higher order allocation fails then fall back the smallest order\nnecessary to contain at least one object. This enables fallback for all\nallocations to order 0 pages. The fallback will waste more memory (objects\nwill not fit neatly) and the fallback slabs will be not as efficient as larger\nslabs since they contain less objects.\n\nNote that SLAB also depends on order 1 allocations for some slabs that waste\ntoo much memory if forced into PAGE_SIZE\u0027d page. SLUB now can now deal with\nfailing order 1 allocs which SLAB cannot do.\n\nAdd a new field min that will contain the objects for the smallest possible order\nfor a slab cache.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "205ab99dd103e3dd5b0964dad8a16dfe2db69b2e",
      "tree": "026a601ea25681cbf34f37360880f78a305a32f5",
      "parents": [
        "834f3d119234b35a1985a2449831d99356637937"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:40 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:17 2008 +0300"
      },
      "message": "slub: Update statistics handling for variable order slabs\n\nChange the statistics to consider that slabs of the same slabcache\ncan have different number of objects in them since they may be of\ndifferent order.\n\nProvide a new sysfs field\n\n\ttotal_objects\n\nwhich shows the total objects that the allocated slabs of a slabcache\ncould hold.\n\nAdd a max field that holds the largest slab order that was ever used\nfor a slab cache.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "834f3d119234b35a1985a2449831d99356637937",
      "tree": "3106946ecbe174935daa7ac2ff4c7806cc3004b8",
      "parents": [
        "224a88be40c45c0da5bdc45a8118004a37c60e8a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:31 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:17 2008 +0300"
      },
      "message": "slub: Add kmem_cache_order_objects struct\n\nPack the order and the number of objects into a single word.\nThis saves some memory in the kmem_cache_structure and more importantly\nallows us to fetch both values atomically.\n\nLater the slab orders become runtime configurable and we need to fetch these\ntwo items together in order to properly allocate a slab and initialize its\nobjects.\n\nFix the race by fetching the order and the number of objects in one word.\n\n[penberg@cs.helsinki.fi: fix memset() page order in new_slab()]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "224a88be40c45c0da5bdc45a8118004a37c60e8a",
      "tree": "9489ff039b8124a25af0e7f0f12c25c5911c6e1e",
      "parents": [
        "39b264641a0c3b5e0e742e2046b49e92d1f3be88"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:31 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:17 2008 +0300"
      },
      "message": "slub: for_each_object must be passed the number of objects in a slab\n\nPass the number of objects to the for_each_object macro. Most of these are\ndebug related.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "39b264641a0c3b5e0e742e2046b49e92d1f3be88",
      "tree": "1b7059ec5a0e498254f516c1be11b525d43af3c8",
      "parents": [
        "33b12c38134e95e5afa73214af6f49abd7b8418e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 19:11:30 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:28:16 2008 +0300"
      },
      "message": "slub: Store max number of objects in the page struct.\n\nSplit the inuse field up to be able to store the number of objects in this\npage in the page struct as well. Necessary if we want to have pages of\nvarious orders for a slab. Also avoids touching struct kmem_cache cachelines in\n__slab_alloc().\n\nUpdate diagnostic code to check the number of objects and make sure that\nthe number of objects always stays within the bounds of a 16 bit unsigned\ninteger.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "33b12c38134e95e5afa73214af6f49abd7b8418e",
      "tree": "05292917c91f05ddcf67580f4abd00a68020976a",
      "parents": [
        "599870b175987008b5f5c82a70b89f751e12822e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Apr 25 12:22:43 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:27:37 2008 +0300"
      },
      "message": "slub: Dump list of objects not freed on kmem_cache_close()\n\nDump a list of unfreed objects if a slab cache is closed but\nobjects still remain.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "599870b175987008b5f5c82a70b89f751e12822e",
      "tree": "ba01b18de3d30978bc0e7fb05af278710eec9d39",
      "parents": [
        "d629d819579327267884a12de21ef6d4b539db88"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Apr 23 12:36:52 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:26:18 2008 +0300"
      },
      "message": "slub: free_list() cleanup\n\nfree_list looked a bit screwy so here is an attempt to clean it up.\n\nfree_list is is only used for freeing partial lists. We do not need to return a\nparameter if we decrement nr_partial within the function which allows a\nsimplification of the whole thing.\n\nThe current version modifies nr_partial outside of the list_lock which is\ntechnically not correct. It was only ok because we should be the only user of\nthis slab cache at this point.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "d629d819579327267884a12de21ef6d4b539db88",
      "tree": "a3f7c40fbcaef54b0dce0affc8cadf101ace046d",
      "parents": [
        "0701a9e649bf0ffdac0a761d3c3d1041f5375d90"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Apr 23 22:31:08 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Apr 27 18:26:06 2008 +0300"
      },
      "message": "slub: improve kmem_cache_destroy() error message\n\nAs pointed out by Ingo, the SLUB warning of calling kmem_cache_destroy()\nwith cache that still has objects triggers in practice. So turn this\nWARN_ON() into a nice SLUB specific error message to avoid people\nconfusing it to a SLUB bug.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "3dc5063786b273f1aee545844f6bd4e9651ebffe",
      "tree": "18324d6e3b46a3c94aeec16d59f3f55e940625ea",
      "parents": [
        "79c1cb7a8ca8f08cd78f7c5eebc85bbe937f5ad4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Apr 23 12:28:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 23 12:47:48 2008 -0700"
      },
      "message": "slab_err: Pass parameters correctly to slab_bug\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f389ec63077521166f071e1e970aed36147fd45",
      "tree": "b1f2159c652c48160dde31e6740870ae0589dffb",
      "parents": [
        "49bd5221ce8fb55d12c04a3ffd375201c5bbfb7a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:53:02 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:53:02 2008 +0300"
      },
      "message": "slub: No need for per node slab counters if !SLUB_DEBUG\n\nThe per node counters are used mainly for showing data through the sysfs API.\nIf that API is not compiled in then there is no point in keeping track of this\ndata. Disable counters for the number of slabs and the number of total slabs\nif !SLUB_DEBUG. Incrementing the per node counters is also accessing a\npotentially contended cacheline so this could actually be a performance\nbenefit to embedded systems.\n\nSLABINFO support is also affected. It now must depends on SLUB_DEBUG (which\nis on by default).\n\nPatch also avoids a check for a NULL kmem_cache_node pointer in new_slab()\nif the system is not compiled with NUMA support.\n\n[penberg@cs.helsinki.fi: fix oops and move -\u003enr_slabs into CONFIG_SLUB_DEBUG]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "49bd5221ce8fb55d12c04a3ffd375201c5bbfb7a",
      "tree": "8569f6898326ae3ccbd24309dc0dd53707b11220",
      "parents": [
        "50ef37b96c11e76625067ae413dc54585ea22585"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:52:18 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:52:18 2008 +0300"
      },
      "message": "slub: Move map/flag clearing to __free_slab\n\n__free_slab does some diagnostics. The resetting of mapcount etc\nin discard_slab() can interfere with debug processing. So move\nthe reset immediately before the page is freed.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "50ef37b96c11e76625067ae413dc54585ea22585",
      "tree": "73db9f19fe8d4b0d153711b0002948e13a8d5681",
      "parents": [
        "5b06c853ad447636e31d105e95c48ae9abb6bfb5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:52:05 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:52:05 2008 +0300"
      },
      "message": "slub: Fixes to per cpu stat output in sysfs\n\nOnly output per cpu stats if the kernel is build for SMP.\n\nUse a capital \"C\" as a leading character for the processor number\n(same as the numa statistics that also use a capital letter \"N\").\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "5b06c853ad447636e31d105e95c48ae9abb6bfb5",
      "tree": "cf4d606b54659833a98a4b66c76ee3562bcd1062",
      "parents": [
        "4097d6017576a5e138f442f5e3c393ad00d10f58"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:51:34 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:51:34 2008 +0300"
      },
      "message": "slub: Deal with config variable dependencies\n\ncount_partial() is used by both slabinfo and the sysfs proc support. Move\nthe function directly before the beginning of the sysfs code so that it can\nbe easily found. Rework the preprocessor conditional to take into account\nthat slub sysfs support depends on CONFIG_SYSFS *and* CONFIG_SLUB_DEBUG.\n\nMake CONFIG_SLUB_STATS depend on CONFIG_SLUB_DEBUG and CONFIG_SYSFS. There\nis no point of keeping statistics if no one can restrive them.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "4097d6017576a5e138f442f5e3c393ad00d10f58",
      "tree": "1c9f90fa4ec806ff0d91f25883158b86e46b62ec",
      "parents": [
        "62f75532b583c03840f31e40386ce2df73be9ca0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Apr 14 18:51:18 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:51:18 2008 +0300"
      },
      "message": "slub: Reduce #ifdef ZONE_DMA by moving kmalloc_caches_dma near dma logic\n\nMove the definition of kmalloc_caches_dma() into a later #ifdef CONFIG_ZONE_DMA.\nThis saves one #ifdef and leaves us with a total of two #ifdefs for dma slab support.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "62f75532b583c03840f31e40386ce2df73be9ca0",
      "tree": "22f532faf421878b593b467a9d8bf29d6769c30f",
      "parents": [
        "120dd64cacd4fb796bca0acba3665553f1d9ecaa"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:50:44 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Apr 14 18:50:44 2008 +0300"
      },
      "message": "slub: Initialize per-cpu stats\n\nAs spotted by kmemcheck, we need to initialize the per-CPU -\u003estat array before\nusing it.\n\n[kmem_cache_cpu structures are usually allocated from arrays defined via\nDEFINE_PER_CPU that are zeroed so we have not noticed this so far --cl].\n\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "00460dd5f4b886f72699f2245206c935f9fd4b82",
      "tree": "f302a49473cbe6b1d3e63faf45fda143de543e81",
      "parents": [
        "670e23ceb1aefacfe9aeccfc871e28e9cf973286"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 01 12:07:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 01 12:44:06 2008 -0700"
      },
      "message": "Fix undefined count_partial if !CONFIG_SLABINFO\n\nSmall typo in the patch recently merged to avoid the unused symbol\nmessage for count_partial(). Discussion thread with confirmation of fix at\nhttp://marc.info/?t\u003d120696854400001\u0026r\u003d1\u0026w\u003d2\n\nTypo in the check if we need the count_partial function that was\nintroduced by 53625b4204753b904addd40ca96d9ba802e6977d\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e72e9c23ee025a4c063ca112ba0a6059f9ecc9b7",
      "tree": "d4b7091cf0e021fec776cbefbdb1ea8aec116d6a",
      "parents": [
        "8536bbaff44addff8d2ac66da1156c95b1e00c4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 27 20:56:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 27 20:56:33 2008 -0700"
      },
      "message": "Revert \"SLUB: remove useless masking of GFP_ZERO\"\n\nThis reverts commit 3811dbf67162bd08412f1b0e02e554f353e93bdb.\n\nThe masking was not at all useless, and it was sensible.  We handle\nGFP_ZERO in the caller, and passing it down to any page allocator logic\nis buggy and wrong.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53625b4204753b904addd40ca96d9ba802e6977d",
      "tree": "b5f3f6e526b8800491cc9952926e6e46bf623df8",
      "parents": [
        "05dda977f2574c3341abef9b74c27d2b362e1e3a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 19 13:42:07 2008 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 26 10:42:28 2008 -0700"
      },
      "message": "count_partial() is not used if !SLUB_DEBUG and !CONFIG_SLABINFO\n\nAvoid warnings about unused functions if neither SLUB_DEBUG nor CONFIG_SLABINFO\nis defined. This patch will be reversed when slab defrag is merged since slab\ndefrag requires count_partial() to determine the fragmentation status of\nslab caches.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "caeab084deb61cd2d51cb8facc0e894a5b406aa4",
      "tree": "9a5bebe51b0dce51169bf86c6a0fb91d0c929c56",
      "parents": [
        "bde4f8fa8db2abd5ac9c542d76012d0fedab050f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Mar 12 23:57:49 2008 -0700"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 17 11:14:17 2008 -0700"
      },
      "message": "slub page alloc fallback: Enable interrupts for GFP_WAIT.\n\nThe fallback path needs to enable interrupts like done for\nthe other page allocator calls. This was not necessary with\nthe alternate fast path since we handled irq enable/disable in\nthe slow path. The regular fastpath handles irq enable/disable\naround calls to the slow path so we need to restore the proper\nstatus before calling the page allocator from the slowpath.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b6210386787728b84db25adc4f1eba70440a4c73",
      "tree": "22702da1d1168c50cd56044be6cf68a0c093471e",
      "parents": [
        "1c61fc40fc264059ff41a614ed2d899127288281"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 05 14:05:56 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:50 2008 -0800"
      },
      "message": "slub: Do not cross cacheline boundaries for very small objects\n\nSLUB should pack even small objects nicely into cachelines if that is what\nhas been asked for. Use the same algorithm as SLAB for this.\n\nThe effect of this patch for a system with a cacheline size of 64\nbytes is that the 24 byte sized slab caches will now put exactly\n2 objects into a cacheline instead of 3 with some overlap into\nthe next cacheline. This reduces the object density in a 4k slab\nfrom 170 to 128 objects (same as SLAB).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b773ad73690b5f34eee0c76f4273ac6fcbd88f82",
      "tree": "76487ed8339cde643e05a02b881ddec01a2fb7d6",
      "parents": [
        "d7fe321eeba58f0a37cc4324d10e52092be457e0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Mar 04 11:10:17 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 06 16:21:49 2008 -0800"
      },
      "message": "slub statistics: Fix check for DEACTIVATE_REMOTE_FREES\n\nThe remote frees are in the freelist of the page and not in the\npercpu freelist.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "62e5c4b4d6351707346695fd9e151b6cda85cbe1",
      "tree": "66a8e4a842d4bcd2f87e28bb2faac19e75e355b3",
      "parents": [
        "f619cfe1bda809a97c407f4c723eb3235ecd64e5"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Sun Mar 02 23:28:24 2008 +0300"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: fix possible NULL pointer dereference\n\nThis patch fix possible NULL pointer dereference if kzalloc\nfailed. To be able to return proper error code the function\nreturn type is changed to ssize_t (according to callees and\nsysfs definitions).\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "f619cfe1bda809a97c407f4c723eb3235ecd64e5",
      "tree": "d073f8fe0221c2c196aaa888e7bc861c275f7fbd",
      "parents": [
        "7693143481730686362cc6360e3d47c012d9b2c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Mar 01 13:56:40 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: Add kmalloc_large_node() to support kmalloc_node fallback\n\nSlub is missing some NUMA support for large kmallocs. Provide that.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "7693143481730686362cc6360e3d47c012d9b2c8",
      "tree": "c621d072280676d62c3ae61ea97d3e8c471d1f92",
      "parents": [
        "6446faa2ff30ca77c5b25e886bbbfb81c63f1c91"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Mar 01 13:43:54 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: look up object from the freelist once\n\nWe only need to look up object from c-\u003epage-\u003efreelist once in\n__slab_alloc().\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "6446faa2ff30ca77c5b25e886bbbfb81c63f1c91",
      "tree": "d8c29dec4b1395a313cd71e5185f656f7e8abbb6",
      "parents": [
        "d8b42bf54be18b5d0bad941b3a1d3e8f022651a7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:32 2008 -0800"
      },
      "message": "slub: Fix up comments\n\nProvide comments and fix up various spelling / style issues.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d8b42bf54be18b5d0bad941b3a1d3e8f022651a7",
      "tree": "50c43281c981a82f0f1742fcc84919e35270e9f8",
      "parents": [
        "ae20bfda6813387af18c7fdbc0f8b1fa7be2d05b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Rearrange #ifdef CONFIG_SLUB_DEBUG in calculate_sizes()\n\nGroup SLUB_DEBUG code together to reduce the number of #ifdefs. Move some\ndebug checks under the #ifdef.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "ae20bfda6813387af18c7fdbc0f8b1fa7be2d05b",
      "tree": "4455ba4cdd5a7bd1d3da13915965f1aed2dd84b0",
      "parents": [
        "27d9e4e94862c89d171cf70911b4f11ad69fb54e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Remove BUG_ON() from ksize and omit checks for !SLUB_DEBUG\n\nThe BUG_ONs are useless since the pointer derefs will lead to\nNULL deref errors anyways. Some of the checks are not necessary\nif no debugging is possible.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "27d9e4e94862c89d171cf70911b4f11ad69fb54e",
      "tree": "630d7af09633c209e4b2d8390146f2af1074a37d",
      "parents": [
        "d692ef6dcd20da60786470654410e85f29c2ddd9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:25 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Use the objsize from the kmem_cache_cpu structure\n\nNo need to access the kmem_cache structure. We have the same value\nin kmem_cache_cpu.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d692ef6dcd20da60786470654410e85f29c2ddd9",
      "tree": "a38e03581a829bbd978c7bc03016e275bcf4c774",
      "parents": [
        "e153362a50a34439718a938a851bba977116e19a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:24 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:31 2008 -0800"
      },
      "message": "slub: Remove useless checks in alloc_debug_processing\n\nAlloc debug processing is never called with a NULL object pointer.\nNo reason to check for NULL.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "e153362a50a34439718a938a851bba977116e19a",
      "tree": "c8c4b19d13435f9d94ba92eb0c1ab1d8ff25c31a",
      "parents": [
        "d9acf4b7b62d783d84273a61aed41a0f025b08ac"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 23:45:24 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "slub: Remove objsize check in kmem_cache_flags()\n\nThere is no page-\u003eoffset anymore and also no associated limit on the number\nof objects. The page-\u003eoffset field was removed for 2.6.24. So the check\nin kmem_cache_flags() is now also obsolete (should have been dropped\nearlier, somehow a hunk vanished).\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "d9acf4b7b62d783d84273a61aed41a0f025b08ac",
      "tree": "47bae82b68ad25cee6d6b7d3388560e481ddb5f5",
      "parents": [
        "a973e9dd1e140a65bed694a2c5c8d53e9cba1a23"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Feb 15 15:22:21 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "slub: rename slab_objects to show_slab_objects\n\nThe sysfs callback is better named show_slab_objects since it is always\ncalled from the xxx_show callbacks. We need the name for other purposes\nlater.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "a973e9dd1e140a65bed694a2c5c8d53e9cba1a23",
      "tree": "5a164080dae237d09c57abab9e84b750863a2ff7",
      "parents": [
        "27710bf6febe8323f78bceca002ca7d71e5012a7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Mar 01 13:40:44 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Mar 03 12:22:30 2008 -0800"
      },
      "message": "Revert \"unique end pointer\" patch\n\nThis only made sense for the alternate fastpath which was reverted last week.\n\nMathieu is working on a new version that addresses the fastpath issues but that\nnew code first needs to go through mm and it is not clear if we need the\nunique end pointers with his new scheme.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "00e962c5408b9f2d0bebd2308673fe982cb9a5fe",
      "tree": "be1095cead2711eb26572e8e68054c6fd0f7f3a2",
      "parents": [
        "aa3f98037ce3bcf850bb41f7530754d27481a792"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 19 09:08:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 19 09:08:49 2008 -0800"
      },
      "message": "Revert \"SLUB: Alternate fast paths using cmpxchg_local\"\n\nThis reverts commit 1f84260c8ce3b1ce26d4c1d6dedc2f33a3a29c0c, which is\nsuspected to be the reason for some very occasional and hard-to-trigger\ncrashes that usually look related to memory allocation (mostly reported\nin networking, but since that\u0027s generally the most common source of\nshortlived allocations - and allocations in interrupt contexts - that in\nitself is not a big clue).\n\nSee for example\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9973\n\thttp://lkml.org/lkml/2008/2/19/278\netc.\n\nOne promising suspicion for what the root cause of bug is (which also\nexplains why it\u0027s so hard to trigger in practice) came from Eric\nDumazet:\n\n   \"I wonder how SLUB_FASTPATH is supposed to work, since it is affected\n    by a classical ABA problem of lockless algo.\n\n    cmpxchg_local(\u0026c-\u003efreelist, object, object[c-\u003eoffset]) can succeed,\n    while an interrupt came (on this cpu), and several allocations were\n    done, and one free was performed at the end of this interruption, so\n    \u0027object\u0027 was recycled.\n\n    c-\u003efreelist can then contain the previous value (object), but\n    object[c-\u003eoffset] was changed by IRQ.\n\n    We then put back in freelist an already allocated object.\"\n\nbut another reason for the revert is simply that everybody agrees that\nthis code was the main suspect just by virtue of the pattern of oopses.\n\nCc: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "331dc558fa020451ff773973cee855fd721aa88e",
      "tree": "12adf10a7e53c8d07835487694d8180b991304cd",
      "parents": [
        "71c7a06ff0a2ba0434ace4d7aa679537c4211d9d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:28:09 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:02 2008 -0800"
      },
      "message": "slub: Support 4k kmallocs again to compensate for page allocator slowness\n\nCurrently we hand off PAGE_SIZEd kmallocs to the page allocator in the\nmistaken belief that the page allocator can handle these allocations\neffectively. However, measurements indicate a minimum slowdown by the\nfactor of 8 (and that is only SMP, NUMA is much worse) vs the slub fastpath\nwhich causes regressions in tbench.\n\nIncrease the number of kmalloc caches by one so that we again handle 4k\nkmallocs directly from slub. 4k page buffering for the page allocator\nwill be performed by slub like done by slab.\n\nAt some point the page allocator fastpath should be fixed. A lot of the kernel\nwould benefit from a faster ability to allocate a single page. If that is\ndone then the 4k allocs may again be forwarded to the page allocator and this\npatch could be reverted.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "71c7a06ff0a2ba0434ace4d7aa679537c4211d9d",
      "tree": "99f5a2a5e27eee88f9917d207e2849aac3ba7e62",
      "parents": [
        "b7a49f0d4c34166ae84089d9f145cfaae1b0eec5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:28:01 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: Fallback to kmalloc_large for failing higher order allocs\n\nSlub already has two ways of allocating an object. One is via its own\nlogic and the other is via the call to kmalloc_large to hand off object\nallocation to the page allocator. kmalloc_large is typically used\nfor objects \u003e\u003d PAGE_SIZE.\n\nWe can use that handoff to avoid failing if a higher order kmalloc slab\nallocation cannot be satisfied by the page allocator. If we reach the\nout of memory path then simply try a kmalloc_large(). kfree() can\nalready handle the case of an object that was allocated via the page\nallocator and so this will work just fine (apart from object\naccounting...).\n\nFor any kmalloc slab that already requires higher order allocs (which\nmakes it impossible to use the page allocator fastpath!)\nwe just use PAGE_ALLOC_COSTLY_ORDER to get the largest number of\nobjects in one go from the page allocator slowpath.\n\nOn a 4k platform this patch will lead to the following use of higher\norder pages for the following kmalloc slabs:\n\n8 ... 1024\torder 0\n2048 .. 4096\torder 3 (4k slab only after the next patch)\n\nWe may waste some space if fallback occurs on a 2k slab but we\nare always able to fallback to an order 0 alloc.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "b7a49f0d4c34166ae84089d9f145cfaae1b0eec5",
      "tree": "716bd20c8b920511f032a42be78c0a523a17565d",
      "parents": [
        "dada123d99c241d1a45798a7c77bcf99c4968704"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 14:21:32 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: Determine gfpflags once and not every time a slab is allocated\n\nCurrently we determine the gfp flags to pass to the page allocator\neach time a slab is being allocated.\n\nDetermine the bits to be set at the time the slab is created. Store\nin a new allocflags field and add the flags in allocate_slab().\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "dada123d99c241d1a45798a7c77bcf99c4968704",
      "tree": "9ee99bc6067c8673880c1a6a2998a9ba61356de0",
      "parents": [
        "eada35efcb2773cf49aa26277e056122e1a3405c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Feb 13 23:30:32 2008 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "make slub.c:slab_address() static\n\nslab_address() can become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "eada35efcb2773cf49aa26277e056122e1a3405c",
      "tree": "69803b03b6f6106722d4cc293678f2e3183bec2e",
      "parents": [
        "e51bfd0ad10600a9fe4c8ede5ac2272e80075008"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Feb 11 22:47:46 2008 +0200"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 14 15:30:01 2008 -0800"
      },
      "message": "slub: kmalloc page allocator pass-through cleanup\n\nThis adds a proper function for kmalloc page allocator pass-through. While it\nsimplifies any code that does slab tracing code a lot, I think it\u0027s a\nworthwhile cleanup in itself.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "3adbefee6fd58a061b2bf1df4f3769701860fc62",
      "tree": "846b65d2aedbdeabece8e661761960e54bc11f6c",
      "parents": [
        "a76d354629ea46c449705970a2c0b9e9090d6f03"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 05 17:57:39 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:52:39 2008 -0800"
      },
      "message": "SLUB: fix checkpatch warnings\n\nfix checkpatch --file mm/slub.c errors and warnings.\n\n $ q-code-quality-compare\n                                      errors   lines of code   errors/KLOC\n mm/slub.c      [before]                  22            4204           5.2\n mm/slub.c      [after]                    0            4210             0\n\nno code changed:\n\n    text    data     bss     dec     hex filename\n   22195    8634     136   30965    78f5 slub.o.before\n   22195    8634     136   30965    78f5 slub.o.after\n\n   md5:\n     93cdfbec2d6450622163c590e1064358  slub.o.before.asm\n     93cdfbec2d6450622163c590e1064358  slub.o.after.asm\n\n[clameter: rediffed against Pekka\u0027s cleanup patch, omitted\nmoves of the name of a function to the start of line]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "a76d354629ea46c449705970a2c0b9e9090d6f03",
      "tree": "b2e1b9db59125e9e9a7866a8aff58165ac2ea1fd",
      "parents": [
        "8ff12cfc009a2a38d87fa7058226fe197bb2696f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Mon Jan 07 23:20:27 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:47:42 2008 -0800"
      },
      "message": "Use non atomic unlock\n\nSlub can use the non-atomic version to unlock because other flags will not\nget modified with the lock held.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ff12cfc009a2a38d87fa7058226fe197bb2696f",
      "tree": "1358ed247d3c897d8790342a978dd5078354a207",
      "parents": [
        "1f84260c8ce3b1ce26d4c1d6dedc2f33a3a29c0c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "message": "SLUB: Support for performance statistics\n\nThe statistics provided here allow the monitoring of allocator behavior but\nat the cost of some (minimal) loss of performance. Counters are placed in\nSLUB\u0027s per cpu data structure. The per cpu structure may be extended by the\nstatistics to grow larger than one cacheline which will increase the cache\nfootprint of SLUB.\n\nThere is a compile option to enable/disable the inclusion of the runtime\nstatistics and its off by default.\n\nThe slabinfo tool is enhanced to support these statistics via two options:\n\n-D \tSwitches the line of information displayed for a slab from size\n\tmode to activity mode.\n\n-A\tSorts the slabs displayed by activity. This allows the display of\n\tthe slabs most important to the performance of a certain load.\n\n-r\tReport option will report detailed statistics on\n\nExample (tbench load):\n\nslabinfo -AD\t\t-\u003eShows the most active slabs\n\nName                   Objects    Alloc     Free   %Fast\nskbuff_fclone_cache         33 111953835 111953835  99  99\n:0000192                  2666  5283688  5281047  99  99\n:0001024                   849  5247230  5246389  83  83\nvm_area_struct            1349   119642   118355  91  22\n:0004096                    15    66753    66751  98  98\n:0000064                  2067    25297    23383  98  78\ndentry                   10259    28635    18464  91  45\n:0000080                 11004    18950     8089  98  98\n:0000096                  1703    12358    10784  99  98\n:0000128                   762    10582     9875  94  18\n:0000512                   184     9807     9647  95  81\n:0002048                   479     9669     9195  83  65\nanon_vma                   777     9461     9002  99  71\nkmalloc-8                 6492     9981     5624  99  97\n:0000768                   258     7174     6931  58  15\n\nSo the skbuff_fclone_cache is of highest importance for the tbench load.\nPretty high load on the 192 sized slab. Look for the aliases\n\nslabinfo -a | grep 000192\n:0000192     \u003c- xfs_btree_cur filp kmalloc-192 uid_cache tw_sock_TCP\n\trequest_sock_TCPv6 tw_sock_TCPv6 skbuff_head_cache xfs_ili\n\nLikely skbuff_head_cache.\n\n\nLooking into the statistics of the skbuff_fclone_cache is possible through\n\nslabinfo skbuff_fclone_cache\t-\u003e-r option implied if cache name is mentioned\n\n\n.... Usual output ...\n\nSlab Perf Counter       Alloc     Free %Al %Fr\n--------------------------------------------------\nFastpath             111953360 111946981  99  99\nSlowpath                 1044     7423   0   0\nPage Alloc                272      264   0   0\nAdd partial                25      325   0   0\nRemove partial             86      264   0   0\nRemoteObj/SlabFrozen      350     4832   0   0\nTotal                111954404 111954404\n\nFlushes       49 Refill        0\nDeactivate Full\u003d325(92%) Empty\u003d0(0%) ToHead\u003d24(6%) ToTail\u003d1(0%)\n\nLooks good because the fastpath is overwhelmingly taken.\n\n\nskbuff_head_cache:\n\nSlab Perf Counter       Alloc     Free %Al %Fr\n--------------------------------------------------\nFastpath              5297262  5259882  99  99\nSlowpath                 4477    39586   0   0\nPage Alloc                937      824   0   0\nAdd partial                 0     2515   0   0\nRemove partial           1691      824   0   0\nRemoteObj/SlabFrozen     2621     9684   0   0\nTotal                 5301739  5299468\n\nDeactivate Full\u003d2620(100%) Empty\u003d0(0%) ToHead\u003d0(0%) ToTail\u003d0(0%)\n\n\nDescriptions of the output:\n\nTotal:\t\tThe total number of allocation and frees that occurred for a\n\t\tslab\n\nFastpath:\tThe number of allocations/frees that used the fastpath.\n\nSlowpath:\tOther allocations\n\nPage Alloc:\tNumber of calls to the page allocator as a result of slowpath\n\t\tprocessing\n\nAdd Partial:\tNumber of slabs added to the partial list through free or\n\t\talloc (occurs during cpuslab flushes)\n\nRemove Partial:\tNumber of slabs removed from the partial list as a result of\n\t\tallocations retrieving a partial slab or by a free freeing\n\t\tthe last object of a slab.\n\nRemoteObj/Froz:\tHow many times were remotely freed object encountered when a\n\t\tslab was about to be deactivated. Frozen: How many times was\n\t\tfree able to skip list processing because the slab was in use\n\t\tas the cpuslab of another processor.\n\nFlushes:\tNumber of times the cpuslab was flushed on request\n\t\t(kmem_cache_shrink, may result from races in __slab_alloc)\n\nRefill:\t\tNumber of times we were able to refill the cpuslab from\n\t\tremotely freed objects for the same slab.\n\nDeactivate:\tStatistics how slabs were deactivated. Shows how they were\n\t\tput onto the partial list.\n\nIn general fastpath is very good. Slowpath without partial list processing is\nalso desirable. Any touching of partial list uses node specific locks which\nmay potentially cause list lock contention.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n\n"
    },
    {
      "commit": "1f84260c8ce3b1ce26d4c1d6dedc2f33a3a29c0c",
      "tree": "d57e305168291f1b0f5f2d42853d2c2419f4140b",
      "parents": [
        "683d0baad3d6e18134927f8c28ee804dbe10fe71"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:30 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "message": "SLUB: Alternate fast paths using cmpxchg_local\n\nProvide an alternate implementation of the SLUB fast paths for alloc\nand free using cmpxchg_local. The cmpxchg_local fast path is selected\nfor arches that have CONFIG_FAST_CMPXCHG_LOCAL set. An arch should only\nset CONFIG_FAST_CMPXCHG_LOCAL if the cmpxchg_local is faster than an\ninterrupt enable/disable sequence. This is known to be true for both\nx86 platforms so set FAST_CMPXCHG_LOCAL for both arches.\n\nCurrently another requirement for the fastpath is that the kernel is\ncompiled without preemption. The restriction will go away with the\nintroduction of a new per cpu allocator and new per cpu operations.\n\nThe advantages of a cmpxchg_local based fast path are:\n\n1. Potentially lower cycle count (30%-60% faster)\n\n2. There is no need to disable and enable interrupts on the fast path.\n   Currently interrupts have to be disabled and enabled on every\n   slab operation. This is likely avoiding a significant percentage\n   of interrupt off / on sequences in the kernel.\n\n3. The disposal of freed slabs can occur with interrupts enabled.\n\nThe alternate path is realized using #ifdef\u0027s. Several attempts to do the\nsame with macros and inline functions resulted in a mess (in particular due\nto the strange way that local_interrupt_save() handles its argument and due\nto the need to define macros/functions that sometimes disable interrupts\nand sometimes do something else).\n\n[clameter: Stripped preempt bits and disabled fastpath if preempt is enabled]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "683d0baad3d6e18134927f8c28ee804dbe10fe71",
      "tree": "a1ef69f9cde406492b5deedc6874312cbeb3b357",
      "parents": [
        "5bb983b0cce9b7b281af15730f7019116dd42568"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:29 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "message": "SLUB: Use unique end pointer for each slab page.\n\nWe use a NULL pointer on freelists to signal that there are no more objects.\nHowever the NULL pointers of all slabs match in contrast to the pointers to\nthe real objects which are in different ranges for different slab pages.\n\nChange the end pointer to be a pointer to the first object and set bit 0.\nEvery slab will then have a different end pointer. This is necessary to ensure\nthat end markers can be matched to the source slab during cmpxchg_local.\n\nBring back the use of the mapping field by SLUB since we would otherwise have\nto call a relatively expensive function page_address() in __slab_alloc().  Use\nof the mapping field allows avoiding a call to page_address() in various other\nfunctions as well.\n\nThere is no need to change the page_mapping() function since bit 0 is set on\nthe mapping as also for anonymous pages.  page_mapping(slab_page) will\ntherefore still return NULL although the mapping field is overloaded.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bb983b0cce9b7b281af15730f7019116dd42568",
      "tree": "858d23397eaffb7023e50918bc0a9f785b79c962",
      "parents": [
        "0afc2edfada50980bec999f94dcea26ebad3dda6"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "christoph@stapp.engr.sgi.com",
        "time": "Thu Feb 07 17:47:41 2008 -0800"
      },
      "message": "SLUB: Deal with annoying gcc warning on kfree()\n\ngcc 4.2 spits out an annoying warning if one casts a const void *\npointer to a void * pointer. No warning is generated if the\nconversion is done through an assignment.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n\n"
    },
    {
      "commit": "ba84c73c7ae21fc891a3c2576fa3be42752fce53",
      "tree": "d6e569ad26cf604fc16617388dd314e4b5e47fcb",
      "parents": [
        "064287807c9dd64688084d34c6748a326b5f3ec8"
      ],
      "author": {
        "name": "root",
        "email": "root@programming.kicks-ass.net",
        "time": "Mon Jan 07 23:20:28 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: Do not upset lockdep\n\ninconsistent {softirq-on-W} -\u003e {in-softirq-W} usage.\nswapper/0 [HC0[0]:SC1[1]:HE0:SE0] takes:\n (\u0026n-\u003elist_lock){-+..}, at: [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n{softirq-on-W} state was registered at:\n  [\u003cffffffff80259fb8\u003e] __lock_acquire+0x3e8/0x1140\n  [\u003cffffffff80259838\u003e] debug_check_no_locks_freed+0x188/0x1a0\n  [\u003cffffffff8025ad65\u003e] lock_acquire+0x55/0x70\n  [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n  [\u003cffffffff805c76de\u003e] _spin_lock+0x1e/0x30\n  [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n  [\u003cffffffff80296f9c\u003e] kmem_cache_open+0x1cc/0x330\n  [\u003cffffffff805c7984\u003e] _spin_unlock_irq+0x24/0x30\n  [\u003cffffffff802974f4\u003e] create_kmalloc_cache+0x64/0xf0\n  [\u003cffffffff80295640\u003e] init_alloc_cpu_cpu+0x70/0x90\n  [\u003cffffffff8080ada5\u003e] kmem_cache_init+0x65/0x1d0\n  [\u003cffffffff807f1b4e\u003e] start_kernel+0x23e/0x350\n  [\u003cffffffff807f112d\u003e] _sinittext+0x12d/0x140\n  [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nThis change isn\u0027t really necessary for correctness, but it prevents lockdep\nfrom getting upset and then disabling itself.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "064287807c9dd64688084d34c6748a326b5f3ec8",
      "tree": "49bbcae6aa117cb917a14a1aa30618f533b18262",
      "parents": [
        "7c2e132c54c79af4e524154074b9a02c3c0d6072"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Jan 07 23:20:27 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: Fix coding style violations\n\nThis fixes most of the obvious coding style violations in mm/slub.c as\nreported by checkpatch.\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "7c2e132c54c79af4e524154074b9a02c3c0d6072",
      "tree": "0976894919b0a7675855d14cb7d68e007a200289",
      "parents": [
        "9824601ead957a29e35d539e43266c003f7b085b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:27 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "Add parameter to add_partial to avoid having two functions\n\nAdd a parameter to add_partial instead of having separate functions.  The\nparameter allows a more detailed control of where the slab pages is placed in\nthe partial queues.\n\nIf we put slabs back to the front then they are likely immediately used for\nallocations.  If they are put at the end then we can maximize the time that\nthe partial slabs spent without being subject to allocations.\n\nWhen deactivating slab we can put the slabs that had remote objects freed (we\ncan see that because objects were put on the freelist that requires locks) to\nthem at the end of the list so that the cachelines of remote processors can\ncool down.  Slabs that had objects from the local cpu freed to them (objects\nexist in the lockless freelist) are put in the front of the list to be reused\nASAP in order to exploit the cache hot state of the local cpu.\n\nPatch seems to slightly improve tbench speed (1-2%).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9824601ead957a29e35d539e43266c003f7b085b",
      "tree": "13df23987102e39fce77d64f60e499401444a905",
      "parents": [
        "f61396aed90acb033952531c522d1010f87e24f4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: rename defrag to remote_node_defrag_ratio\n\nThe NUMA defrag works by allocating objects from partial slabs on remote\nnodes.  Rename it to\n\n\tremote_node_defrag_ratio\n\nto be clear about this.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f61396aed90acb033952531c522d1010f87e24f4",
      "tree": "53d42c90f0aab1d1b53e8648a279e10a83df0107",
      "parents": [
        "151c602f79cb9154c3f3d83223cae355af463d6f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "Move count_partial before kmem_cache_shrink\n\nMove the counting function for objects in partial slabs so that it is placed\nbefore kmem_cache_shrink.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "151c602f79cb9154c3f3d83223cae355af463d6f",
      "tree": "140f75b7a100c50b9d337b3a128dd34b5731780f",
      "parents": [
        "e374d4835668a8c6aec7cefc0a44df69f9679017"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 22:29:05 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "SLUB: Fix sysfs refcounting\n\nIf CONFIG_SYSFS is set then free the kmem_cache structure when\nsysfs tells us its okay.\n\nOtherwise there is the danger (as pointed out by\nAl Viro) that sysfs thinks the kobject still exists after\nkmem_cache_destroy() removed it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka J Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "e374d4835668a8c6aec7cefc0a44df69f9679017",
      "tree": "95930cf83053d43df9ad0b2827cf2abebbc12493",
      "parents": [
        "9135f1901ee6449dfe338adf6e40e9c2025b8150"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu Jan 31 15:20:50 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "slub: fix shadowed variable sparse warnings\n\nIntroduce \u0027len\u0027 at outer level:\nmm/slub.c:3406:26: warning: symbol \u0027n\u0027 shadows an earlier one\nmm/slub.c:3393:6: originally declared here\n\nNo need to declare new node:\nmm/slub.c:3501:7: warning: symbol \u0027node\u0027 shadows an earlier one\nmm/slub.c:3491:6: originally declared here\n\nNo need to declare new x:\nmm/slub.c:3513:9: warning: symbol \u0027x\u0027 shadows an earlier one\nmm/slub.c:3492:6: originally declared here\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "1eada11c88251e0a30ce5690d2607bb4293b3564",
      "tree": "8ee96c0300fadd21bdbd872d55cac3c19b4cedbc",
      "parents": [
        "cf15126b3d4511e06e5299781ab74922590900be"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:31 2008 -0800"
      },
      "message": "Kobject: convert mm/slub.c to use kobject_init/add_ng()\n\nThis converts the code to use the new kobject functions, cleaning up the\nlogic in doing so.\n\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "0ff21e46630abce11fdaaffabd72bbd4eed5ac2c",
      "tree": "cc49671622ef90775bf12a91d20b8286aa346e6f",
      "parents": [
        "5c03c7ab886859eb195440dbb6ccb8c30c4e84cc"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Nov 06 10:36:58 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:24 2008 -0800"
      },
      "message": "kobject: convert kernel_kset to be a kobject\n\nkernel_kset does not need to be a kset, but a much simpler kobject now\nthat we have kobj_attributes.\n\nWe also rename kernel_kset to kernel_kobj to catch all users of this\nsymbol with a build error instead of an easy-to-ignore build warning.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "081248de0a0288a0ce4e1447a07ccf56aa4fae01",
      "tree": "2a45ac7ad26aa8f8edb9e72ac8be461be82d0271",
      "parents": [
        "27c3a314d55b810f3b51902d1d815c714a7afbd2"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Nov 01 09:29:06 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:16 2008 -0800"
      },
      "message": "kset: move /sys/slab to /sys/kernel/slab\n\n/sys/kernel is where these things should go.\nAlso updated the documentation and tool that used this directory.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "27c3a314d55b810f3b51902d1d815c714a7afbd2",
      "tree": "9f3efcc6d94661eda3ed10aa96fb011c7fe164d8",
      "parents": [
        "aade4041aa60a3ed335391ba308458e26f2dbc0a"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Nov 01 09:29:06 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:15 2008 -0800"
      },
      "message": "kset: convert slub to use kset_create\n\nDynamically create the kset instead of declaring it statically.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3514faca19a6fdc209734431c509631ea92b094e",
      "tree": "f6d102e6dec276f8e8d1044b47c74a02b901554f",
      "parents": [
        "c11c4154e7ff4cebfadad849b1e22689d759c3f4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Oct 16 10:11:44 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:10 2008 -0800"
      },
      "message": "kobject: remove struct kobj_type from struct kset\n\nWe don\u0027t need a \"default\" ktype for a kset.  We should set this\nexplicitly every time for each kset.  This change is needed so that we\ncan make ksets dynamic, and cleans up one of the odd, undocumented\nassumption that the kset/kobject/ktype model has.\n\nThis patch is based on a lot of help from Kay Sievers.\n\nNasty bug in the block code was found by Dave Young\n\u003chidave.darkstar@gmail.com\u003e\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "158a962422e4a54dc256b6a9b9562f3d30d34d9c",
      "tree": "21a71d7d671d12388f4b085e31b0258d1047f125",
      "parents": [
        "6b6adc22a01941165d5af9a3e69e28e948b28f47"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 02 13:04:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 02 13:04:48 2008 -0800"
      },
      "message": "Unify /proc/slabinfo configuration\n\nBoth SLUB and SLAB really did almost exactly the same thing for\n/proc/slabinfo setup, using duplicate code and per-allocator #ifdef\u0027s.\n\nThis just creates a common CONFIG_SLABINFO that is enabled by both SLUB\nand SLAB, and shares all the setup code.  Maybe SLOB will want this some\nday too.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57ed3eda977a215f054102b460ab0eb5d8d112e6",
      "tree": "aff1529df49c14df1f84d78fbae66a4a0bcfcdb8",
      "parents": [
        "476c6c11a9ee4610ff0e4941e3851729f7caf062"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Jan 01 17:23:28 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 01 11:32:02 2008 -0800"
      },
      "message": "slub: provide /proc/slabinfo\n\nThis adds a read-only /proc/slabinfo file on SLUB, that makes slabtop work.\n\n[ mingo@elte.hu: build fix. ]\n\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76be895001f2b0bee42a7685e942d3e08d5dd46c",
      "tree": "7444607c21c11ad363eee300f286ad8e1b71b65f",
      "parents": [
        "ea67db4cdbbf7f4e74150e71da0984e25121f500"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Dec 21 14:37:37 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Dec 21 15:51:07 2007 -0800"
      },
      "message": "SLUB: Improve hackbench speed\n\nIncrease the mininum number of partial slabs to keep around and put\npartial slabs to the end of the partial queue so that they can add\nmore objects.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3811dbf67162bd08412f1b0e02e554f353e93bdb",
      "tree": "eacc81b9fdc23d7b51ab07fccbfe7950563a1de9",
      "parents": [
        "087ee8d5bec1aa6d0a1dfe3067c7298375462ceb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Dec 17 16:20:27 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Dec 17 19:28:17 2007 -0800"
      },
      "message": "SLUB: remove useless masking of GFP_ZERO\n\nRemove a recently added useless masking of GFP_ZERO.  GFP_ZERO is already\nmasked out in new_slab() (See how it calls allocate_slab).  No need to do\nit twice.\n\nThis reverts the SLUB parts of 7fd272550bd43cc1d7289ef0ab2fa50de137e767.\n\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nReviewed-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": "7fd272550bd43cc1d7289ef0ab2fa50de137e767",
      "tree": "85c2ae7f4a7f5df3cc2cbd27056ff052ae0de5e2",
      "parents": [
        "94545baded0bfbabdc30a3a4cb48b3db479dd6ef"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Dec 09 10:14:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Dec 09 10:17:52 2007 -0800"
      },
      "message": "Avoid double memclear() in SLOB/SLUB\n\nBoth slob and slub react to __GFP_ZERO by clearing the allocation, which\nmeans that passing the GFP_ZERO bit down to the page allocator is just\nwasteful and pointless.\n\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "294a80a8ed004b383ab214837e1c05ca4098a717",
      "tree": "2cbf9d33ccafa5042dbde85641d4ca27dcf47dc5",
      "parents": [
        "5a622f2d0f86b316b07b55a4866ecb5518dd1cf7"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Tue Dec 04 23:45:30 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 05 09:21:20 2007 -0800"
      },
      "message": "SLUB\u0027s ksize() fails for size \u003e 2048\n\nI can\u0027t pass memory allocated by kmalloc() to ksize() if it is allocated by\nSLUB allocator and size is larger than (I guess) PAGE_SIZE / 2.\n\nThe error of ksize() seems to be that it does not check if the allocation\nwas made by SLUB or the page allocator.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nTested-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e, Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efe44183f6bab5b8acb6a6182d95274978c8abb1",
      "tree": "86a1c11218644190c30a7c03931e5ca2c6e2e12e",
      "parents": [
        "00ec99da43a7c2aed46c6595aa271b84bb1b1462"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Tue Nov 13 00:49:42 2007 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Nov 12 10:32:29 2007 -0800"
      },
      "message": "SLUB: killed the unused \"end\" variable\n\nSince the macro \"for_each_object\" introduced, the \"end\" variable becomes unused anymore.\n\nSigned-off-by: Denis Cheng \u003ccrquan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05aa345034de6ae9c77fb93f6a796013641d57d5",
      "tree": "3522f909f91e14b86e8dc0cedcb8e17bc0901bbe",
      "parents": [
        "aac9e28d2f3d3c1eacc4114d685864a2a6423b80"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Nov 05 11:31:58 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Nov 05 11:37:12 2007 -0800"
      },
      "message": "SLUB: Fix memory leak by not reusing cpu_slab\n\nFix the memory leak that may occur when we attempt to reuse a cpu_slab\nthat was allocated while we reenabled interrupts in order to be able to\ngrow a slab cache.\n\nThe per cpu freelist may contain objects and in that situation we may\noverwrite the per cpu freelist pointer loosing objects.  This only\noccurs if we find that the concurrently allocated slab fits our\nallocation needs.\n\nIf we simply always deactivate the slab then the freelist will be\nproperly reintegrated and the memory leak will go away.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27bb628a1d759cc82ff6360becf61de601907811",
      "tree": "ce5c354e83a48ad60c50cab2967de4f7285c703f",
      "parents": [
        "2d8a972661832719931b0dd5b80e97215cb93d94"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Mon Oct 29 04:42:55 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 29 07:41:32 2007 -0700"
      },
      "message": "missing atomic_read_long() in slub.c\n\nnr_slabs is atomic_long_t, not atomic_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9049e234401e1fad8459d69a952b174d76c399d",
      "tree": "619adc6533f33379baf25253ff56603b272453c8",
      "parents": [
        "7b78d335ac15b10bbcb0397c635d7f0d569b0270"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Sun Oct 21 16:41:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 22 08:13:17 2007 -0700"
      },
      "message": "memory hotplug: make kmem_cache_node for SLUB on memory online avoid panic\n\nFix a panic due to access NULL pointer of kmem_cache_node at discard_slab()\nafter memory online.\n\nWhen memory online is called, kmem_cache_nodes are created for all SLUBs\nfor new node whose memory are available.\n\nslab_mem_going_online_callback() is called to make kmem_cache_node() in\ncallback of memory online event.  If it (or other callbacks) fails, then\nslab_mem_offline_callback() is called for rollback.\n\nIn memory offline, slab_mem_going_offline_callback() is called to shrink\nall slub cache, then slab_mem_offline_callback() is called later.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: locking fix]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957"
}
