)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "66d9a986cddbbc2ea5db013e7999c621a956cc47",
      "tree": "bfe0d223e9b07c2300f445f9694525e956657d1e",
      "parents": [
        "bce54bbfde07e8b300f39dae14756c12a6ceca65"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Oct 26 14:21:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:07 2010 -0700"
      },
      "message": "vmscan: delete dead code\n\n`priority\u0027 cannot be negative here.  And the comment is obsolete.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@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": "79da826aee6a10902ef411bc65864bd02102fa83",
      "tree": "9cc3602fc53f889d9b7394663d4fdaa94d13a213",
      "parents": [
        "2ac390370aac4aaa49cab17f328b478cbd5b3d8d"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "writeback: report dirty thresholds in /proc/vmstat\n\nThe kernel already exposes the user desired thresholds in /proc/sys/vm\nwith dirty_background_ratio and background_ratio.  But the kernel may\nalter the number requested without giving the user any indication that is\nthe case.\n\nKnowing the actual ratios the kernel is honoring can help app developers\nunderstand how their buffered IO will be sent to the disk.\n\n        $ grep threshold /proc/vmstat\n        nr_dirty_threshold 409111\n        nr_dirty_background_threshold 818223\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea941f0e2a8c02ae876cd73deb4e1557248f258c",
      "tree": "d2006c10cce4f134dc83f7f5aaa1d0096902cc1a",
      "parents": [
        "f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "writeback: add nr_dirtied and nr_written to /proc/vmstat\n\nTo help developers and applications gain visibility into writeback\nbehaviour adding two entries to vm_stat_items and /proc/vmstat.  This will\nallow us to track the \"written\" and \"dirtied\" counts.\n\n   # grep nr_dirtied /proc/vmstat\n   nr_dirtied 3747\n   # grep nr_written /proc/vmstat\n   nr_written 3618\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f",
      "tree": "22ac36b494b40e17bfa68e85a094b9cc4b2f6093",
      "parents": [
        "0def08e3acc2c9c934e4671487029aed52202d42"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "mm: add account_page_writeback()\n\nTo help developers and applications gain visibility into writeback\nbehaviour this patch adds two counters to /proc/vmstat.\n\n  # grep nr_dirtied /proc/vmstat\n  nr_dirtied 3747\n  # grep nr_written /proc/vmstat\n  nr_written 3618\n\nThese entries allow user apps to understand writeback behaviour over time\nand learn how it is impacting their performance.  Currently there is no\nway to inspect dirty and writeback speed over time.  It\u0027s not possible for\nnr_dirty/nr_writeback.\n\nThese entries are necessary to give visibility into writeback behaviour.\nWe have /proc/diskstats which lets us understand the io in the block\nlayer.  We have blktrace for more in depth understanding.  We have\ne2fsprogs and debugsfs to give insight into the file systems behaviour,\nbut we don\u0027t offer our users the ability understand what writeback is\ndoing.  There is no way to know how active it is over the whole system, if\nit\u0027s falling behind or to quantify it\u0027s efforts.  With these values\nexported users can easily see how much data applications are sending\nthrough writeback and also at what rates writeback is processing this\ndata.  Comparing the rates of change between the two allow developers to\nsee when writeback is not able to keep up with incoming traffic and the\nrate of dirty memory being sent to the IO back end.  This allows folks to\nunderstand their io workloads and track kernel issues.  Non kernel\nengineers at Google often use these counters to solve puzzling performance\nproblems.\n\nPatch #4 adds a pernode vmstat file with nr_dirtied and nr_written\n\nPatch #5 add writeback thresholds to /proc/vmstat\n\nCurrently these values are in debugfs. But they should be promoted to\n/proc since they are useful for developers who are writing databases\nand file servers and are not debugging the kernel.\n\nThe output is as below:\n\n # grep threshold /proc/vmstat\n nr_pages_dirty_threshold 409111\n nr_pages_dirty_background_threshold 818223\n\nThis patch:\n\nThis allows code outside of the mm core to safely manipulate page\nwriteback state and not worry about the other accounting.  Not using these\nroutines means that some code will lose track of the accounting and we get\nbugs.\n\nModify nilfs2 to use interface.\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0def08e3acc2c9c934e4671487029aed52202d42",
      "tree": "5c1259f85b0ab08cb3e421f6104bee832a956413",
      "parents": [
        "74e3f3c3391d81a959f58a1191a560703a4415b4"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Tue Oct 26 14:21:32 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "mm/mempolicy.c: check return code of check_range\n\nFunction check_range may return ERR_PTR(...). Check for it.\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@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": "74e3f3c3391d81a959f58a1191a560703a4415b4",
      "tree": "b4688926ebe2c40b422bd6df0989ec09ea0f7046",
      "parents": [
        "49ac825587f33afec8841b7fab2eb4db775014e6"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Oct 26 14:21:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "vmscan: prevent background aging of anon page in no swap system\n\nYing Han reported that backing aging of anon pages in no swap system\ncauses unnecessary TLB flush.\n\nWhen I sent a patch(69c8548175), I wanted this patch but Rik pointed out\nand allowed aging of anon pages to give a chance to promote from inactive\nto active LRU.\n\nIt has a two problem.\n\n1) non-swap system\n\nNever make sense to age anon pages.\n\n2) swap configured but still doesn\u0027t swapon\n\nIt doesn\u0027t make sense to age anon pages until swap-on time.  But it\u0027s\narguable.  If we have aged anon pages by swapon, VM have moved anon pages\nfrom active to inactive.  And in the time swapon by admin, the VM can\u0027t\nreclaim hot pages so we can protect hot pages swapout.\n\nBut let\u0027s think about it.  When does swap-on happen?  It depends on admin.\n we can\u0027t expect it.  Nonetheless, we have done aging of anon pages to\nprotect hot pages swapout.  It means we lost run time overhead when below\nhigh watermark but gain hot page swap-[in/out] overhead when VM decide\nswapout.  Is it true?  Let\u0027s think more detail.  We don\u0027t promote anon\npages in case of non-swap system.  So even though VM does aging of anon\npages, the pages would be in inactive LRU for a long time.  It means many\nof pages in there would mark access bit again.  So access bit hot/code\nseparation would be pointless.\n\nThis patch prevents unnecessary anon pages demotion in not-yet-swapon and\nnon-configured swap system.  Even, in non-configuared swap system\ninactive_anon_is_low can be compiled out.\n\nIt could make side effect that hot anon pages could swap out when admin\ndoes swap on.  But I think sooner or later it would be steady state.  So\nit\u0027s not a big problem.\n\nWe could lose someting but gain more thing(TLB flush and unnecessary\nfunction call to demote anon pages).\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: 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": "49ac825587f33afec8841b7fab2eb4db775014e6",
      "tree": "6364721274c451fca7fc4fcea4e6cc533e630140",
      "parents": [
        "4b20477f588055fbe87e69435d3c2344d250f0d7"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "memory hotplug: unify is_removable and offline detection code\n\nNow, sysfs interface of memory hotplug shows whether the section is\nremovable or not.  But it checks only migrateype of pages and doesn\u0027t\ncheck details of cluster of pages.\n\nNext, memory hotplug\u0027s set_migratetype_isolate() has the same kind of\ncheck, too.\n\nThis patch adds the function __count_unmovable_pages() and makes above 2\nchecks to use the same logic.  Then, is_removable and hotremove code uses\nthe same logic.  No changes in the hotremove logic itself.\n\nTODO: need to find a way to check RECLAMABLE. But, considering bit,\n      calling shrink_slab() against a range before starting memory hotremove\n      sounds better. If so, this patch\u0027s logic doesn\u0027t need to be changed.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReported-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "4b20477f588055fbe87e69435d3c2344d250f0d7",
      "tree": "4e4d1ef7280ea5c09ff10489e6b9c47bc1223a73",
      "parents": [
        "cf608ac19c95804dc2df43b1f4f9e068aa9034ab"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "memory hotplug: fix notifier\u0027s return value check\n\nEven if notifier cannot find any pages, it doesn\u0027t mean no pages are\navailable...And, if there are no notifiers registered, this condition will\nbe always true and memory hotplug will show -EBUSY.\n\nThis is a bug but not critical.\n\nIn most case, a pageblock which will be offlined is MIGRATE_MOVABLE This\n\"notifier\" is called only when the pageblock is _not_ MIGRATE_MOVABLE.\nBut if not MIGRATE_MOVABLE, it\u0027s common case that memory hotplug will\nfail.  So, no one notice this bug.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "cf608ac19c95804dc2df43b1f4f9e068aa9034ab",
      "tree": "a84d37df2b0bb57bd9a4b0b466726f5343fa5448",
      "parents": [
        "e4455abb50a19562dbfdc51a8424fda9b588bd6d"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Oct 26 14:21:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "mm: compaction: fix COMPACTPAGEFAILED counting\n\nPresently update_nr_listpages() doesn\u0027t have a role.  That\u0027s because lists\npassed is always empty just after calling migrate_pages.  The\nmigrate_pages cleans up page list which have failed to migrate before\nreturning by aaa994b3.\n\n [PATCH] page migration: handle freeing of pages in migrate_pages()\n\n Do not leave pages on the lists passed to migrate_pages().  Seems that we will\n not need any postprocessing of pages.  This will simplify the handling of\n pages by the callers of migrate_pages().\n\nAt that time, we thought we don\u0027t need any postprocessing of pages.  But\nthe situation is changed.  The compaction need to know the number of\nfailed to migrate for COMPACTPAGEFAILED stat\n\nThis patch makes new rule for caller of migrate_pages to call\nputback_lru_pages.  So caller need to clean up the lists so it has a\nchance to postprocess the pages.  [suggested by Christoph Lameter]\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4455abb50a19562dbfdc51a8424fda9b588bd6d",
      "tree": "add38aec00027e9a115778425a41d3d075a9ced6",
      "parents": [
        "f19e77a3dc884510dba740caa6dee126b7d40156"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Tue Oct 26 14:21:28 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "mm: only build per-node scan_unevictable functions when NUMA is enabled\n\nNon-NUMA systems do never create these files anyway, since they are only\ncreated by driver subsystem when NUMA is configured.\n\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@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": "1e99bad0d9c12a4aaa60cd812c84ef152564bcf5",
      "tree": "af9b070096c2ccc567247ff507eb07d3d817a1b4",
      "parents": [
        "e18641e19a9204f241f04a5ac700168dcd18de4f"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 26 14:21:24 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: kill all threads sharing oom killed task\u0027s mm\n\nIt\u0027s necessary to kill all threads that share an oom killed task\u0027s mm if\nthe goal is to lead to future memory freeing.\n\nThis patch reintroduces the code removed in 8c5cd6f3 (oom: oom_kill\ndoesn\u0027t kill vfork parent (or child)) since it is obsoleted.\n\nIt\u0027s now guaranteed that any task passed to oom_kill_task() does not share\nan mm with any thread that is unkillable.  Thus, we\u0027re safe to issue a\nSIGKILL to any thread sharing the same mm.\n\nThis is especially necessary to solve an mm-\u003emmap_sem livelock issue\nwhereas an oom killed thread must acquire the lock in the exit path while\nanother thread is holding it in the page allocator while trying to\nallocate memory itself (and will preempt the oom killer since a task was\nalready killed).  Since tasks with pending fatal signals are now granted\naccess to memory reserves, the thread holding the lock may quickly\nallocate and release the lock so that the oom killed task may exit.\n\nThis mainly is for threads that are cloned with CLONE_VM but not\nCLONE_THREAD, so they are in a different thread group.  Non-NPTL threads\nexist in the wild and this change is necessary to prevent the livelock in\nsuch cases.  We care more about preventing the livelock than incurring the\nadditional tasklist in the oom killer when a task has been killed.\nSystems that are sufficiently large to not want the tasklist scan in the\noom killer in the first place already have the option of enabling\n/proc/sys/vm/oom_kill_allocating_task, which was designed specifically for\nthat purpose.\n\nThis code had existed in the oom killer for over eight years dating back\nto the 2.4 kernel.\n\n[akpm@linux-foundation.org: add nice comment]\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: 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: Ying Han \u003cyinghan@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": "e18641e19a9204f241f04a5ac700168dcd18de4f",
      "tree": "f1058203588bd31584d217a25fabe4f7085a1f44",
      "parents": [
        "3d5992d2ac7dc09aed8ab537cba074589f0f0a52"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Oct 26 14:21:23 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "oom: avoid killing a task if a thread sharing its mm cannot be killed\n\nThe oom killer\u0027s goal is to kill a memory-hogging task so that it may\nexit, free its memory, and allow the current context to allocate the\nmemory that triggered it in the first place.  Thus, killing a task is\npointless if other threads sharing its mm cannot be killed because of its\n/proc/pid/oom_adj or /proc/pid/oom_score_adj value.\n\nThis patch checks whether any other thread sharing p-\u003emm has an\noom_score_adj of OOM_SCORE_ADJ_MIN.  If so, the thread cannot be killed\nand oom_badness(p) returns 0, meaning it\u0027s unkillable.\n\nSigned-off-by: David Rientjes \u003crientjes@google.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: Ying Han \u003cyinghan@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": "b7f50cfa3630b6e079929ffccfd442d65064ee1f",
      "tree": "b6f28ed350055bb864cbe317284eb56fca29cfc3",
      "parents": [
        "a75d377686037982cbec320bb770b19fe7be6a5d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 26 14:21:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:03 2010 -0700"
      },
      "message": "mm, page-allocator: do not check the state of a non-existant buddy during free\n\nThere is a bug in commit 6dda9d55 (\"page allocator: reduce fragmentation\nin buddy allocator by adding buddies that are merging to the tail of the\nfree lists\") that means a buddy at order MAX_ORDER is checked for merging.\n A page of this order never exists so at times, an effectively random\npiece of memory is being checked.\n\nAlan Curry has reported that this is causing memory corruption in\nuserspace data on a PPC32 platform (http://lkml.org/lkml/2010/10/9/32).\nIt is not clear why this is happening.  It could be a cache coherency\nproblem where pages mapped in both user and kernel space are getting\ndifferent cache lines due to the bad read from kernel space\n(http://lkml.org/lkml/2010/10/13/179).  It could also be that there are\nsome special registers being io-remapped at the end of the memmap array\nand that a read has special meaning on them.  Compiler bugs have been\nruled out because the assembly before and after the patch looks relatively\nharmless.\n\nThis patch fixes the problem by ensuring we are not reading a possibly\ninvalid location of memory.  It\u0027s not clear why the read causes corruption\nbut one way or the other it is a buggy read.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Corrado Zoccolo \u003cczoccolo@gmail.com\u003e\nReported-by: Alan Curry \u003cpacman@kosh.dhis.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Rik van Riel \u003criel@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": "f8f72ad5396987e05a42cf7eff826fb2a15ff148",
      "tree": "95dde867832a7e58a535f543b0f22498ff9f2be3",
      "parents": [
        "45352bbf48e95078b4acd20774f49e72676e1e0f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Oct 26 14:21:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:03 2010 -0700"
      },
      "message": "mm: fix return value of scan_lru_pages in memory unplug\n\nscan_lru_pages returns pfn. So, it\u0027s type should be \"unsigned long\"\nnot \"int\".\n\nNote: I guess this has been work until now because memory hotplug tester\u0027s\n      machine has not very big memory....\n      physical address \u003c 32bit \u003c\u003c PAGE_SHIFT.\n\nReported-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "f1ebdd60cc73ed36fd977f7e719ce70d2f5cd1c0",
      "tree": "225cb2ea2c0f8990f29383058a07206cfd835893",
      "parents": [
        "f99d055398d53c8f769d5153b3fdce1d2556e7ff",
        "46e387bbd82d438b9131e237e6e2cb55a825da49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 10:13:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 10:13:10 2010 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (22 commits)\n  Add _addr_lsb field to ia64 siginfo\n  Fix migration.c compilation on s390\n  HWPOISON: Remove retry loop for try_to_unmap\n  HWPOISON: Turn addr_valid from bitfield into char\n  HWPOISON: Disable DEBUG by default\n  HWPOISON: Convert pr_debugs to pr_info\n  HWPOISON: Improve comments in memory-failure.c\n  x86: HWPOISON: Report correct address granuality for huge hwpoison faults\n  Encode huge page size for VM_FAULT_HWPOISON errors\n  Fix build error with !CONFIG_MIGRATION\n  hugepage: move is_hugepage_on_freelist inside ifdef to avoid warning\n  Clean up __page_set_anon_rmap\n  HWPOISON, hugetlb: fix unpoison for hugepage\n  HWPOISON, hugetlb: soft offlining for hugepage\n  HWPOSION, hugetlb: recover from free hugepage error when !MF_COUNT_INCREASED\n  hugetlb: move refcounting in hugepage allocation inside hugetlb_lock\n  HWPOISON, hugetlb: add free check to dequeue_hwpoison_huge_page()\n  hugetlb: hugepage migration core\n  hugetlb: redefine hugepage copy functions\n  hugetlb: add allocate function for hugepage migration\n  ...\n"
    },
    {
      "commit": "7ccf19a8042e343f8159f8a5fdd6a9422aa90c78",
      "tree": "9a69aaad6eb8992cae06f44dfea8c1d94f2a7f99",
      "parents": [
        "a5491e0c7bb7387e3e6ff9994d6dc2efc78af56c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Oct 21 11:49:30 2010 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:15 2010 -0400"
      },
      "message": "fs: inode split IO and LRU lists\n\nThe use of the same inode list structure (inode-\u003ei_list) for two\ndifferent list constructs with different lifecycles and purposes\nmakes it impossible to separate the locking of the different\noperations. Therefore, to enable the separation of the locking of\nthe writeback and reclaim lists, split the inode-\u003ei_list into two\nseparate lists dedicated to their specific tracking functions.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d3382cbf02986e4833849f528d451367ea0b4cb",
      "tree": "b754f9903c0f77ce40dcff18030b49d0ce213eab",
      "parents": [
        "a8dade34e3df581bc36ca2afe6e27055e178801c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 15:19:20 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:24:15 2010 -0400"
      },
      "message": "new helper: inode_unhashed()\n\nnote: for race-free uses you inode_lock held\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e2b8d7af0e3a9234de06606f9151f28cf847a8d6",
      "tree": "64bc03271383a43c2097b84b6f0e25c34ed13553",
      "parents": [
        "92f842eac7ee321c8a0749aba2513541b4ac226f"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Oct 25 16:10:14 2010 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "sky@mschwide.boeblingen.de.ibm.com",
        "time": "Mon Oct 25 16:10:15 2010 +0200"
      },
      "message": "[S390] add support for nonquiescing sske\n\nImprove performance of the sske operation by using the nonquiescing\nvariant if the affected page has no mappings established. On machines\nwith no support for the new sske variant the mask bit will be ignored.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "229aebb873e29726b91e076161649cf45154b0bf",
      "tree": "acc02a3702215bce8d914f4c8cc3d7a1382b1c67",
      "parents": [
        "8de547e1824437f3c6af180d3ed2162fa4b3f389",
        "50a23e6eec6f20d55a3a920e47adb455bff6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 13:41:39 2010 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  Update broken web addresses in arch directory.\n  Update broken web addresses in the kernel.\n  Revert \"drivers/usb: Remove unnecessary return\u0027s from void functions\" for musb gadget\n  Revert \"Fix typo: configuation \u003d\u003e configuration\" partially\n  ida: document IDA_BITMAP_LONGS calculation\n  ext2: fix a typo on comment in ext2/inode.c\n  drivers/scsi: Remove unnecessary casts of private_data\n  drivers/s390: Remove unnecessary casts of private_data\n  net/sunrpc/rpc_pipe.c: Remove unnecessary casts of private_data\n  drivers/infiniband: Remove unnecessary casts of private_data\n  drivers/gpu/drm: Remove unnecessary casts of private_data\n  kernel/pm_qos_params.c: Remove unnecessary casts of private_data\n  fs/ecryptfs: Remove unnecessary casts of private_data\n  fs/seq_file.c: Remove unnecessary casts of private_data\n  arm: uengine.c: remove C99 comments\n  arm: scoop.c: remove C99 comments\n  Fix typo configue \u003d\u003e configure in comments\n  Fix typo: configuation \u003d\u003e configuration\n  Fix typo interrest[ing|ed] \u003d\u003e interest[ing|ed]\n  Fix various typos of valid in comments\n  ...\n\nFix up trivial conflicts in:\n\tdrivers/char/ipmi/ipmi_si_intf.c\n\tdrivers/usb/gadget/rndis.c\n\tnet/irda/irnet/irnet_ppp.c\n"
    },
    {
      "commit": "76c39e4fef73e42777c27d6b87a04f89ebd0ef66",
      "tree": "40f490c46a409bfe4cecd99cf08ad709065d116b",
      "parents": [
        "1765a1fe5d6f82c0eceb1ad10594cfc83759b6d0",
        "6d4121f6c20a0e86231d52f535f1c82423b3326f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 12:47:55 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 12:47:55 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: (27 commits)\n  SLUB: Fix memory hotplug with !NUMA\n  slub: Move functions to reduce #ifdefs\n  slub: Enable sysfs support for !CONFIG_SLUB_DEBUG\n  SLUB: Optimize slab_free() debug check\n  slub: Move NUMA-related functions under CONFIG_NUMA\n  slub: Add lock release annotation\n  slub: Fix signedness warnings\n  slub: extract common code to remove objects from partial list without locking\n  SLUB: Pass active and inactive redzone flags instead of boolean to debug functions\n  slub: reduce differences between SMP and NUMA\n  Revert \"Slub: UP bandaid\"\n  percpu: clear memory allocated with the km allocator\n  percpu: use percpu allocator on UP too\n  percpu: reduce PCPU_MIN_UNIT_SIZE to 32k\n  vmalloc: pcpu_get/free_vm_areas() aren\u0027t needed on UP\n  SLUB: Fix merged slab cache names\n  Slub: UP bandaid\n  slub: fix SLUB_RESILIENCY_TEST for dynamic kmalloc caches\n  slub: Fix up missing kmalloc_cache -\u003e kmem_cache_node case for memoryhotplug\n  slub: Add dummy functions for the !SLUB_DEBUG case\n  ...\n"
    },
    {
      "commit": "1765a1fe5d6f82c0eceb1ad10594cfc83759b6d0",
      "tree": "a701020f0fa3a1932a36d174c5fffd20496303a9",
      "parents": [
        "bdaf12b41235b0c59949914de022341e77907461",
        "2a31339aa014c0d0b97c57d3ebc997732f8f47fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 12:47:25 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 24 12:47:25 2010 -0700"
      },
      "message": "Merge branch \u0027kvm-updates/2.6.37\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\n* \u0027kvm-updates/2.6.37\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm: (321 commits)\n  KVM: Drop CONFIG_DMAR dependency around kvm_iommu_map_pages\n  KVM: Fix signature of kvm_iommu_map_pages stub\n  KVM: MCE: Send SRAR SIGBUS directly\n  KVM: MCE: Add MCG_SER_P into KVM_MCE_CAP_SUPPORTED\n  KVM: fix typo in copyright notice\n  KVM: Disable interrupts around get_kernel_ns()\n  KVM: MMU: Avoid sign extension in mmu_alloc_direct_roots() pae root address\n  KVM: MMU: move access code parsing to FNAME(walk_addr) function\n  KVM: MMU: audit: check whether have unsync sps after root sync\n  KVM: MMU: audit: introduce audit_printk to cleanup audit code\n  KVM: MMU: audit: unregister audit tracepoints before module unloaded\n  KVM: MMU: audit: fix vcpu\u0027s spte walking\n  KVM: MMU: set access bit for direct mapping\n  KVM: MMU: cleanup for error mask set while walk guest page table\n  KVM: MMU: update \u0027root_hpa\u0027 out of loop in PAE shadow path\n  KVM: x86 emulator: Eliminate compilation warning in x86_decode_insn()\n  KVM: x86: Fix constant type in kvm_get_time_scale\n  KVM: VMX: Add AX to list of registers clobbered by guest switch\n  KVM guest: Move a printk that\u0027s using the clock before it\u0027s ready\n  KVM: x86: TSC catchup mode\n  ...\n"
    },
    {
      "commit": "6d4121f6c20a0e86231d52f535f1c82423b3326f",
      "tree": "5c235cac699ca86b504850aa663ddadde0455a61",
      "parents": [
        "92a5bbc11ff2442a54b2f1d313088c245828ef4e",
        "35da7a307c535f9c2929cae277f3df425c9f9b1e"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Oct 24 19:57:05 2010 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sun Oct 24 19:57:05 2010 +0300"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n\nConflicts:\n\tinclude/linux/percpu.h\n\tmm/percpu.c\n"
    },
    {
      "commit": "45888a0c6edc305495b6bd72a30e66bc40b324c6",
      "tree": "0f25d2133c8e7d80e7daca039ed383371562ee8e",
      "parents": [
        "f392eb2546170e539668a5ab8df6c1254d15a201"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Sun Aug 22 19:08:57 2010 +0800"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun Oct 24 10:51:24 2010 +0200"
      },
      "message": "export __get_user_pages_fast() function\n\nThis function is used by KVM to pin process\u0027s page in the atomic context.\n\nDefine the \u0027weak\u0027 function to avoid other architecture not support it\n\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\n"
    },
    {
      "commit": "0fc0531e0a2174377a86fd6953ecaa00287d8f70",
      "tree": "afe56978729300df96b002a064c9de927fadcfab",
      "parents": [
        "91b745016c12d440386c40fb76ab69c8e08cbc06",
        "9329ba9704f6bd51a735982e0d4a3eed72c3294f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:31:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:31:36 2010 -0700"
      },
      "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: update comments to reflect that percpu allocations are always zero-filled\n  percpu: Optimize __get_cpu_var()\n  x86, percpu: Optimize this_cpu_ptr\n  percpu: clear memory allocated with the km allocator\n  percpu: fix build breakage on s390 and cleanup build configuration tests\n  percpu: use percpu allocator on UP too\n  percpu: reduce PCPU_MIN_UNIT_SIZE to 32k\n  vmalloc: pcpu_get/free_vm_areas() aren\u0027t needed on UP\n\nFixed up trivial conflicts in include/linux/percpu.h\n"
    },
    {
      "commit": "91b745016c12d440386c40fb76ab69c8e08cbc06",
      "tree": "881a26a43b3ee924c0979a54b38c7a87d79d7f1a",
      "parents": [
        "04cc69768e7d1f40d98b79d23d203674553b4da2",
        "daaae6b010ac0f60c9c35e481589966f9f1fcc22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: remove in_workqueue_context()\n  workqueue: Clarify that schedule_on_each_cpu is synchronous\n  memory_hotplug: drop spurious calls to flush_scheduled_work()\n  shpchp: update workqueue usage\n  pciehp: update workqueue usage\n  isdn/eicon: don\u0027t call flush_scheduled_work() from diva_os_remove_soft_isr()\n  workqueue: add and use WQ_MEM_RECLAIM flag\n  workqueue: fix HIGHPRI handling in keep_working()\n  workqueue: add queue_work and activate_work trace points\n  workqueue: prepare for more tracepoints\n  workqueue: implement flush[_delayed]_work_sync()\n  workqueue: factor out start_flush_work()\n  workqueue: cleanup flush/cancel functions\n  workqueue: implement alloc_ordered_workqueue()\n\nFix up trivial conflict in fs/gfs2/main.c as per Tejun\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "46e387bbd82d438b9131e237e6e2cb55a825da49",
      "tree": "414948afd6b4d63c6ea8cc79ce022128bc1bf2eb",
      "parents": [
        "e9d08567ef72a2d0fb9b14dded386352d3136442",
        "3ef8fd7f720fc4f462fcdcae2fcde6f1c0536bfe"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 22 17:40:48 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 22 17:40:48 2010 +0200"
      },
      "message": "Merge branch \u0027hwpoison-hugepages\u0027 into hwpoison\n\nConflicts:\n\tmm/memory-failure.c\n"
    },
    {
      "commit": "e9d08567ef72a2d0fb9b14dded386352d3136442",
      "tree": "8e2fb652453eed697c444e2728753f76895750c7",
      "parents": [
        "df27570f43923c246567b074418411c06cf0dce2",
        "a08c80ebb621a6dc277c91e029acb725f2f20254"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 22 17:40:11 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 22 17:40:11 2010 +0200"
      },
      "message": "Merge branch \u0027hwpoison-cleanups\u0027 into hwpoison\n"
    },
    {
      "commit": "3044100e58c84e133791c8b60a2f5bef69d732e4",
      "tree": "f9ed0d1f3df89c31dd81ccaf0cf3478f57b08440",
      "parents": [
        "b5153163ed580e00c67bdfecb02b2e3843817b3e",
        "67e87f0a1c5cbc750f81ebf6a128e8ff6f4376cc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 18:52:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 18:52:11 2010 -0700"
      },
      "message": "Merge branch \u0027core-memblock-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-memblock-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (74 commits)\n  x86-64: Only set max_pfn_mapped to 512 MiB if we enter via head_64.S\n  xen: Cope with unmapped pages when initializing kernel pagetable\n  memblock, bootmem: Round pfn properly for memory and reserved regions\n  memblock: Annotate memblock functions with __init_memblock\n  memblock: Allow memblock_init to be called early\n  memblock/arm: Fix memblock_region_is_memory() typo\n  x86, memblock: Remove __memblock_x86_find_in_range_size()\n  memblock: Fix wraparound in find_region()\n  x86-32, memblock: Make add_highpages honor early reserved ranges\n  x86, memblock: Fix crashkernel allocation\n  arm, memblock: Fix the sparsemem build\n  memblock: Fix section mismatch warnings\n  powerpc, memblock: Fix memblock API change fallout\n  memblock, microblaze: Fix memblock API change fallout\n  x86: Remove old bootmem code\n  x86, memblock: Use memblock_memory_size()/memblock_free_memory_size() to get correct dma_reserve\n  x86: Remove not used early_res code\n  x86, memblock: Replace e820_/_early string with memblock_\n  x86: Use memblock to replace early_res\n  x86, memblock: Use memblock_debug to control debug message print out\n  ...\n\nFix up trivial conflicts in arch/x86/kernel/setup.c and kernel/Makefile\n"
    },
    {
      "commit": "c3b86a29429dac1033e3f602f51fa8d00006a8eb",
      "tree": "bcedd0a553ca2396eeb58318ef6ee6b426e83652",
      "parents": [
        "8d8d2e9ccd331a1345c88b292ebee9d256fd8749",
        "2aeb66d3036dbafc297ac553a257a40283dadb3e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 13:47:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 21 13:47:29 2010 -0700"
      },
      "message": "Merge branch \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-mm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86-32, percpu: Correct the ordering of the percpu readmostly section\n  x86, mm: Enable ARCH_DMA_ADDR_T_64BIT with X86_64 || HIGHMEM64G\n  x86: Spread tlb flush vector between nodes\n  percpu: Introduce a read-mostly percpu API\n  x86, mm: Fix incorrect data type in vmalloc_sync_all()\n  x86, mm: Hold mm-\u003epage_table_lock while doing vmalloc_sync\n  x86, mm: Fix bogus whitespace in sync_global_pgds()\n  x86-32: Fix sparse warning for the __PHYSICAL_MASK calculation\n  x86, mm: Add RESERVE_BRK_ARRAY() helper\n  mm, x86: Saving vmcore with non-lazy freeing of vmas\n  x86, kdump: Change copy_oldmem_page() to use cached addressing\n  x86, mm: fix uninitialized addr in kernel_physical_mapping_init()\n  x86, kmemcheck: Remove double test\n  x86, mm: Make spurious_fault check explicitly check the PRESENT bit\n  x86-64, mem: Update all PGDs for direct mapping and vmemmap mapping changes\n  x86, mm: Separate x86_64 vmalloc_sync_all() into separate functions\n  x86, mm: Avoid unnecessary TLB flush\n"
    },
    {
      "commit": "10ccd84695c2a03075bad2f4fc728575fe9051f8",
      "tree": "262fbf9d7114c6f4790cf31db35a12e06bf6dcb6",
      "parents": [
        "e24dcbef93dbbf529fbedfc6ce8ab22d2cef35f0"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 19 11:08:41 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Oct 19 11:08:41 2010 +0200"
      },
      "message": "memory_hotplug: drop spurious calls to flush_scheduled_work()\n\nlru_add_drain_all() uses schedule_on_each_cpu() which is synchronous.\nThere is no reason to call flush_scheduled_work() after\nlru_add_drain_all().  Drop the spurious calls.\n\nThis is to prepare for the deprecation and removal of\nflush_scheduled_work().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8e4029ee3517084ae00fbfbcb51cc365d8857061",
      "tree": "3d86578dc6160781a0c2fdad461e5195e73bfafc",
      "parents": [
        "cd79481d27b9f90aad80c9b972292c42c25bbf8e",
        "73cf624d029d776a33d0a80c695485b3f9b36231"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Mon Oct 11 17:05:11 2010 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Mon Oct 11 17:05:11 2010 -0700"
      },
      "message": "Merge branch \u0027x86/urgent\u0027 into core/memblock\n\nReason for merge:\n\nForward-port urgent change to arch/x86/mm/srat_64.c to the memblock tree.\n\nResolved Conflicts:\n\tarch/x86/mm/srat_64.c\n\nOriginally-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "cd79481d27b9f90aad80c9b972292c42c25bbf8e",
      "tree": "36a04b373218c594d7ff8c3a246da79e0c6632c3",
      "parents": [
        "236260b90dd94516982ad67aa6f5449c4c37db7b"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Mon Oct 11 12:34:09 2010 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Mon Oct 11 16:00:52 2010 -0700"
      },
      "message": "memblock: Annotate memblock functions with __init_memblock\n\nStephen found\n\nWARNING: mm/built-in.o(.text+0x25ab8): Section mismatch in reference from the function memblock_find_base() to the function .init.text:memblock_find_region()\nThe function memblock_find_base() references\nthe function __init memblock_find_region().\nThis is often because memblock_find_base lacks a __init\nannotation or the annotation of memblock_find_region is wrong.\n\nSo let memblock_find_region() to use __init_memblock instead of __init\ndirectly.\n\nAlso fix one function that did not have __init* to be __init_memblock.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nLKML-Reference: \u003c4CB366B1.40405@kernel.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "236260b90dd94516982ad67aa6f5449c4c37db7b",
      "tree": "45fc2bc1053e41630f88a1a4c4757bba817f34e8",
      "parents": [
        "153db80f8cf74e8700cac96305b6c0b92918f17c"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed Oct 06 15:52:29 2010 -0700"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@linux.intel.com",
        "time": "Mon Oct 11 15:59:01 2010 -0700"
      },
      "message": "memblock: Allow memblock_init to be called early\n\nThe Xen setup code needs to call memblock_x86_reserve_range() very early,\nso allow it to initialize the memblock subsystem before doing so.  The\nsecond memblock_init() is ignored.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nLKML-Reference: \u003c4CACFDAD.3090900@goop.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@linux.intel.com\u003e\n"
    },
    {
      "commit": "3ef8fd7f720fc4f462fcdcae2fcde6f1c0536bfe",
      "tree": "05d6f2c62c9c00c0ab717f6a14a449684f3441d3",
      "parents": [
        "f672b49b07a4a152fc4251f2aec6b4d05164c4cd"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Oct 11 16:03:21 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Oct 11 16:57:39 2010 +0200"
      },
      "message": "Fix migration.c compilation on s390\n\n31bit s390 doesn\u0027t have huge pages and failed with:\n\n\u003e mm/migrate.c: In function \u0027remove_migration_pte\u0027:\n\u003e mm/migrate.c:143:3: error: implicit declaration of function \u0027pte_mkhuge\u0027\n\u003e mm/migrate.c:143:7: error: incompatible types when assigning to type \u0027pte_t\u0027 from type \u0027int\u0027\n\nPut that code into a ifdef.\n\nReported by Heiko Carstens\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "a08c80ebb621a6dc277c91e029acb725f2f20254",
      "tree": "cfd43f8deaed341e81623b693579e51c09809dc1",
      "parents": [
        "9033ae16407f46ae06f559f9374281f6e9d89efc"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Sep 27 23:39:30 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:33:01 2010 +0200"
      },
      "message": "HWPOISON: Remove retry loop for try_to_unmap\n\nWe don\u0027t reply in other temporary failure cases and there were no\nreports of replies happening. I think the original reason it was\nadded was also just an early bug, not an observation of the race.\n\nSo remove the loop for now, but keep a warning message.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "9033ae16407f46ae06f559f9374281f6e9d89efc",
      "tree": "3d672e5797dd2fb8f5dc49adbc7b07bcae7f7c79",
      "parents": [
        "898e70d1e526d7814bd2f64c907706b83ffca9af"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Sep 27 23:36:05 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:33:01 2010 +0200"
      },
      "message": "HWPOISON: Turn addr_valid from bitfield into char\n\nThe addr_valid flag is the only flag in \"to_kill\" and it\u0027s slightly more\nefficient to have it as char instead of a bitfield.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "898e70d1e526d7814bd2f64c907706b83ffca9af",
      "tree": "bc2c6775d865158d0f483de723dc0406b6006ed2",
      "parents": [
        "fb46e73520940bfc426152cfe5e4a9f1ae3f00b6"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Mon Sep 27 23:33:29 2010 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Fri Oct 08 09:33:00 2010 +0200"
      },
      "message": "HWPOISON: Disable DEBUG by default\n\nNow that only a few obscure messages are left as pr_debug disable\noutputting of pr_debug in memory-failure.c by default.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    }
  ],
  "next": "fb46e73520940bfc426152cfe5e4a9f1ae3f00b6"
}
