)]}'
{
  "log": [
    {
      "commit": "c43a5082a61f351248c5f015ee5d4641309bd96e",
      "tree": "1a01acbf9d606c392f85449fe6d6af06154a9346",
      "parents": [
        "d39c9400ae0d60aaaf534b1ad860a9bc1413d8af"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jan 12 12:20:26 2007 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 12 10:46:49 2007 -0800"
      },
      "message": "[PATCH] blktrace: only add a bounce trace when we really bounce\n\nCurrently we issue a bounce trace when __blk_queue_bounce() is called,\nbut that merely means that the device has a lower dma mask than the\nhigher pages in the system. The bio itself may still be lower pages. So\nmove the bounce trace into __blk_queue_bounce(), when we know there will\nactually be page bouncing.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e3db7691e9f3dff3289f64e3d98583e28afe03db",
      "tree": "e05542d8d8bb545545c5b535381a8c1fcb369a03",
      "parents": [
        "07031e14c1127fc7e1a5b98dfcc59f434e025104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 10 23:15:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:21 2007 -0800"
      },
      "message": "[PATCH] NFS: Fix race in nfs_release_page()\n\n    NFS: Fix race in nfs_release_page()\n\n    invalidate_inode_pages2() may find the dirty bit has been set on a page\n    owing to the fact that the page may still be mapped after it was locked.\n    Only after the call to unmap_mapping_range() are we sure that the page\n    can no longer be dirtied.\n    In order to fix this, NFS has hooked the releasepage() method and tries\n    to write the page out between the call to unmap_mapping_range() and the\n    call to remove_mapping(). This, however leads to deadlocks in the page\n    reclaim code, where the page may be locked without holding a reference\n    to the inode or dentry.\n\n    Fix is to add a new address_space_operation, launder_page(), which will\n    attempt to write out a dirty page without releasing the page lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n\n    Also, the bare SetPageDirty() can skew all sort of accounting leading to\n    other nasties.\n\n[akpm@osdl.org: cleanup]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a2f3aa02576632cdb60bd3de1f4bf55e9ac65604",
      "tree": "2b9b73675de73866fbd219fab5bf2d804e6817b1",
      "parents": [
        "47a4d5be7c50b2e9b905abbe2b97dc87051c5a44"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Wed Jan 10 23:15:30 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:20 2007 -0800"
      },
      "message": "[PATCH] Fix sparsemem on Cell\n\nFix an oops experienced on the Cell architecture when init-time functions,\nearly_*(), are called at runtime.  It alters the call paths to make sure\nthat the callers explicitly say whether the call is being made on behalf of\na hotplug even, or happening at boot-time.\n\nIt has been compile tested on ppc64, ia64, s390, i386 and x86_64.\n\nAcked-by: Arnd Bergmann \u003carndb@de.ibm.com\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74bda9310fe9776f3d940057ac2e7881214577d6",
      "tree": "38989eda1ce69bcf580a6b82c977d0862497151c",
      "parents": [
        "fea5f1e19611d94fbf3905875a427c4cb959cd06",
        "e97126cd9056b3b42cdc862ace2ed66f8026f55b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Mon Jan 08 15:06:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Mon Jan 08 15:06:39 2007 -0800"
      },
      "message": "Merge master.kernel.org:/home/rmk/linux-2.6-arm\n\n* master.kernel.org:/home/rmk/linux-2.6-arm:\n  [ARM] Provide basic printk_clock() implementation\n  [ARM] Resolve fuse and direct-IO failures due to missing cache flushes\n  [ARM] pass vma for flush_anon_page()\n  [ARM] Fix potential MMCI bug\n  [ARM] Fix kernel-mode undefined instruction aborts\n  [ARM] 4082/1: iop3xx: fix iop33x gpio register offset\n  [ARM] 4070/1: arch/arm/kernel: fix warnings from missing includes\n  [ARM] 4079/1: iop: Update MAINTAINERS\n"
    },
    {
      "commit": "a6f36be32622730710b2fadacb6e2649defa4371",
      "tree": "09d0f3ebe839b76373ee5ed4674fe305ad9ac256",
      "parents": [
        "e47c222b22cd53c317a5573e1dc5f9e0cbd46380"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Sat Dec 30 22:24:19 2006 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon Jan 08 19:49:54 2007 +0000"
      },
      "message": "[ARM] pass vma for flush_anon_page()\n\nSince get_user_pages() may be used with processes other than the\ncurrent process and calls flush_anon_page(), flush_anon_page() has to\ncope in some way with non-current processes.\n\nIt may not be appropriate, or even desirable to flush a region of\nvirtual memory cache in the current process when that is different to\nthe process that we want the flush to occur for.\n\nTherefore, pass the vma into flush_anon_page() so that the architecture\ncan work out whether the \u0027vmaddr\u0027 is for the current process or not.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "76395d37611e8758dd8bd6c6f5bfcb31e1dc48f9",
      "tree": "8002f85993ac66e46d4eac3d5bf41bc58581b769",
      "parents": [
        "d63b70902befe189ba2672925f28ec3f4db41352"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Jan 05 16:37:05 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:29 2007 -0800"
      },
      "message": "[PATCH] shrink_all_memory(): fix lru_pages handling\n\nAt the end of shrink_all_memory() we forget to recalculate lru_pages: it can\nbe zero.\n\nFix that up, and add a helper function for this operation too.\n\nAlso, recalculate lru_pages each time around the inner loop to get the\nbalancing correct.\n\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7ba3485947ee7bc89a17f86250fe9b692a615dff",
      "tree": "77fce78136f040d9382f1b27687478bbcbec051a",
      "parents": [
        "c8af57eb76fbd70c7f5b421b065fd55d096e2bff"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Fri Jan 05 16:37:03 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:29 2007 -0800"
      },
      "message": "[PATCH] fix OOM killing of swapoff\n\nThese days, if you swapoff when there isn\u0027t enough memory, OOM killer gives\n\"BUG: scheduling while atomic\" and the machine hangs: badness() needs to do\nits PF_SWAPOFF return after the task_unlock (tasklist_lock is also held\nhere, so p isn\u0027t going to be freed: PF_SWAPOFF might get turned off at any\nmoment, but that doesn\u0027t really matter).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f2e12bb272f2544d1504f982270e90ae3dcc4ff2",
      "tree": "68e8d10521fdcf1d7f4df411d87809cd1110b929",
      "parents": [
        "6929da4427b4335365dd51ab0b7dd2a0393656f0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jan 05 16:37:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:29 2007 -0800"
      },
      "message": "[PATCH] Check for populated zone in __drain_pages\n\nBoth process_zones() and drain_node_pages() check for populated zones\nbefore touching pagesets.  However, __drain_pages does not do so,\n\nThis may result in a NULL pointer dereference for pagesets in unpopulated\nzones if a NUMA setup is combined with cpu hotplug.\n\nInitially the unpopulated zone has the pcp pointers pointing to the boot\npagesets.  Since the zone is not populated the boot pageset pointers will\nnot be changed during page allocator and slab bootstrap.\n\nIf a cpu is later brought down (first call to __drain_pages()) then the pcp\npointers for cpus in unpopulated zones are set to NULL since __drain_pages\ndoes not first check for an unpopulated zone.\n\nIf the cpu is then brought up again then we call process_zones() which will\nignore the unpopulated zone.  So the pageset pointers will still be NULL.\n\nIf the cpu is then again brought down then __drain_pages will attempt to\ndrain pages by following the NULL pageset pointer for unpopulated zones.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b6a60451813bad6a9f57cb159004c3b3e12a1cd3",
      "tree": "643ae50ba5a1745950eac093e86072473a3d10ca",
      "parents": [
        "be6aab0e9fa6d3c6d75aa1e38ac972d8b4ee82b8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Fri Jan 05 16:36:36 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:23 2007 -0800"
      },
      "message": "[PATCH] fix BUG_ON(!PageSlab) from fallback_alloc\n\npdflush hit the BUG_ON(!PageSlab(page)) in kmem_freepages called from\nfallback_alloc: cache_grow already freed those pages when alloc_slabmgmt\nfailed.  But it wouldn\u0027t have freed them if __GFP_NO_GROW, so make sure\nfallback_alloc doesn\u0027t waste its time on that case.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Pekka J Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ab37b8f21b4dfe256d736c13738d20c88a1f3ad",
      "tree": "11b7b33b1e88ce19175492f25cfc71add2b3dcd6",
      "parents": [
        "dd0ec16fa6cf2498b831663a543e1b67fce6e155"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jan 05 16:36:30 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:23 2007 -0800"
      },
      "message": "[PATCH] Sanely size hash tables when using large base pages\n\nAt the moment the inode/dentry cache hash tables (common by way of\nalloc_large_system_hash()) are incorrectly sized by their respective\ndetection logic when we attempt to use large base pages on systems with\nlittle memory.\n\nThis results in odd behaviour when using a 64kB PAGE_SIZE, such as:\n\nDentry cache hash table entries: 8192 (order: -1, 32768 bytes)\nInode-cache hash table entries: 4096 (order: -2, 16384 bytes)\n\nThe mount cache hash table is seemingly the only one that gets this right\nby directly taking PAGE_SIZE in to account.\n\nThe following patch attempts to catch the bogus values and round it up to\nat least 0-order.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7bf236874292fd073c6bdd27f89c3d9e81a79cbc",
      "tree": "27e4196e4b720c113010d544567f76f181c11428",
      "parents": [
        "3223ea8cca5936b8e78450dd5b8ba88372e9c0a8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jan 05 16:36:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:22 2007 -0800"
      },
      "message": "[PATCH] swsusp: Do not fail if resume device is not set\n\nIn the kernels later than 2.6.19 there is a regression that makes swsusp\nfail if the resume device is not explicitly specified.\n\nIt can be fixed by adding an additional parameter to\nmm/swapfile.c:swap_type_of() allowing us to pass the (struct block_device\n*) corresponding to the first available swap back to the caller.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "918d3f90e8d5657491024f64427e9a5ea632d284",
      "tree": "7c1be7f238372f3b7d5de1d5b3a5c2339765813e",
      "parents": [
        "463cab36926a39d5e690664ebb5560a8b119fc71"
      ],
      "author": {
        "name": "Shantanu Goel",
        "email": "sgoel01@yahoo.com",
        "time": "Fri Dec 29 16:48:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:43 2006 -0800"
      },
      "message": "[PATCH] Buglet in vmscan.c\n\nFix a rather obvious buglet.  Noticed while instrumenting the VM using\n/proc/vmstat.\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d6e88e671ac12888df2d533dd4ddef705431a32a",
      "tree": "741d6491104adba00e4d45fe14081b175de947b7",
      "parents": [
        "0f5486ecf7d510595c2af630aae31ed5846bdbeb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Fri Dec 29 16:48:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:42 2006 -0800"
      },
      "message": "[PATCH] page_mkclean_one(): fix call to set_pte_at()\n\n(akpm: macros are wonderful)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bcb4ddb46a4c66d64d091e7ffa951b2aa1ba537f",
      "tree": "80ba7ced73f4a329e8cb84dd2b0a192708a033f0",
      "parents": [
        "131612dfe7923bd0ce5f82d6ed8303a7ef96e574"
      ],
      "author": {
        "name": "Dimitri Gorokhovik",
        "email": "dimitri.gorokhovik@free.fr",
        "time": "Fri Dec 29 16:48:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:42 2006 -0800"
      },
      "message": "[PATCH] MM: SLOB is broken by recent cleanup of slab.h\n\nRecent cleanup of slab.h broke SLOB allocator: the routine kmem_cache_init\nhas now the __init attribute for both slab.c and slob.c.  This routine\ncannot be removed after init in the case of slob.c -- it serves as a timer\ncallback.\n\nProvide a separate timer callback routine, call it once from kmem_cache_init,\nkeep the __init attribute on the latter.\n\nSigned-off-by: Dimitri Gorokhovik \u003cdimitri.gorokhovik@free.fr\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96ac5913f4e45c6a1b98350f2c0a8bb3abe2646a",
      "tree": "eb7f85431598ebf035e8b190d253e1b160694596",
      "parents": [
        "e4e6bdbb426d1ecd9e4587f22115f8d0d426d21f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Dec 29 16:47:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:55:55 2006 -0800"
      },
      "message": "[PATCH] fix oom killer kills current every time if there is memory-less-node take2\n\nconstrained_alloc(), which is called to detect where oom is from, checks\npassed zone_list().  If zone_list doesn\u0027t include all nodes, it thinks oom\nis from mempolicy.\n\nBut there is memory-less-node.  memory-less-node\u0027s zones are never included\nin zonelist[].\n\ncontstrained_alloc() should get memory_less_node into count.  Otherwise, it\nalways thinks \u0027oom is from mempolicy\u0027.  This means that current process\ndies at any time.  This patch fix it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7658cc289288b8ae7dd2c2224549a048431222b3",
      "tree": "bbd697764987e6eaf9cb8c49af3524d6a579dfdc",
      "parents": [
        "3bf8ba38f38d3647368e4edcf7d019f9f8d9184a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Fri Dec 29 10:00:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Fri Dec 29 10:00:58 2006 -0800"
      },
      "message": "VM: Fix nasty and subtle race in shared mmap\u0027ed page writeback\n\nThe VM layer (on the face of it, fairly reasonably) expected that when\nit does a -\u003ewritepage() call to the filesystem, it would write out the\nfull page at that point in time.  Especially since it had earlier marked\nthe whole page dirty with \"set_page_dirty()\".\n\nBut that isn\u0027t actually the case: -\u003ewritepage() does not actually write\na page, it writes the parts of the page that have been explicitly marked\ndirty before, *and* that had not got written out for other reasons since\nthe last time we told it they were dirty.\n\nThat last caveat is the important one.\n\nWhich _most_ of the time ends up being the whole page (since we had\ncalled \"set_page_dirty()\" on the page earlier), but if the filesystem\nhad done any dirty flushing of its own (for example, to honor some\ninternal write ordering guarantees), it might end up doing only a\npartial page IO (or none at all) when -\u003ewritepage() is actually called.\n\nThat is the correct thing in general (since we actually often _want_\nonly the known-dirty parts of the page to be written out), but the\nshared dirty page handling had implicitly forgotten about these details,\nand had a number of cases where it was doing just the \"-\u003ewritepage()\"\npart, without telling the low-level filesystem that the whole page might\nhave been re-dirtied as part of being mapped writably into user space.\n\nSince most of the time the FS did actually write out the full page, we\ndidn\u0027t notice this for a loong time, and this needed some really odd\npatterns to trigger.  But it caused occasional corruption with rtorrent\nand with the Debian \"apt\" database, because both use shared mmaps to\nupdate the end result.\n\nThis fixes it. Finally. After way too much hair-pulling.\n\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Martin J. Bligh \u003cmbligh@google.com\u003e\nAcked-by: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nAcked-by: Martin Johansson \u003cmartin@fatbob.nu\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Andrei Popa \u003candrei.popa@i-neo.ro\u003e\nCc: High Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e,\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Segher Boessenkool \u003csegher@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Gordon Farquharson \u003cgordonfarquharson@gmail.com\u003e\nCc: Guillaume Chazarain \u003cguichaz@yahoo.fr\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Kenneth Cheng \u003ckenneth.w.chen@intel.com\u003e\nCc: Tobias Diedrich \u003cranma@tdiedrich.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8368e328dfe1c534957051333a87b3210a12743b",
      "tree": "eaf180335e684a62c44e9aad42cbe2d07de045f3",
      "parents": [
        "18ed1c051317ac3a685120cead2adb192b802347"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 23 09:25:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 23 09:25:04 2006 -0800"
      },
      "message": "Clean up and export cancel_dirty_page() to modules\n\nMake cancel_dirty_page() act more like all the other dirty and writeback\naccounting functions: test for \"mapping\" being NULL, and do the\nNR_FILE_DIRY accounting purely based on mapping_cap_account_dirty()).\n\nAlso, add it to the exports, so that modular filesystems can use it.\n\nAcked-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c2fda5fed81eea077363b285b66eafce20dfd45a",
      "tree": "db4c7cdc8492df706a26eaeb050b8a788168fd32",
      "parents": [
        "e21654a756177bf209d7a3cbe971f16104555f75"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Dec 22 14:25:52 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 10:39:35 2006 -0800"
      },
      "message": "[PATCH] Fix up page_mkclean_one(): virtual caches, s390\n\n - add flush_cache_page() for all those virtual indexed cache\n   architectures.\n\n - handle s390.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7de6b8057976584e5a422574cae4dd21c677b4d4",
      "tree": "900bc533401715eec4e44b73e388a74f08b3f1a5",
      "parents": [
        "19900cdee29c812857ce938ab449e1053d516252"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Dec 22 01:09:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:49 2006 -0800"
      },
      "message": "[PATCH] mm: more rmap debugging\n\nAdd more debugging in the rmap code in an attempt to locate to source of\nthe occasional \"mapcount went negative\" assertions.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e07aa05b606deeb1a8b55cd19098427c72daebce",
      "tree": "c13323bfb4345f69fbc58bc4aab1324f66a5d0ec",
      "parents": [
        "3b2b96abbf321891bdde5412d23bc4123c6cccec"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "nigel@suspend2.net",
        "time": "Fri Dec 22 01:07:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:47 2006 -0800"
      },
      "message": "[PATCH] Fix swapped parameters in mm/vmscan.c\n\nThe version of mm/vmscan.c in Linus\u0027 current tree has swapped parameters in\nthe shrink_all_zones declaration and call, used by the various\nsuspend-to-disk implementations.  This doesn\u0027t seem to have any great\nadverse effect, but it\u0027s clearly wrong.\n\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "af9997e426f9ddfe7a84cb4cd3c7ff938fabd41a",
      "tree": "8bbb991c584b1a555b35950900455517f5e55ee9",
      "parents": [
        "b7f869a2847dfe6f9b0835ca1b24e73bed926d7d"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Dec 22 01:06:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:47 2006 -0800"
      },
      "message": "[PATCH] fix kernel-doc warnings in 2.6.20-rc1\n\nFix kernel-doc warnings in 2.6.20-rc1.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b7f869a2847dfe6f9b0835ca1b24e73bed926d7d",
      "tree": "1bbbc406453ca08385e0199515ad6933c6e30f74",
      "parents": [
        "533ffc289db9f44c0633d3a7b87243b5740b02b2"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Dec 22 01:06:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:47 2006 -0800"
      },
      "message": "[PATCH] slab: fix kmem_ptr_validate definition\n\nThe declaration of kmem_ptr_validate in slab.h does not match the\none in slab.c. Remove the fastcall attribute (this is the only use in\nslab.c).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92a3d03aab912624cae799e5772a6eb2ef55083f",
      "tree": "6bd85729918e1c56044ad5a1d084838444ab428e",
      "parents": [
        "ba0084048ab785c2cb1d6cc2cccabe642a5b799a"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Fri Dec 22 01:06:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:47 2006 -0800"
      },
      "message": "[PATCH] Fix for shmem_truncate_range() BUG_ON()\n\nRan into BUG() while doing madvise(REMOVE) testing.  If we are punching a\nhole into shared memory segment using madvise(REMOVE) and the entire hole\nis below the indirect blocks, we hit following assert.\n\n\t        BUG_ON(limit \u003c\u003d SHMEM_NR_DIRECT);\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f2a105d5e33a038a717995d2738434f9c25aed2",
      "tree": "4d72272dfaa5eb00f96ff895ca72bdfd97fa4bdc",
      "parents": [
        "bb4067e34159648d394943d5e2a011f838bff22f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Dec 22 01:04:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:45 2006 -0800"
      },
      "message": "[PATCH] truncate: dirty memory accounting fix\n\nOnly (un)account for IO and page-dirtying for devices which have real backing\nstore (ie: not tmpfs or ramdisks).\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e67c0987d7567ad666641164a153dca9a43b11d",
      "tree": "e8bd583fc8fe6e9e2e8533319a30577c0081f70e",
      "parents": [
        "921320210bd2ec4f17053d283355b73048ac0e56"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Dec 21 11:00:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 11:17:26 2006 -0800"
      },
      "message": "[PATCH] truncate: clear page dirtiness before running try_to_free_buffers()\n\ntruncate presently invalidates the dirty page\u0027s buffer_heads then shoots down\nthe page.  But try_to_free_buffers() will now bale out because the page is\ndirty.\n\nNet effect: the LRU gets filled with dirty pages which have invalidated\nbuffer_heads attached.  They have no -\u003emapping and hence cannot be cleaned.\nThe machine leaks memory at an enormous rate.\n\nFix this by cleaning the page before running try_to_free_buffers(), so\ntry_to_free_buffers() can do its work.\n\nAlso, remember to do dirty-page-acoounting in cancel_dirty_page() so the\nmachine won\u0027t wedge up trying to write non-existent dirty pages.\n\nProbably still wrong, but now less so.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fba2591bf4e418b6c3f9f8794c9dd8fe40ae7bd9",
      "tree": "d6909973e402b3171ee409f660b33df2fad029ba",
      "parents": [
        "46d2277c796f9f4937bfa668c40b2e3f43e93dd0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 20 13:46:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 09:19:57 2006 -0800"
      },
      "message": "VM: Remove \"clear_page_dirty()\" and \"test_clear_page_dirty()\" functions\n\nThey were horribly easy to mis-use because of their tempting naming, and\nthey also did way more than any users of them generally wanted them to\ndo.\n\nA dirty page can become clean under two circumstances:\n\n (a) when we write it out.  We have \"clear_page_dirty_for_io()\" for\n     this, and that function remains unchanged.\n\n     In the \"for IO\" case it is not sufficient to just clear the dirty\n     bit, you also have to mark the page as being under writeback etc.\n\n (b) when we actually remove a page due to it becoming inaccessible to\n     users, notably because it was truncate()\u0027d away or the file (or\n     metadata) no longer exists, and we thus want to cancel any\n     outstanding dirty state.\n\nFor the (b) case, we now introduce \"cancel_dirty_page()\", which only\ntouches the page state itself, and verifies that the page is not mapped\n(since cancelling writes on a mapped page would be actively wrong as it\nis still accessible to users).\n\nSome filesystems need to be fixed up for this: CIFS, FUSE, JFS,\nReiserFS, XFS all use the old confusing functions, and will be fixed\nseparately in subsequent commits (with some of them just removing the\noffending logic, and others using clear_page_dirty_for_io()).\n\nThis was confirmed by Martin Michlmayr to fix the apt database\ncorruption on ARM.\n\nCc: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Andrei Popa \u003candrei.popa@i-neo.ro\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Gordon Farquharson \u003cgordonfarquharson@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "825020c3866e7312947e17a0caa9dd1a5622bafc",
      "tree": "dda5869db23a71af87aed414132943f7de95fc06",
      "parents": [
        "2bb71b5a44bfbe0d2066ee041149995f43b52d12"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Dec 17 18:52:47 2006 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 17 10:21:53 2006 -0800"
      },
      "message": "[PATCH] sys_mincore: s/max/min/\n\nfix a typo, sys_mincore() needs min().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Linus \"I\u0027m a moron\" Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4fb23e439ce09157d64b89a21061b9fc08f2b495",
      "tree": "168d6c75d6e0e7de5056b2a4736994c434e975dc",
      "parents": [
        "c7ef259bfb4084d8806dfff9eb8bfc6e82bb8c45"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 16 16:01:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 16 16:01:50 2006 -0800"
      },
      "message": "Fix up mm/mincore.c error value cases\n\nHugh Dickins correctly points out that mincore() is actually _supposed_\nto fail on an unmapped hole in the user address space, rather than\nreturn valid (\"empty\") information about the hole.  This just simplifies\nthe problem further (I had been misled by our previous confusing and\ncomplicated way of doing mincore()).\n\nAlso, in the unlikely situation that we can\u0027t allocate a temporary\nkernel buffer, we should actually return EAGAIN, not ENOMEM, to keep the\n\"unmapped hole\" and \"allocation failure\" error cases separate.\n\nFinally, add a comment about our stupid historical lack of support for\nanonymous mappings.  I\u0027ll fix that if somebody reminds me after 2.6.20\nis out.\n\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2f77d107050abc14bc393b34bdb7b91cf670c250",
      "tree": "6651586fb1b10f60cd6acdb3222bafac9c2d7aa8",
      "parents": [
        "0221872a3b0aa2fa2f3fa60affcbaebd662c4a90"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 16 09:44:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 16 09:44:32 2006 -0800"
      },
      "message": "Fix incorrect user space access locking in mincore()\n\nDoug Chapman noticed that mincore() will doa \"copy_to_user()\" of the\nresult while holding the mmap semaphore for reading, which is a big\nno-no.  While a recursive read-lock on a semaphore in the case of a page\nfault happens to work, we don\u0027t actually allow them due to deadlock\nschenarios with writers due to fairness issues.\n\nDoug and Marcel sent in a patch to fix it, but I decided to just rewrite\nthe mess instead - not just fixing the locking problem, but making the\ncode smaller and (imho) much easier to understand.\n\nCc: Doug Chapman \u003cdchapman@redhat.com\u003e\nCc: Marcel Holtmann \u003choltmann@redhat.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9de455b20705f36384a711d4a20bcf7ba1ab180b",
      "tree": "6eb3643514d12d06a69a5c889d612f66b68288e6",
      "parents": [
        "77fff4ae2b7bba6d66a8287d9ab948e2b6c16145"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Tue Dec 12 17:14:55 2006 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:27:08 2006 -0800"
      },
      "message": "[PATCH] Pass vma argument to copy_user_highpage().\n\nTo allow a more effective copy_user_highpage() on certain architectures,\na vma argument is added to the function and cow_user_page() allowing\nthe implementation of these functions to check for the VM_EXEC bit.\n\nThe main part of this patch was originally written by Ralf Baechle;\nAtushi Nemoto did the the debugging.\n\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6a2d7a955d8de6cb19ed9cd194b3c83008a22c32",
      "tree": "dc440341412a45a7c1f363dcaa1505fe711eadec",
      "parents": [
        "02a0e53d8227aff5e62e0433f82c12c1c2805fd6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 13 00:34:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] SLAB: use a multiply instead of a divide in obj_to_index()\n\nWhen some objects are allocated by one CPU but freed by another CPU we can\nconsume lot of cycles doing divides in obj_to_index().\n\n(Typical load on a dual processor machine where network interrupts are\nhandled by one particular CPU (allocating skbufs), and the other CPU is\nrunning the application (consuming and freeing skbufs))\n\nHere on one production server (dual-core AMD Opteron 285), I noticed this\ndivide took 1.20 % of CPU_CLK_UNHALTED events in kernel.  But Opteron are\nquite modern cpus and the divide is much more expensive on oldest\narchitectures :\n\nOn a 200 MHz sparcv9 machine, the division takes 64 cycles instead of 1\ncycle for a multiply.\n\nDoing some math, we can use a reciprocal multiplication instead of a divide.\n\nIf we want to compute V \u003d (A / B)  (A and B being u32 quantities)\nwe can instead use :\n\nV \u003d ((u64)A * RECIPROCAL(B)) \u003e\u003e 32 ;\n\nwhere RECIPROCAL(B) is precalculated to ((1LL \u003c\u003c 32) + (B - 1)) / B\n\nNote :\n\nI wrote pure C code for clarity. gcc output for i386 is not optimal but\nacceptable :\n\nmull   0x14(%ebx)\nmov    %edx,%eax // part of the \u003e\u003e 32\nxor     %edx,%edx // useless\nmov    %eax,(%esp) // could be avoided\nmov    %edx,0x4(%esp) // useless\nmov    (%esp),%ebx\n\n[akpm@osdl.org: small cleanups]\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02a0e53d8227aff5e62e0433f82c12c1c2805fd6",
      "tree": "fe32435308e5f1afe8bd12357bd8c5ff3b4133c7",
      "parents": [
        "55935a34a428a1497e3b37982e2782c09c6f914d"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 13 00:34:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] cpuset: rework cpuset_zone_allowed api\n\nElaborate the API for calling cpuset_zone_allowed(), so that users have to\nexplicitly choose between the two variants:\n\n  cpuset_zone_allowed_hardwall()\n  cpuset_zone_allowed_softwall()\n\nUntil now, whether or not you got the hardwall flavor depended solely on\nwhether or not you or\u0027d in the __GFP_HARDWALL gfp flag to the gfp_mask\nargument.\n\nIf you didn\u0027t specify __GFP_HARDWALL, you implicitly got the softwall\nversion.\n\nUnfortunately, this meant that users would end up with the softwall version\nwithout thinking about it.  Since only the softwall version might sleep,\nthis led to bugs with possible sleeping in interrupt context on more than\none occassion.\n\nThe hardwall version requires that the current tasks mems_allowed allows\nthe node of the specified zone (or that you\u0027re in interrupt or that\n__GFP_THISNODE is set or that you\u0027re on a one cpuset system.)\n\nThe softwall version, depending on the gfp_mask, might allow a node if it\nwas allowed in the nearest enclusing cpuset marked mem_exclusive (which\nrequires taking the cpuset lock \u0027callback_mutex\u0027 to evaluate.)\n\nThis patch removes the cpuset_zone_allowed() call, and forces the caller to\nexplicitly choose between the hardwall and the softwall case.\n\nIf the caller wants the gfp_mask to determine this choice, they should (1)\nbe sure they can sleep or that __GFP_HARDWALL is set, and (2) invoke the\ncpuset_zone_allowed_softwall() routine.\n\nThis adds another 100 or 200 bytes to the kernel text space, due to the few\nlines of nearly duplicate code at the top of both cpuset_zone_allowed_*\nroutines.  It should save a few instructions executed for the calls that\nturned into calls of cpuset_zone_allowed_hardwall, thanks to not having to\nset (before the call) then check (within the call) the __GFP_HARDWALL flag.\n\nFor the most critical call, from get_page_from_freelist(), the same\ninstructions are executed as before -- the old cpuset_zone_allowed()\nroutine it used to call is the same code as the\ncpuset_zone_allowed_softwall() routine that it calls now.\n\nNot a perfect win, but seems worth it, to reduce this chance of hitting a\nsleeping with irq off complaint again.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55935a34a428a1497e3b37982e2782c09c6f914d",
      "tree": "270e68db0a0c8819986fd5150d942812a02d8f42",
      "parents": [
        "2e892f43ccb602e8ffad73396a1000f2040c9e0b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 13 00:34:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] More slab.h cleanups\n\nMore cleanups for slab.h\n\n1. Remove tabs from weird locations as suggested by Pekka\n\n2. Drop the check for NUMA and SLAB_DEBUG from the fallback section\n   as suggested by Pekka.\n\n3. Uses static inline for the fallback defs as also suggested by Pekka.\n\n4. Make kmem_ptr_valid take a const * argument.\n\n5. Separate the NUMA fallback definitions from the kmalloc_track fallback\n   definitions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2e892f43ccb602e8ffad73396a1000f2040c9e0b",
      "tree": "2f799810eccebeb5d432daed93ed9654238887b6",
      "parents": [
        "872225ca77519a243d7e19270b062b0ac53418d8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 13 00:34:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:49 2006 -0800"
      },
      "message": "[PATCH] Cleanup slab headers / API to allow easy addition of new slab allocators\n\nThis is a response to an earlier discussion on linux-mm about splitting\nslab.h components per allocator.  Patch is against 2.6.19-git11.  See\nhttp://marc.theaimsgroup.com/?l\u003dlinux-mm\u0026m\u003d116469577431008\u0026w\u003d2\n\nThis patch cleans up the slab header definitions.  We define the common\nfunctions of slob and slab in slab.h and put the extra definitions needed\nfor slab\u0027s kmalloc implementations in \u003clinux/slab_def.h\u003e.  In order to get\na greater set of common functions we add several empty functions to slob.c\nand also rename slob\u0027s kmalloc to __kmalloc.\n\nSlob does not need any special definitions since we introduce a fallback\ncase.  If there is no need for a slab implementation to provide its own\nkmalloc mess^H^H^Hacros then we simply fall back to __kmalloc functions.\nThat is sufficient for SLOB.\n\nSort the function in slab.h according to their functionality.  First the\nfunctions operating on struct kmem_cache * then the kmalloc related\nfunctions followed by special debug and fallback definitions.\n\nAlso redo a lot of comments.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e?\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd47ea755693228bf842c779e8afdfa47efb20a3",
      "tree": "3dbaea0064765ff7dbc82e5bf0af73aba15dd6b2",
      "parents": [
        "6a8ba9d12150461acc91bd3c9124eac19e853218"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 13 00:34:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:48 2006 -0800"
      },
      "message": "[PATCH] slab: fix sleeping in atomic bug\n\nFallback_alloc() does not do the check for GFP_WAIT as done in\ncache_grow().  Thus interrupts are disabled when we call kmem_getpages()\nwhich results in the failure.\n\nDuplicate the handling of GFP_WAIT in cache_grow().\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Jay Cliburn \u003cjacliburn@bellsouth.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2b2842146cb4105877c2be51d3857ec61ebd4ff9",
      "tree": "526e19452cecf8a3669713bc35afcfa4e23bb296",
      "parents": [
        "44d306e1508fef6fa7a6eb15a1aba86ef68389a6"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Dec 10 02:21:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:22 2006 -0800"
      },
      "message": "[PATCH] user of the jiffies rounding patch: Slab\n\nThis patch introduces users of the round_jiffies() function in the slab code.\n\nThe slab code has a few \"run every second\" timers for background work; these\nare obviously not timing critical as long as they happen roughly at the right\nfrequency.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8459d86aff04fa53c2ab6a6b9f355b3063cc8014",
      "tree": "c0584c4907f0d63a18998b7cbffdf7900609606b",
      "parents": [
        "20258b2b397031649e4a41922fe803d57017df84"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:21:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: only call aio_complete() after returning -EIOCBQUEUED\n\nThe only time it is safe to call aio_complete() is when the -\u003eki_retry\nfunction returns -EIOCBQUEUED to the AIO core.  direct_io_worker() has\nhistorically done this by relying on its caller to translate positive return\ncodes into -EIOCBQUEUED for the aio case.  It did this by trying to keep\nconditionals in sync.  direct_io_worker() knew when finished_one_bio() was\ngoing to call aio_complete().  It would reverse the test and wait and free the\ndio in the cases it thought that finished_one_bio() wasn\u0027t going to.\n\nNot surprisingly, it ended up getting it wrong.  \u0027ret\u0027 could be a negative\nerrno from the submission path but it failed to communicate this to\nfinished_one_bio().  direct_io_worker() would return \u003c 0, it\u0027s callers\nwouldn\u0027t raise -EIOCBQUEUED, and aio_complete() would be called.  In the\nfuture finished_one_bio()\u0027s tests wouldn\u0027t reflect this and aio_complete()\nwould be called for a second time which can manifest as an oops.\n\nThe previous cleanups have whittled the sync and async completion paths down\nto the point where we can collapse them and clearly reassert the invariant\nthat we must only call aio_complete() after returning -EIOCBQUEUED.\ndirect_io_worker() will only return -EIOCBQUEUED when it is not the last to\ndrop the dio refcount and the aio bio completion path will only call\naio_complete() when it is the last to drop the dio refcount.\ndirect_io_worker() can ensure that it is the last to drop the reference count\nby waiting for bios to drain.  It does this for sync ops, of course, and for\npartial dio writes that must fall back to buffered and for aio ops that saw\nerrors during submission.\n\nThis means that operations that end up waiting, even if they were issued as\naio ops, will not call aio_complete() from dio.  Instead we return the return\ncode of the operation and let the aio core call aio_complete().  This is\npurposely done to fix a bug where AIO DIO file extensions would call\naio_complete() before their callers have a chance to update i_size.\n\nNow that direct_io_worker() is explicitly returning -EIOCBQUEUED its callers\nno longer have to translate for it.  XFS needs to be careful not to free\nresources that will be used during AIO completion if -EIOCBQUEUED is returned.\n We maintain the previous behaviour of trying to write fs metadata for O_SYNC\naio+dio writes.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: \u003cxfs-masters@oss.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8bde37f08fe3340435f4320b5a092eeb55acebfd",
      "tree": "8afd0179f4fe46d806cb40cfadb1843a480c154d",
      "parents": [
        "faccbd4b26df7bd977cee33d4145155d0ef95c87"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting-read-accounting nfs fix\n\nnfs\u0027s -\u003ereadpages uses read_cache_pages().  Wire it up there.\n\n[wfg@mail.ustc.edu.cn: account only successful nfs/fuse reads]\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e08748ce01e02f0ec154b141f392ccb9555333f4",
      "tree": "9fa9d9f8fb468997f7f6fbcb28e243724d1fdda6",
      "parents": [
        "55e829af06681e5d731c03ba04febbd1c76ca293"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting: write-cancel accounting\n\nAccount for the number of byte writes which this process caused to not happen\nafter all.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55e829af06681e5d731c03ba04febbd1c76ca293",
      "tree": "4304030be250d913f56696ffda8ae660fb17b110",
      "parents": [
        "8c08540f8755c451d8b96ea14cfe796bc3cd712d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting: write accounting\n\nAccounting writes is fairly simple: whenever a process flips a page from clean\nto dirty, we accuse it of having caused a write to underlying storage of\nPAGE_CACHE_SIZE bytes.\n\nThis may overestimate the amount of writing: the page-dirtying may cause only\none buffer_head\u0027s worth of writeout.  Fixing that is possible, but probably a\nbit messy and isn\u0027t obviously important.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c08540f8755c451d8b96ea14cfe796bc3cd712d",
      "tree": "ca2ba9673ce1c2733c538012105681b238265e48",
      "parents": [
        "7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] clean up __set_page_dirty_nobuffers()\n\nSave a tabstop in __set_page_dirty_nobuffers() and __set_page_dirty_buffers()\nand a few other places.  No functional changes.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5fcf7bb73f66cc1c4ad90788b0f367c4d6852b75",
      "tree": "76854ba1babc308beaf8f19d299a5b32ab7fda30",
      "parents": [
        "347a00fb4ad2200f8f8331f8b366b1d84eff577d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sun Dec 10 02:18:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:39 2006 -0800"
      },
      "message": "[PATCH] read_zero_pagealigned() locking fix\n\nRamiro Voicu hits the BUG_ON(!pte_none(*pte)) in zeromap_pte_range: kernel\nbugzilla 7645.  Right: read_zero_pagealigned uses down_read of mmap_sem,\nbut another thread\u0027s racing read of /dev/zero, or a normal fault, can\neasily set that pte again, in between zap_page_range and zeromap_page_range\ngetting there.  It\u0027s been wrong ever since 2.4.3.\n\nThe simple fix is to use down_write instead, but that would serialize reads\nof /dev/zero more than at present: perhaps some app would be badly\naffected.  So instead let zeromap_page_range return the error instead of\nBUG_ON, and read_zero_pagealigned break to the slower clear_user loop in\nthat case - there\u0027s no need to optimize for it.\n\nUse -EEXIST for when a pte is found: BUG_ON in mmap_zero (the other user of\nzeromap_page_range), though it really isn\u0027t interesting there.  And since\nmmap_zero wants -EAGAIN for out-of-memory, the zeromaps better return that\nthan -ENOMEM.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ramiro Voicu: \u003cRamiro.Voicu@cern.ch\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6b1b60f41eef3ba7b188fd72f1d6de478aafd93c",
      "tree": "96be18f573ef01f65547e8d74f0b4d7ce52f2c11",
      "parents": [
        "f1729c28a37e4f11ea5d9f468ab26adadb1aadab"
      ],
      "author": {
        "name": "Don Mullis",
        "email": "dwm@meer.net",
        "time": "Fri Dec 08 02:39:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:03 2006 -0800"
      },
      "message": "[PATCH] fault-injection: defaults likely to please a new user\n\nAssign defaults most likely to please a new user:\n 1) generate some logging output\n    (verbose\u003d2)\n 2) avoid injecting failures likely to lock up UI\n    (ignore_gfp_wait\u003d1, ignore_gfp_highmem\u003d1)\n\nSigned-off-by: Don Mullis \u003cdwm@meer.net\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "933e312e73f8fc39652bd4d216a5393cc3a014b9",
      "tree": "a2aacc2a098c3c95fe5a94fef1a2cc9751bee79b",
      "parents": [
        "8a8b6502fb669c3a0638a08955442814cedc86b1"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Dec 08 02:39:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:02 2006 -0800"
      },
      "message": "[PATCH] fault-injection capability for alloc_pages()\n\nThis patch provides fault-injection capability for alloc_pages()\n\nBoot option:\n\nfail_page_alloc\u003d\u003cinterval\u003e,\u003cprobability\u003e,\u003cspace\u003e,\u003ctimes\u003e\n\n\t\u003cinterval\u003e -- specifies the interval of failures.\n\n\t\u003cprobability\u003e -- specifies how often it should fail in percent.\n\n\t\u003cspace\u003e -- specifies the size of free space where memory can be\n\t\t   allocated safely in pages.\n\n\t\u003ctimes\u003e -- specifies how many times failures may happen at most.\n\nDebugfs:\n\n/debug/fail_page_alloc/interval\n/debug/fail_page_alloc/probability\n/debug/fail_page_alloc/specifies\n/debug/fail_page_alloc/times\n/debug/fail_page_alloc/ignore-gfp-highmem\n/debug/fail_page_alloc/ignore-gfp-wait\n\nExample:\n\n\tfail_page_alloc\u003d10,100,0,-1\n\nThe page allocation (alloc_pages(), ...) fails once per 10 times.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8a8b6502fb669c3a0638a08955442814cedc86b1",
      "tree": "2e49652f904eb821f2fa7ae8cab0dd9b756772d9",
      "parents": [
        "6ff1cb355e628f8fc55fa2d01e269e5e1bbc2fe9"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Fri Dec 08 02:39:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:02 2006 -0800"
      },
      "message": "[PATCH] fault-injection capability for kmalloc\n\nThis patch provides fault-injection capability for kmalloc.\n\nBoot option:\n\nfailslab\u003d\u003cinterval\u003e,\u003cprobability\u003e,\u003cspace\u003e,\u003ctimes\u003e\n\n\t\u003cinterval\u003e -- specifies the interval of failures.\n\n\t\u003cprobability\u003e -- specifies how often it should fail in percent.\n\n\t\u003cspace\u003e -- specifies the size of free space where memory can be\n\t\t   allocated safely in bytes.\n\n\t\u003ctimes\u003e -- specifies how many times failures may happen at most.\n\nDebugfs:\n\n/debug/failslab/interval\n/debug/failslab/probability\n/debug/failslab/specifies\n/debug/failslab/times\n/debug/failslab/ignore-gfp-highmem\n/debug/failslab/ignore-gfp-wait\n\nExample:\n\n\tfailslab\u003d10,100,0,-1\n\nslab allocation (kmalloc(), kmem_cache_alloc(),..) fails once per 10 times.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f0d1b0b30d250a07627ad8b9fbbb5c7cc08422e8",
      "tree": "0aa5379150574374351fb92af7881a48dbfcf2ce",
      "parents": [
        "b3d7ae5f47a58a9f7b152deeaf7daa1fc558a8f1"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Dec 08 02:37:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:51 2006 -0800"
      },
      "message": "[PATCH] LOG2: Implement a general integer log2 facility in the kernel\n\nThis facility provides three entry points:\n\n\tilog2()\t\tLog base 2 of unsigned long\n\tilog2_u32()\tLog base 2 of u32\n\tilog2_u64()\tLog base 2 of u64\n\nThese facilities can either be used inside functions on dynamic data:\n\n\tint do_something(long q)\n\t{\n\t\t...;\n\t\ty \u003d ilog2(x)\n\t\t...;\n\t}\n\nOr can be used to statically initialise global variables with constant values:\n\n\tunsigned n \u003d ilog2(27);\n\nWhen performing static initialisation, the compiler will report \"error:\ninitializer element is not constant\" if asked to take a log of zero or of\nsomething not reducible to a constant.  They treat negative numbers as\nunsigned.\n\nWhen not dealing with a constant, they fall back to using fls() which permits\nthem to use arch-specific log calculation instructions - such as BSR on\nx86/x86_64 or SCAN on FRV - if available.\n\n[akpm@osdl.org: MMC fix]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Wojtek Kaniewski \u003cwojtekka@toxygen.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e9536ae7205d255bc94616b72910fc6e16c861fe",
      "tree": "4c91e2fbe096958ab8f7476306c4a61c30cbe502",
      "parents": [
        "1b04fe9a8ef10774174897b15d753b9de85fe9e9"
      ],
      "author": {
        "name": "Josef Sipek",
        "email": "jsipek@fsl.cs.sunysb.edu",
        "time": "Fri Dec 08 02:37:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:47 2006 -0800"
      },
      "message": "[PATCH] struct path: convert mm\n\nSigned-off-by: Josef Sipek \u003cjsipek@fsl.cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d3ac7f892b7d07d61d0895caa4f6e190e43112f8",
      "tree": "0ff35e7e5ab822b600075d79910d3cc136ba07ef",
      "parents": [
        "f3a43f3f64bff8e205c3702f6b4804d66e306848"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:43 2006 -0800"
      },
      "message": "[PATCH] mm: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in linux/mm/.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b8b50b6519afa9891b753c4fffa89d89e04df66a",
      "tree": "02aff736f77241445d588817c0ea629e69a0b69a",
      "parents": [
        "01a732eb22dab153732b94962467eaabb1fd3797"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Dec 08 02:35:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:37 2006 -0800"
      },
      "message": "[PATCH] mm: fallback_alloc cpuset_zone_allowed irq fix\n\nfallback_alloc() could end up calling cpuset_zone_allowed() with interrupts\ndisabled (by code in kmem_cache_alloc_node()), but without __GFP_HARDWALL\nset, leading to a possible call of a sleeping function with interrupts\ndisabled.\n\nThis results in the BUG report:\n\n  BUG: sleeping function called from invalid context at kernel/cpuset.c:1520\nin_atomic():0, irqs_disabled():1\n\nThanks to Paul Menage for catching this one.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "15ad7cdcfd76450d4beebc789ec646664238184d",
      "tree": "279d05a76ae0906c23ee2de8c5684d95d9886ad3",
      "parents": [
        "4a08a9f68168e547c2baf100020e9b96cae5fbd1"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Dec 06 20:40:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] struct seq_operations and struct file_operations constification\n\n - move some file_operations structs into the .rodata section\n\n - move static strings from policy_types[] array into the .rodata section\n\n - fix generic seq_operations usages, so that those structs may be defined\n   as \"const\" as well\n\n[akpm@osdl.org: couple of fixes]\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "045f147f3290395661b56b9231fc4d221e150963",
      "tree": "63df3be162913b044a7f88a03b45c59f438bbb19",
      "parents": [
        "a8f48a95619cbce8f85423480e7d0a1bf971a62b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:40:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:44 2006 -0800"
      },
      "message": "[PATCH] remove EXPORT_UNUSED_SYMBOL\u0027ed symbols\n\nIn time for 2.6.20, we can get rid of this junk.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4668edc334ee90cf50c382c3e423cfc510b5a126",
      "tree": "ee25ca93e72031f7f333b6c251a57a55ef089c90",
      "parents": [
        "304e61e6fbadec586dfe002b535f169a04248e49"
      ],
      "author": {
        "name": "Burman Yan",
        "email": "yan_952@hotmail.com",
        "time": "Wed Dec 06 20:38:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:41 2006 -0800"
      },
      "message": "[PATCH] kernel core: replace kmalloc+memset with kzalloc\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1f370a23f2a3101886953add4bd7f529e3bba016",
      "tree": "589f22c4a5117d756855af3f0530d747ac17185d",
      "parents": [
        "fed806f4072badad614699e1d40202e0ffef5c63"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:38:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:39 2006 -0800"
      },
      "message": "[PATCH] make mm/shmem.c:shmem_xattr_security_handler static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02316067852187b8bec781bec07410e91af79627",
      "tree": "856e3f4610c91a6548bf3bf5c70ecbc0b28a4145",
      "parents": [
        "a38a44c1a93078fc5fadc4ac2df8dea4697069e2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 06 20:38:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:39 2006 -0800"
      },
      "message": "[PATCH] hotplug CPU: clean up hotcpu_notifier() use\n\nThere was lots of #ifdef noise in the kernel due to hotcpu_notifier(fn,\nprio) not correctly marking \u0027fn\u0027 as used in the !HOTPLUG_CPU case, and thus\ngenerating compiler warnings of unused symbols, hence forcing people to add\n#ifdefs.\n\nthe compiler can skip truly unused functions just fine:\n\n    text    data     bss     dec     hex filename\n 1624412  728710 3674856 6027978  5bfaca vmlinux.before\n 1624412  728710 3674856 6027978  5bfaca vmlinux.after\n\n[akpm@osdl.org: topology.c fix]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "04903664325acb3f199dd8a4b8f1aa437e9fd6b2",
      "tree": "6da8e4716c1477d578b9d89cd23be703aac8bedc",
      "parents": [
        "93f210dd9e614ddab7ecef0b4c9ba6ad3720d860"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 06 20:37:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:37 2006 -0800"
      },
      "message": "[PATCH] remove HASH_HIGHMEM\n\nIt has no users and it\u0027s doubtful that we\u0027ll need it again.\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "38da288b8ba2b07b4e07165027e650b61d7c8ffc",
      "tree": "71382f10406db9598cef7df3842e428c77cae728",
      "parents": [
        "8bca98cabf6db738b06d6f3b6d4b6c5f2a5cb7b6"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Wed Dec 06 20:36:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:34 2006 -0800"
      },
      "message": "[PATCH] read_cache_pages() cleanup\n\nUse put_pages_list() instead of opencoding it.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "138ae6631a3d6f86851dd53686fa88295d1398bd",
      "tree": "72edbfcfdc0c5af53a9bc9ef5134ae8d90f13e88",
      "parents": [
        "20aa7b21b1cbd1aa3fbf5fc14da5f7484a61a824"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 06 20:36:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:34 2006 -0800"
      },
      "message": "[PATCH] slab: use probe_kernel_address()\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7dfb71030f7636a0d65200158113c37764552f93",
      "tree": "276b812903d377b16d8828e888552fd256f48aab",
      "parents": [
        "8a05aac2631aa0e6494d9dc990f8c68ed8b8fde7"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] Add include/linux/freezer.h and move definitions from sched.h\n\nMove process freezing functions from include/linux/sched.h to freezer.h, so\nthat modifications to the freezer or the kernel configuration don\u0027t require\nrecompiling just about everything.\n\n[akpm@osdl.org: fix ueagle driver]\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8357376d3df21b7d6f857931a57ac50da9c66e26",
      "tree": "daf2c369e9b79d24c1666323b3ae75189e482a4a",
      "parents": [
        "bf73bae6ba0dc4bd4f1e570feb34a06b72725af6"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] swsusp: Improve handling of highmem\n\nCurrently swsusp saves the contents of highmem pages by copying them to the\nnormal zone which is quite inefficient (eg.  it requires two normal pages\nto be used for saving one highmem page).  This may be improved by using\nhighmem for saving the contents of saveable highmem pages.\n\nNamely, during the suspend phase of the suspend-resume cycle we try to\nallocate as many free highmem pages as there are saveable highmem pages.\nIf there are not enough highmem image pages to store the contents of all of\nthe saveable highmem pages, some of them will be stored in the \"normal\"\nmemory.  Next, we allocate as many free \"normal\" pages as needed to store\nthe (remaining) image data.  We use a memory bitmap to mark the allocated\nfree pages (ie.  highmem as well as \"normal\" image pages).\n\nNow, we use another memory bitmap to mark all of the saveable pages\n(highmem as well as \"normal\") and the contents of the saveable pages are\ncopied into the image pages.  Then, the second bitmap is used to save the\npfns corresponding to the saveable pages and the first one is used to save\ntheir data.\n\nDuring the resume phase the pfns of the pages that were saveable during the\nsuspend are loaded from the image and used to mark the \"unsafe\" page\nframes.  Next, we try to allocate as many free highmem page frames as to\nload all of the image data that had been in the highmem before the suspend\nand we allocate so many free \"normal\" page frames that the total number of\nallocated free pages (highmem and \"normal\") is equal to the size of the\nimage.  While doing this we have to make sure that there will be some extra\nfree \"normal\" and \"safe\" page frames for two lists of PBEs constructed\nlater.\n\nNow, the image data are loaded, if possible, into their \"original\" page\nframes.  The image data that cannot be written into their \"original\" page\nframes are loaded into \"safe\" page frames and their \"original\" kernel\nvirtual addresses, as well as the addresses of the \"safe\" pages containing\ntheir copies, are stored in one of two lists of PBEs.\n\nOne list of PBEs is for the copies of \"normal\" suspend pages (ie.  \"normal\"\npages that were saveable during the suspend) and it is used in the same way\nas previously (ie.  by the architecture-dependent parts of swsusp).  The\nother list of PBEs is for the copies of highmem suspend pages.  The pages\nin this list are restored (in a reversible way) right before the\narch-dependent code is called.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3aef83e0ef1ffb8ea3bea97be46821a45c952173",
      "tree": "f73878eb2ecce804c9eea6fbb13603907b3674b4",
      "parents": [
        "3fc6b34f4803b959c1e30c15247e2180cd529115"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] swsusp: use block device offsets to identify swap locations\n\nMake swsusp use block device offsets instead of swap offsets to identify swap\nlocations and make it use the same code paths for writing as well as for\nreading data.\n\nThis allows us to use the same code for handling swap files and swap\npartitions and to simplify the code, eg.  by dropping rw_swap_page_sync().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "915bae9ebe41e52d71ad8b06d50e4ab26189f964",
      "tree": "daf0c9a370d3a551c1bb5beea69a3a0cfecd9885",
      "parents": [
        "3592695c363c3f3119621bdcf5ed852d6b9d1a5c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] swsusp: use partition device and offset to identify swap areas\n\nThe Linux kernel handles swap files almost in the same way as it handles swap\npartitions and there are only two differences between these two types of swap\nareas:\n\n(1) swap files need not be contiguous,\n\n(2) the header of a swap file is not in the first block of the partition\n    that holds it.  From the swsusp\u0027s point of view (1) is not a problem,\n    because it is already taken care of by the swap-handling code, but (2) has\n    to be taken into consideration.\n\nIn principle the location of a swap file\u0027s header may be determined with the\nhelp of appropriate filesystem driver.  Unfortunately, however, it requires\nthe filesystem holding the swap file to be mounted, and if this filesystem is\njournaled, it cannot be mounted during a resume from disk.  For this reason we\nneed some other means by which swap areas can be identified.\n\nFor example, to identify a swap area we can use the partition that holds the\narea and the offset from the beginning of this partition at which the swap\nheader is located.\n\nThe following patch allows swsusp to identify swap areas this way.  It changes\nswap_type_of() so that it takes an additional argument representing an offset\nof the swap header within the partition represented by its first argument.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7cf9c2c76c1a17b32f2da85b50cd4fe468ed44b5",
      "tree": "c3ed3e92e21f19ef744c9ea6829f4ff8d06e9f14",
      "parents": [
        "36de6437866bbb1d37e2312ff4f95ee4ed6d2b61"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:33:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] radix-tree: RCU lockless readside\n\nMake radix tree lookups safe to be performed without locks.  Readers are\nprotected against nodes being deleted by using RCU based freeing.  Readers\nare protected against new node insertion by using memory barriers to ensure\nthe node itself will be properly written before it is visible in the radix\ntree.\n\nEach radix tree node keeps a record of their height (above leaf nodes).\nThis height does not change after insertion -- when the radix tree is\nextended, higher nodes are only inserted in the top.  So a lookup can take\nthe pointer to what is *now* the root node, and traverse down it even if\nthe tree is concurrently extended and this node becomes a subtree of a new\nroot.\n\n\"Direct\" pointers (tree height of 0, where root-\u003ernode points directly to\nthe data item) are handled by using the low bit of the pointer to signal\nwhether rnode is a direct pointer or a pointer to a radix tree node.\n\nWhen a reader wants to traverse the next branch, they will take a copy of\nthe pointer.  This pointer will be either NULL (and the branch is empty) or\nnon-NULL (and will point to a valid node).\n\n[akpm@osdl.org: cleanups]\n[Lee.Schermerhorn@hp.com: bugfixes, comments, simplifications]\n[clameter@sgi.com: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33f2ef89f8e181486b63fdbdc97c6afa6ca9f34b",
      "tree": "b90eac24ff367bc628c44eaa51a9f0ea1b69d1a4",
      "parents": [
        "3c517a6132098ca37e122a2980fc64a9e798b0d7"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] mm: make compound page destructor handling explicit\n\nCurrently we we use the lru head link of the second page of a compound page\nto hold its destructor.  This was ok when it was purely an internal\nimplmentation detail.  However, hugetlbfs overrides this destructor\nviolating the layering.  Abstract this out as explicit calls, also\nintroduce a type for the callback function allowing them to be type\nchecked.  For each callback we pre-declare the function, causing a type\nerror on definition rather than on use elsewhere.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3c517a6132098ca37e122a2980fc64a9e798b0d7",
      "tree": "e8fa49ef3f873624c0f5d29b34fdc8684988b426",
      "parents": [
        "952f3b51beb592f3f1de15adcdef802fc086ea91"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: better fallback allocation behavior\n\nCurrently we simply attempt to allocate from all allowed nodes using\nGFP_THISNODE.  However, GFP_THISNODE does not do reclaim (it wont do any at\nall if the recent GFP_THISNODE patch is accepted).  If we truly run out of\nmemory in the whole system then fallback_alloc may return NULL although\nmemory may still be available if we would perform more thorough reclaim.\n\nThis patch changes fallback_alloc() so that we first only inspect all the\nper node queues for available slabs.  If we find any then we allocate from\nthose.  This avoids slab fragmentation by first getting rid of all partial\nallocated slabs on every node before allocating new memory.\n\nIf we cannot satisfy the allocation from any per node queue then we extend\na slab.  We now call into the page allocator without specifying\nGFP_THISNODE.  The page allocator will then implement its own fallback (in\nthe given cpuset context), perform necessary reclaim (again considering not\na single node but the whole set of allowed nodes) and then return pages for\na new slab.\n\nWe identify from which node the pages were allocated and then insert the\npages into the corresponding per node structure.  In order to do so we need\nto modify cache_grow() to take a parameter that specifies the new slab.\nkmem_getpages() can no longer set the GFP_THISNODE flag since we need to be\nable to use kmem_getpage to allocate from an arbitrary node.  GFP_THISNODE\nneeds to be specified when calling cache_grow().\n\nOne key advantage is that the decision from which node to allocate new\nmemory is removed from slab fallback processing.  The patch allows to go\nback to use of the page allocators fallback/reclaim logic.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "952f3b51beb592f3f1de15adcdef802fc086ea91",
      "tree": "45d9b240230494d3d985400f81f963b67db1e788",
      "parents": [
        "5bcd234d881d83ac0259c6d42d98f134e31c60a8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] GFP_THISNODE must not trigger global reclaim\n\nThe intent of GFP_THISNODE is to make sure that an allocation occurs on a\nparticular node.  If this is not possible then NULL needs to be returned so\nthat the caller can choose what to do next on its own (the slab allocator\ndepends on that).\n\nHowever, GFP_THISNODE currently triggers reclaim before returning a failure\n(GFP_THISNODE means GFP_NORETRY is set).  If we have over allocated a node\nthen we will currently do some reclaim before returning NULL.  The caller\nmay want memory from other nodes before reclaim should be triggered.  (If\nthe caller wants reclaim then he can directly use __GFP_THISNODE instead).\n\nThere is no flag to avoid reclaim in the page allocator and adding yet\nanother GFP_xx flag would be difficult given that we are out of available\nflags.\n\nSo just compare and see if all bits for GFP_THISNODE (__GFP_THISNODE,\n__GFP_NORETRY and __GFP_NOWARN) are set.  If so then we return NULL before\nwaking up kswapd.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5bcd234d881d83ac0259c6d42d98f134e31c60a8",
      "tree": "40d58218ce224200336c449ba035bcb6ec119d89",
      "parents": [
        "1b1cec4bbc59feac89670d5d6d222a02545bac94"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: fix two issues in kmalloc_node / __cache_alloc_node\n\nThis addresses two issues:\n\n1. Kmalloc_node() may intermittently return NULL if we are allocating\n   from the current node and are unable to obtain memory for the current\n   node from the page allocator.  This is because we call ___cache_alloc()\n   if nodeid \u003d\u003d numa_node_id() and ____cache_alloc is not able to fallback\n   to other nodes.\n\n   This was introduced in the 2.6.19 development cycle.  \u003c\u003d 2.6.18 in\n   that case does not do a restricted allocation and blindly trusts the\n   page allocator to have given us memory from the indicated node.  It\n   inserts the page regardless of the node it came from into the queues for\n   the current node.\n\n2. If kmalloc_node() is used on a node that has not been bootstrapped\n   yet then we may try to pass an invalid node number to\n   ____cache_alloc_node() triggering a BUG().\n\n   Change the function to call fallback_alloc() instead.  Only call\n   fallback_alloc() if we are allowed to fallback at all.  The need to\n   handle a node not bootstrapped yet also first surfaced in the 2.6.19\n   cycle.\n\nUpdate the comments since they were still describing the old kmalloc_node\nfrom 2.6.12.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "441e143e95f5aa1e04026cb0aa71c801ba53982f",
      "tree": "884855ea1fdaa65ebc885ffebc65ee3a26f8a78f",
      "parents": [
        "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:19 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_DMA\n\nSLAB_DMA is an alias of GFP_DMA. This is the last one so we\nremove the leftover comment too.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a06d72c1dcbff015250df6ad9f0b1d18c02113bf",
      "tree": "e3284c3fa53817481c05a1cf8033f85ad6c6a26b",
      "parents": [
        "6e0eaa4b05cf53ca5caa702fd2760a5b3376be69"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_LEVEL_MASK\n\nSLAB_LEVEL_MASK is only used internally to the slab and is\nand alias of GFP_LEVEL_MASK.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6e0eaa4b05cf53ca5caa702fd2760a5b3376be69",
      "tree": "f79ade4f91bf4b5c9fd5ec9605ac925740b9a8a6",
      "parents": [
        "2d4d862f729f0cb1ad8027203aceff49dc9f63fa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_NO_GROW\n\nIt is only used internally in the slab.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2d4d862f729f0cb1ad8027203aceff49dc9f63fa",
      "tree": "e081c175e65efee2e0bf239a215cceeeb8b8a26b",
      "parents": [
        "ce421c799b5bde77aa60776d6fb61036ae0aea11"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Dec 06 20:33:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] kill install_file_pte\u0027s pte_val\n\nDavid Binderman and his Intel C compiler rightly observe that\ninstall_file_pte no longer has any use for its pte_val.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: d binderman \u003cdcb314@hotmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce421c799b5bde77aa60776d6fb61036ae0aea11",
      "tree": "98e0a52cdafdfa28c986991f57854209e68b8226",
      "parents": [
        "5d1854e15ee979f8e27330f0d3ce5e2703afa1dc"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] mm: cleanup indentation on switch for CPU operations\n\nThese patches introduced new switch statements which are indented contrary\nto the concensus in mm/*.c.  Fix them up to match that concensus.\n\n    [PATCH] node local per-cpu-pages\n    [PATCH] ZVC: Scale thresholds depending on the size of the system\n    commit e7c8d5c9955a4d2e88e36b640563f5d6d5aba48a\n    commit df9ecaba3f152d1ea79f2a5e0b87505e03f47590\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5d1854e15ee979f8e27330f0d3ce5e2703afa1dc",
      "tree": "8aff9641966020284218f2cdd75fd3b7bfc2babc",
      "parents": [
        "4af2bfc1202041006a0f01d0591a975f6c573f09"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Dec 06 20:33:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] reject corrupt swapfiles earlier\n\nThe fsfuzzer found this; with a corrupt small swapfile that claims to have\nmany pages:\n\n  [root]# file swap.741.img\n  swap.741.img: Linux/i386 swap file (new style) 1 (4K pages) size 1040191487 pages\n  [root]# ls -l swap.741.img\n  -rw-r--r-- 1 root root 16777216 Nov 22 05:18 swap.741.img\n\nsys_swapon() will try to vmalloc all those pages, and -then- check to see if\nthe file is actually that large:\n\n                if (!(p-\u003eswap_map \u003d vmalloc(maxpages * sizeof(short)))) {\n  \u003csnip\u003e\n        if (swapfilesize \u0026\u0026 maxpages \u003e swapfilesize) {\n                printk(KERN_WARNING\n                       \"Swap area shorter than signature indicates\\n\");\n\nIt seems to me that it would make more sense to move this test up before\nthe vmalloc, with the other checks, to avoid the OOM-killer in this\nsituation...\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "25ba77c141dbcd2602dd0171824d0d72aa023a01",
      "tree": "153eb9bc567f63d739dcaf8a3caf11c8f48b8379",
      "parents": [
        "bc4ba393c007248f76c05945abb7b7b892cdd1cc"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] numa node ids are int, page_to_nid and zone_to_nid should return int\n\nNUMA node ids are passed as either int or unsigned int almost exclusivly\npage_to_nid and zone_to_nid both return unsigned long.  This is a throw\nback to when page_to_nid was a #define and was thus exposing the real type\nof the page flags field.\n\nIn addition to fixing up the definitions of page_to_nid and zone_to_nid I\naudited the users of these functions identifying the following incorrect\nuses:\n\n1) mm/page_alloc.c show_node() -- printk dumping the node id,\n2) include/asm-ia64/pgalloc.h pgtable_quicklist_free() -- comparison\n   against numa_node_id() which returns an int from cpu_to_node(), and\n3) mm/mpolicy.c check_pte_range -- used as an index in node_isset which\n   uses bit_set which in generic code takes an int.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bc4ba393c007248f76c05945abb7b7b892cdd1cc",
      "tree": "3c2cf7e13ecf991c58ffc00617757fcdeb3d863f",
      "parents": [
        "ebe29738f3934ad6a93c8bd76e30aa5d797a269d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] drain_node_page(): Drain pages in batch units\n\ndrain_node_pages() currently drains the complete pageset of all pages.  If\nthere are a large number of pages in the queues then we may hold off\ninterrupts for too long.\n\nDuplicate the method used in free_hot_cold_page.  Only drain pcp-\u003ebatch\npages at one time.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e30500557eca09ddd340806ce44abf84d9115ab1",
      "tree": "2745f903ea3a0f6f85d78a8f296fc4a22dcb5120",
      "parents": [
        "7c309a64d6afa90a0a07813c836ba480aeaeca8c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:32:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] make mm/thrash.c:global_faults static\n\nThis patch makes the needlessly global \"global_faults\" static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c309a64d6afa90a0a07813c836ba480aeaeca8c",
      "tree": "a56b235fa35c2e528752071df2a6e21a25a4e8f6",
      "parents": [
        "a120586873d3d64de93bd6d593d237e131994e58"
      ],
      "author": {
        "name": "Christian Krafft",
        "email": "krafft@de.ibm.com",
        "time": "Wed Dec 06 20:32:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] enable booting a NUMA system where some nodes have no memory\n\nWhen booting a NUMA system with nodes that have no memory (eg by limiting\nmemory), bootmem_alloc_core tried to find pages in an uninitialized\nbootmem_map.  This caused a null pointer access.  This fix adds a check, so\nthat NULL is returned.  That will enable the caller (bootmem_alloc_nopanic)\nto alloc memory on other without a panic.\n\nSigned-off-by: Christian Krafft \u003ckrafft@de.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a120586873d3d64de93bd6d593d237e131994e58",
      "tree": "ae284884e23268e867f748a2ab52353cf2390e89",
      "parents": [
        "b30973f877fea1a3fb84e05599890fcc082a88e5"
      ],
      "author": {
        "name": "Alan Stern",
        "email": "stern@rowland.harvard.edu",
        "time": "Wed Dec 06 20:32:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] Allow NULL pointers in percpu_free\n\nThe patch (as824b) makes percpu_free() ignore NULL arguments, as one would\nexpect for a deallocation routine.  (Note that free_percpu is #defined as\npercpu_free in include/linux/percpu.h.) A few callers are updated to remove\nnow-unneeded tests for NULL.  A few other callers already seem to assume\nthat passing a NULL pointer to percpu_free() is okay!\n\nThe patch also removes an unnecessary NULL check in percpu_depopulate().\n\nSigned-off-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8b98c1699eba23cfd2e8b366625c50ff5fd1415b",
      "tree": "24462eaefeb4e2fa85e77d392a94a60316ad2349",
      "parents": [
        "881e4aabe4c6b3fce93674b67c6adc646fe2683b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Dec 06 20:32:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] leak tracking for kmalloc_node\n\nWe have variants of kmalloc and kmem_cache_alloc that leave leak tracking to\nthe caller.  This is used for subsystem-specific allocators like skb_alloc.\n\nTo make skb_alloc node-aware we need similar routines for the node-aware slab\nallocator, which this patch adds.\n\nNote that the code is rather ugly, but it mirrors the non-node-aware code 1:1:\n\n[akpm@osdl.org: add module export]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "881e4aabe4c6b3fce93674b67c6adc646fe2683b",
      "tree": "f5e429c01ca20c8bb8bd300e33013f056516b131",
      "parents": [
        "b43a57bb4dae72e8f7232e7c821a8799eda30022"
      ],
      "author": {
        "name": "Suleiman Souhlal",
        "email": "ssouhlal@FreeBSD.org",
        "time": "Wed Dec 06 20:32:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] Always print out the header line in /proc/swaps\n\nIt would be possible for /proc/swaps to not always print out the header:\n\nswapon /dev/hdc2\nswapon /dev/hde2\nswapoff /dev/hdc2\n\nAt this point /proc/swaps would not have a header.\n\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b43a57bb4dae72e8f7232e7c821a8799eda30022",
      "tree": "4293286b44c8b11bac6a03c4ddfe75aea40aa089",
      "parents": [
        "a3eea484f7a1aadb70ed6665338026a09ad6ce85"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Wed Dec 06 20:32:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] OOM can panic due to processes stuck in __alloc_pages()\n\nOOM can panic due to the processes stuck in __alloc_pages() doing infinite\nrebalance loop while no memory can be reclaimed.  OOM killer tries to kill\nsome processes, but unfortunetaly, rebalance label was moved by someone\nbelow the TIF_MEMDIE check, so buddy allocator doesn\u0027t see that process is\nOOM-killed and it can simply fail the allocation :/\n\nObserved in reality on RHEL4(2.6.9)+OpenVZ kernel when a user doing some\nmemory allocation tricks triggered OOM panic.\n\nSigned-off-by: Denis Lunev \u003cden@sw.ru\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a3eea484f7a1aadb70ed6665338026a09ad6ce85",
      "tree": "95bf0a3d1bc65d00b4cb26e5cf2a419f13ac5814",
      "parents": [
        "8fb4fc68ca391862b061b3d358a288ccf6abed39"
      ],
      "author": {
        "name": "Rik Bobbaers",
        "email": "Rik.Bobbaers@cc.kuleuven.be",
        "time": "Wed Dec 06 20:32:25 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] mlock cleanup\n\nmm is defined as vma-\u003evm_mm, so use that.\n\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3395ee0588795b0b3bd889c260e55959cf2b61f5",
      "tree": "ea2513a28464a5b2907a9cb71cbfb6be88389205",
      "parents": [
        "8f5be20bf87da7c7c59c5cc84f630a1eca5cc99c"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Wed Dec 06 20:32:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] mm: add noaliencache boot option to disable numa alien caches\n\nWhen using numa\u003dfake on non-NUMA hardware there is no benefit to having the\nalien caches, and they consume much memory.\n\nAdd a kernel boot option to disable them.\n\nChristoph sayeth \"This is good to have even on large NUMA.  The problem is\nthat the alien caches grow by the square of the size of the system in terms of\nnodes.\"\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8f5be20bf87da7c7c59c5cc84f630a1eca5cc99c",
      "tree": "0fc18e33fa1b43543837e99a0f09c77f686f327b",
      "parents": [
        "a44b56d354b49f9abb184e5a14f71889856283bb"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Wed Dec 06 20:32:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] mm: slab: eliminate lock_cpu_hotplug from slab\n\nHere\u0027s an attempt towards doing away with lock_cpu_hotplug in the slab\nsubsystem.  This approach also fixes a bug which shows up when cpus are\nbeing offlined/onlined and slab caches are being tuned simultaneously.\n\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d116098888100481\u0026w\u003d2\n\nThe patch has been stress tested overnight on a 2 socket 4 core AMD box with\nrepeated cpu online and offline, while dbench and kernbench process are\nrunning, and slab caches being tuned at the same time.\nThere were no lockdep warnings either.  (This test on 2,6.18 as 2.6.19-rc\ncrashes at __drain_pages\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d116172164217678\u0026w\u003d2 )\n\nThe approach here is to hold cache_chain_mutex from CPU_UP_PREPARE until\nCPU_ONLINE (similar in approach as worqueue_mutex) .  Slab code sensitive\nto cpu_online_map (kmem_cache_create, kmem_cache_destroy, slabinfo_write,\n__cache_shrink) is already serialized with cache_chain_mutex.  (This patch\nlengthens cache_chain_mutex hold time at kmem_cache_destroy to cover this).\n This patch also takes the cache_chain_sem at kmem_cache_shrink to protect\nsanity of cpu_online_map at __cache_shrink, as viewed by slab.\n(kmem_cache_shrink-\u003e__cache_shrink-\u003edrain_cpu_caches).  But, really,\nkmem_cache_shrink is used at just one place in the acpi subsystem!  Do we\nreally need to keep kmem_cache_shrink at all?\n\nAnother note.  Looks like a cpu hotplug event can send  CPU_UP_CANCELED to\na registered subsystem even if the subsystem did not receive CPU_UP_PREPARE.\nThis could be due to a subsystem registered for notification earlier than\nthe current subsystem crapping out with NOTIFY_BAD. Badness can occur with\nin the CPU_UP_CANCELED code path at slab if this happens (The same would\napply for workqueue.c as well).  To overcome this, we might have to use either\na) a per subsystem flag and avoid handling of CPU_UP_CANCELED, or\nb) Use a special notifier events like LOCK_ACQUIRE/RELEASE as Gautham was\n   using in his experiments, or\nc) Do not send CPU_UP_CANCELED to a subsystem which did not receive\n   CPU_UP_PREPARE.\n\nI would prefer c).\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nSigned-off-by: Shai Fultheim \u003cshai@scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a44b56d354b49f9abb184e5a14f71889856283bb",
      "tree": "36eced3b179038a70463645395e6b31f3a5cc74c",
      "parents": [
        "cace673d376d97b0c66ffa0a49b8d588a696d5d2"
      ],
      "author": {
        "name": "Kevin Hilman",
        "email": "khilman@mvista.com",
        "time": "Wed Dec 06 20:32:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] slab debug and ARCH_SLAB_MINALIGN don\u0027t get along\n\nWhen CONFIG_SLAB_DEBUG is used in combination with ARCH_SLAB_MINALIGN, some\ndebug flags should be disabled which depend on BYTES_PER_WORD alignment.\n\nThe disabling of these debug flags is not properly handled when\nBYTES_PER_WORD \u003c ARCH_SLAB_MEMALIGN \u003c cache_line_size()\n\nThis patch fixes that and also adds an alignment check to\ncache_alloc_debugcheck_after() when ARCH_SLAB_MINALIGN is used.\n\nSigned-off-by: Kevin Hilman \u003ckhilman@mvista.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Manfred Spraul \u003cmanfred@colorfullife.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cace673d376d97b0c66ffa0a49b8d588a696d5d2",
      "tree": "c85c2ad65ad10132f00b484e91c8bfcd6e3f1afc",
      "parents": [
        "39dde65c9940c97fcd178a3d2b1c57ed8b7b68aa"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:32:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] htlb forget rss with pt sharing\n\nImprecise RSS accounting is an irritating ill effect with pt sharing.  After\nconsulted with several VM experts, I have tried various methods to solve that\nproblem: (1) iterate through all mm_structs that share the PT and increment\ncount; (2) keep RSS count in page table structure and then sum them up at\nreporting time.  None of the above methods yield any satisfactory\nimplementation.\n\nSince process RSS accounting is pure information only, I propose we don\u0027t\ncount them at all for hugetlb page.  rlimit has such field, though there is\nabsolutely no enforcement on limiting that resource.  One other method is to\naccount all RSS at hugetlb mmap time regardless they are faulted or not.  I\nopt for the simplicity of no accounting at all.\n\nHugetlb page are special, they are reserved up front in global reservation\npool and is not reclaimable.  From physical memory resource point of view, it\nis already consumed regardless whether there are users using them.\n\nIf the concern is that RSS can be used to control resource allocation, we\nalready can specify hugetlb fs size limit and sysadmin can enforce that at\nmount time.  Combined with the two points mentioned above, I fail to see if\nthere is anything got affected because of this patch.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Dave McCracken \u003cdmccr@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "39dde65c9940c97fcd178a3d2b1c57ed8b7b68aa",
      "tree": "750818d68ac7381f80fec31491e1d1c78df4b9f6",
      "parents": [
        "e1dbeda60a7ea9e82a908d93c07308d104d50d79"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:32:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] shared page table for hugetlb page\n\nFollowing up with the work on shared page table done by Dave McCracken.  This\nset of patch target shared page table for hugetlb memory only.\n\nThe shared page table is particular useful in the situation of large number of\nindependent processes sharing large shared memory segments.  In the normal\npage case, the amount of memory saved from process\u0027 page table is quite\nsignificant.  For hugetlb, the saving on page table memory is not the primary\nobjective (as hugetlb itself already cuts down page table overhead\nsignificantly), instead, the purpose of using shared page table on hugetlb is\nto allow faster TLB refill and smaller cache pollution upon TLB miss.\n\nWith PT sharing, pte entries are shared among hundreds of processes, the cache\nconsumption used by all the page table is smaller and in return, application\ngets much higher cache hit ratio.  One other effect is that cache hit ratio\nwith hardware page walker hitting on pte in cache will be higher and this\nhelps to reduce tlb miss latency.  These two effects contribute to higher\napplication performance.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Dave McCracken \u003cdmccr@us.ibm.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e1dbeda60a7ea9e82a908d93c07308d104d50d79",
      "tree": "f83d342064a72336bf37fb6bb8bdf5fc9fc47c10",
      "parents": [
        "cc102509074bba0316f2b5deebd7ef4447da295e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 06 20:32:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] balance_pdgat() cleanup\n\nDespaghettify balance_pdgat() a bit.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cc102509074bba0316f2b5deebd7ef4447da295e",
      "tree": "44ac5fc0c0dd7a24e8925e680a03361f4722a5a6",
      "parents": [
        "7602bdf2fd14a40dd9b104e516fdc05e1bd17952"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:32:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] mm: add arch_alloc_page\n\nAdd an arch_alloc_page to match arch_free_page.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7602bdf2fd14a40dd9b104e516fdc05e1bd17952",
      "tree": "5ca703b0a95f6f2e6d977c816532b9085f453974",
      "parents": [
        "098fe651f7e9d759d1117c78c1a642b9b3945922"
      ],
      "author": {
        "name": "Ashwin Chaugule",
        "email": "ashwin.chaugule@celunite.com",
        "time": "Wed Dec 06 20:31:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] new scheme to preempt swap token\n\nThe new swap token patches replace the current token traversal algo.  The old\nalgo had a crude timeout parameter that was used to handover the token from\none task to another.  This algo, transfers the token to the tasks that are in\nneed of the token.  The urgency for the token is based on the number of times\na task is required to swap-in pages.  Accordingly, the priority of a task is\nincremented if it has been badly affected due to swap-outs.  To ensure that\nthe token doesnt bounce around rapidly, the token holders are given a priority\nboost.  The priority of tasks is also decremented, if their rate of swap-in\u0027s\nkeeps reducing.  This way, the condition to check whether to pre-empt the swap\ntoken, is a matter of comparing two task\u0027s priority fields.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Ashwin Chaugule \u003cashwin.chaugule@celunite.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "098fe651f7e9d759d1117c78c1a642b9b3945922",
      "tree": "8688e367d04c8341e79d9da775dccb9dc7747509",
      "parents": [
        "cd54e7e54318d333227b13186f9a464bf1f68d27"
      ],
      "author": {
        "name": "Ashwin Chaugule",
        "email": "ashwin.chaugule@celunite.com",
        "time": "Wed Dec 06 20:31:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:21 2006 -0800"
      },
      "message": "[PATCH] grab swap token reordered\n\nMake sure the contention for the token happens _before_ any read-in and\nkicks the swap-token algo only when the VM is under pressure.\n\nSigned-off-by: Ashwin Chaugule \u003cashwin.chaugule@celunite.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f2a2a7108aa0039ba7a5fe7a0d2ecef2219a7584",
      "tree": "a82338b774d680ca410830e94c1125fa3b9b693d",
      "parents": [
        "f3af38d30c18538d069a95e624a3db7c3d486a1e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:31:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] oom: less memdie\n\nDon\u0027t cause all threads in all other thread groups to gain TIF_MEMDIE\notherwise we\u0027ll get a thundering herd eating our memory reserve.  This may not\nbe the optimal scheme, but it fits our policy of allowing just one TIF_MEMDIE\nin the system at once.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f3af38d30c18538d069a95e624a3db7c3d486a1e",
      "tree": "549bb2246a2932727285f962f405d6e0c49ecdf8",
      "parents": [
        "c33e0fca3508f0aa387b1c10d0ef158102deb140"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:31:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] oom: cleanup messages\n\nClean up the OOM killer messages to be more consistent.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c33e0fca3508f0aa387b1c10d0ef158102deb140",
      "tree": "d4dbbddbcd7cdf605dc5c0c97088789c7e10f4b4",
      "parents": [
        "7253f4ef04b1cd138baf2b29a95473743ac0a307"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Dec 06 20:31:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] oom: don\u0027t kill unkillable children or siblings\n\nAbort the kill if any of our threads have OOM_DISABLE set.  Having this\ntest here also prevents any OOM_DISABLE child of the \"selected\" process\nfrom being killed.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9276b1bc96a132f4068fdee00983c532f43d3a26",
      "tree": "04d64444cf6558632cfc7514b5437578b5e616af",
      "parents": [
        "89689ae7f95995723fbcd5c116c47933a3bb8b13"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 06 20:31:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] memory page_alloc zonelist caching speedup\n\nOptimize the critical zonelist scanning for free pages in the kernel memory\nallocator by caching the zones that were found to be full recently, and\nskipping them.\n\nRemembers the zones in a zonelist that were short of free memory in the\nlast second.  And it stashes a zone-to-node table in the zonelist struct,\nto optimize that conversion (minimize its cache footprint.)\n\nRecent changes:\n\n    This differs in a significant way from a similar patch that I\n    posted a week ago.  Now, instead of having a nodemask_t of\n    recently full nodes, I have a bitmask of recently full zones.\n    This solves a problem that last weeks patch had, which on\n    systems with multiple zones per node (such as DMA zone) would\n    take seeing any of these zones full as meaning that all zones\n    on that node were full.\n\n    Also I changed names - from \"zonelist faster\" to \"zonelist cache\",\n    as that seemed to better convey what we\u0027re doing here - caching\n    some of the key zonelist state (for faster access.)\n\n    See below for some performance benchmark results.  After all that\n    discussion with David on why I didn\u0027t need them, I went and got\n    some ;).  I wanted to verify that I had not hurt the normal case\n    of memory allocation noticeably.  At least for my one little\n    microbenchmark, I found (1) the normal case wasn\u0027t affected, and\n    (2) workloads that forced scanning across multiple nodes for\n    memory improved up to 10% fewer System CPU cycles and lower\n    elapsed clock time (\u0027sys\u0027 and \u0027real\u0027).  Good.  See details, below.\n\n    I didn\u0027t have the logic in get_page_from_freelist() for various\n    full nodes and zone reclaim failures correct.  That should be\n    fixed up now - notice the new goto labels zonelist_scan,\n    this_zone_full, and try_next_zone, in get_page_from_freelist().\n\nThere are two reasons I persued this alternative, over some earlier\nproposals that would have focused on optimizing the fake numa\nemulation case by caching the last useful zone:\n\n 1) Contrary to what I said before, we (SGI, on large ia64 sn2 systems)\n    have seen real customer loads where the cost to scan the zonelist\n    was a problem, due to many nodes being full of memory before\n    we got to a node we could use.  Or at least, I think we have.\n    This was related to me by another engineer, based on experiences\n    from some time past.  So this is not guaranteed.  Most likely, though.\n\n    The following approach should help such real numa systems just as\n    much as it helps fake numa systems, or any combination thereof.\n\n 2) The effort to distinguish fake from real numa, using node_distance,\n    so that we could cache a fake numa node and optimize choosing\n    it over equivalent distance fake nodes, while continuing to\n    properly scan all real nodes in distance order, was going to\n    require a nasty blob of zonelist and node distance munging.\n\n    The following approach has no new dependency on node distances or\n    zone sorting.\n\nSee comment in the patch below for a description of what it actually does.\n\nTechnical details of note (or controversy):\n\n - See the use of \"zlc_active\" and \"did_zlc_setup\" below, to delay\n   adding any work for this new mechanism until we\u0027ve looked at the\n   first zone in zonelist.  I figured the odds of the first zone\n   having the memory we needed were high enough that we should just\n   look there, first, then get fancy only if we need to keep looking.\n\n - Some odd hackery was needed to add items to struct zonelist, while\n   not tripping up the custom zonelists built by the mm/mempolicy.c\n   code for MPOL_BIND.  My usual wordy comments below explain this.\n   Search for \"MPOL_BIND\".\n\n - Some per-node data in the struct zonelist is now modified frequently,\n   with no locking.  Multiple CPU cores on a node could hit and mangle\n   this data.  The theory is that this is just performance hint data,\n   and the memory allocator will work just fine despite any such mangling.\n   The fields at risk are the struct \u0027zonelist_cache\u0027 fields \u0027fullzones\u0027\n   (a bitmask) and \u0027last_full_zap\u0027 (unsigned long jiffies).  It should\n   all be self correcting after at most a one second delay.\n\n - This still does a linear scan of the same lengths as before.  All\n   I\u0027ve optimized is making the scan faster, not algorithmically\n   shorter.  It is now able to scan a compact array of \u0027unsigned\n   short\u0027 in the case of many full nodes, so one cache line should\n   cover quite a few nodes, rather than each node hitting another\n   one or two new and distinct cache lines.\n\n - If both Andi and Nick don\u0027t find this too complicated, I will be\n   (pleasantly) flabbergasted.\n\n - I removed the comment claiming we only use one cachline\u0027s worth of\n   zonelist.  We seem, at least in the fake numa case, to have put the\n   lie to that claim.\n\n - I pay no attention to the various watermarks and such in this performance\n   hint.  A node could be marked full for one watermark, and then skipped\n   over when searching for a page using a different watermark.  I think\n   that\u0027s actually quite ok, as it will tend to slightly increase the\n   spreading of memory over other nodes, away from a memory stressed node.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance - some benchmark results and analysis:\n\nThis benchmark runs a memory hog program that uses multiple\nthreads to touch alot of memory as quickly as it can.\n\nMultiple runs were made, touching 12, 38, 64 or 90 GBytes out of\nthe total 96 GBytes on the system, and using 1, 19, 37, or 55\nthreads (on a 56 CPU system.)  System, user and real (elapsed)\ntimings were recorded for each run, shown in units of seconds,\nin the table below.\n\nTwo kernels were tested - 2.6.18-mm3 and the same kernel with\nthis zonelist caching patch added.  The table also shows the\npercentage improvement the zonelist caching sys time is over\n(lower than) the stock *-mm kernel.\n\n      number     2.6.18-mm3\t   zonelist-cache    delta (\u003c 0 good)\tpercent\n GBs    N  \t------------\t   --------------    ----------------\tsystime\n mem threads   sys user  real\t  sys  user  real     sys  user  real\t better\n  12\t 1     153   24   177\t  151\t 24   176      -2     0    -1\t   1%\n  12\t19\t99   22     8\t   99\t 22\t8\t0     0     0\t   0%\n  12\t37     111   25     6\t  112\t 25\t6\t1     0     0\t  -0%\n  12\t55     115   25     5\t  110\t 23\t5      -5    -2     0\t   4%\n  38\t 1     502   74   576\t  497\t 73   570      -5    -1    -6\t   0%\n  38\t19     426   78    48\t  373\t 76    39     -53    -2    -9\t  12%\n  38\t37     544   83    36\t  547\t 82    36\t3    -1     0\t  -0%\n  38\t55     501   77    23\t  511\t 80    24      10     3     1\t  -1%\n  64\t 1     917  125  1042\t  890\t124  1014     -27    -1   -28\t   2%\n  64\t19    1118  138   119\t  965\t141   103    -153     3   -16\t  13%\n  64\t37    1202  151    94\t 1136\t150    81     -66    -1   -13\t   5%\n  64\t55    1118  141    61\t 1072\t140    58     -46    -1    -3\t   4%\n  90\t 1    1342  177  1519\t 1275\t174  1450     -67    -3   -69\t   4%\n  90\t19    2392  199   192\t 2116\t189   176    -276   -10   -16\t  11%\n  90\t37    3313  238   175\t 2972\t225   145    -341   -13   -30\t  10%\n  90\t55    1948  210   104\t 1843\t213   100    -105     3    -4\t   5%\n\nNotes:\n 1) This test ran a memory hog program that started a specified number N of\n    threads, and had each thread allocate and touch 1/N\u0027th of\n    the total memory to be used in the test run in a single loop,\n    writing a constant word to memory, one store every 4096 bytes.\n    Watching this test during some earlier trial runs, I would see\n    each of these threads sit down on one CPU and stay there, for\n    the remainder of the pass, a different CPU for each thread.\n\n 2) The \u0027real\u0027 column is not comparable to the \u0027sys\u0027 or \u0027user\u0027 columns.\n    The \u0027real\u0027 column is seconds wall clock time elapsed, from beginning\n    to end of that test pass.  The \u0027sys\u0027 and \u0027user\u0027 columns are total\n    CPU seconds spent on that test pass.  For a 19 thread test run,\n    for example, the sum of \u0027sys\u0027 and \u0027user\u0027 could be up to 19 times the\n    number of \u0027real\u0027 elapsed wall clock seconds.\n\n 3) Tests were run on a fresh, single-user boot, to minimize the amount\n    of memory already in use at the start of the test, and to minimize\n    the amount of background activity that might interfere.\n\n 4) Tests were done on a 56 CPU, 28 Node system with 96 GBytes of RAM.\n\n 5) Notice that the \u0027real\u0027 time gets large for the single thread runs, even\n    though the measured \u0027sys\u0027 and \u0027user\u0027 times are modest.  I\u0027m not sure what\n    that means - probably something to do with it being slow for one thread to\n    be accessing memory along ways away.  Perhaps the fake numa system, running\n    ostensibly the same workload, would not show this substantial degradation\n    of \u0027real\u0027 time for one thread on many nodes -- lets hope not.\n\n 6) The high thread count passes (one thread per CPU - on 55 of 56 CPUs)\n    ran quite efficiently, as one might expect.  Each pair of threads needed\n    to allocate and touch the memory on the node the two threads shared, a\n    pleasantly parallizable workload.\n\n 7) The intermediate thread count passes, when asking for alot of memory forcing\n    them to go to a few neighboring nodes, improved the most with this zonelist\n    caching patch.\n\nConclusions:\n * This zonelist cache patch probably makes little difference one way or the\n   other for most workloads on real numa hardware, if those workloads avoid\n   heavy off node allocations.\n * For memory intensive workloads requiring substantial off-node allocations\n   on real numa hardware, this patch improves both kernel and elapsed timings\n   up to ten per-cent.\n * For fake numa systems, I\u0027m optimistic, but will have to leave that up to\n   Rohit Seth to actually test (once I get him a 2.6.18 backport.)\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Rohit Seth \u003crohitseth@google.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: David Rientjes \u003crientjes@cs.washington.edu\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89689ae7f95995723fbcd5c116c47933a3bb8b13",
      "tree": "4d73ff59b557fa1a84c6064406ff101c76ff8adc",
      "parents": [
        "c0a499c2c42992cff097b38be29d2ba60d2fd99a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:31:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] Get rid of zone_table[]\n\nThe zone table is mostly not needed.  If we have a node in the page flags\nthen we can get to the zone via NODE_DATA() which is much more likely to be\nalready in the cpu cache.\n\nIn case of SMP and UP NODE_DATA() is a constant pointer which allows us to\naccess an exact replica of zonetable in the node_zones field.  In all of\nthe above cases there will be no need at all for the zone table.\n\nThe only remaining case is if in a NUMA system the node numbers do not fit\ninto the page flags.  In that case we make sparse generate a table that\nmaps sections to nodes and use that table to to figure out the node number.\n This table is sized to fit in a single cache line for the known 32 bit\nNUMA platform which makes it very likely that the information can be\nobtained without a cache miss.\n\nFor sparsemem the zone table seems to be have been fairly large based on\nthe maximum possible number of sections and the number of zones per node.\nThere is some memory saving by removing zone_table.  The main benefit is to\nreduce the cache foootprint of the VM from the frequent lookups of zones.\nPlus it simplifies the page allocator.\n\n[akpm@osdl.org: build fix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c0a499c2c42992cff097b38be29d2ba60d2fd99a",
      "tree": "e02e80f190eb6f4eedb2c991d92840137505f8f8",
      "parents": [
        "0798e5193cd70f6c867ec176d7730589f944c627"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Wed Dec 06 20:31:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] __unmap_hugepage_range(): add comment\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0798e5193cd70f6c867ec176d7730589f944c627",
      "tree": "abe3ada0b04080729418a0c301d8b55b4363b56e",
      "parents": [
        "a2ce774096110ccc5c02cbdc05897d005fcd3db8"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Dec 06 20:31:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:20 2006 -0800"
      },
      "message": "[PATCH] memory page alloc minor cleanups\n\n- s/freeliest/freelist/ spelling fix\n\n- Check for NULL *z zone seems useless - even if it could happen, so\n  what?  Perhaps we should have a check later on if we are faced with an\n  allocation request that is not allowed to fail - shouldn\u0027t that be a\n  serious kernel error, passing an empty zonelist with a mandate to not\n  fail?\n\n- Initializing \u0027z\u0027 to zonelist-\u003ezones can wait until after the first\n  get_page_from_freelist() fails; we only use \u0027z\u0027 in the wakeup_kswapd()\n  loop, so let\u0027s initialize \u0027z\u0027 there, in a \u0027for\u0027 loop.  Seems clearer.\n\n- Remove superfluous braces around a break\n\n- Fix a couple errant spaces\n\n- Adjust indentation on the cpuset_zone_allowed() check, to match the\n  lines just before it -- seems easier to read in this case.\n\n- Add another set of braces to the zone_watermark_ok logic\n\nFrom: Paul Jackson \u003cpj@sgi.com\u003e\n\n  Backout one item from a previous \"memory page_alloc minor cleanups\" patch.\n   Until and unless we are certain that no one can ever pass an empty zonelist\n  to __alloc_pages(), this check for an empty zonelist (or some BUG\n  equivalent) is essential.  The code in get_page_from_freelist() blow ups if\n  passed an empty zonelist.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "dd8856bda5f1308beb113281b248683992998a9e",
      "tree": "5dc35290cdbca32cbdecd93a76fa5b29075ac18c",
      "parents": [
        "f81cff0d4067e41fd7383d9c013cc82da7c169d2",
        "06328b4f7919e9d2169d45cadc5a37b828a78eda"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 06 08:01:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 06 08:01:37 2006 -0800"
      },
      "message": "Merge git://git.infradead.org/users/dhowells/workq-2.6\n\n* git://git.infradead.org/users/dhowells/workq-2.6:\n  Actually update the fixed up compile failures.\n  WorkQueue: Fix up arch-specific work items where possible\n  WorkStruct: make allyesconfig\n  WorkStruct: Pass the work_struct pointer instead of context data\n  WorkStruct: Merge the pending bit into the wq_data pointer\n  WorkStruct: Typedef the work function prototype\n  WorkStruct: Separate delayable and non-delayable events.\n"
    },
    {
      "commit": "f81cff0d4067e41fd7383d9c013cc82da7c169d2",
      "tree": "92c5c8a647e31be6b3e09dcce42ec261d43ad2f5",
      "parents": [
        "3363c9b0ed8f6b5a241d63018cad242ae458cdf9"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Wed Dec 06 12:02:59 2006 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 06 07:41:26 2006 -0800"
      },
      "message": "[PATCH] uclinux: fix mmap() of directory for nommu case\n\nI was playing with blackfin when i hit a neat bug ... doing an open() on a\ndirectory and then passing that fd to mmap() would cause the kernel to hang\n\nafter poking into the code a bit more, i found that\nmm/nommu.c:validate_mmap_request() checks the length and if it is 0, just\nreturns the address ... this is in stark contrast to mmu\u0027s\nmm/mmap.c:do_mmap_pgoff() where it returns -EINVAL for 0 length requests ...\ni then noticed that some other parts of the logic is out of date between the\ntwo funcs, so perhaps that\u0027s the easy fix ?\n\nSigned-off-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "9db73724453a9350e1c22dbe732d427e2939a5c9"
}
