)]}'
{
  "log": [
    {
      "commit": "72eb6a791459c87a0340318840bb3bd9252b627b",
      "tree": "3bfb8ad99f9c7e511f37f72d57b56a2cea06d753",
      "parents": [
        "23d69b09b78c4876e134f104a3814c30747c53f1",
        "55ee4ef30241a62b700f79517e6d5ef2ddbefa67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)\n  gameport: use this_cpu_read instead of lookup\n  x86: udelay: Use this_cpu_read to avoid address calculation\n  x86: Use this_cpu_inc_return for nmi counter\n  x86: Replace uses of current_cpu_data with this_cpu ops\n  x86: Use this_cpu_ops to optimize code\n  vmstat: User per cpu atomics to avoid interrupt disable / enable\n  irq_work: Use per cpu atomics instead of regular atomics\n  cpuops: Use cmpxchg for xchg to avoid lock semantics\n  x86: this_cpu_cmpxchg and this_cpu_xchg operations\n  percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support\n  percpu,x86: relocate this_cpu_add_return() and friends\n  connector: Use this_cpu operations\n  xen: Use this_cpu_inc_return\n  taskstats: Use this_cpu_ops\n  random: Use this_cpu_inc_return\n  fs: Use this_cpu_inc_return in buffer.c\n  highmem: Use this_cpu_xx_return() operations\n  vmstat: Use this_cpu_inc_return for vm statistics\n  x86: Support for this_cpu_add, sub, dec, inc_return\n  percpu: Generic support for this_cpu_add, sub, dec, inc_return\n  ...\n\nFixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}\nas per Tejun.\n"
    },
    {
      "commit": "23d69b09b78c4876e134f104a3814c30747c53f1",
      "tree": "40744de4f4126c21027ce537264524095e0e7979",
      "parents": [
        "e744070fd4ff9d3114277e52d77afa21579adce2",
        "569ff2de2e1c8ac67c8df3a7367d46d0d9460a35"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (33 commits)\n  usb: don\u0027t use flush_scheduled_work()\n  speedtch: don\u0027t abuse struct delayed_work\n  media/video: don\u0027t use flush_scheduled_work()\n  media/video: explicitly flush request_module work\n  ioc4: use static work_struct for ioc4_load_modules()\n  init: don\u0027t call flush_scheduled_work() from do_initcalls()\n  s390: don\u0027t use flush_scheduled_work()\n  rtc: don\u0027t use flush_scheduled_work()\n  mmc: update workqueue usages\n  mfd: update workqueue usages\n  dvb: don\u0027t use flush_scheduled_work()\n  leds-wm8350: don\u0027t use flush_scheduled_work()\n  mISDN: don\u0027t use flush_scheduled_work()\n  macintosh/ams: don\u0027t use flush_scheduled_work()\n  vmwgfx: don\u0027t use flush_scheduled_work()\n  tpm: don\u0027t use flush_scheduled_work()\n  sonypi: don\u0027t use flush_scheduled_work()\n  hvsi: don\u0027t use flush_scheduled_work()\n  xen: don\u0027t use flush_scheduled_work()\n  gdrom: don\u0027t use flush_scheduled_work()\n  ...\n\nFixed up trivial conflict in drivers/media/video/bt8xx/bttv-input.c\nas per Tejun.\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ccd35fb9f4da856b105ea0f1e0cab3702e8ae6ba",
      "tree": "acb71aa4ae7d1f1ed17bdd79033a6bad5e27186d",
      "parents": [
        "786a5e15b613a9cee4fc9139fc3113a5ab0fde79"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:17 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:16 2011 +1100"
      },
      "message": "kernel: kmem_ptr_validate considered harmful\n\nThis is a nasty and error prone API. It is no longer used, remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ebb76ce16daf6908dc030dec1c00827d37129fe5",
      "tree": "28abdc67466bb5d8d4566e36c914518b0533b4bf",
      "parents": [
        "b83be6f20a0e468f715b14225c9f897538dfe5ad"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Dec 29 14:07:11 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 30 10:07:06 2010 -0800"
      },
      "message": "memcg: fix wrong VM_BUG_ON() in try_charge()\u0027s mm-\u003eowner check\n\nAt __mem_cgroup_try_charge(), VM_BUG_ON(!mm-\u003eowner) is checked.\nBut as commented in mem_cgroup_from_task(), mm-\u003eowner can be NULL\nin some racy case. This check of VM_BUG_ON() is bad.\n\nA possible story to hit this is at swapoff()-\u003etry_to_unuse(). It passes\nmm_struct to mem_cgroup_try_charge_swapin() while mm-\u003eowner is NULL. If we\ncan\u0027t get proper mem_cgroup from swap_cgroup information, mm-\u003eowner is used\nas charge target and we see NULL.\n\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Hugh Dickins \u003chughd@google.com\u003e\nReported-by: Thomas Meyer \u003cthomas@m3y3r.de\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ffc96d628b651b69b39909fc3e9e8f465df1eed3",
      "tree": "53f2c99ca5bec7a9b876cd3eb231a6d75a1145c7",
      "parents": [
        "c816d7c64e82cae69fa5c7365474d37444a97ccf",
        "29c185e5c681ca00d863d161eda7eadb93e32ee5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 27 10:36:27 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 27 10:36:27 2010 -0800"
      },
      "message": "Merge branch \u0027nommu-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/nommu-2.6\n\n* \u0027nommu-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/nommu-2.6:\n  nommu: Provide stubbed alloc/free_vm_area() implementation.\n  nommu: Fix up vmalloc_node() symbol export regression.\n"
    },
    {
      "commit": "a4790c9457ae973d598bbd5ce58f9eaa2dd1576b",
      "tree": "997c23d8182567d1b294022d81f9a315b2a642ef",
      "parents": [
        "08da5a32b7789289f48f3037b64df2945b5dafc2",
        "bcbea798f8f1492052c23ceb4fbc2a96013a3865"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 24 12:59:09 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 24 12:59:09 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: print out alloc information with KERN_DEBUG instead of KERN_INFO\n  kthread_work: make lockdep happy\n"
    },
    {
      "commit": "29c185e5c681ca00d863d161eda7eadb93e32ee5",
      "tree": "f1b8a601ea8cae381e2c6d9246414e0b9723ea83",
      "parents": [
        "9a14f653dfe349c0916e6a78c413effa2fa3f001"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Dec 24 12:08:30 2010 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Dec 24 12:08:30 2010 +0900"
      },
      "message": "nommu: Provide stubbed alloc/free_vm_area() implementation.\n\nNow that these have been introduced in to the vmalloc API, sync up the\nnommu side of things. At present we don\u0027t deal with VMAs as such, so for\nthe time being these will simply BUG() out. In the future it should be\npossible to support this interface by layering on top of the vm_regions.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "9a14f653dfe349c0916e6a78c413effa2fa3f001",
      "tree": "f0f6165e89cf76ec754a0ab4625e37620edf15be",
      "parents": [
        "eda4b716ea1f2a647a39cebae66b3fae4c4b80e4"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Dec 24 11:50:34 2010 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Dec 24 11:50:34 2010 +0900"
      },
      "message": "nommu: Fix up vmalloc_node() symbol export regression.\n\nCommit e1ca778 (\"mm: add vzalloc() and vzalloc_node() helpers\") ended up\naccidentally deleting the vmalloc_node() symbol export, resulting in:\n\n\"vmalloc_node\" [net/core/pktgen.ko] undefined!\n\"vmalloc_node\" [net/netfilter/x_tables.ko] undefined!\n\nregressions.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "0d1836c366157994474afd29632992375a3dd20c",
      "tree": "7083f69ed1ed8900a8883d675f225596fb0f553a",
      "parents": [
        "118364948fad7b6c0469ef2d3ddaee447d7a0b5f"
      ],
      "author": {
        "name": "Michal Nazarewicz",
        "email": "m.nazarewicz@samsung.com",
        "time": "Tue Dec 21 17:24:26 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:34 2010 -0800"
      },
      "message": "mm/migrate.c: fix compilation error\n\nGCC complained about update_mmu_cache() not being defined in migrate.c.\nIncluding \u003casm/tlbflush.h\u003e seems to solve the problem.\n\nSigned-off-by: Michal Nazarewicz \u003cm.nazarewicz@samsung.com\u003e\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d153ba64450b9371158c6516d6cac120faace44c",
      "tree": "78bb90ade76b84312e1e332a02021eb8eb1cda42",
      "parents": [
        "f06328d7721ad3852c45eb2a10a0c8f9439b5f33"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Dec 21 17:24:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "writeback: do uninterruptible sleep in balance_dirty_pages()\n\nUsing TASK_INTERRUPTIBLE in balance_dirty_pages() seems wrong.  If it\u0027s\ngoing to do that then it must break out if signal_pending(), otherwise\nit\u0027s pretty much guaranteed to degenerate into a busywait loop.  Plus we\n*do* want these processes to appear in D state and to contribute to load\naverage.\n\nSo it should be TASK_UNINTERRUPTIBLE.                 -- Andrew Morton\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd9e5efe3aa9fc5b1ce484a531ecdba3a7a30bbf",
      "tree": "2ccf4d51b423706db976c5eab214d0e23195461b",
      "parents": [
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Dec 21 17:24:16 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "mm/compaction.c: avoid double mem_cgroup_del_lru()\n\ndel_page_from_lru_list() already called mem_cgroup_del_lru().  So we must\nnot call it again.  It adds unnecessary overhead.\n\nIt was not a runtime bug because the TestClearPageCgroupAcctLRU() early in\nmem_cgroup_del_lru_list() will prevent any double-deletion, etc.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcbea798f8f1492052c23ceb4fbc2a96013a3865",
      "tree": "2406bab4b5462381cee06fab03849ae42464580b",
      "parents": [
        "4f32e9b1f812fd6c00cc85a127583fefbdedaedc"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 22 14:19:14 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 22 14:19:14 2010 +0100"
      },
      "message": "percpu: print out alloc information with KERN_DEBUG instead of KERN_INFO\n\nNow that percpu allocator is mostly stable, there is no reason to\nprint alloc information with KERN_INFO and clutter the boot messages.\nSwitch it to KERN_DEBUG.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Mike Travis \u003ctravis@sgi.com\u003e\n"
    },
    {
      "commit": "7c83912062c801738d7d19acaf8f7fec25ea663c",
      "tree": "52b696a502b871da55fc877ddd8d0e4a271511ad",
      "parents": [
        "20b876918c065818b3574a426d418f68b4f8ad19"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Dec 14 10:28:46 2010 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Dec 18 15:54:49 2010 +0100"
      },
      "message": "vmstat: User per cpu atomics to avoid interrupt disable / enable\n\nCurrently the operations to increment vm counters must disable interrupts\nin order to not mess up their housekeeping of counters.\n\nSo use this_cpu_cmpxchg() to avoid the overhead. Since we can no longer\ncount on preremption being disabled we still have some minor issues.\nThe fetching of the counter thresholds is racy.\nA threshold from another cpu may be applied if we happen to be\nrescheduled on another cpu.  However, the following vmstat operation\nwill then bring the counter again under the threshold limit.\n\nThe operations for __xxx_zone_state are not changed since the caller\nhas taken care of the synchronization needs (and therefore the cycle\ncount is even less than the optimized version for the irq disable case\nprovided here).\n\nThe optimization using this_cpu_cmpxchg will only be used if the arch\nsupports efficient this_cpu_ops (must have CONFIG_CMPXCHG_LOCAL set!)\n\nThe use of this_cpu_cmpxchg reduces the cycle count for the counter\noperations by %80 (inc_zone_page_state goes from 170 cycles to 32).\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\n\n"
    },
    {
      "commit": "908ee0f122bf2a67414854af5b90c6621d186a71",
      "tree": "5394b0b65dada76fed551d44ca0561fe5b7ac839",
      "parents": [
        "275c8b93288ef0c2281e414e069ea8ed4bad03f7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Dec 06 11:40:02 2010 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:18:04 2010 +0100"
      },
      "message": "vmstat: Use this_cpu_inc_return for vm statistics\n\nthis_cpu_inc_return() saves us a memory access there. Code\nsize does not change.\n\nV1-\u003eV2:\n\t- Fixed the location of the __per_cpu pointer attributes\n\t- Sparse checked\nV2-\u003eV3:\n\t- Move fixes to __percpu attribute usage to earlier patch\n\nReviewed-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "275c8b93288ef0c2281e414e069ea8ed4bad03f7",
      "tree": "df906ef901d7719d66944921c7436f5db718dc2f",
      "parents": [
        "909ea96468096b07fbb41aaf69be060d92bd9271",
        "8f1d97c79eb65de1d05799d6b81d79cd94169114"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:16:46 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:16:46 2010 +0100"
      },
      "message": "Merge branch \u0027this_cpu_ops\u0027 into for-2.6.38\n"
    },
    {
      "commit": "909ea96468096b07fbb41aaf69be060d92bd9271",
      "tree": "a7e015edd96b5f674874fe78cdd889769e130a2a",
      "parents": [
        "780f36d8b3fa9572f731d4fb85067b2e45e6f993"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Dec 08 16:22:55 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:07:19 2010 +0100"
      },
      "message": "core: Replace __get_cpu_var with __this_cpu_read if not used for an address.\n\n__get_cpu_var() can be replaced with this_cpu_read and will then use a\nsingle read instruction with implied address calculation to access the\ncorrect per cpu instance.\n\nHowever, the address of a per cpu variable passed to __this_cpu_read()\ncannot be determined (since it\u0027s an implied address conversion through\nsegment prefixes).  Therefore apply this only to uses of __get_cpu_var\nwhere the address of the variable is not used.\n\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "12938a9220a38d555e38dc9b40021e664b99a1f1",
      "tree": "978c0199dcd22faf92250fcfd5bfa2aac1100baa",
      "parents": [
        "819a72af8d6653daa48334f24ce0a935ccdd33c7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Dec 06 11:16:20 2010 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:07:18 2010 +0100"
      },
      "message": "vmstat: Optimize zone counter modifications through the use of this cpu operations\n\nthis cpu operations can be used to slightly optimize the function. The\nchanges will avoid some address calculations and replace them with the\nuse of the percpu segment register.\n\nIf one would have this_cpu_inc_return and this_cpu_dec_return then it\nwould be possible to optimize inc_zone_page_state and\ndec_zone_page_state even more.\n\nV1-\u003eV2:\n\t- Fix __dec_zone_state overflow handling\n\t- Use s8 variables for temporary storage.\n\nV2-\u003eV3:\n\t- Put __percpu annotations in correct places.\n\nReviewed-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "462e635e5b73ba9a4c03913b77138cd57ce4b050",
      "tree": "6ff0e84eecc6252d41d7c08730018c0149e7227f",
      "parents": [
        "0fcdcfbbc98f70f559e4b36773a69972489a6d8f"
      ],
      "author": {
        "name": "Tavis Ormandy",
        "email": "taviso@cmpxchg8b.com",
        "time": "Thu Dec 09 15:29:42 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 15 12:30:36 2010 -0800"
      },
      "message": "install_special_mapping skips security_file_mmap check.\n\nThe install_special_mapping routine (used, for example, to setup the\nvdso) skips the security check before insert_vm_struct, allowing a local\nattacker to bypass the mmap_min_addr security restriction by limiting\nthe available pages for special mappings.\n\nbprm_mm_init() also skips the check, and although I don\u0027t think this can\nbe used to bypass any restrictions, I don\u0027t see any reason not to have\nthe security check.\n\n  $ uname -m\n  x86_64\n  $ cat /proc/sys/vm/mmap_min_addr\n  65536\n  $ cat install_special_mapping.s\n  section .bss\n      resb BSS_SIZE\n  section .text\n      global _start\n      _start:\n          mov     eax, __NR_pause\n          int     0x80\n  $ nasm -D__NR_pause\u003d29 -DBSS_SIZE\u003d0xfffed000 -f elf -o install_special_mapping.o install_special_mapping.s\n  $ ld -m elf_i386 -Ttext\u003d0x10000 -Tbss\u003d0x11000 -o install_special_mapping install_special_mapping.o\n  $ ./install_special_mapping \u0026\n  [1] 14303\n  $ cat /proc/14303/maps\n  0000f000-00010000 r-xp 00000000 00:00 0                                  [vdso]\n  00010000-00011000 r-xp 00001000 00:19 2453665                            /home/taviso/install_special_mapping\n  00011000-ffffe000 rwxp 00000000 00:00 0                                  [stack]\n\nIt\u0027s worth noting that Red Hat are shipping with mmap_min_addr set to\n4096.\n\nSigned-off-by: Tavis Ormandy \u003ctaviso@google.com\u003e\nAcked-by: Kees Cook \u003ckees@ubuntu.com\u003e\nAcked-by: Robert Swiecki \u003cswiecki@google.com\u003e\n[ Changed to not drop the error code - akpm ]\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "afe2c511fb2d75f1515081ff1be15bd79cfe722d",
      "tree": "28aa74e9e0c654a95bf3306101e10ac1d16919d1",
      "parents": [
        "2d64672ed38721b7a3815009d79bfb90a1f34a17"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 14 16:21:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 15 10:56:11 2010 +0100"
      },
      "message": "workqueue: convert cancel_rearming_delayed_work[queue]() users to cancel_delayed_work_sync()\n\ncancel_rearming_delayed_work[queue]() has been superceded by\ncancel_delayed_work_sync() quite some time ago.  Convert all the\nin-kernel users.  The conversions are completely equivalent and\ntrivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: netdev@vger.kernel.org\nCc: Anton Vorontsov \u003ccbou@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: xfs-masters@oss.sgi.com\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: netfilter-devel@vger.kernel.org\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: linux-nfs@vger.kernel.org\n"
    },
    {
      "commit": "38971ce2fac484249d697fe48a9b0851a0b62572",
      "tree": "5ff677e2f2225a8b7971c2bb84e1c66bc4c54d38",
      "parents": [
        "caa4a59574a39e6574664e82b92455d41eca27a8",
        "5b362ac3799ff4225c40935500f520cad4d7ed66"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 08:51:12 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 08:51:12 2010 -0800"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  NFS: Fix panic after nfs_umount()\n  nfs: remove extraneous and problematic calls to nfs_clear_request\n  nfs: kernel should return EPROTONOSUPPORT when not support NFSv4\n  NFS: Fix fcntl F_GETLK not reporting some conflicts\n  nfs: Discard ACL cache on mode update\n  NFS: Readdir cleanups\n  NFS: nfs_readdir_search_for_cookie() don\u0027t mark as eof if cookie not found\n  NFS: Fix a memory leak in nfs_readdir\n  Call the filesystem back whenever a page is removed from the page cache\n  NFS: Ensure we use the correct cookie in nfs_readdir_xdr_filler\n"
    },
    {
      "commit": "7af4c0932437f97938eef67e553c8d211f9edf33",
      "tree": "aa559f570cc86e238f86c1f9260514114d048545",
      "parents": [
        "cf7d7e5a1980d1116ee152d25dac382b112b9c17"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sat Oct 30 15:56:54 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 07 14:47:23 2010 +0100"
      },
      "message": "percpu: zero memory more efficiently in mm/percpu.c::pcpu_mem_alloc()\n\nDon\u0027t do vmalloc() + memset() when vzalloc() will do.\n\ntj: dropped unnecessary temp variable ptr.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "7787d2c2f440cc7854bed3d039bf4cc59d9e7897",
      "tree": "d7402ea46b2aa0a4d049e8edc61a302bda4db4d5",
      "parents": [
        "60658f8a293750b59a8a844bf5c387139af9500a",
        "c9e664f1fdf34aa8cede047b206deaa8f1945af0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 06 15:51:14 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 06 15:51:14 2010 -0800"
      },
      "message": "Merge branch \u0027pm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6\n\n* \u0027pm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:\n  PM / Hibernate: Fix memory corruption related to swap\n  PM / Hibernate: Use async I/O when reading compressed hibernation image\n"
    },
    {
      "commit": "c9e664f1fdf34aa8cede047b206deaa8f1945af0",
      "tree": "6038002f46173ca785936ac2fe54177197f98a08",
      "parents": [
        "9f339caf8454f0c21983111350ede93983db4340"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Dec 03 22:57:45 2010 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Mon Dec 06 23:52:08 2010 +0100"
      },
      "message": "PM / Hibernate: Fix memory corruption related to swap\n\nThere is a problem that swap pages allocated before the creation of\na hibernation image can be released and used for storing the contents\nof different memory pages while the image is being saved.  Since the\nkernel stored in the image doesn\u0027t know of that, it causes memory\ncorruption to occur after resume from hibernation, especially on\nsystems with relatively small RAM that need to swap often.\n\nThis issue can be addressed by keeping the GFP_IOFS bits clear\nin gfp_allowed_mask during the entire hibernation, including the\nsaving of the image, until the system is finally turned off or\nthe hibernation is aborted.  Unfortunately, for this purpose\nit\u0027s necessary to rework the way in which the hibernate and\nsuspend code manipulates gfp_allowed_mask.\n\nThis change is based on an earlier patch from Hugh Dickins.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReported-by: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "771f8bc71c31c6bd103cdec283012253f352ab1c",
      "tree": "0a9c613397dca2644dda9c41aab2f6414bd34cd6",
      "parents": [
        "31c67c755363c7e7821221e72f8594ab8995764d",
        "37d57443d5d810c6ef49e93586b046e7d4774818"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 05 16:45:02 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 05 16:45:02 2010 -0800"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Fix a crash during slabinfo -v\n"
    },
    {
      "commit": "37d57443d5d810c6ef49e93586b046e7d4774818",
      "tree": "6ec5560ce1a496639ec957735288ba703133a83a",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Tero Roponen",
        "email": "tero.roponen@gmail.com",
        "time": "Wed Dec 01 20:04:20 2010 +0200"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Dec 04 09:53:49 2010 +0200"
      },
      "message": "slub: Fix a crash during slabinfo -v\n\nCommit f7cb1933621bce66a77f690776a16fe3ebbc4d58 (\"SLUB: Pass active\nand inactive redzone flags instead of boolean to debug functions\")\nmissed two instances of check_object(). This caused a lot of warnings\nduring \u0027slabinfo -v\u0027 finally leading to a crash:\n\n  BUG ext4_xattr: Freepointer corrupt\n  ...\n  BUG buffer_head: Freepointer corrupt\n  ...\n  BUG ext4_alloc_context: Freepointer corrupt\n  ...\n  ...\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000008\n  IP: [\u003cffffffff810a291f\u003e] file_sb_list_del+0x1c/0x35\n  PGD 79d78067 PUD 79e67067 PMD 0\n  Oops: 0002 [#1] SMP\n  last sysfs file: /sys/kernel/slab/:t-0000192/validate\n\nThis patch fixes the problem by converting the two missed instances.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tero Roponen \u003ctero.roponen@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "a0b0f58cdd32ab363a600a294ddaa90f0c32de8c",
      "tree": "4396d766ab2c5e5d69de216e1cc1ac86d7351791",
      "parents": [
        "20d6c96b5f1cad5c5da4641945ec17a1d9a1afc8"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Dec 02 14:31:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:15 2010 -0800"
      },
      "message": "ksm: annotate ksm_thread_mutex is no deadlock source\n\ncommit 62b61f611e (\"ksm: memory hotremove migration only\") caused the\nfollowing new lockdep warning.\n\n  \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  [ INFO: possible circular locking dependency detected ]\n  -------------------------------------------------------\n  bash/1621 is trying to acquire lock:\n   ((memory_chain).rwsem){.+.+.+}, at: [\u003cffffffff81079339\u003e]\n  __blocking_notifier_call_chain+0x69/0xc0\n\n  but task is already holding lock:\n   (ksm_thread_mutex){+.+.+.}, at: [\u003cffffffff8113a3aa\u003e]\n  ksm_memory_callback+0x3a/0xc0\n\n  which lock already depends on the new lock.\n\n  the existing dependency chain (in reverse order) is:\n\n  -\u003e #1 (ksm_thread_mutex){+.+.+.}:\n       [\u003cffffffff8108b70a\u003e] lock_acquire+0xaa/0x140\n       [\u003cffffffff81505d74\u003e] __mutex_lock_common+0x44/0x3f0\n       [\u003cffffffff81506228\u003e] mutex_lock_nested+0x48/0x60\n       [\u003cffffffff8113a3aa\u003e] ksm_memory_callback+0x3a/0xc0\n       [\u003cffffffff8150c21c\u003e] notifier_call_chain+0x8c/0xe0\n       [\u003cffffffff8107934e\u003e] __blocking_notifier_call_chain+0x7e/0xc0\n       [\u003cffffffff810793a6\u003e] blocking_notifier_call_chain+0x16/0x20\n       [\u003cffffffff813afbfb\u003e] memory_notify+0x1b/0x20\n       [\u003cffffffff81141b7c\u003e] remove_memory+0x1cc/0x5f0\n       [\u003cffffffff813af53d\u003e] memory_block_change_state+0xfd/0x1a0\n       [\u003cffffffff813afd62\u003e] store_mem_state+0xe2/0xf0\n       [\u003cffffffff813a0bb0\u003e] sysdev_store+0x20/0x30\n       [\u003cffffffff811bc116\u003e] sysfs_write_file+0xe6/0x170\n       [\u003cffffffff8114f398\u003e] vfs_write+0xc8/0x190\n       [\u003cffffffff8114fc14\u003e] sys_write+0x54/0x90\n       [\u003cffffffff810028b2\u003e] system_call_fastpath+0x16/0x1b\n\n  -\u003e #0 ((memory_chain).rwsem){.+.+.+}:\n       [\u003cffffffff8108b5ba\u003e] __lock_acquire+0x155a/0x1600\n       [\u003cffffffff8108b70a\u003e] lock_acquire+0xaa/0x140\n       [\u003cffffffff81506601\u003e] down_read+0x51/0xa0\n       [\u003cffffffff81079339\u003e] __blocking_notifier_call_chain+0x69/0xc0\n       [\u003cffffffff810793a6\u003e] blocking_notifier_call_chain+0x16/0x20\n       [\u003cffffffff813afbfb\u003e] memory_notify+0x1b/0x20\n       [\u003cffffffff81141f1e\u003e] remove_memory+0x56e/0x5f0\n       [\u003cffffffff813af53d\u003e] memory_block_change_state+0xfd/0x1a0\n       [\u003cffffffff813afd62\u003e] store_mem_state+0xe2/0xf0\n       [\u003cffffffff813a0bb0\u003e] sysdev_store+0x20/0x30\n       [\u003cffffffff811bc116\u003e] sysfs_write_file+0xe6/0x170\n       [\u003cffffffff8114f398\u003e] vfs_write+0xc8/0x190\n       [\u003cffffffff8114fc14\u003e] sys_write+0x54/0x90\n       [\u003cffffffff810028b2\u003e] system_call_fastpath+0x16/0x1b\n\nBut it\u0027s a false positive.  Both memory_chain.rwsem and ksm_thread_mutex\nhave an outer lock (mem_hotplug_mutex).  So they cannot deadlock.\n\nThus, This patch annotate ksm_thread_mutex is not deadlock source.\n\n[akpm@linux-foundation.org: update comment, from Hugh]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20d6c96b5f1cad5c5da4641945ec17a1d9a1afc8",
      "tree": "38168dc87d58fd924adb3aaca540cd23ad1246bf",
      "parents": [
        "4fe65cab844e6d3d7d310e66a501d5e7242ecb54"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Dec 02 14:31:19 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:15 2010 -0800"
      },
      "message": "mem-hotplug: introduce {un}lock_memory_hotplug()\n\nPresently hwpoison is using lock_system_sleep() to prevent a race with\nmemory hotplug.  However lock_system_sleep() is a no-op if\nCONFIG_HIBERNATION\u003dn.  Therefore we need a new lock.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Kamezawa Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSuggested-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "64141da587241301ce8638cc945f8b67853156ec",
      "tree": "bf11cfe53f606a2bda2342c6286ba637c4848e34",
      "parents": [
        "853ff88324a248a9f5da6e110850223db353ec07"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Thu Dec 02 14:31:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:15 2010 -0800"
      },
      "message": "vmalloc: eagerly clear ptes on vunmap\n\nOn stock 2.6.37-rc4, running:\n\n  # mount lilith:/export /mnt/lilith\n  # find  /mnt/lilith/ -type f -print0 | xargs -0 file\n\ncrashes the machine fairly quickly under Xen.  Often it results in oops\nmessages, but the couple of times I tried just now, it just hung quietly\nand made Xen print some rude messages:\n\n    (XEN) mm.c:2389:d80 Bad type (saw 7400000000000001 !\u003d exp\n    3000000000000000) for mfn 1d7058 (pfn 18fa7)\n    (XEN) mm.c:964:d80 Attempt to create linear p.t. with write perms\n    (XEN) mm.c:2389:d80 Bad type (saw 7400000000000010 !\u003d exp\n    1000000000000000) for mfn 1d2e04 (pfn 1d1fb)\n    (XEN) mm.c:2965:d80 Error while pinning mfn 1d2e04\n\nWhich means the domain tried to map a pagetable page RW, which would\nallow it to map arbitrary memory, so Xen stopped it.  This is because\nvm_unmap_ram() left some pages mapped in the vmalloc area after NFS had\nfinished with them, and those pages got recycled as pagetable pages\nwhile still having these RW aliases.\n\nRemoving those mappings immediately removes the Xen-visible aliases, and\nso it has no problem with those pages being reused as pagetable pages.\nDeferring the TLB flush doesn\u0027t upset Xen because it can flush the TLB\nitself as needed to maintain its invariants.\n\nWhen unmapping a region in the vmalloc space, clear the ptes\nimmediately.  There\u0027s no point in deferring this because there\u0027s no\namortization benefit.\n\nThe TLBs are left dirty, and they are flushed lazily to amortize the\ncost of the IPIs.\n\nThis specific motivation for this patch is an oops-causing regression\nsince 2.6.36 when using NFS under Xen, triggered by the NFS client\u0027s use\nof vm_map_ram() introduced in 56e4ebf877b60 (\"NFS: readdir with vmapped\npages\") .  XFS also uses vm_map_ram() and could cause similar problems.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e172662d113ceb22db727a979bb35b9c02f703b5",
      "tree": "e641aadf75466f68bceece0974e974e6edfa1a94",
      "parents": [
        "55cfaa3cbdd29c4919ecb5fb8965c310f357e48c"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Dec 02 14:31:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:14 2010 -0800"
      },
      "message": "vmstat: fix dirty threshold ordering\n\nThe nr_dirty_[background_]threshold fields are misplaced before the\nnuma_* fields, and users will read strange values.\n\nThis is the right order.  Before patch, nr_dirty_background_threshold\nwill read as 0 (the value from numa_miss).\n\n\tnuma_hit 128501\n\tnuma_miss 0\n\tnuma_foreign 0\n\tnuma_interleave 7388\n\tnuma_local 128501\n\tnuma_other 0\n\tnr_dirty_threshold 144291\n\tnr_dirty_background_threshold 72145\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55cfaa3cbdd29c4919ecb5fb8965c310f357e48c",
      "tree": "914fad20ce59c42bd3781820c8fb73286581a5ae",
      "parents": [
        "1f64d69c7ad2e48e697493e45590679f7a69b7b2"
      ],
      "author": {
        "name": "Zeng Zhaoming",
        "email": "zengzm.kernel@gmail.com",
        "time": "Thu Dec 02 14:31:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:14 2010 -0800"
      },
      "message": "mm/mempolicy.c: add rcu read lock to protect pid structure\n\nfind_task_by_vpid() should be protected by rcu_read_lock(), to prevent\nfree_pid() reclaiming pid.\n\nSigned-off-by: Zeng Zhaoming \u003czengzm.kernel@gmail.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1f64d69c7ad2e48e697493e45590679f7a69b7b2",
      "tree": "62e6c3d1dd31e1f87992710cde6b0b905f482606",
      "parents": [
        "94c35de9a918665d9354efe2bafc29ba4b37497a"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dnelson@redhat.com",
        "time": "Thu Dec 02 14:31:12 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 02 14:51:14 2010 -0800"
      },
      "message": "mm/hugetlb.c: avoid double unlock_page() in hugetlb_fault()\n\nHave hugetlb_fault() call unlock_page(page) only if it had previously\ncalled lock_page(page).\n\nSetting CONFIG_DEBUG_VM\u003dy and then running the libhugetlbfs test suite,\nresulted in the tripping of VM_BUG_ON(!PageLocked(page)) in\nunlock_page() having been called by hugetlb_fault() when page \u003d\u003d\npagecache_page.  This patch remedied the problem.\n\nSigned-off-by: Dean Nelson \u003cdnelson@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6072d13c429373c5d63b69dadbbef40a9b035552",
      "tree": "a2bf745efaa4092f2a8d7d9a9b160c2a7a3b303f",
      "parents": [
        "0aded708d125a3ff7e5abaea9c2d9c6d7ebbfdcd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 01 13:35:19 2010 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Dec 02 09:55:21 2010 -0500"
      },
      "message": "Call the filesystem back whenever a page is removed from the page cache\n\nNFS needs to be able to release objects that are stored in the page\ncache once the page itself is no longer visible from the page cache.\n\nThis patch adds a callback to the address space operations that allows\nfilesystems to perform page cleanups once the page has been removed\nfrom the page cache.\n\nOriginal patch by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n[trondmy: cover the cases of invalidate_inode_pages2() and\n          truncate_inode_pages()]\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5f0af70a25593a9d53b87bc8d31902fb7cc63e40",
      "tree": "0abf2f2994398ac2ec11209ba9edc3b433622b3f",
      "parents": [
        "e9959f0f37160e1f5351af828cc981712b5066c1"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 24 12:57:10 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:46 2010 +0900"
      },
      "message": "mm: remove call to find_vma in pagewalk for non-hugetlbfs\n\nCommit d33b9f45 (\"mm: hugetlb: fix hugepage memory leak in\nwalk_page_range()\") introduces a check if a vma is a hugetlbfs one and\nlater in 5dc37642 (\"mm hugetlb: add hugepage support to pagemap\") it is\nmoved under #ifdef CONFIG_HUGETLB_PAGE but a needless find_vma call is\nleft behind and its result is not used anywhere else in the function.\n\nThe side-effect of caching vma for @addr inside walk-\u003emm is neither\nutilized in walk_page_range() nor in called functions.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nReviewed-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9959f0f37160e1f5351af828cc981712b5066c1",
      "tree": "c218bce04d8f4dfc97a91b6807be5f2853a9024d",
      "parents": [
        "a42c390cfa0c2612459d7226ba11612847ca3a64"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Nov 24 12:57:09 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:45 2010 +0900"
      },
      "message": "mm/page_alloc.c: fix build_all_zonelist() where percpu_alloc() is wrongly called under stop_machine_run()\n\nDuring memory hotplug, build_allzonelists() may be called under\nstop_machine_run().  In this function, setup_zone_pageset() is called.\nBut it\u0027s bug because it will do page allocation under stop_machine_run().\n\nHere is a report from Alok Kataria.\n\n  BUG: sleeping function called from invalid context at kernel/mutex.c:94\n  in_atomic(): 0, irqs_disabled(): 1, pid: 4, name: migration/0\n  Pid: 4, comm: migration/0 Not tainted 2.6.35.6-45.fc14.x86_64 #1\n  Call Trace:\n   [\u003cffffffff8103d12b\u003e] __might_sleep+0xeb/0xf0\n   [\u003cffffffff81468245\u003e] mutex_lock+0x24/0x50\n   [\u003cffffffff8110eaa6\u003e] pcpu_alloc+0x6d/0x7ee\n   [\u003cffffffff81048888\u003e] ? load_balance+0xbe/0x60e\n   [\u003cffffffff8103a1b3\u003e] ? rt_se_boosted+0x21/0x2f\n   [\u003cffffffff8103e1cf\u003e] ? dequeue_rt_stack+0x18b/0x1ed\n   [\u003cffffffff8110f237\u003e] __alloc_percpu+0x10/0x12\n   [\u003cffffffff81465e22\u003e] setup_zone_pageset+0x38/0xbe\n   [\u003cffffffff810d6d81\u003e] ? build_zonelists_node.clone.58+0x79/0x8c\n   [\u003cffffffff81452539\u003e] __build_all_zonelists+0x419/0x46c\n   [\u003cffffffff8108ef01\u003e] ? cpu_stopper_thread+0xb2/0x198\n   [\u003cffffffff8108f075\u003e] stop_machine_cpu_stop+0x8e/0xc5\n   [\u003cffffffff8108efe7\u003e] ? stop_machine_cpu_stop+0x0/0xc5\n   [\u003cffffffff8108ef57\u003e] cpu_stopper_thread+0x108/0x198\n   [\u003cffffffff81467a37\u003e] ? schedule+0x5b2/0x5cc\n   [\u003cffffffff8108ee4f\u003e] ? cpu_stopper_thread+0x0/0x198\n   [\u003cffffffff81065f29\u003e] kthread+0x7f/0x87\n   [\u003cffffffff8100aae4\u003e] kernel_thread_helper+0x4/0x10\n   [\u003cffffffff81065eaa\u003e] ? kthread+0x0/0x87\n   [\u003cffffffff8100aae0\u003e] ? kernel_thread_helper+0x0/0x10\n  Built 5 zonelists in Node order, mobility grouping on.  Total pages: 289456\n  Policy zone: Normal\n\nThis patch tries to fix the issue by moving setup_zone_pageset() out from\nstop_machine_run(). It\u0027s obviously not necessary to be called under\nstop_machine_run().\n\n[akpm@linux-foundation.org: remove unneeded local]\nReported-by: Alok Kataria \u003cakataria@vmware.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Petr Vandrovec \u003cpetr@vmware.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a42c390cfa0c2612459d7226ba11612847ca3a64",
      "tree": "1dc06659b4f232461eb6852b8c4d17f8305aca91",
      "parents": [
        "b1dd693e5b9348bd68a80e679e03cf9c0973b01b"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Wed Nov 24 12:57:08 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:45 2010 +0900"
      },
      "message": "cgroups: make swap accounting default behavior configurable\n\nSwap accounting can be configured by CONFIG_CGROUP_MEM_RES_CTLR_SWAP\nconfiguration option and then it is turned on by default.  There is a boot\noption (noswapaccount) which can disable this feature.\n\nThis makes it hard for distributors to enable the configuration option as\nthis feature leads to a bigger memory consumption and this is a no-go for\ngeneral purpose distribution kernel.  On the other hand swap accounting\nmay be very usuful for some workloads.\n\nThis patch adds a new configuration option which controls the default\nbehavior (CGROUP_MEM_RES_CTLR_SWAP_ENABLED).  If the option is selected\nthen the feature is turned on by default.\n\nIt also adds a new boot parameter swapaccount[\u003d1|0] which enhances the\noriginal noswapaccount parameter semantic by means of enable/disable logic\n(defaults to 1 if no value is provided to be still consistent with\nnoswapaccount).\n\nThe default behavior is unchanged (if CONFIG_CGROUP_MEM_RES_CTLR_SWAP is\nenabled then CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED is enabled as well)\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1dd693e5b9348bd68a80e679e03cf9c0973b01b",
      "tree": "557c8e0634fba47ea61ed9fbb8742d907c567944",
      "parents": [
        "11e7946f196e5fdde20584e3e58c60335ee3b3bc"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Nov 24 12:57:06 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:44 2010 +0900"
      },
      "message": "memcg: avoid deadlock between move charge and try_charge()\n\n__mem_cgroup_try_charge() can be called under down_write(\u0026mmap_sem)(e.g.\nmlock does it). This means it can cause deadlock if it races with move charge:\n\nEx.1)\n                move charge             |        try charge\n  --------------------------------------+------------------------------\n    mem_cgroup_can_attach()             |  down_write(\u0026mmap_sem)\n      mc.moving_task \u003d current          |    ..\n      mem_cgroup_precharge_mc()         |  __mem_cgroup_try_charge()\n        mem_cgroup_count_precharge()    |    prepare_to_wait()\n          down_read(\u0026mmap_sem)          |    if (mc.moving_task)\n          -\u003e cannot aquire the lock     |    -\u003e true\n                                        |      schedule()\n\nEx.2)\n                move charge             |        try charge\n  --------------------------------------+------------------------------\n    mem_cgroup_can_attach()             |\n      mc.moving_task \u003d current          |\n      mem_cgroup_precharge_mc()         |\n        mem_cgroup_count_precharge()    |\n          down_read(\u0026mmap_sem)          |\n          ..                            |\n          up_read(\u0026mmap_sem)            |\n                                        |  down_write(\u0026mmap_sem)\n    mem_cgroup_move_task()              |    ..\n      mem_cgroup_move_charge()          |  __mem_cgroup_try_charge()\n        down_read(\u0026mmap_sem)            |    prepare_to_wait()\n        -\u003e cannot aquire the lock       |    if (mc.moving_task)\n                                        |    -\u003e true\n                                        |      schedule()\n\nTo avoid this deadlock, we do all the move charge works (both can_attach() and\nattach()) under one mmap_sem section.\nAnd after this patch, we set/clear mc.moving_task outside mc.lock, because we\nuse the lock only to check mc.from/to.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "112bc2e120a94a511858918d6866a4978f9c500e",
      "tree": "032f59b4eca42074de6a30e0d4c13426cbbf86c8",
      "parents": [
        "69e83dad5207f8f03c9699e57e1febb114383cb8"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Wed Nov 24 12:56:58 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:40 2010 +0900"
      },
      "message": "memcg: fix false positive VM_BUG on non-SMP\n\nFix this:\n\n  kernel BUG at mm/memcontrol.c:2155!\n  invalid opcode: 0000 [#1]\n  last sysfs file:\n\n  Pid: 18, comm: sh Not tainted 2.6.37-rc3 #3 /Bochs\n  EIP: 0060:[\u003cc10731b2\u003e] EFLAGS: 00000246 CPU: 0\n  EIP is at mem_cgroup_move_account+0xe2/0xf0\n  EAX: 00000004 EBX: c6f931d4 ECX: c681c300 EDX: c681c000\n  ESI: c681c300 EDI: ffffffea EBP: c681c000 ESP: c46f3e30\n   DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068\n  Process sh (pid: 18, ti\u003dc46f2000 task\u003dc6826e60 task.ti\u003dc46f2000)\n  Stack:\n   00000155 c681c000 0805f000 c46ee180 c46f3e5c c7058820 c1074d37 00000000\n   08060000 c46db9a0 c46ec080 c7058820 0805f000 08060000 c46f3e98 c1074c50\n   c106c75e c46f3e98 c46ec080 08060000 0805ffff c46db9a0 c46f3e98 c46e0340\n  Call Trace:\n   [\u003cc1074d37\u003e] ? mem_cgroup_move_charge_pte_range+0xe7/0x130\n   [\u003cc1074c50\u003e] ? mem_cgroup_move_charge_pte_range+0x0/0x130\n   [\u003cc106c75e\u003e] ? walk_page_range+0xee/0x1d0\n   [\u003cc10725d6\u003e] ? mem_cgroup_move_task+0x66/0x90\n   [\u003cc1074c50\u003e] ? mem_cgroup_move_charge_pte_range+0x0/0x130\n   [\u003cc1072570\u003e] ? mem_cgroup_move_task+0x0/0x90\n   [\u003cc1042616\u003e] ? cgroup_attach_task+0x136/0x200\n   [\u003cc1042878\u003e] ? cgroup_tasks_write+0x48/0xc0\n   [\u003cc1041e9e\u003e] ? cgroup_file_write+0xde/0x220\n   [\u003cc101398d\u003e] ? do_page_fault+0x17d/0x3f0\n   [\u003cc108a79d\u003e] ? alloc_fd+0x2d/0xd0\n   [\u003cc1041dc0\u003e] ? cgroup_file_write+0x0/0x220\n   [\u003cc1077ba2\u003e] ? vfs_write+0x92/0xc0\n   [\u003cc1077c81\u003e] ? sys_write+0x41/0x70\n   [\u003cc1140e3d\u003e] ? syscall_call+0x7/0xb\n  Code: 03 00 74 09 8b 44 24 04 e8 1c f1 ff ff 89 73 04 8d 86 b0 00 00 00 b9 01 00 00 00 89 da 31 ff e8 65 f5 ff ff e9 4d ff ff ff 0f 0b \u003c0f\u003e 0b 0f 0b 0f 0b 90 8d b4 26 00 00 00 00 83 ec 10 8b 0d f4 e3\n  EIP: [\u003cc10731b2\u003e] mem_cgroup_move_account+0xe2/0xf0 SS:ESP 0068:c46f3e30\n  ---[ end trace 7daa1582159b6532 ]---\n\nlock_page_cgroup and unlock_page_cgroup are implemented using\nbit_spinlock.  bit_spinlock doesn\u0027t touch the bit if we are on non-SMP\nmachine, so we can\u0027t use the bit to check whether the lock was taken.\n\nLet\u0027s introduce is_page_cgroup_locked based on bit_spin_is_locked instead\nof PageCgroupLocked to fix it.\n\n[akpm@linux-foundation.org: s/is_page_cgroup_locked/page_is_cgroup_locked/]\nSigned-off-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04c3496152394d17e3bc2316f9731ee3e8a026bc",
      "tree": "1c0a1275a3a3ef3f4aad36fd4cd5500980f5f0d7",
      "parents": [
        "3a3a1af37f0405d15c0b64a6ce7f4878084442e0"
      ],
      "author": {
        "name": "Steven J. Magnani",
        "email": "steve@digidescorp.com",
        "time": "Wed Nov 24 12:56:54 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:38 2010 +0900"
      },
      "message": "nommu: yield CPU while disposing VM\n\nDepending on processor speed, page size, and the amount of memory a\nprocess is allowed to amass, cleanup of a large VM may freeze the system\nfor many seconds.  This can result in a watchdog timeout.\n\nMake sure other tasks receive some service when cleaning up large VMs.\n\nSigned-off-by: Steven J. Magnani \u003csteve@digidescorp.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2744b8889cd6d4a730634400d337bee07d1702bc",
      "tree": "91557775e3516d1df89141d588e9c7697f3583bb",
      "parents": [
        "1ca7318cacdac5262492149cf46abc06c95693fa",
        "68cee4f118c21a1c67e5764a91d766661db5b360"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 14 13:06:37 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 14 13:06:37 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Fix slub_lock down/up imbalance\n"
    },
    {
      "commit": "68cee4f118c21a1c67e5764a91d766661db5b360",
      "tree": "17c487ce969cc66a4be5048ed12cb5ec070c2fc2",
      "parents": [
        "c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Oct 28 13:50:37 2010 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Nov 14 16:53:11 2010 +0200"
      },
      "message": "slub: Fix slub_lock down/up imbalance\n\nThere are two places, that do not release the slub_lock.\n\nRespective bugs were introduced by sysfs changes ab4d5ed5 (slub: Enable\nsysfs support for !CONFIG_SLUB_DEBUG) and 2bce6485 ( slub: Allow removal\nof slab caches during boot).\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "27d20fddc8af539464fc3ba499d6a830054c3bd6",
      "tree": "23514cfe88f90150a8635c47586a8a378fb905e3",
      "parents": [
        "eaf06b241b091357e72b76863ba16e89610d31bd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Thu Nov 11 14:05:19 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 12 07:55:32 2010 -0800"
      },
      "message": "radix-tree: fix RCU bug\n\nSalman Qazi describes the following radix-tree bug:\n\nIn the following case, we get can get a deadlock:\n\n0.  The radix tree contains two items, one has the index 0.\n1.  The reader (in this case find_get_pages) takes the rcu_read_lock.\n2.  The reader acquires slot(s) for item(s) including the index 0 item.\n3.  The non-zero index item is deleted, and as a consequence the other item is\n    moved to the root of the tree. The place where it used to be is queued for\n    deletion after the readers finish.\n3b. The zero item is deleted, removing it from the direct slot, it remains in\n    the rcu-delayed indirect node.\n4.  The reader looks at the index 0 slot, and finds that the page has 0 ref\n    count\n5.  The reader looks at it again, hoping that the item will either be freed or\n    the ref count will increase. This never happens, as the slot it is looking\n    at will never be updated. Also, this slot can never be reclaimed because\n    the reader is holding rcu_read_lock and is in an infinite loop.\n\nThe fix is to re-use the same \"indirect\" pointer case that requires a slot\nlookup retry into a general \"retry the lookup\" bit.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nReported-by: Salman Qazi \u003csqazi@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1dce071e18b7264457d17c0dec4c7e430bfaee7d",
      "tree": "ced52f7f8e4177f9ea37f891f4d33d0a5109e651",
      "parents": [
        "38715258aa2e8cd94bd4aafadc544e5104efd551"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Nov 11 14:05:17 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 12 07:55:31 2010 -0800"
      },
      "message": "vmscan: avoid setting zone congested if no page dirty\n\nnr_dirty and nr_congested are increased only when the page is dirty.  So\nif all pages are clean, both them will be zero.  In this case, we should\nnot mark the zone congested.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d056cb965b8fb7c53c564abf28b1962d1061cd3",
      "tree": "b422c16d0fe4f647e5c1fec990d610ec28c06a44",
      "parents": [
        "834b40380e93e36f1c9b48ec1d280cebe3d7bd8c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Thu Nov 11 14:05:15 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 12 07:55:31 2010 -0800"
      },
      "message": "mm/vfs: revalidate page-\u003emapping in do_generic_file_read()\n\n70 hours into some stress tests of a 2.6.32-based enterprise kernel, we\nran into a NULL dereference in here:\n\n\tint block_is_partially_uptodate(struct page *page, read_descriptor_t *desc,\n\t                                        unsigned long from)\n\t{\n----\u003e\t\tstruct inode *inode \u003d page-\u003emapping-\u003ehost;\n\nIt looks like page-\u003emapping was the culprit.  (xmon trace is below).\nAfter closer examination, I realized that do_generic_file_read() does a\nfind_get_page(), and eventually locks the page before calling\nblock_is_partially_uptodate().  However, it doesn\u0027t revalidate the\npage-\u003emapping after the page is locked.  So, there\u0027s a small window\nbetween the find_get_page() and -\u003eis_partially_uptodate() where the page\ncould get truncated and page-\u003emapping cleared.\n\nWe _have_ a reference, so it can\u0027t get reclaimed, but it certainly\ncan be truncated.\n\nI think the correct thing is to check page-\u003emapping after the\ntrylock_page(), and jump out if it got truncated.  This patch has been\nrunning in the test environment for a month or so now, and we have not\nseen this bug pop up again.\n\nxmon info:\n\n  1f:mon\u003e e\n  cpu 0x1f: Vector: 300 (Data Access) at [c0000002ae36f770]\n      pc: c0000000001e7a6c: .block_is_partially_uptodate+0xc/0x100\n      lr: c000000000142944: .generic_file_aio_read+0x1e4/0x770\n      sp: c0000002ae36f9f0\n     msr: 8000000000009032\n     dar: 0\n   dsisr: 40000000\n    current \u003d 0xc000000378f99e30\n    paca    \u003d 0xc000000000f66300\n      pid   \u003d 21946, comm \u003d bash\n  1f:mon\u003e r\n  R00 \u003d 0025c0500000006d   R16 \u003d 0000000000000000\n  R01 \u003d c0000002ae36f9f0   R17 \u003d c000000362cd3af0\n  R02 \u003d c000000000e8cd80   R18 \u003d ffffffffffffffff\n  R03 \u003d c0000000031d0f88   R19 \u003d 0000000000000001\n  R04 \u003d c0000002ae36fa68   R20 \u003d c0000003bb97b8a0\n  R05 \u003d 0000000000000000   R21 \u003d c0000002ae36fa68\n  R06 \u003d 0000000000000000   R22 \u003d 0000000000000000\n  R07 \u003d 0000000000000001   R23 \u003d c0000002ae36fbb0\n  R08 \u003d 0000000000000002   R24 \u003d 0000000000000000\n  R09 \u003d 0000000000000000   R25 \u003d c000000362cd3a80\n  R10 \u003d 0000000000000000   R26 \u003d 0000000000000002\n  R11 \u003d c0000000001e7b60   R27 \u003d 0000000000000000\n  R12 \u003d 0000000042000484   R28 \u003d 0000000000000001\n  R13 \u003d c000000000f66300   R29 \u003d c0000003bb97b9b8\n  R14 \u003d 0000000000000001   R30 \u003d c000000000e28a08\n  R15 \u003d 000000000000ffff   R31 \u003d c0000000031d0f88\n  pc  \u003d c0000000001e7a6c .block_is_partially_uptodate+0xc/0x100\n  lr  \u003d c000000000142944 .generic_file_aio_read+0x1e4/0x770\n  msr \u003d 8000000000009032   cr  \u003d 22000488\n  ctr \u003d c0000000001e7a60   xer \u003d 0000000020000000   trap \u003d  300\n  dar \u003d 0000000000000000   dsisr \u003d 40000000\n  1f:mon\u003e t\n  [link register   ] c000000000142944 .generic_file_aio_read+0x1e4/0x770\n  [c0000002ae36f9f0] c000000000142a14 .generic_file_aio_read+0x2b4/0x770 (unreliable)\n  [c0000002ae36fb40] c0000000001b03e4 .do_sync_read+0xd4/0x160\n  [c0000002ae36fce0] c0000000001b153c .vfs_read+0xec/0x1f0\n  [c0000002ae36fd80] c0000000001b1768 .SyS_read+0x58/0xb0\n  [c0000002ae36fe30] c00000000000852c syscall_exit+0x0/0x40\n  --- Exception: c00 (System Call) at 00000080a840bc54\n  SP (fffca15df30) is in userspace\n  1f:mon\u003e di c0000000001e7a6c\n  c0000000001e7a6c  e9290000      ld      r9,0(r9)\n  c0000000001e7a70  418200c0      beq     c0000000001e7b30        # .block_is_partially_uptodate+0xd0/0x100\n  c0000000001e7a74  e9440008      ld      r10,8(r4)\n  c0000000001e7a78  78a80020      clrldi  r8,r5,32\n  c0000000001e7a7c  3c000001      lis     r0,1\n  c0000000001e7a80  812900a8      lwz     r9,168(r9)\n  c0000000001e7a84  39600001      li      r11,1\n  c0000000001e7a88  7c080050      subf    r0,r8,r0\n  c0000000001e7a8c  7f805040      cmplw   cr7,r0,r10\n  c0000000001e7a90  7d6b4830      slw     r11,r11,r9\n  c0000000001e7a94  796b0020      clrldi  r11,r11,32\n  c0000000001e7a98  419d00a8      bgt     cr7,c0000000001e7b40    # .block_is_partially_uptodate+0xe0/0x100\n  c0000000001e7a9c  7fa55840      cmpld   cr7,r5,r11\n  c0000000001e7aa0  7d004214      add     r8,r0,r8\n  c0000000001e7aa4  79080020      clrldi  r8,r8,32\n  c0000000001e7aa8  419c0078      blt     cr7,c0000000001e7b20    # .block_is_partially_uptodate+0xc0/0x100\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: \u003carunabal@in.ibm.com\u003e\nCc: \u003csbest@us.ibm.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2e61b8dc99fdb36e0fd176e25365f69afda4ff9",
      "tree": "580325e7a44fc02d985bca17a1d7601e6ed81cb9",
      "parents": [
        "1093736b3c34319b8f1825a4423414d9cf397d73"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Nov 11 14:05:12 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 12 07:55:31 2010 -0800"
      },
      "message": "memcg: null dereference on allocation failure\n\nThe original code had a null dereference if alloc_percpu() failed.  This\nwas introduced in commit 711d3d2c9bc3 (\"memcg: cpu hotplug aware percpu\ncount updates\")\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nReviewed-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63bfd7384b119409685a17d5c58f0b56e5dc03da",
      "tree": "b01a10267b8e702af948e571801f02ee70ff1794",
      "parents": [
        "814ce2521121c2459e16cea8c7221e157edbeddd"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Nov 08 21:29:07 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 09 10:19:38 2010 -0800"
      },
      "message": "perf_events: Fix perf_counter_mmap() hook in mprotect()\n\nAs pointed out by Linus, commit dab5855 (\"perf_counter: Add mmap event hooks to\nmprotect()\") is fundamentally wrong as mprotect_fixup() can free \u0027vma\u0027 due to\nmerging. Fix the problem by moving perf_event_mmap() hook to\nmprotect_fixup().\n\nNote: there\u0027s another successful return path from mprotect_fixup() if old\nflags equal to new flags. We don\u0027t, however, need to call\nperf_event_mmap() there because \u0027perf\u0027 already knows the VMA is\nexecutable.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nAnalyzed-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff8b16d7e15a8ba2a6086645614a483e048e3fbf",
      "tree": "bba0a06fe931072b5794960e8dd928769ca58ce9",
      "parents": [
        "81a6cff678ecee7cdc0658285d3150660c07cfce"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Nov 04 01:56:49 2010 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 03 14:39:58 2010 -0400"
      },
      "message": "vmstat: fix offset calculation on void*\n\nFix regression introduced by commit 79da826aee6 (\"writeback: report\ndirty thresholds in /proc/vmstat\").\n\nThe incorrect pointer arithmetic can result in problems like this:\n\n  BUG: unable to handle kernel paging request at 07c06d16\n  IP: [\u003cc050c336\u003e] strnlen+0x6/0x20\n  Call Trace:\n   [\u003cc050a249\u003e] ? string+0x39/0xe0\n   [\u003cc042be6b\u003e] ? __wake_up_common+0x4b/0x80\n   [\u003cc050afcc\u003e] ? vsnprintf+0x1ec/0x380\n   [\u003cc04b380e\u003e] ? seq_printf+0x2e/0x60\n   [\u003cc04829a6\u003e] ? vmstat_show+0x26/0x30\n   [\u003cc04b3bb6\u003e] ? seq_read+0xa6/0x380\n   [\u003cc04b3b10\u003e] ? seq_read+0x0/0x380\n   [\u003cc04d5d2f\u003e] ? proc_reg_read+0x5f/0x90\n   [\u003cc049c4a1\u003e] ? vfs_read+0xa1/0x140\n   [\u003cc04d5cd0\u003e] ? proc_reg_read+0x0/0x90\n   [\u003cc049c981\u003e] ? sys_read+0x41/0x70\n   [\u003cc0402bd0\u003e] ? sysenter_do_call+0x12/0x26\n\nReported-by: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d88c0922fa0e2c021a028b310a641126c6d4b7dc",
      "tree": "f6e74b391a526c845cbe44bbc5e6585256a4d097",
      "parents": [
        "eb8abb927ae2fd1730e24ea94cd9527f3c086292"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Tue Nov 02 13:05:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 02 17:02:31 2010 -0400"
      },
      "message": "Release page reference during page fault retry\n\nThis slipped by when unifying the filemap and swap versions of\nlock_page_or_retry()...\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "120a795da07c9a02221ca23464c28a7c6ad7de1d",
      "tree": "14e0f5ab35e9397f4a1b2f5e24b8394a601aa409",
      "parents": [
        "af2951325bd6c26cb2c91943c7b11aed53504056"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 30 02:54:44 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 30 08:45:43 2010 -0400"
      },
      "message": "audit mmap\n\nNormal syscall audit doesn\u0027t catch 5th argument of syscall.  It also\ndoesn\u0027t catch the contents of userland structures pointed to be\nsyscall argument, so for both old and new mmap(2) ABI it doesn\u0027t\nrecord the descriptor we are mapping.  For old one it also misses\nflags.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3c26ff6e499ee7e6f9f2bc7da5f2f30d80862ecf",
      "tree": "bd758d7f15f24aed225a64de77cc535785c50f96",
      "parents": [
        "fc14f2fef682df677d64a145256dbd263df2aa7b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 11:46:36 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:31 2010 -0400"
      },
      "message": "convert get_sb_nodev() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "800416f799e0723635ac2d720ad4449917a1481c",
      "tree": "75f18c93accdfd4b5f58ac3172a336607bde508b",
      "parents": [
        "0851668fdd97e526b2a41f794b785c204dd3d3e0"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Oct 27 19:33:43 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 28 10:04:30 2010 -0700"
      },
      "message": "numa: fix slab_node(MPOL_BIND)\n\nWhen a node contains only HighMem memory, slab_node(MPOL_BIND)\ndereferences a NULL pointer.\n\n[ This code seems to go back all the way to commit 19770b32609b: \"mm:\n  filter based on a nodemask as well as a gfp_mask\".  Which was back in\n  April 2008, and it got merged into 2.6.26.  - Linus ]\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bdab225015fbbb45ccd8913f5d7c01b2bf67d8b2",
      "tree": "5ef62301face958977a084bf2b6c5300296a25f2",
      "parents": [
        "7c5814c7199851c5fe9395d08fc1ab3c8c1531ea",
        "7c7fcf762e405eb040ee10d22d656a791f616122"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:53:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:53:26 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-mn10300: (44 commits)\n  MN10300: Save frame pointer in thread_info struct rather than global var\n  MN10300: Change \"Matsushita\" to \"Panasonic\".\n  MN10300: Create a defconfig for the ASB2364 board\n  MN10300: Update the ASB2303 defconfig\n  MN10300: ASB2364: Add support for SMSC911X and SMC911X\n  MN10300: ASB2364: Handle the IRQ multiplexer in the FPGA\n  MN10300: Generic time support\n  MN10300: Specify an ELF HWCAP flag for MN10300 Atomic Operations Unit support\n  MN10300: Map userspace atomic op regs as a vmalloc page\n  MN10300: And Panasonic AM34 subarch and implement SMP\n  MN10300: Delete idle_timestamp from irq_cpustat_t\n  MN10300: Make various interrupt priority settings configurable\n  MN10300: Optimise do_csum()\n  MN10300: Implement atomic ops using atomic ops unit\n  MN10300: Make the FPU operate in non-lazy mode under SMP\n  MN10300: SMP TLB flushing\n  MN10300: Use the [ID]PTEL2 registers rather than [ID]PTEL for TLB control\n  MN10300: Make the use of PIDR to mark TLB entries controllable\n  MN10300: Rename __flush_tlb*() to local_flush_tlb*()\n  MN10300: AM34 erratum requires MMUCTR read and write on exception entry\n  ...\n"
    },
    {
      "commit": "0be8557bcd34887d5a42c01c5659cab5ecf99f13",
      "tree": "80d211221be1583303818cf201d6e40cc0674608",
      "parents": [
        "d57af9b2142f31a39dcfdeb30776baadfc802827"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Oct 27 15:34:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:17 2010 -0700"
      },
      "message": "fuse: use release_pages()\n\nReplace iterated page_cache_release() with release_pages(), which is\nfaster and shorter.\n\nNeeds release_pages() to be exported to modules.\n\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26174efd42100eefac67732c0c12f41a205fa335",
      "tree": "81a7d758a3fcfd755e9e94ee7f66854133c281cf",
      "parents": [
        "1489ebad8b5b20300562f634f279cb9c435fd90b"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:10 2010 -0700"
      },
      "message": "memcg: generic filestat update interface\n\nThis patch extracts the core logic from mem_cgroup_update_file_mapped() as\nmem_cgroup_update_file_stat() and adds a wrapper.\n\nAs a planned future update, memory cgroup has to count dirty pages to\nimplement dirty_ratio/limit.  And more, the number of dirty pages is\nrequired to kick flusher thread to start writeback.  (Now, no kick.)\n\nThis patch is preparation for it and makes other statistics implementation\nclearer.  Just a clean up.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1489ebad8b5b20300562f634f279cb9c435fd90b",
      "tree": "4bfa738b0733c11120705aaa37a45d87d1dd5534",
      "parents": [
        "711d3d2c9bc3fb7cb5116352fecdb5b4adb6db6e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:09 2010 -0700"
      },
      "message": "memcg: cpu hotplug aware quick acount_move detection\n\nAn event counter MEM_CGROUP_ON_MOVE is used for quick check whether file\nstat update can be done in async manner or not.  Now, it use percpu\ncounter and for_each_possible_cpu to update.\n\nThis patch replaces for_each_possible_cpu to for_each_online_cpu and adds\nnecessary synchronization logic at CPU HOTPLUG.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "711d3d2c9bc3fb7cb5116352fecdb5b4adb6db6e",
      "tree": "09979a5e3d7b2e1fe7b7de193d11d6f468a67e76",
      "parents": [
        "7d74b06f240f1bd1b4b68dd6fe84164d8bf4e315"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:09 2010 -0700"
      },
      "message": "memcg: cpu hotplug aware percpu count updates\n\nNow, memcgroup\u0027s per cpu coutner uses for_each_possible_cpu() to get the\nvalue.  It\u0027s better to use for_each_online_cpu() and a cpu hotplug\nhandler.\n\nThis patch only handles statistics counter.  MEM_CGROUP_ON_MOVE will be\nhandled in another patch.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d74b06f240f1bd1b4b68dd6fe84164d8bf4e315",
      "tree": "3b52304b322390a9b5782b4d498e5e0a14e3266b",
      "parents": [
        "32047e2a85f06633ee4c53e2d0346fbcd34e480b"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:09 2010 -0700"
      },
      "message": "memcg: use for_each_mem_cgroup\n\nIn memory cgroup management, we sometimes have to walk through\nsubhierarchy of cgroup to gather informaiton, or lock something, etc.\n\nNow, to do that, mem_cgroup_walk_tree() function is provided.  It calls\ngiven callback function per cgroup found.  But the bad thing is that it\nhas to pass a fixed style function and argument, \"void*\" and it adds much\ntype casting to memcontrol.c.\n\nTo make the code clean, this patch replaces walk_tree() with\n\n  for_each_mem_cgroup_tree(iter, root)\n\nAn iterator style call.  The good point is that iterator call doesn\u0027t have\nto assume what kind of function is called under it.  A bad point is that\nit may cause reference-count leak if a caller use \"break\" from the loop by\nmistake.\n\nI think the benefit is larger.  The modified code seems straigtforward and\neasy to read because we don\u0027t have misterious callbacks and pointer cast.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32047e2a85f06633ee4c53e2d0346fbcd34e480b",
      "tree": "25ed1e04bf60a46951581b0ad28a45e51b1602a2",
      "parents": [
        "0c270f8f9988fb0d93ea214fdcff7ab90eb3d894"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:09 2010 -0700"
      },
      "message": "memcg: avoid lock in updating file_mapped (Was fix race in file_mapped accouting flag management\n\nAt accounting file events per memory cgroup, we need to find memory cgroup\nvia page_cgroup-\u003emem_cgroup.  Now, we use lock_page_cgroup() for guarantee\npc-\u003emem_cgroup is not overwritten while we make use of it.\n\nBut, considering the context which page-cgroup for files are accessed,\nwe can use alternative light-weight mutual execusion in the most case.\n\nAt handling file-caches, the only race we have to take care of is \"moving\"\naccount, IOW, overwriting page_cgroup-\u003emem_cgroup.  (See comment in the\npatch)\n\nUnlike charge/uncharge, \"move\" happens not so frequently. It happens only when\nrmdir() and task-moving (with a special settings.)\nThis patch adds a race-checker for file-cache-status accounting v.s. account\nmoving. The new per-cpu-per-memcg counter MEM_CGROUP_ON_MOVE is added.\nThe routine for account move\n  1. Increment it before start moving\n  2. Call synchronize_rcu()\n  3. Decrement it after the end of moving.\nBy this, file-status-counting routine can check it needs to call\nlock_page_cgroup(). In most case, I doesn\u0027t need to call it.\n\nFollowing is a perf data of a process which mmap()/munmap 32MB of file cache\nin a minute.\n\nBefore patch:\n    28.25%     mmap  mmap               [.] main\n    22.64%     mmap  [kernel.kallsyms]  [k] page_fault\n     9.96%     mmap  [kernel.kallsyms]  [k] mem_cgroup_update_file_mapped\n     3.67%     mmap  [kernel.kallsyms]  [k] filemap_fault\n     3.50%     mmap  [kernel.kallsyms]  [k] unmap_vmas\n     2.99%     mmap  [kernel.kallsyms]  [k] __do_fault\n     2.76%     mmap  [kernel.kallsyms]  [k] find_get_page\n\nAfter patch:\n    30.00%     mmap  mmap               [.] main\n    23.78%     mmap  [kernel.kallsyms]  [k] page_fault\n     5.52%     mmap  [kernel.kallsyms]  [k] mem_cgroup_update_file_mapped\n     3.81%     mmap  [kernel.kallsyms]  [k] unmap_vmas\n     3.26%     mmap  [kernel.kallsyms]  [k] find_get_page\n     3.18%     mmap  [kernel.kallsyms]  [k] __do_fault\n     3.03%     mmap  [kernel.kallsyms]  [k] filemap_fault\n     2.40%     mmap  [kernel.kallsyms]  [k] handle_mm_fault\n     2.40%     mmap  [kernel.kallsyms]  [k] do_page_fault\n\nThis patch reduces memcg\u0027s cost to some extent.\n(mem_cgroup_update_file_mapped is called by both of map/unmap)\n\nNote: It seems some more improvements are required..but no idea.\n      maybe removing set/unset flag is required.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c270f8f9988fb0d93ea214fdcff7ab90eb3d894",
      "tree": "b4f77a6714d245841ecec535ccbeba535c0d29a4",
      "parents": [
        "45531757b45cae0ce64c5aff08c2534d5a0fa3e7"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 27 15:33:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:09 2010 -0700"
      },
      "message": "memcg: fix race in file_mapped accouting flag management\n\nPresently memory cgroup accounts file-mapped by counter and flag.  counter\nis working in the same way with zone_stat but FileMapped flag only exists\nin memcg (for helping move_account).\n\nThis flag can be updated wrongly in a case.  Assume CPU0 and CPU1 and a\nthread mapping a page on CPU0, another thread unmapping it on CPU1.\n\n    CPU0                   \t\tCPU1\n\t\t\t\trmv rmap (mapcount 1-\u003e0)\n   add rmap (mapcount 0-\u003e1)\n   lock_page_cgroup()\n   memcg counter+1\t\t(some delay)\n   set MAPPED FLAG.\n   unlock_page_cgroup()\n\t\t\t\tlock_page_cgroup()\n\t\t\t\tmemcg counter-1\n\t\t\t\tclear MAPPED flag\n\nIn the above sequence counter is properly updated but FLAG is not.  This\nmeans that representing a state by a flag which is maintained by counter\nneeds some special care.\n\nTo handle this, when clearing a flag, this patch check mapcount directly\nand clear the flag only when mapcount \u003d\u003d 0.  (if mapcount \u003e0, someone will\nmake it to zero later and flag will be cleared.)\n\nReverse case, dec-after-inc cannot be a problem because page_table_lock()\nworks well for it.  (IOW, to make above sequence, 2 processes should touch\nthe same page at once with map/unmap.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8e23a291852cd7c4fb5ca696dbb93912185ad10",
      "tree": "df0cf7cfe8d8600563a96cb5426de69759165e52",
      "parents": [
        "12ba8d1e9262ce81a695795410bd9ee5c9407ba1"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Oct 27 15:32:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:05 2010 -0700"
      },
      "message": "mm,x86: fix kmap_atomic_push vs ioremap_32.c\n\nIt appears i386 uses kmap_atomic infrastructure regardless of\nCONFIG_HIGHMEM which results in a compile error when highmem is disabled.\n\nCure this by providing the needed few bits for both CONFIG_HIGHMEM and\nCONFIG_X86_32.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReported-by: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c7fcf762e405eb040ee10d22d656a791f616122",
      "tree": "2ec4f320fe2d348ffbdab6aebc9a36bcbf13da34",
      "parents": [
        "a5e03ca2fd57a5823b759981bff8d19b46ddad4d"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Oct 27 17:29:01 2010 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Oct 27 17:29:01 2010 +0100"
      },
      "message": "MN10300: Save frame pointer in thread_info struct rather than global var\n\nSave the current exception frame pointer in the thread_info struct rather than\nin a global variable as the latter makes SMP tricky, especially when preemption\nis also enabled.\n\nThis also replaces __frame with current_frame() and rearranges header file\ninclusions to make it all compile.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Akira Takeuchi \u003ctakeuchi.akr@jp.panasonic.com\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "766f9164193f6dda1497bbf3861060198421fb92",
      "tree": "a2fd9a8231d12b822721a4306b614dd0e2e0d9c0",
      "parents": [
        "4ce6494dbd8909718840bb88d5a699ef6ce5c212"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 26 14:22:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:15 2010 -0700"
      },
      "message": "kernel: remove PF_FLUSHER\n\nPF_FLUSHER is only ever set, not tested, remove it.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ecb01df3261d3b1f02ccfcf8384e2a255d2a1d0",
      "tree": "1fe91114d8829a511db48d757c787cfede3b929c",
      "parents": [
        "b6472776816af1ed52848c93d26e3edb3b17adab"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Tue Oct 26 14:22:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:13 2010 -0700"
      },
      "message": "use clear_page()/copy_page() in favor of memset()/memcpy() on whole pages\n\nAfter all that\u0027s what they are intended for.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "732eacc0542d0aa48797f675888b85d6065af837",
      "tree": "53205cea4b99cc8dfed8f59438cf4214ef6546ad",
      "parents": [
        "f27c85c56b32c42bcc54a43189c1e00fdceb23ec"
      ],
      "author": {
        "name": "Hagen Paul Pfeifer",
        "email": "hagen@jauu.net",
        "time": "Tue Oct 26 14:22:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:12 2010 -0700"
      },
      "message": "replace nested max/min macros with {max,min}3 macro\n\nUse the new {max,min}3 macros to save some cycles and bytes on the stack.\nThis patch substitutes trivial nested macros with their counterpart.\n\nSigned-off-by: Hagen Paul Pfeifer \u003chagen@jauu.net\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Sean Hefty \u003csean.hefty@intel.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3ab2636c5c1dd9ab0ff53a46d8354d5769ffdd4",
      "tree": "4173f57c2c37800dc5b3f5f08b294d560e645e9d",
      "parents": [
        "809c444977adb7313e0612e9e3af4b73ba3f5746"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Tue Oct 26 14:22:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm: do_migrate_range: reduce list_empty() check\n\nSimple code for reducing list_empty(\u0026source) check.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "809c444977adb7313e0612e9e3af4b73ba3f5746",
      "tree": "725f4e352fb34204ec7299bf575251db6f22c942",
      "parents": [
        "f6a3607e5f30dc642bead8cd95c48d47b6b4bfbb"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Tue Oct 26 14:22:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm: do_migrate_range: exit loop if not_managed is true\n\nIf not_managed is true all pages will be putback to lru, so break the loop\nearlier to skip other pages isolate.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6a3607e5f30dc642bead8cd95c48d47b6b4bfbb",
      "tree": "42a2f04238eb2090e1d13914f92489e4029b4a2d",
      "parents": [
        "572438f9b52236bd8938b1647cc15e027d27ef55"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Tue Oct 26 14:22:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm: page_isolation: codeclean fix comment and rm unneeded val init\n\n__test_page_isolated_in_pageblock() returns 1 if all pages in the range\nare isolated, so fix the comment.  Variable `pfn\u0027 will be initialised in\nthe following loop so remove it.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "572438f9b52236bd8938b1647cc15e027d27ef55",
      "tree": "040d41121c01501a613d5f280b2d9fd6ef562447",
      "parents": [
        "44e2aa937e698ea95dd86b2a4fabd734ef2c76db"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 26 14:22:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm: fix is_mem_section_removable() page_order BUG_ON check\n\npage_order() is called by memory hotplug\u0027s user interface to check the\nsection is removable or not.  (is_mem_section_removable())\n\nIt calls page_order() withoug holding zone-\u003elock.\nSo, even if the caller does\n\n\tif (PageBuddy(page))\n\t\tret \u003d page_order(page) ...\nThe caller may hit BUG_ON().\n\nFor fixing this, there are 2 choices.\n  1. add zone-\u003elock.\n  2. remove BUG_ON().\n\nis_mem_section_removable() is used for some \"advice\" and doesn\u0027t need to\nbe 100% accurate.  This is_removable() can be called via user program..\nWe don\u0027t want to take this important lock for long by user\u0027s request.  So,\nthis patch removes BUG_ON().\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "44e2aa937e698ea95dd86b2a4fabd734ef2c76db",
      "tree": "691e3e8b04f486fe8a13fc43587c0144275e7c70",
      "parents": [
        "70384dc6dcc6aa76762200262820bdb8b724ecd5"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dnelson@redhat.com",
        "time": "Tue Oct 26 14:22:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm/hugetlb.c: add missing spin_lock() to hugetlb_cow()\n\nAdd missing spin_lock() of the page_table_lock before an error return in\nhugetlb_cow(). Callers of hugtelb_cow() expect it to be held upon return.\n\nSigned-off-by: Dean Nelson \u003cdnelson@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70384dc6dcc6aa76762200262820bdb8b724ecd5",
      "tree": "2a1692b185b2bbb9dc3890cdb897ef2a0d375c15",
      "parents": [
        "66d7dd518ae413a383ab2c6c263cc30617329842"
      ],
      "author": {
        "name": "Gleb Natapov",
        "email": "gleb@redhat.com",
        "time": "Tue Oct 26 14:22:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "mm: fix error reporting in move_pages() syscall\n\nThe vma returned by find_vma does not necessarily include the target\naddress.  If this happens the code tries to follow a page outside of any\nvma and returns ENOENT instead of EFAULT.\n\nSigned-off-by: Gleb Natapov \u003cgleb@redhat.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66d7dd518ae413a383ab2c6c263cc30617329842",
      "tree": "8e16f734aebba063e0df052825ac375aefeeab5a",
      "parents": [
        "e1ca7788dec6773b1a2bce51b7141948f2b8bccf"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Oct 26 14:22:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:11 2010 -0700"
      },
      "message": "/proc/swaps: support polling\n\nSystem management wants to subscribe to changes in swap configuration.\nMake /proc/swaps pollable like /proc/mounts.\n\n[akpm@linux-foundation.org: document proc_poll_event]\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1ca7788dec6773b1a2bce51b7141948f2b8bccf",
      "tree": "500edef0ca88f398647f99e63be0a38307314319",
      "parents": [
        "7bbc0905ea4f7a471a7f79d0bea5d538f5114fc9"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Tue Oct 26 14:22:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "mm: add vzalloc() and vzalloc_node() helpers\n\nAdd vzalloc() and vzalloc_node() to encapsulate the\nvmalloc-then-memset-zero operation.\n\nUse __GFP_ZERO to zero fill the allocated memory.\n\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bbc0905ea4f7a471a7f79d0bea5d538f5114fc9",
      "tree": "3e4f3145932027a34dbba136e448b8c8c50ca060",
      "parents": [
        "74ce002d9aee23031b4967e1dd1c1966ddc60749"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 26 14:22:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "mm/memory_hotplug.c: make scan_lru_pages() static\n\nReported-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36deb0be314702627aeae1f5737fc84d01dc26c6",
      "tree": "d6f68a2333bcb706921bd47e2fc3813c18487916",
      "parents": [
        "92c09c041f15fc88b35f8628e07639f52e1fbb38"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "vmstat: include compaction.h when CONFIG_COMPACTION\n\nThis removes following warning from sparse:\n\n mm/vmstat.c:466:5: warning: symbol \u0027fragmentation_index\u0027 was not declared. Should it be static?\n\n[akpm@linux-foundation.org: move the include to top-of-file]\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e199b5d1fed13f5e8f47a0ee8216f36244dad1f4",
      "tree": "32b746b1ea5f59a9cf33d14b119236c78d18b398",
      "parents": [
        "170168d0a351c045adc0bee0987e51dfc82890c0"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "vmalloc: annotate lock context change on s_start/stop()\n\ns_start() and s_stop() grab/release vmlist_lock but were missing proper\nannotations.  Add them.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "170168d0a351c045adc0bee0987e51dfc82890c0",
      "tree": "e986de7fff1dd6258038e8f205190f49d6d7698c",
      "parents": [
        "e574b5fd20027b422aa80790f710d695699b4fba"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "vmalloc: rename temporary variable in __insert_vmap_area()\n\nRename redundant \u0027tmp\u0027 to fix following sparse warnings:\n\n mm/vmalloc.c:296:34: warning: symbol \u0027tmp\u0027 shadows an earlier one\n mm/vmalloc.c:293:24: originally declared here\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e574b5fd20027b422aa80790f710d695699b4fba",
      "tree": "0aca49bb6fde5c30e74546a6cb97befa00d613ad",
      "parents": [
        "e9a81a821d7f9c5d899cc3acdeafbd884c2c48bb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:10 2010 -0700"
      },
      "message": "rmap: make anon_vma_chain_free() static\n\nMake anon_vma_chain_free() static.  It is called only in rmap.c and the\ncorresponding alloc function is already static.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9a81a821d7f9c5d899cc3acdeafbd884c2c48bb",
      "tree": "aff8d136fbe592eb31d6f7911b0d430b766d00d8",
      "parents": [
        "ea4525b6008fb29553306ec6719f8e6930ac9499"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "rmap: wrap page_check_address() using __cond_lock()\n\nThe page_check_address() conditionally grabs *@ptlp in case of returning\nnon-NULL.  Rename and wrap it using __cond_lock() removes following\nwarnings from sparse:\n\n mm/rmap.c:472:9: warning: context imbalance in \u0027page_mapped_in_vma\u0027 - unexpected unlock\n mm/rmap.c:524:9: warning: context imbalance in \u0027page_referenced_one\u0027 - unexpected unlock\n mm/rmap.c:706:9: warning: context imbalance in \u0027page_mkclean_one\u0027 - unexpected unlock\n mm/rmap.c:1066:9: warning: context imbalance in \u0027try_to_unmap_one\u0027 - unexpected unlock\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea4525b6008fb29553306ec6719f8e6930ac9499",
      "tree": "1d168e0a05a5f2fc962b8a6e991a21b704ad6e0b",
      "parents": [
        "1b36ba815bd91f17e31277a44dd5c6b6a5a8d97e"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "rmap: annotate lock context change on page_[un]lock_anon_vma()\n\nThe page_lock_anon_vma() conditionally grabs RCU and anon_vma lock but\npage_unlock_anon_vma() releases them unconditionally.  This leads sparse\nto complain about context imbalance.  Annotate them.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b36ba815bd91f17e31277a44dd5c6b6a5a8d97e",
      "tree": "9d68d66e780c619b01c5d8ddc93e19547b448142",
      "parents": [
        "e6219ec8195efd5640765e657810f262ad9d1a92"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: wrap follow_pte() using __cond_lock()\n\nThe follow_pte() conditionally grabs *@ptlp in case of returning 0.\nRename and wrap it using __cond_lock() removes following warnings:\n\n mm/memory.c:2337:9: warning: context imbalance in \u0027do_wp_page\u0027 - unexpected unlock\n mm/memory.c:3142:19: warning: context imbalance in \u0027handle_mm_fault\u0027 - different lock contexts for basic block\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6219ec8195efd5640765e657810f262ad9d1a92",
      "tree": "36c718adce5018fe87398fc7d8ebb7c1dfb14646",
      "parents": [
        "25ca1d6c02fe1c6d90d918867ef670d323725458"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:22:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: add lock release annotation on do_wp_page()\n\nThe do_wp_page() releases @ptl but was missing proper annotation.  Add it.\n This removes following warnings from sparse:\n\n mm/memory.c:2337:9: warning: context imbalance in \u0027do_wp_page\u0027 - unexpected unlock\n mm/memory.c:3142:19: warning: context imbalance in \u0027handle_mm_fault\u0027 - different lock contexts for basic block\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25ca1d6c02fe1c6d90d918867ef670d323725458",
      "tree": "de1709dd1dc7e0b9e9bd91840beb02f12e56b7e0",
      "parents": [
        "e6223a3b19421e3a8df1352d21fd0d71093f44ae"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:21:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: wrap get_locked_pte() using __cond_lock()\n\nThe get_locked_pte() conditionally grabs \u0027ptl\u0027 in case of returning\nnon-NULL.  This leads sparse to complain about context imbalance.  Rename\nand wrap it using __cond_lock() to make sparse happy.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e6223a3b19421e3a8df1352d21fd0d71093f44ae",
      "tree": "becc54c4946d7226fcfbe115a864035c448d8884",
      "parents": [
        "0116651c85e671a693dd2f56e95dd651f746c973"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:21:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: add casts to/from gfp_t in gfp_to_alloc_flags()\n\nThis removes following warning from sparse:\n\n mm/page_alloc.c:1934:9: warning: restricted gfp_t degrades to integer\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0116651c85e671a693dd2f56e95dd651f746c973",
      "tree": "d09f274105bc756b5fbd09dcb55302c0191e7e74",
      "parents": [
        "68da336a14e16c2de95e987f3200995b707d7038"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Oct 26 14:21:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: remove temporary variable on generic_file_direct_write()\n\n\u0027end\u0027 shadows earlier one and is not necessary at all.  Remove it and use\n\u0027pos\u0027 instead.  This removes following sparse warnings:\n\n mm/filemap.c:2180:24: warning: symbol \u0027end\u0027 shadows an earlier one\n mm/filemap.c:2132:25: originally declared here\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d065bd810b6deb67d4897a14bfe21f8eb526ba99",
      "tree": "f58c59075732ec4ccba336278c9bdc7ff61bef94",
      "parents": [
        "b522c94da5d9cbc73f708be5e530ebc3bbd4a031"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Tue Oct 26 14:21:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: retry page fault when blocking on disk transfer\n\nThis change reduces mmap_sem hold times that are caused by waiting for\ndisk transfers when accessing file mapped VMAs.\n\nIt introduces the VM_FAULT_ALLOW_RETRY flag, which indicates that the call\nsite wants mmap_sem to be released if blocking on a pending disk transfer.\nIn that case, filemap_fault() returns the VM_FAULT_RETRY status bit and\ndo_page_fault() will then re-acquire mmap_sem and retry the page fault.\n\nIt is expected that the retry will hit the same page which will now be\ncached, and thus it will complete with a low mmap_sem hold time.\n\nTests:\n\n- microbenchmark: thread A mmaps a large file and does random read accesses\n  to the mmaped area - achieves about 55 iterations/s. Thread B does\n  mmap/munmap in a loop at a separate location - achieves 55 iterations/s\n  before, 15000 iterations/s after.\n\n- We are seeing related effects in some applications in house, which show\n  significant performance regressions when running without this change.\n\n[akpm@linux-foundation.org: fix warning \u0026 crash]\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b522c94da5d9cbc73f708be5e530ebc3bbd4a031",
      "tree": "d29cc4887bca05fde5b86a367f02a3ea70043e11",
      "parents": [
        "182fea8f48332de085c0ae936605cb72671db9f2"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Tue Oct 26 14:21:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:09 2010 -0700"
      },
      "message": "mm: filemap_fault: unique path for locking page\n\nIntroduce a single location where filemap_fault() locks the desired page.\nThere used to be two such places, depending if the initial find_get_page()\nwas successful or not.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea05c8444e451f1cfbf78c68733e717ad7b8602b",
      "tree": "e1ebb0406f156e406b3bef5998084b688794923e",
      "parents": [
        "d65bfacb046f3df8aa11a9cb9b6e448f6171174d"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Oct 26 14:21:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "mm: add a might_sleep_if() to dma_pool_alloc()\n\nBuggy drivers (e.g.  fsl_udc) could call dma_pool_alloc from atomic\ncontext with GFP_KERNEL.  In most instances, the first pool_alloc_page\ncall would succeed and the sleeping functions would never be called.  This\nallowed the buggy drivers to slip through the cracks.\n\nAdd a might_sleep_if() checking for __GFP_WAIT in flags.\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ece0e2b6406a995c371e0311190631ea34ad851a",
      "tree": "726a516a91f5f7efe9dbb247ba28d019981d456e",
      "parents": [
        "3e4d3af501cccdc8a8cca41bdbe57d54ad7e7e73"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 26 14:21:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "mm: remove pte_*map_nested()\n\nSince we no longer need to provide KM_type, the whole pte_*map_nested()\nAPI is now redundant, remove it.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e4d3af501cccdc8a8cca41bdbe57d54ad7e7e73",
      "tree": "2ce507f7ec7275563653e52f18606aba4f99b7f1",
      "parents": [
        "61ecdb801ef2cd28e32442383106d7837d76deac"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 26 14:21:51 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "mm: stack based kmap_atomic()\n\nKeep the current interface but ignore the KM_type and use a stack based\napproach.\n\nThe advantage is that we get rid of crappy code like:\n\n\t#define __KM_PTE\t\t\t\\\n\t\t(in_nmi() ? KM_NMI_PTE : \t\\\n\t\t in_irq() ? KM_IRQ_PTE :\t\\\n\t\t KM_PTE0)\n\nand in general can stop worrying about what context we\u0027re in and what kmap\nslots might be appropriate for that.\n\nThe downside is that FRV kmap_atomic() gets more expensive.\n\nFor now we use a CPP trick suggested by Andrew:\n\n  #define kmap_atomic(page, args...) __kmap_atomic(page)\n\nto avoid having to touch all kmap_atomic() users in a single patch.\n\n[ not compiled on:\n  - mn10300: the arch doesn\u0027t actually build with highmem to begin with ]\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix up drivers/gpu/drm/i915/intel_overlay.c]\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e30244a7cc1ff09013a1238d415b4076406388e",
      "tree": "f555a78df877bbbd300ba3ebce6e31b5609e965f",
      "parents": [
        "4cbec4c8b9fda9ec784086fe7f74cd32a8adda95"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "vmscan,tmpfs: treat used once pages on tmpfs as used once\n\nWhen a page has PG_referenced, shrink_page_list() discards it only if it\nis not dirty.  This rule works fine if the backing filesystem is a regular\none.  PG_dirty is a good signal that the page was used recently because\nthe flusher threads clean pages periodically.  In addition, page writeback\nis costlier than simple page discard.\n\nHowever, when a page is on tmpfs this heuristic doesn\u0027t work because\nflusher threads don\u0027t write back tmpfs pages.  Consequently tmpfs pages\nalways rotate around the lru twice at least and adds unnecessary lru\nchurn.  Simple tmpfs streaming io shouldn\u0027t cause large anonymous page\nswap-out.\n\nRemove this unncessary reclaim bonus of tmpfs pages.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4cbec4c8b9fda9ec784086fe7f74cd32a8adda95",
      "tree": "669c3df27982345b52d0bfca8026e3f275e64a03",
      "parents": [
        "0e093d99763eb4cea09f8ca4f1d01f34e121d10b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "writeback: remove the internal 5% low bound on dirty_ratio\n\nThe dirty_ratio was silently limited in global_dirty_limits() to \u003e\u003d 5%.\nThis is not a user expected behavior.  And it\u0027s inconsistent with\ncalc_period_shift(), which uses the plain vm_dirty_ratio value.\n\nLet\u0027s remove the internal bound.\n\nAt the same time, fix balance_dirty_pages() to work with the\ndirty_thresh\u003d0 case.  This allows applications to proceed when\ndirty+writeback pages are all cleaned.\n\nAnd \"\u003e\" fits with the name \"exceeded\" better than \"\u003e\u003d\" does.  Neil thinks\nit is an aesthetic improvement as well as a functional one :)\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nProposed-by: Con Kolivas \u003ckernel@kolivas.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e093d99763eb4cea09f8ca4f1d01f34e121d10b",
      "tree": "fad38f9c3651c81db298521141a79d9468f71986",
      "parents": [
        "08fc468f4eaf6683bae5bdb94743a09d8630cb80"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 26 14:21:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "writeback: do not sleep on the congestion queue if there are no congested BDIs or if significant congestion is not being encountered in the current zone\n\nIf congestion_wait() is called with no BDI congested, the caller will\nsleep for the full timeout and this may be an unnecessary sleep.  This\npatch adds a wait_iff_congested() that checks congestion and only sleeps\nif a BDI is congested else, it calls cond_resched() to ensure the caller\nis not hogging the CPU longer than its quota but otherwise will not sleep.\n\nThis is aimed at reducing some of the major desktop stalls reported during\nIO.  For example, while kswapd is operating, it calls congestion_wait()\nbut it could just have been reclaiming clean page cache pages with no\ncongestion.  Without this patch, it would sleep for a full timeout but\nafter this patch, it\u0027ll just call schedule() if it has been on the CPU too\nlong.  Similar logic applies to direct reclaimers that are not making\nenough progress.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08fc468f4eaf6683bae5bdb94743a09d8630cb80",
      "tree": "a2225421eb8e01a8e9df588f5064be81059af91a",
      "parents": [
        "47185052165a4c5de0a461018238375dd982c2ec"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "vmscan: isolate_lru_pages(): stop neighbour search if neighbour cannot be isolated\n\nisolate_lru_pages() does not just isolate LRU tail pages, but also\nisolates neighbour pages of the eviction page.  The neighbour search does\nnot stop even if neighbours cannot be isolated which is excessive as the\nlumpy reclaim will no longer result in a successful higher order\nallocation.  This patch stops the PFN neighbour pages if an isolation\nfails and moves on to the next block.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47185052165a4c5de0a461018238375dd982c2ec",
      "tree": "4425005eb24efdd66d0d9d4f95a11fdad04843b1",
      "parents": [
        "7d3579e8e61937cbba268ea9b218d006b6d64221"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "vmscan: remove dead code in shrink_inactive_list()\n\nAfter synchrounous lumpy reclaim, the page_list is guaranteed to not have\nactive pages as page activation in shrink_page_list() disables lumpy\nreclaim.  Remove the dead code.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d3579e8e61937cbba268ea9b218d006b6d64221",
      "tree": "4fa1863641343eee551681d60a823a84a2611289",
      "parents": [
        "bc57e00f5e0b2480ef222c775c49552d3a930db7"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "vmscan: narrow the scenarios in whcih lumpy reclaim uses synchrounous reclaim\n\nshrink_page_list() can decide to give up reclaiming a page under a\nnumber of conditions such as\n\n  1. trylock_page() failure\n  2. page is unevictable\n  3. zone reclaim and page is mapped\n  4. PageWriteback() is true\n  5. page is swapbacked and swap is full\n  6. add_to_swap() failure\n  7. page is dirty and gfpmask don\u0027t have GFP_IO, GFP_FS\n  8. page is pinned\n  9. IO queue is congested\n 10. pageout() start IO, but not finished\n\nWith lumpy reclaim, failures result in entering synchronous lumpy reclaim\nbut this can be unnecessary.  In cases (2), (3), (5), (6), (7) and (8),\nthere is no point retrying.  This patch causes lumpy reclaim to abort when\nit is known it will fail.\n\nCase (9) is more interesting. current behavior is,\n  1. start shrink_page_list(async)\n  2. found queue_congested()\n  3. skip pageout write\n  4. still start shrink_page_list(sync)\n  5. wait on a lot of pages\n  6. again, found queue_congested()\n  7. give up pageout write again\n\nSo, it\u0027s useless time wasting.  However, just skipping page reclaim is\nalso notgood as x86 allocating a huge page needs 512 pages for example.\nIt can have more dirty pages than queue congestion threshold (~\u003d128).\n\nAfter this patch, pageout() behaves as follows;\n\n - If order \u003e PAGE_ALLOC_COSTLY_ORDER\n\tIgnore queue congestion always.\n - If order \u003c\u003d PAGE_ALLOC_COSTLY_ORDER\n\tskip write page and disable lumpy reclaim.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc57e00f5e0b2480ef222c775c49552d3a930db7",
      "tree": "51aa33378602a41fb73b9b2fbee2ca04706aa9d6",
      "parents": [
        "52bb9198668968506f9d12bf35d7f5d3f094921e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "vmscan: synchronous lumpy reclaim should not call congestion_wait()\n\ncongestion_wait() means \"wait until queue congestion is cleared\".\nHowever, synchronous lumpy reclaim does not need this congestion_wait() as\nshrink_page_list(PAGEOUT_IO_SYNC) uses wait_on_page_writeback() and it\nprovides the necessary waiting.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "52bb9198668968506f9d12bf35d7f5d3f094921e",
      "tree": "6e1f79c46de902c4462054803eb13115673f8c8c",
      "parents": [
        "e11da5b4fdf01d71d73c21cb92b00595b917d7fd"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 26 14:21:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "writeback: account for time spent congestion_waited\n\nThere is strong evidence to indicate a lot of time is being spent in\ncongestion_wait(), some of it unnecessarily.  This patch adds a tracepoint\nfor congestion_wait to record when congestion_wait() was called, how long\nthe timeout was for and how long it actually slept.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e11da5b4fdf01d71d73c21cb92b00595b917d7fd",
      "tree": "30da286bac7533fba5c119396491ab05a92471fd",
      "parents": [
        "66d9a986cddbbc2ea5db013e7999c621a956cc47"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 26 14:21:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "tracing, vmscan: add trace events for LRU list shrinking\n\nThere have been numerous reports of stalls that pointed at the problem\nbeing somewhere in the VM.  There are multiple roots to the problems which\nmeans dealing with any of the root problems in isolation is tricky to\njustify on their own and they would still need integration testing.  This\npatch series puts together two different patch sets which in combination\nshould tackle some of the root causes of latency problems being reported.\n\nPatch 1 adds a tracepoint for shrink_inactive_list.  For this series, the\nmost important results is being able to calculate the scanning/reclaim\nratio as a measure of the amount of work being done by page reclaim.\n\nPatch 2 accounts for time spent in congestion_wait.\n\nPatches 3-6 were originally developed by Kosaki Motohiro but reworked for\nthis series.  It has been noted that lumpy reclaim is far too aggressive\nand trashes the system somewhat.  As SLUB uses high-order allocations, a\nlarge cost incurred by lumpy reclaim will be noticeable.  It was also\nreported during transparent hugepage support testing that lumpy reclaim\nwas trashing the system and these patches should mitigate that problem\nwithout disabling lumpy reclaim.\n\nPatch 7 adds wait_iff_congested() and replaces some callers of\ncongestion_wait().  wait_iff_congested() only sleeps if there is a BDI\nthat is currently congested.  Patch 8 notes that any BDI being congested\nis not necessarily a problem because there could be multiple BDIs of\nvarying speeds and numberous zones.  It attempts to track when a zone\nbeing reclaimed contains many pages backed by a congested BDI and if so,\nreclaimers wait on the congestion queue.\n\nI ran a number of tests with monitoring on X86, X86-64 and PPC64. Each\nmachine had 3G of RAM and the CPUs were\n\nX86:    Intel P4 2-core\nX86-64: AMD Phenom 4-core\nPPC64:  PPC970MP\n\nEach used a single disk and the onboard IO controller.  Dirty ratio was\nleft at 20.  I\u0027m just going to report for X86-64 and PPC64 in a vague\nattempt to keep this report short.  Four kernels were tested each based on\nv2.6.36-rc4\n\ntraceonly-v2r2:     Patches 1 and 2 to instrument vmscan reclaims and congestion_wait\nlowlumpy-v2r3:      Patches 1-6 to test if lumpy reclaim is better\nwaitcongest-v2r3:   Patches 1-7 to only wait on congestion\nwaitwriteback-v2r4: Patches 1-8 to detect when a zone is congested\n\nnocongest-v1r5: Patches 1-3 for testing wait_iff_congestion\nnodirect-v1r5:  Patches 1-10 to disable filesystem writeback for better IO\n\nThe tests run were as follows\n\nkernbench\n\tcompile-based benchmark. Smoke test performance\n\nsysbench\n\tOLTP read-only benchmark. Will be re-run in the future as read-write\n\nmicro-mapped-file-stream\n\tThis is a micro-benchmark from Johannes Weiner that accesses a\n\tlarge sparse-file through mmap(). It was configured to run in only\n\tsingle-CPU mode but can be indicative of how well page reclaim\n\tidentifies suitable pages.\n\nstress-highalloc\n\tTries to allocate huge pages under heavy load.\n\nkernbench, iozone and sysbench did not report any performance regression\non any machine.  sysbench did pressure the system lightly and there was\nreclaim activity but there were no difference of major interest between\nthe kernels.\n\nX86-64 micro-mapped-file-stream\n\n                                      traceonly-v2r2           lowlumpy-v2r3        waitcongest-v2r3     waitwriteback-v2r4\npgalloc_dma                       1639.00 (   0.00%)       667.00 (-145.73%)      1167.00 ( -40.45%)       578.00 (-183.56%)\npgalloc_dma32                  2842410.00 (   0.00%)   2842626.00 (   0.01%)   2843043.00 (   0.02%)   2843014.00 (   0.02%)\npgalloc_normal                       0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgsteal_dma                        729.00 (   0.00%)        85.00 (-757.65%)       609.00 ( -19.70%)       125.00 (-483.20%)\npgsteal_dma32                  2338721.00 (   0.00%)   2447354.00 (   4.44%)   2429536.00 (   3.74%)   2436772.00 (   4.02%)\npgsteal_normal                       0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgscan_kswapd_dma                 1469.00 (   0.00%)       532.00 (-176.13%)      1078.00 ( -36.27%)       220.00 (-567.73%)\npgscan_kswapd_dma32            4597713.00 (   0.00%)   4503597.00 (  -2.09%)   4295673.00 (  -7.03%)   3891686.00 ( -18.14%)\npgscan_kswapd_normal                 0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgscan_direct_dma                   71.00 (   0.00%)       134.00 (  47.01%)       243.00 (  70.78%)       352.00 (  79.83%)\npgscan_direct_dma32             305820.00 (   0.00%)    280204.00 (  -9.14%)    600518.00 (  49.07%)    957485.00 (  68.06%)\npgscan_direct_normal                 0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npageoutrun                       16296.00 (   0.00%)     21254.00 (  23.33%)     18447.00 (  11.66%)     20067.00 (  18.79%)\nallocstall                         443.00 (   0.00%)       273.00 ( -62.27%)       513.00 (  13.65%)      1568.00 (  71.75%)\n\nThese are based on the raw figures taken from /proc/vmstat.  It\u0027s a rough\nmeasure of reclaim activity.  Note that allocstall counts are higher\nbecause we are entering direct reclaim more often as a result of not\nsleeping in congestion.  In itself, it\u0027s not necessarily a bad thing.\nIt\u0027s easier to get a view of what happened from the vmscan tracepoint\nreport.\n\nFTrace Reclaim Statistics: vmscan\n\n                                traceonly-v2r2   lowlumpy-v2r3 waitcongest-v2r3 waitwriteback-v2r4\nDirect reclaims                                443        273        513       1568\nDirect reclaim pages scanned                305968     280402     600825     957933\nDirect reclaim pages reclaimed               43503      19005      30327     117191\nDirect reclaim write file async I/O              0          0          0          0\nDirect reclaim write anon async I/O              0          3          4         12\nDirect reclaim write file sync I/O               0          0          0          0\nDirect reclaim write anon sync I/O               0          0          0          0\nWake kswapd requests                        187649     132338     191695     267701\nKswapd wakeups                                   3          1          4          1\nKswapd pages scanned                       4599269    4454162    4296815    3891906\nKswapd pages reclaimed                     2295947    2428434    2399818    2319706\nKswapd reclaim write file async I/O              1          0          1          1\nKswapd reclaim write anon async I/O             59        187         41        222\nKswapd reclaim write file sync I/O               0          0          0          0\nKswapd reclaim write anon sync I/O               0          0          0          0\nTime stalled direct reclaim (seconds)         4.34       2.52       6.63       2.96\nTime kswapd awake (seconds)                  11.15      10.25      11.01      10.19\n\nTotal pages scanned                        4905237   4734564   4897640   4849839\nTotal pages reclaimed                      2339450   2447439   2430145   2436897\n%age total pages scanned/reclaimed          47.69%    51.69%    49.62%    50.25%\n%age total pages scanned/written             0.00%     0.00%     0.00%     0.00%\n%age  file pages scanned/written             0.00%     0.00%     0.00%     0.00%\nPercentage Time Spent Direct Reclaim        29.23%    19.02%    38.48%    20.25%\nPercentage Time kswapd Awake                78.58%    78.85%    76.83%    79.86%\n\nWhat is interesting here for nocongest in particular is that while direct\nreclaim scans more pages, the overall number of pages scanned remains the\nsame and the ratio of pages scanned to pages reclaimed is more or less the\nsame.  In other words, while we are sleeping less, reclaim is not doing\nmore work and as direct reclaim and kswapd is awake for less time, it\nwould appear to be doing less work.\n\nFTrace Reclaim Statistics: congestion_wait\nDirect number congest     waited                87        196         64          0\nDirect time   congest     waited            4604ms     4732ms     5420ms        0ms\nDirect full   congest     waited                72        145         53          0\nDirect number conditional waited                 0          0        324       1315\nDirect time   conditional waited               0ms        0ms        0ms        0ms\nDirect full   conditional waited                 0          0          0          0\nKSwapd number congest     waited                20         10         15          7\nKSwapd time   congest     waited            1264ms      536ms      884ms      284ms\nKSwapd full   congest     waited                10          4          6          2\nKSwapd number conditional waited                 0          0          0          0\nKSwapd time   conditional waited               0ms        0ms        0ms        0ms\nKSwapd full   conditional waited                 0          0          0          0\n\nThe vanilla kernel spent 8 seconds asleep in direct reclaim and no time at\nall asleep with the patches.\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)         10.51     10.73      10.6     11.66\nTotal Elapsed Time (seconds)                 14.19     13.00     14.33     12.76\n\nOverall, the tests completed faster. It is interesting to note that backing off further\nwhen a zone is congested and not just a BDI was more efficient overall.\n\nPPC64 micro-mapped-file-stream\npgalloc_dma                    3024660.00 (   0.00%)   3027185.00 (   0.08%)   3025845.00 (   0.04%)   3026281.00 (   0.05%)\npgalloc_normal                       0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgsteal_dma                    2508073.00 (   0.00%)   2565351.00 (   2.23%)   2463577.00 (  -1.81%)   2532263.00 (   0.96%)\npgsteal_normal                       0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgscan_kswapd_dma              4601307.00 (   0.00%)   4128076.00 ( -11.46%)   3912317.00 ( -17.61%)   3377165.00 ( -36.25%)\npgscan_kswapd_normal                 0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npgscan_direct_dma               629825.00 (   0.00%)    971622.00 (  35.18%)   1063938.00 (  40.80%)   1711935.00 (  63.21%)\npgscan_direct_normal                 0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)         0.00 (   0.00%)\npageoutrun                       27776.00 (   0.00%)     20458.00 ( -35.77%)     18763.00 ( -48.04%)     18157.00 ( -52.98%)\nallocstall                         977.00 (   0.00%)      2751.00 (  64.49%)      2098.00 (  53.43%)      5136.00 (  80.98%)\n\nSimilar trends to x86-64. allocstalls are up but it\u0027s not necessarily bad.\n\nFTrace Reclaim Statistics: vmscan\nDirect reclaims                                977       2709       2098       5136\nDirect reclaim pages scanned                629825     963814    1063938    1711935\nDirect reclaim pages reclaimed               75550     242538     150904     387647\nDirect reclaim write file async I/O              0          0          0          2\nDirect reclaim write anon async I/O              0         10          0          4\nDirect reclaim write file sync I/O               0          0          0          0\nDirect reclaim write anon sync I/O               0          0          0          0\nWake kswapd requests                        392119    1201712     571935     571921\nKswapd wakeups                                   3          2          3          3\nKswapd pages scanned                       4601307    4128076    3912317    3377165\nKswapd pages reclaimed                     2432523    2318797    2312673    2144616\nKswapd reclaim write file async I/O             20          1          1          1\nKswapd reclaim write anon async I/O             57        132         11        121\nKswapd reclaim write file sync I/O               0          0          0          0\nKswapd reclaim write anon sync I/O               0          0          0          0\nTime stalled direct reclaim (seconds)         6.19       7.30      13.04      10.88\nTime kswapd awake (seconds)                  21.73      26.51      25.55      23.90\n\nTotal pages scanned                        5231132   5091890   4976255   5089100\nTotal pages reclaimed                      2508073   2561335   2463577   2532263\n%age total pages scanned/reclaimed          47.95%    50.30%    49.51%    49.76%\n%age total pages scanned/written             0.00%     0.00%     0.00%     0.00%\n%age  file pages scanned/written             0.00%     0.00%     0.00%     0.00%\nPercentage Time Spent Direct Reclaim        18.89%    20.65%    32.65%    27.65%\nPercentage Time kswapd Awake                72.39%    80.68%    78.21%    77.40%\n\nAgain, a similar trend that the congestion_wait changes mean that direct\nreclaim scans more pages but the overall number of pages scanned while\nslightly reduced, are very similar.  The ratio of scanning/reclaimed\nremains roughly similar.  The downside is that kswapd and direct reclaim\nwas awake longer and for a larger percentage of the overall workload.\nIt\u0027s possible there were big differences in the amount of time spent\nreclaiming slab pages between the different kernels which is plausible\nconsidering that the micro tests runs after fsmark and sysbench.\n\nTrace Reclaim Statistics: congestion_wait\nDirect number congest     waited               845       1312        104          0\nDirect time   congest     waited           19416ms    26560ms     7544ms        0ms\nDirect full   congest     waited               745       1105         72          0\nDirect number conditional waited                 0          0       1322       2935\nDirect time   conditional waited               0ms        0ms       12ms      312ms\nDirect full   conditional waited                 0          0          0          3\nKSwapd number congest     waited                39        102         75         63\nKSwapd time   congest     waited            2484ms     6760ms     5756ms     3716ms\nKSwapd full   congest     waited                20         48         46         25\nKSwapd number conditional waited                 0          0          0          0\nKSwapd time   conditional waited               0ms        0ms        0ms        0ms\nKSwapd full   conditional waited                 0          0          0          0\n\nThe vanilla kernel spent 20 seconds asleep in direct reclaim and only\n312ms asleep with the patches.  The time kswapd spent congest waited was\nalso reduced by a large factor.\n\nMMTests Statistics: duration\nser/Sys Time Running Test (seconds)         26.58     28.05      26.9     28.47\nTotal Elapsed Time (seconds)                 30.02     32.86     32.67     30.88\n\nWith all patches applies, the completion times are very similar.\n\nX86-64 STRESS-HIGHALLOC\n                traceonly-v2r2     lowlumpy-v2r3  waitcongest-v2r3waitwriteback-v2r4\nPass 1          82.00 ( 0.00%)    84.00 ( 2.00%)    85.00 ( 3.00%)    85.00 ( 3.00%)\nPass 2          90.00 ( 0.00%)    87.00 (-3.00%)    88.00 (-2.00%)    89.00 (-1.00%)\nAt Rest         92.00 ( 0.00%)    90.00 (-2.00%)    90.00 (-2.00%)    91.00 (-1.00%)\n\nSuccess figures across the board are broadly similar.\n\n                traceonly-v2r2     lowlumpy-v2r3  waitcongest-v2r3waitwriteback-v2r4\nDirect reclaims                               1045        944        886        887\nDirect reclaim pages scanned                135091     119604     109382     101019\nDirect reclaim pages reclaimed               88599      47535      47863      46671\nDirect reclaim write file async I/O            494        283        465        280\nDirect reclaim write anon async I/O          29357      13710      16656      13462\nDirect reclaim write file sync I/O             154          2          2          3\nDirect reclaim write anon sync I/O           14594        571        509        561\nWake kswapd requests                          7491        933        872        892\nKswapd wakeups                                 814        778        731        780\nKswapd pages scanned                       7290822   15341158   11916436   13703442\nKswapd pages reclaimed                     3587336    3142496    3094392    3187151\nKswapd reclaim write file async I/O          91975      32317      28022      29628\nKswapd reclaim write anon async I/O        1992022     789307     829745     849769\nKswapd reclaim write file sync I/O               0          0          0          0\nKswapd reclaim write anon sync I/O               0          0          0          0\nTime stalled direct reclaim (seconds)      4588.93    2467.16    2495.41    2547.07\nTime kswapd awake (seconds)                2497.66    1020.16    1098.06    1176.82\n\nTotal pages scanned                        7425913  15460762  12025818  13804461\nTotal pages reclaimed                      3675935   3190031   3142255   3233822\n%age total pages scanned/reclaimed          49.50%    20.63%    26.13%    23.43%\n%age total pages scanned/written            28.66%     5.41%     7.28%     6.47%\n%age  file pages scanned/written             1.25%     0.21%     0.24%     0.22%\nPercentage Time Spent Direct Reclaim        57.33%    42.15%    42.41%    42.99%\nPercentage Time kswapd Awake                43.56%    27.87%    29.76%    31.25%\n\nScanned/reclaimed ratios again look good with big improvements in\nefficiency.  The Scanned/written ratios also look much improved.  With a\nbetter scanned/written ration, there is an expectation that IO would be\nmore efficient and indeed, the time spent in direct reclaim is much\nreduced by the full series and kswapd spends a little less time awake.\n\nOverall, indications here are that allocations were happening much faster\nand this can be seen with a graph of the latency figures as the\nallocations were taking place\nhttp://www.csn.ul.ie/~mel/postings/vmscanreduce-20101509/highalloc-interlatency-hydra-mean.ps\n\nFTrace Reclaim Statistics: congestion_wait\nDirect number congest     waited              1333        204        169          4\nDirect time   congest     waited           78896ms     8288ms     7260ms      200ms\nDirect full   congest     waited               756         92         69          2\nDirect number conditional waited                 0          0         26        186\nDirect time   conditional waited               0ms        0ms        0ms     2504ms\nDirect full   conditional waited                 0          0          0         25\nKSwapd number congest     waited                 4        395        227        282\nKSwapd time   congest     waited             384ms    25136ms    10508ms    18380ms\nKSwapd full   congest     waited                 3        232         98        176\nKSwapd number conditional waited                 0          0          0          0\nKSwapd time   conditional waited               0ms        0ms        0ms        0ms\nKSwapd full   conditional waited                 0          0          0          0\nKSwapd full   conditional waited               318          0        312          9\n\nOverall, the time spent speeping is reduced.  kswapd is still hitting\ncongestion_wait() but that is because there are callers remaining where it\nwasn\u0027t clear in advance if they should be changed to wait_iff_congested()\nor not.  Overall the sleep imes are reduced though - from 79ish seconds to\nabout 19.\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)       3415.43   3386.65   3388.39    3377.5\nTotal Elapsed Time (seconds)               5733.48   3660.33   3689.41   3765.39\n\nWith the full series, the time to complete the tests are reduced by 30%\n\nPPC64 STRESS-HIGHALLOC\n                traceonly-v2r2     lowlumpy-v2r3  waitcongest-v2r3waitwriteback-v2r4\nPass 1          17.00 ( 0.00%)    34.00 (17.00%)    38.00 (21.00%)    43.00 (26.00%)\nPass 2          25.00 ( 0.00%)    37.00 (12.00%)    42.00 (17.00%)    46.00 (21.00%)\nAt Rest         49.00 ( 0.00%)    43.00 (-6.00%)    45.00 (-4.00%)    51.00 ( 2.00%)\n\nSuccess rates there are *way* up particularly considering that the 16MB\nhuge pages on PPC64 mean that it\u0027s always much harder to allocate them.\n\nFTrace Reclaim Statistics: vmscan\n              stress-highalloc  stress-highalloc  stress-highalloc  stress-highalloc\n                traceonly-v2r2     lowlumpy-v2r3  waitcongest-v2r3waitwriteback-v2r4\nDirect reclaims                                499        505        564        509\nDirect reclaim pages scanned                223478      41898      51818      45605\nDirect reclaim pages reclaimed              137730      21148      27161      23455\nDirect reclaim write file async I/O            399        136        162        136\nDirect reclaim write anon async I/O          46977       2865       4686       3998\nDirect reclaim write file sync I/O              29          0          1          3\nDirect reclaim write anon sync I/O           31023        159        237        239\nWake kswapd requests                           420        351        360        326\nKswapd wakeups                                 185        294        249        277\nKswapd pages scanned                      15703488   16392500   17821724   17598737\nKswapd pages reclaimed                     5808466    2908858    3139386    3145435\nKswapd reclaim write file async I/O         159938      18400      18717      13473\nKswapd reclaim write anon async I/O        3467554     228957     322799     234278\nKswapd reclaim write file sync I/O               0          0          0          0\nKswapd reclaim write anon sync I/O               0          0          0          0\nTime stalled direct reclaim (seconds)      9665.35    1707.81    2374.32    1871.23\nTime kswapd awake (seconds)                9401.21    1367.86    1951.75    1328.88\n\nTotal pages scanned                       15926966  16434398  17873542  17644342\nTotal pages reclaimed                      5946196   2930006   3166547   3168890\n%age total pages scanned/reclaimed          37.33%    17.83%    17.72%    17.96%\n%age total pages scanned/written            23.27%     1.52%     1.94%     1.43%\n%age  file pages scanned/written             1.01%     0.11%     0.11%     0.08%\nPercentage Time Spent Direct Reclaim        44.55%    35.10%    41.42%    36.91%\nPercentage Time kswapd Awake                86.71%    43.58%    52.67%    41.14%\n\nWhile the scanning rates are slightly up, the scanned/reclaimed and\nscanned/written figures are much improved.  The time spent in direct\nreclaim and with kswapd are massively reduced, mostly by the lowlumpy\npatches.\n\nFTrace Reclaim Statistics: congestion_wait\nDirect number congest     waited               725        303        126          3\nDirect time   congest     waited           45524ms     9180ms     5936ms      300ms\nDirect full   congest     waited               487        190         52          3\nDirect number conditional waited                 0          0        200        301\nDirect time   conditional waited               0ms        0ms        0ms     1904ms\nDirect full   conditional waited                 0          0          0         19\nKSwapd number congest     waited                 0          2         23          4\nKSwapd time   congest     waited               0ms      200ms      420ms      404ms\nKSwapd full   congest     waited                 0          2          2          4\nKSwapd number conditional waited                 0          0          0          0\nKSwapd time   conditional waited               0ms        0ms        0ms        0ms\nKSwapd full   conditional waited                 0          0          0          0\n\nNot as dramatic a story here but the time spent asleep is reduced and we\ncan still see what wait_iff_congested is going to sleep when necessary.\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)      12028.09   3157.17   3357.79   3199.16\nTotal Elapsed Time (seconds)              10842.07   3138.72   3705.54   3229.85\n\nThe time to complete this test goes way down.  With the full series, we\nare allocating over twice the number of huge pages in 30% of the time and\nthere is a corresponding impact on the allocation latency graph available\nat.\n\nhttp://www.csn.ul.ie/~mel/postings/vmscanreduce-20101509/highalloc-interlatency-powyah-mean.ps\n\nThis patch:\n\nAdd a trace event for shrink_inactive_list() and updates the sample\npostprocessing script appropriately.  It can be used to determine how many\npages were reclaimed and for non-lumpy reclaim where exactly the pages\nwere reclaimed from.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "66d9a986cddbbc2ea5db013e7999c621a956cc47"
}
