)]}'
{
  "log": [
    {
      "commit": "1b76b02f15c70d5f392ee2e231fbd20a26063a77",
      "tree": "5c7bee2e8a5333e9f99b64287d587a026386459e",
      "parents": [
        "d60b9c16d7bae49b75255520abd7dfd2e94627bc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri May 11 01:00:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 11 09:23:39 2012 -0700"
      },
      "message": "mm: raise MemFree by reverting percpu_pagelist_fraction to 0\n\nWhy is there less MemFree than there used to be?  It perturbed a test,\nso I\u0027ve just been bisecting linux-next, and now find the offender went\nupstream yesterday.\n\nCommit 93278814d359 \"mm: fix division by 0 in percpu_pagelist_fraction()\"\nmistakenly initialized percpu_pagelist_fraction to the sysctl\u0027s minimum 8,\nwhich leaves 1/8th of memory on percpu lists (on each cpu??); but most of\nus expect it to be left unset at 0 (and it\u0027s not then used as a divisor).\n\n  MemTotal: 8061476kB  8061476kB  8061476kB  8061476kB  8061476kB  8061476kB\n  Repetitive test with percpu_pagelist_fraction 8:\n  MemFree:  6948420kB  6237172kB  6949696kB  6840692kB  6949048kB  6862984kB\n  Same test with percpu_pagelist_fraction back to 0:\n  MemFree:  7945000kB  7944908kB  7948568kB  7949060kB  7948796kB  7948812kB\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\n[ We really should fix the crazy sysctl interface too, but that\u0027s a\n  separate thing - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c283324da366a3e6ffaad4352a51a3c71fcae17",
      "tree": "b4d02c340a17ac5134889c4eec7dcd06d407e3ca",
      "parents": [
        "9e5869f8d70d94850cf86163c57ba8d4daa29924",
        "17ff3c1fa4c7bd0c38d751715033023ebf32fc96"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:17:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:17:24 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc fixes from Andrew Morton.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (8 patches)\n  MAINTAINERS: add maintainer for LED subsystem\n  mm: nobootmem: fix sign extend problem in __free_pages_memory()\n  drivers/leds: correct __devexit annotations\n  memcg: free spare array to avoid memory leak\n  namespaces, pid_ns: fix leakage on fork() failure\n  hugetlb: prevent BUG_ON in hugetlb_fault() -\u003e hugetlb_cow()\n  mm: fix division by 0 in percpu_pagelist_fraction()\n  proc/pid/pagemap: correctly report non-present ptes and holes between vmas\n"
    },
    {
      "commit": "6bc2e853c6b46a6041980d58200ad9b0a73a60ff",
      "tree": "8e36db26a891ee14f9341eaa77f698aeb44301d7",
      "parents": [
        "b8cd742acfd78a4689148fb80cf74bc26e7f1f3c"
      ],
      "author": {
        "name": "Russ Anderson",
        "email": "rja@sgi.com",
        "time": "Thu May 10 13:01:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:06:44 2012 -0700"
      },
      "message": "mm: nobootmem: fix sign extend problem in __free_pages_memory()\n\nSystems with 8 TBytes of memory or greater can hit a problem where only\nthe the first 8 TB of memory shows up.  This is due to \"int i\" being\nsmaller than \"unsigned long start_aligned\", causing the high bits to be\ndropped.\n\nThe fix is to change `i\u0027 to unsigned long to match start_aligned\nand end_aligned.\n\nThanks to Jack Steiner for assistance tracking this down.\n\nSigned-off-by: Russ Anderson \u003crja@sgi.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nCc: \u003cstable@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": "8c7577637ca31385e92769a77e2ab5b428e8b99c",
      "tree": "ecf350b4defdd9ad31a9d1eb6353b890c5951eb9",
      "parents": [
        "5e2bf0142231194d36fdc9596b36a261ed2b9fe7"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Thu May 10 13:01:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:06:44 2012 -0700"
      },
      "message": "memcg: free spare array to avoid memory leak\n\nWhen the last event is unregistered, there is no need to keep the spare\narray anymore.  So free it to avoid memory leak.\n\nSigned-off-by: Sha Zhengju \u003chandai.szj@taobao.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4998a6c0edce7fae9c0a5463f6ec3fa585258ee7",
      "tree": "d19a02785d8a5793abefb0ec3edb435c77e96a7e",
      "parents": [
        "93278814d3590eba0ee360b8d69a35c7f2203ea8"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu May 10 13:01:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:06:44 2012 -0700"
      },
      "message": "hugetlb: prevent BUG_ON in hugetlb_fault() -\u003e hugetlb_cow()\n\nCommit 66aebce747eaf (\"hugetlb: fix race condition in hugetlb_fault()\")\nadded code to avoid a race condition by elevating the page refcount in\nhugetlb_fault() while calling hugetlb_cow().\n\nHowever, one code path in hugetlb_cow() includes an assertion that the\npage count is 1, whereas it may now also have the value 2 in this path.\n\nThe consensus is that this BUG_ON has served its purpose, so rather than\nextending it to cover both cases, we just remove it.\n\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[3.0.29+, 3.2.16+, 3.3.3+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "93278814d3590eba0ee360b8d69a35c7f2203ea8",
      "tree": "17784192015e71464f1064af2b071c8cd7fe7f13",
      "parents": [
        "16fbdce62d9c89b794e303f4a232e4749b77e9ac"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Thu May 10 13:01:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 15:06:44 2012 -0700"
      },
      "message": "mm: fix division by 0 in percpu_pagelist_fraction()\n\npercpu_pagelist_fraction_sysctl_handler() has only considered -EINVAL as\na possible error from proc_dointvec_minmax().\n\nIf any other error is returned, it would proceed to divide by zero since\npercpu_pagelist_fraction wasn\u0027t getting initialized at any point.  For\nexample, writing 0 bytes into the proc file would trigger the issue.\n\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@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": "100d13c3b5b9410f604b86f5e0a34da64b8cf659",
      "tree": "d28702d0290cd2da7e443d798baab10ac831c4fe",
      "parents": [
        "42b64281453249dac52861f9b97d18552a7ec62b"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Wed May 09 16:55:19 2012 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed May 09 10:13:29 2012 -0700"
      },
      "message": "kmemleak: Fix the kmemleak tracking of the percpu areas with !SMP\n\nKmemleak tracks the percpu allocations via a specific API and the\noriginally allocated areas must be removed from kmemleak (via\nkmemleak_free). The code was already doing this for SMP systems.\n\nReported-by: Sami Liedes \u003csami.liedes@iki.fi\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "42b64281453249dac52861f9b97d18552a7ec62b",
      "tree": "1a9ca6f44ee7834c5b0a9757631534452b0fc3bd",
      "parents": [
        "789505b05752239d957dbfa84b183e0d7a641952"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 27 08:42:53 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed May 09 10:08:16 2012 -0700"
      },
      "message": "percpu: pcpu_embed_first_chunk() should free unused parts after all allocs are complete\n\npcpu_embed_first_chunk() allocates memory for each node, copies percpu\ndata and frees unused portions of it before proceeding to the next\ngroup.  This assumes that allocations for different nodes doesn\u0027t\noverlap; however, depending on memory topology, the bootmem allocator\nmay end up allocating memory from a different node than the requested\none which may overlap with the portion freed from one of the previous\npercpu areas.  This leads to percpu groups for different nodes\noverlapping which is a serious bug.\n\nThis patch separates out copy \u0026 partial free from the allocation loop\nsuch that all allocations are complete before partial frees happen.\n\nThis also fixes overlapping frees which could happen on allocation\nfailure path - out_free_areas path frees whole groups but the groups\ncould have portions freed at that point.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\nReported-by: \"Pavel V. Panteleev\" \u003cpp_84@mail.ru\u003e\nTested-by: \"Pavel V. Panteleev\" \u003cpp_84@mail.ru\u003e\nLKML-Reference: \u003cE1SNhwY-0007ui-V7.pp_84-mail-ru@f220.mail.ru\u003e\n"
    },
    {
      "commit": "e9b19cd43f3f55a7f1d1c9a033feda8dabce3be6",
      "tree": "2cb60b7af0bba9f69eb54db66f6e25f7c0fc898c",
      "parents": [
        "301cdf5c75695addaaf3b4857b6df7a1d764503e",
        "d5e28005a1d2e67833852f4c9ea8ec206ea3ff85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 08 11:06:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 08 11:06:07 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.4-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\nPull two percpu fixes from Tejun Heo:\n \"One adds missing KERN_CONT on split printk()s and the other makes\n  the percpu allocator avoid using PMD_SIZE as atom_size on x86_32.\n\n  Using PMD_SIZE led to vmalloc area exhaustion on certain\n  configurations (x86_32 android) and the only cost of using PAGE_SIZE\n  instead is static percpu area not being aligned to large page\n  mapping.\"\n\n* \u0027for-3.4-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu, x86: don\u0027t use PMD_SIZE as embedded atom_size on 32bit\n  percpu: use KERN_CONT in pcpu_dump_alloc_info()\n"
    },
    {
      "commit": "110a5c8b389407e1e859c43293179f9089671a60",
      "tree": "83245c842a809ecd728f12814a344e7224109d7a",
      "parents": [
        "2300fd67b4f29eec19addb15a8571837228f63fc",
        "6e8b09eaf268bceac0c62e389b4bc0cb83dfb8e5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 26 15:24:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 26 15:24:45 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge fixes from Andrew Morton:\n \"13 fixes.  The acerhdf patches aren\u0027t (really) fixes.  But they\u0027ve\n  been stuck in my tree for up to two years, sent to Matthew multiple\n  times and the developers are unhappy.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (13 patches)\n  mm: fix NULL ptr dereference in move_pages\n  mm: fix NULL ptr dereference in migrate_pages\n  revert \"proc: clear_refs: do not clear reserved pages\"\n  drivers/rtc/rtc-ds1307.c: fix BUG shown with lock debugging enabled\n  arch/arm/mach-ux500/mbox-db5500.c: world-writable sysfs fifo file\n  hugetlbfs: lockdep annotate root inode properly\n  acerhdf: lowered default temp fanon/fanoff values\n  acerhdf: add support for new hardware\n  acerhdf: add support for Aspire 1410 BIOS v1.3314\n  fs/buffer.c: remove BUG() in possible but rare condition\n  mm: fix up the vmscan stat in vmstat\n  epoll: clear the tfile_check_list on -ELOOP\n  mm/hugetlb: fix warning in alloc_huge_page/dequeue_huge_page_vma\n"
    },
    {
      "commit": "6e8b09eaf268bceac0c62e389b4bc0cb83dfb8e5",
      "tree": "8b284da8a79355ef631c8c418c369fd1ec83b251",
      "parents": [
        "f2a9ef880763d7fbd657a3af646e132a90d70d34"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Wed Apr 25 16:01:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:34 2012 -0700"
      },
      "message": "mm: fix NULL ptr dereference in move_pages\n\nCommit 3268c63 (\"mm: fix move/migrate_pages() race on task struct\") has\nadded an odd construct where \u0027mm\u0027 is checked for being NULL, and if it is,\nit would get dereferenced anyways by mput()ing it.\n\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.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": "f2a9ef880763d7fbd657a3af646e132a90d70d34",
      "tree": "09df0c2a4b0572f44424f1e11aee655135082c94",
      "parents": [
        "63f61a6f4633ff34c17bea7a0ed827eaeb0733e1"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "levinsasha928@gmail.com",
        "time": "Wed Apr 25 16:01:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:34 2012 -0700"
      },
      "message": "mm: fix NULL ptr dereference in migrate_pages\n\nCommit 3268c63 (\"mm: fix move/migrate_pages() race on task struct\") has\nadded an odd construct where \u0027mm\u0027 is checked for being NULL, and if it is,\nit would get dereferenced anyways by mput()ing it.\n\nThis would lead to the following NULL ptr deref and BUG() when calling\nmigrate_pages() with a pid that has no mm struct:\n\n[25904.193704] BUG: unable to handle kernel NULL pointer dereference at 0000000000000050\n[25904.194235] IP: [\u003cffffffff810b0de7\u003e] mmput+0x27/0xf0\n[25904.194235] PGD 773e6067 PUD 77da0067 PMD 0\n[25904.194235] Oops: 0002 [#1] PREEMPT SMP\n[25904.194235] CPU 2\n[25904.194235] Pid: 31608, comm: trinity Tainted: G        W    3.4.0-rc2-next-20120412-sasha #69\n[25904.194235] RIP: 0010:[\u003cffffffff810b0de7\u003e]  [\u003cffffffff810b0de7\u003e] mmput+0x27/0xf0\n[25904.194235] RSP: 0018:ffff880077d49e08  EFLAGS: 00010202\n[25904.194235] RAX: 0000000000000286 RBX: 0000000000000000 RCX: 0000000000000000\n[25904.194235] RDX: ffff880075ef8000 RSI: 000000000000023d RDI: 0000000000000286\n[25904.194235] RBP: ffff880077d49e18 R08: 0000000000000001 R09: 0000000000000001\n[25904.194235] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000\n[25904.194235] R13: 00000000ffffffea R14: ffff880034287740 R15: ffff8800218d3010\n[25904.194235] FS:  00007fc8b244c700(0000) GS:ffff880029800000(0000) knlGS:0000000000000000\n[25904.194235] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[25904.194235] CR2: 0000000000000050 CR3: 00000000767c6000 CR4: 00000000000406e0\n[25904.194235] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[25904.194235] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[25904.194235] Process trinity (pid: 31608, threadinfo ffff880077d48000, task ffff880075ef8000)\n[25904.194235] Stack:\n[25904.194235]  ffff8800342876c0 0000000000000000 ffff880077d49f78 ffffffff811b8020\n[25904.194235]  ffffffff811b7d91 ffff880075ef8000 ffff88002256d200 0000000000000000\n[25904.194235]  00000000000003ff 0000000000000000 0000000000000000 0000000000000000\n[25904.194235] Call Trace:\n[25904.194235]  [\u003cffffffff811b8020\u003e] sys_migrate_pages+0x340/0x3a0\n[25904.194235]  [\u003cffffffff811b7d91\u003e] ? sys_migrate_pages+0xb1/0x3a0\n[25904.194235]  [\u003cffffffff8266cbb9\u003e] system_call_fastpath+0x16/0x1b\n[25904.194235] Code: c9 c3 66 90 55 31 d2 48 89 e5 be 3d 02 00 00 48 83 ec 10 48 89 1c 24 4c 89 64 24 08 48 89 fb 48 c7 c7 cf 0e e1 82 e8 69 18 03 00 \u003cf0\u003e ff 4b 50 0f 94 c0 84 c0 0f 84 aa 00 00 00 48 89 df e8 72 f1\n[25904.194235] RIP  [\u003cffffffff810b0de7\u003e] mmput+0x27/0xf0\n[25904.194235]  RSP \u003cffff880077d49e08\u003e\n[25904.194235] CR2: 0000000000000050\n[25904.348999] ---[ end trace a307b3ed40206b4b ]---\n\nSigned-off-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: 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": "904249aa68010c8e223263c922fcbb840a3f42e4",
      "tree": "5476bdf728cd77ac6fcaaeb986df1ddd5c9527d7",
      "parents": [
        "13d518074a952d33d47c428419693f63389547e9"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Wed Apr 25 16:01:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:33 2012 -0700"
      },
      "message": "mm: fix up the vmscan stat in vmstat\n\nThe \"pgsteal\" stat is confusing because it counts both direct reclaim as\nwell as background reclaim.  However, we have \"kswapd_steal\" which also\ncounts background reclaim value.\n\nThis patch fixes it and also makes it match the existng \"pgscan_\" stats.\n\nTest:\npgsteal_kswapd_dma32 447623\npgsteal_kswapd_normal 42272677\npgsteal_kswapd_movable 0\npgsteal_direct_dma32 2801\npgsteal_direct_normal 44353270\npgsteal_direct_movable 0\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Minchan Kim \u003cminchan@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": "b1c12cbcd0a02527c180a862e8971e249d3b347d",
      "tree": "f1c6c3ae42641cf89e8e2d7b731595550960e5d0",
      "parents": [
        "66f75a5d028beaf67c931435fdc3e7823125730c"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Apr 25 16:01:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:26:33 2012 -0700"
      },
      "message": "mm/hugetlb: fix warning in alloc_huge_page/dequeue_huge_page_vma\n\nFix a gcc warning (and bug?) introduced in cc9a6c877 (\"cpuset: mm: reduce\nlarge amounts of memory barrier related damage v3\")\n\nLocal variable \"page\" can be uninitialized if the nodemask from vma policy\ndoes not intersects with nodemask from cpuset.  Even if it doesn\u0027t happens\nit is better to initialize this variable explicitly than to introduce\na kernel oops in a weird corner case.\n\nmm/hugetlb.c: In function `alloc_huge_page\u0027:\nmm/hugetlb.c:1135:5: warning: `page\u0027 may be used uninitialized in this function\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: David Rientjes \u003crientjes@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": "ce587e65e8c669eec61df7fb1c515720302e3cc0",
      "tree": "fcda8e91609e1a74f629c1a7b0e95c3e76cab75e",
      "parents": [
        "4e1c2b284461fd8aa8d7b295a1e911fc4390755b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Apr 24 20:22:33 2012 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:22:35 2012 -0700"
      },
      "message": "mm: memcg: move pc lookup point to commit_charge()\n\nNone of the callsites actually need the page_cgroup descriptor\nthemselves, so just pass the page and do the look up in there.\n\nWe already had two bugs (6568d4a \u0027mm: memcg: update the correct soft\nlimit tree during migration\u0027 and \u0027memcg: fix Bad page state after\nreplace_page_cache\u0027) where the passed page and pc were not referring\nto the same page frame.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e1c2b284461fd8aa8d7b295a1e911fc4390755b",
      "tree": "f51ab604d23af8ac0f6087516f877af5604c3477",
      "parents": [
        "af3a3ab2966112c0d0a44df7eeb1e95fe32d4495"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Apr 25 16:10:50 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 25 21:18:01 2012 -0700"
      },
      "message": "mm: nobootmem: Correct alloc_bootmem semantics.\n\nThe comments above __alloc_bootmem_node() claim that the code will\nfirst try the allocation using \u0027goal\u0027 and if that fails it will\ntry again but with the \u0027goal\u0027 requirement dropped.\n\nUnfortunately, this is not what the code does, so fix it to do so.\n\nThis is important for nobootmem conversions to architectures such\nas sparc where MAX_DMA_ADDRESS is infinity.\n\nOn such architectures all of the allocations done by generic spots,\nsuch as the sparse-vmemmap implementation, will pass in:\n\n\t__pa(MAX_DMA_ADDRESS)\n\nas the goal, and with the limit given as \"-1\" this will always fail\nunless we add the appropriate fallback logic here.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aca50bd3b4c4bb5528a1878158ba7abce41de534",
      "tree": "697c1d89d8d8a75878dc5c5c70aeb14cd72f80fa",
      "parents": [
        "e895bd7992df1ebd1e0c28f7965520482bc83b74"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Apr 23 11:14:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 23 18:19:22 2012 -0700"
      },
      "message": "mm: fix s390 BUG by __set_page_dirty_no_writeback on swap\n\nMel reports a BUG_ON(slot \u003d\u003d NULL) in radix_tree_tag_set() on s390\n3.0.13: called from __set_page_dirty_nobuffers() when page_remove_rmap()\ntries to transfer dirty flag from s390 storage key to struct page and\nradix_tree.\n\nThat would be because of reclaim\u0027s shrink_page_list() calling\nadd_to_swap() on this page at the same time: first PageSwapCache is set\n(causing page_mapping(page) to appear as \u0026swapper_space), then\npage-\u003eprivate set, then tree_lock taken, then page inserted into\nradix_tree - so there\u0027s an interval before taking the lock when the\nradix_tree slot is empty.\n\nWe could fix this by moving __add_to_swap_cache()\u0027s spin_lock_irq up\nbefore the SetPageSwapCache.  But a better fix is simply to do what\u0027s\nfive years overdue: Ken Chen introduced __set_page_dirty_no_writeback()\n(if !PageDirty TestSetPageDirty) for tmpfs to skip all the radix_tree\noverhead, and swap is just the same - it ignores the radix_tree tag, and\ndoes not participate in dirty page accounting, so should be using\n__set_page_dirty_no_writeback() too.\n\ns390 testing now confirms that this does indeed fix the problem.\n\nReported-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bfce281c287a427d0841fadf5d59242757b4e620",
      "tree": "abca9ebeef4c668021e85e4d54e6e779121e92cc",
      "parents": [
        "9f3a4afb276e4d8b3be7f3e678d4dbd11470416f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 20 21:57:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 21 01:58:20 2012 -0400"
      },
      "message": "kill mm argument of vm_munmap()\n\nit\u0027s always current-\u003emm\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6be5ceb02e98eaf6cfc4f8b12a896d04023f340d",
      "tree": "f34de1392300bbf63549f4eeb20f7606d6f7b1f9",
      "parents": [
        "a46ef99d80817a167477ed1c8b4d90ee0c2e726f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:13:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:29:13 2012 -0700"
      },
      "message": "VM: add \"vm_mmap()\" helper function\n\nThis continues the theme started with vm_brk() and vm_munmap():\nvm_mmap() does the same thing as do_mmap(), but additionally does the\nrequired VM locking.\n\nThis uninlines (and rewrites it to be clearer) do_mmap(), which sadly\nduplicates it in mm/mmap.c and mm/nommu.c.  But that way we don\u0027t have\nto export our internal do_mmap_pgoff() function.\n\nSome day we hopefully don\u0027t have to export do_mmap() either, if all\nmodular users can become the simpler vm_mmap() instead.  We\u0027re actually\nvery close to that already, with the notable exception of the (broken)\nuse in i810, and a couple of stragglers in binfmt_elf.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a46ef99d80817a167477ed1c8b4d90ee0c2e726f",
      "tree": "3d8c980c627e8b9c009dbf63628a9be8b8d1069f",
      "parents": [
        "e4eb1ff61b323d6141614e5458a1f53c7046ff8e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 16:20:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:29:13 2012 -0700"
      },
      "message": "VM: add \"vm_munmap()\" helper function\n\nLike the vm_brk() function, this is the same as \"do_munmap()\", except it\ndoes the VM locking for the caller.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4eb1ff61b323d6141614e5458a1f53c7046ff8e",
      "tree": "7a0251509c169b0df1a6bf4bc47c5bca709e06da",
      "parents": [
        "3b422e9c2c020a1137349c614da7f9c9761a0922"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 15:35:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 17:28:17 2012 -0700"
      },
      "message": "VM: add \"vm_brk()\" helper function\n\nIt does the same thing as \"do_brk()\", except it handles the VM locking\ntoo.\n\nIt turns out that all external callers want that anyway, so we can make\ndo_brk() static to just mm/mmap.c while at it.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3dc627cabb33fc95f93da78457770c1b2a364d2",
      "tree": "e37cae7a574b808b6da48e4c93e81f170efce078",
      "parents": [
        "310eb776501af8412c570c4bcddc9ab5cecf3d7a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Apr 20 08:31:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 20 11:18:46 2012 -0700"
      },
      "message": "memblock: memblock should be able to handle zero length operations\n\nCommit 24aa07882b (\"memblock, x86: Replace memblock_x86_reserve/\nfree_range() with generic ones\") replaced x86 specific memblock\noperations with the generic ones; unfortunately, it lost zero length\noperation handling in the process making the kernel panic if somebody\ntries to reserve zero length area.\n\nThere isn\u0027t much to be gained by being cranky to zero length operations\nand panicking is almost the worst response.  Drop the BUG_ON() in\nmemblock_reserve() and update memblock_add_region/isolate_range() so\nthat all zero length operations are handled as noops.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@vger.kernel.org\nReported-by: Valere Monseur \u003cvalere.monseur@ymail.com\u003e\nBisected-by: Joseph Freeman \u003cjfree143dev@gmail.com\u003e\nTested-by: Joseph Freeman \u003cjfree143dev@gmail.com\u003e\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d43098\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b7f43afd417a6feb80841d30ced4051c362eb5d",
      "tree": "695f97a4d028a3463c8e7edaa4c6d410a941d0bb",
      "parents": [
        "932e9f352b5d685725076f21b237f7c7d804b29c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Apr 18 23:34:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 18 23:40:57 2012 -0700"
      },
      "message": "memcg: fix Bad page state after replace_page_cache\n\nMy 9ce70c0240d0 \"memcg: fix deadlock by inverting lrucare nesting\" put a\nnasty little bug into v3.3\u0027s version of mem_cgroup_replace_page_cache(),\nsometimes used for FUSE.  Replacing __mem_cgroup_commit_charge_lrucare()\nby __mem_cgroup_commit_charge(), I used the \"pc\" pointer set up earlier:\nbut it\u0027s for oldpage, and needs now to be for newpage.  Once oldpage was\nfreed, its PageCgroupUsed bit (cleared above but set again here) caused\n\"Bad page state\" messages - and perhaps worse, being missed from newpage.\n(I didn\u0027t find this by using FUSE, but in reusing the function for tmpfs.)\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@vger.kernel.org [v3.3 only]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41c93088127df2579e8ca64010929ec9e41d5543",
      "tree": "5bbfded1934fc94facbfa892a59874703aa6922a",
      "parents": [
        "66aebce747eaf9bc456bf1f1b217d8db843031d0"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu Apr 12 12:49:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 13:12:12 2012 -0700"
      },
      "message": "Revert \"mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone()\"\n\nThis reverts commit c38446cc65e1f2b3eb8630c53943b94c4f65f670.\n\nBefore the commit, the code makes senses to me but not after the commit.\nThe \"nr_reclaimed\" is the number of pages reclaimed by scanning through\nthe memcg\u0027s lru lists.  The \"nr_to_reclaim\" is the target value for the\nwhole function.  For example, we like to early break the reclaim if\nreclaimed 32 pages under direct reclaim (not DEF_PRIORITY).\n\nAfter the reverted commit, the target \"nr_to_reclaim\" is decremented each\ntime by \"nr_reclaimed\" but we still use it to compare the \"nr_reclaimed\".\nIt just doesn\u0027t make sense to me...\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hillf Danton \u003cdhillf@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": "66aebce747eaf9bc456bf1f1b217d8db843031d0",
      "tree": "460c0268105191b2d581f42d5534dc952d565a17",
      "parents": [
        "f3ec434c69ac7f447ff6e6389c19727c9f002087"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Apr 12 12:49:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 13:12:12 2012 -0700"
      },
      "message": "hugetlb: fix race condition in hugetlb_fault()\n\nThe race is as follows:\n\nSuppose a multi-threaded task forks a new process (on cpu A), thus\nbumping up the ref count on all the pages.  While the fork is occurring\n(and thus we have marked all the PTEs as read-only), another thread in\nthe original process (on cpu B) tries to write to a huge page, taking an\naccess violation from the write-protect and calling hugetlb_cow().  Now,\nsuppose the fork() fails.  It will undo the COW and decrement the ref\ncount on the pages, so the ref count on the huge page drops back to 1.\nMeanwhile hugetlb_cow() also decrements the ref count by one on the\noriginal page, since the original address space doesn\u0027t need it any\nmore, having copied a new page to replace the original page.  This\nleaves the ref count at zero, and when we call unlock_page(), we panic.\n\n\tfork on CPU A\t\t\t\tfault on CPU B\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t...\n\tdown_write(\u0026parent-\u003emmap_sem);\n\tdown_write_nested(\u0026child-\u003emmap_sem);\n\t...\n\twhile duplicating vmas\n\t\tif error\n\t\t\tbreak;\n\t...\n\tup_write(\u0026child-\u003emmap_sem);\n\tup_write(\u0026parent-\u003emmap_sem);\t\t...\n\t\t\t\t\t\tdown_read(\u0026parent-\u003emmap_sem);\n\t\t\t\t\t\t...\n\t\t\t\t\t\tlock_page(page);\n\t\t\t\t\t\thandle COW\n\t\t\t\t\t\tpage_mapcount(old_page) \u003d\u003d 2\n\t\t\t\t\t\talloc and prepare new_page\n\t...\n\thandle error\n\tpage_remove_rmap(page);\n\tput_page(page);\n\t...\n\t\t\t\t\t\tfold new_page into pte\n\t\t\t\t\t\tpage_remove_rmap(page);\n\t\t\t\t\t\tput_page(page);\n\t\t\t\t\t\t...\n\t\t\t\toops \u003d\u003d\u003e\tunlock_page(page);\n\t\t\t\t\t\tup_read(\u0026parent-\u003emmap_sem);\n\nThe solution is to take an extra reference to the page while we are\nholding the lock on it.\n\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: \u003cstable@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": "569530fb1b40ab2d2ca147ee79898ac807ebdf90",
      "tree": "e9f4f9a04a9a8f2a94a919aff55629f8946b30f4",
      "parents": [
        "32050017cf3bf2b983571a90351328b4f66e463d"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Thu Apr 12 12:49:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 13:12:12 2012 -0700"
      },
      "message": "memcg: do not open code accesses to res_counter members\n\nWe should use the accessor res_counter_read_u64 for that.\n\nAlthough a purely cosmetic change is sometimes better delayed, to avoid\nconflicting with other people\u0027s work, we are starting to have people\ntouching this code as well, and reproducing the open code behavior\nbecause that\u0027s the standard \u003d)\n\nTime to fix it, then.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\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": "d833049bd20570cbbadeb5228c579f9f3aaa4e03",
      "tree": "2995af0705ce161cba50739048e90b89ea3991e2",
      "parents": [
        "6252efcc3626bdcde1c1c2d8a83be0bc66b8cc2c"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Thu Apr 12 12:49:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 12 13:12:11 2012 -0700"
      },
      "message": "memcg: fix broken boolen expression\n\naction !\u003d CPU_DEAD || action !\u003d CPU_DEAD_FROZEN is always true.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@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": "cb129820f1e6ccf309510f4eb28df45cb0742005",
      "tree": "bc87b3d13e1103b37206cc011da526389a74310c",
      "parents": [
        "b5174fa3a7f4f8f150bfa3b917c92608953dfa0f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Mar 29 09:45:58 2012 -0700"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Mar 29 09:45:58 2012 -0700"
      },
      "message": "percpu: use KERN_CONT in pcpu_dump_alloc_info()\n\npcpu_dump_alloc_info() was printing continued lines without KERN_CONT.\nUse it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\n"
    },
    {
      "commit": "532bfc851a7475fb6a36c1e953aa395798a7cca7",
      "tree": "a7892e5a31330dd59f31959efbe9fda1803784fd",
      "parents": [
        "0195c00244dc2e9f522475868fa278c473ba7339",
        "8da00edc1069f01c34510fa405dc15d96c090a3f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:19:28 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge third batch of patches from Andrew Morton:\n - Some MM stragglers\n - core SMP library cleanups (on_each_cpu_mask)\n - Some IPI optimisations\n - kexec\n - kdump\n - IPMI\n - the radix-tree iterator work\n - various other misc bits.\n\n \"That\u0027ll do for -rc1.  I still have ~10 patches for 3.4, will send\n  those along when they\u0027ve baked a little more.\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (35 commits)\n  backlight: fix typo in tosa_lcd.c\n  crc32: add help text for the algorithm select option\n  mm: move hugepage test examples to tools/testing/selftests/vm\n  mm: move slabinfo.c to tools/vm\n  mm: move page-types.c from Documentation to tools/vm\n  selftests/Makefile: make `run_tests\u0027 depend on `all\u0027\n  selftests: launch individual selftests from the main Makefile\n  radix-tree: use iterators in find_get_pages* functions\n  radix-tree: rewrite gang lookup using iterator\n  radix-tree: introduce bit-optimized iterator\n  fs/proc/namespaces.c: prevent crash when ns_entries[] is empty\n  nbd: rename the nbd_device variable from lo to nbd\n  pidns: add reboot_pid_ns() to handle the reboot syscall\n  sysctl: use bitmap library functions\n  ipmi: use locks on watchdog timeout set on reboot\n  ipmi: simplify locking\n  ipmi: fix message handling during panics\n  ipmi: use a tasklet for handling received messages\n  ipmi: increase KCS timeouts\n  ipmi: decrease the IPMI message transaction time in interrupt mode\n  ...\n"
    },
    {
      "commit": "0fc9d1040313047edf6a39fd4d7c7defdca97c62",
      "tree": "4503c084da1097e1cf66d8bac1ec548bc69ce69a",
      "parents": [
        "cebbd29e1c2f7a969919f19f74583070840163d7"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 28 14:42:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:37 2012 -0700"
      },
      "message": "radix-tree: use iterators in find_get_pages* functions\n\nReplace radix_tree_gang_lookup_slot() and\nradix_tree_gang_lookup_tag_slot() in page-cache lookup functions with\nbrand-new radix-tree direct iterating.  This avoids the double-scanning\nand pointer copying.\n\nIterator don\u0027t stop after nr_pages page-get fails in a row, it continue\nlookup till the radix-tree end.  Thus we can safely remove these restart\nconditions.\n\nUnfortunately, old implementation didn\u0027t forbid nr_pages \u003d\u003d 0, this corner\ncase does not fit into new code, so the patch adds an extra check at the\nbeginning.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74046494ea68676d29ef6501a4bd950f08112a2c",
      "tree": "4fb862c2ebeba25b089ed64d5cc36437ad9e3df2",
      "parents": [
        "42be35d0390b966253136a285f507f5ad00fd9e8"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@benyossef.com",
        "time": "Wed Mar 28 14:42:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm: only IPI CPUs to drain local pages if they exist\n\nCalculate a cpumask of CPUs with per-cpu pages in any zone and only send\nan IPI requesting CPUs to drain these pages to the buddy allocator if they\nactually have pages when asked to flush.\n\nThis patch saves 85%+ of IPIs asking to drain per-cpu pages in case of\nsevere memory pressure that leads to OOM since in these cases multiple,\npossibly concurrent, allocation requests end up in the direct reclaim code\npath so when the per-cpu pages end up reclaimed on first allocation\nfailure for most of the proceeding allocation attempts until the memory\npressure is off (possibly via the OOM killer) there are no per-cpu pages\non most CPUs (and there can easily be hundreds of them).\n\nThis also has the side effect of shortening the average latency of direct\nreclaim by 1 or more order of magnitude since waiting for all the CPUs to\nACK the IPI takes a long time.\n\nTested by running \"hackbench 400\" on a 8 CPU x86 VM and observing the\ndifference between the number of direct reclaim attempts that end up in\ndrain_all_pages() and those were more then 1/2 of the online CPU had any\nper-cpu page in them, using the vmstat counters introduced in the next\npatch in the series and using proc/interrupts.\n\nIn the test sceanrio, this was seen to save around 3600 global\nIPIs after trigerring an OOM on a concurrent workload:\n\n$ cat /proc/vmstat | tail -n 2\npcp_global_drain 0\npcp_global_ipi_saved 0\n\n$ cat /proc/interrupts | grep CAL\nCAL:          1          2          1          2\n          2          2          2          2   Function call interrupts\n\n$ hackbench 400\n[OOM messages snipped]\n\n$ cat /proc/vmstat | tail -n 2\npcp_global_drain 3647\npcp_global_ipi_saved 3642\n\n$ cat /proc/interrupts | grep CAL\nCAL:          6         13          6          3\n          3          3         1 2          7   Function call interrupts\n\nPlease note that if the global drain is removed from the direct reclaim\npath as a patch from Mel Gorman currently suggests this should be replaced\nwith an on_each_cpu_cond invocation.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Michal Nazarewicz \u003cmina86@mina86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8364d5555b2030d093cde0f07951628e55454e1",
      "tree": "a0fa097e39d103644d9f82269eea419b2a604f74",
      "parents": [
        "b3a7e98e024ffa9f7e4554dd720c508015c4a831"
      ],
      "author": {
        "name": "Gilad Ben-Yossef",
        "email": "gilad@benyossef.com",
        "time": "Wed Mar 28 14:42:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "slub: only IPI CPUs that have per cpu obj to flush\n\nflush_all() is called for each kmem_cache_destroy().  So every cache being\ndestroyed dynamically ends up sending an IPI to each CPU in the system,\nregardless if the cache has ever been used there.\n\nFor example, if you close the Infinband ipath driver char device file, the\nclose file ops calls kmem_cache_destroy().  So running some infiniband\nconfig tool on one a single CPU dedicated to system tasks might interrupt\nthe rest of the 127 CPUs dedicated to some CPU intensive or latency\nsensitive task.\n\nI suspect there is a good chance that every line in the output of \"git\ngrep kmem_cache_destroy linux/ | grep \u0027\\-\u003e\u0027\" has a similar scenario.\n\nThis patch attempts to rectify this issue by sending an IPI to flush the\nper cpu objects back to the free lists only to CPUs that seem to have such\nobjects.\n\nThe check which CPU to IPI is racy but we don\u0027t care since asking a CPU\nwithout per cpu objects to flush does no damage and as far as I can tell\nthe flush_all by itself is racy against allocs on remote CPUs anyway, so\nif you required the flush_all to be determinstic, you had to arrange for\nlocking regardless.\n\nWithout this patch the following artificial test case:\n\n$ cd /sys/kernel/slab\n$ for DIR in *; do cat $DIR/alloc_calls \u003e /dev/null; done\n\nproduces 166 IPIs on an cpuset isolated CPU. With it it produces none.\n\nThe code path of memory allocation failure for CPUMASK_OFFSTACK\u003dy\nconfig was tested using fault injection framework.\n\nSigned-off-by: Gilad Ben-Yossef \u003cgilad@benyossef.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.org\u003e\nCc: Kosaki Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Milton Miller \u003cmiltonm@bga.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d15cab975459fb6092eeba1be72c13621337784f",
      "tree": "5c1d8d18c65a34eb738c97d75f2c44becdff1de3",
      "parents": [
        "29fd66d289f2981e11c550f8b411a6d3d38be0cf"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 28 14:42:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "swapon: check validity of swap_flags\n\nMost system calls taking flags first check that the flags passed in are\nvalid, and that helps userspace to detect when new flags are supported.\n\nBut swapon never did so: start checking now, to help if we ever want to\nsupport more swap_flags in future.\n\nIt\u0027s difficult to get stray bits set in an int, and swapon is not widely\nused, so this is most unlikely to break any userspace; but we can just\nrevert if it turns out to do so.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29fd66d289f2981e11c550f8b411a6d3d38be0cf",
      "tree": "cc9931d0ee891ccfe9114bfd977da47f47175dbe",
      "parents": [
        "45f83cefe3a5f0476ac3f96382ebfdc3fe4caab2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 28 14:42:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm, coredump: fail allocations when coredumping instead of oom killing\n\nThe size of coredump files is limited by RLIMIT_CORE, however, allocating\nlarge amounts of memory results in three negative consequences:\n\n - the coredumping process may be chosen for oom kill and quickly deplete\n   all memory reserves in oom conditions preventing further progress from\n   being made or tasks from exiting,\n\n - the coredumping process may cause other processes to be oom killed\n   without fault of their own as the result of a SIGSEGV, for example, in\n   the coredumping process, or\n\n - the coredumping process may result in a livelock while writing to the\n   dump file if it needs memory to allocate while other threads are in\n   the exit path waiting on the coredumper to complete.\n\nThis is fixed by implying __GFP_NORETRY in the page allocator for\ncoredumping processes when reclaim has failed so the allocations fail and\nthe process continues to exit.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "45f83cefe3a5f0476ac3f96382ebfdc3fe4caab2",
      "tree": "b2f7d3c02923d89db5a551c6a7923121db9610c4",
      "parents": [
        "623e3db9f9b7d6e7b2a99180f9cf0825c936ab7a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Mar 28 14:42:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm: thp: fix up pmd_trans_unstable() locations\n\npmd_trans_unstable() should be called before pmd_offset_map() in the\nlocations where the mmap_sem is held for reading.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Ulrich Obergfell \u003cuobergfe@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mark Salter \u003cmsalter@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": "623e3db9f9b7d6e7b2a99180f9cf0825c936ab7a",
      "tree": "d8eaa8f1665a048c4318ccd0759775e057792823",
      "parents": [
        "3748b2f15b06ea1861df39d5e9693dcd6e9542b1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 28 14:42:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 17:14:35 2012 -0700"
      },
      "message": "mm for fs: add truncate_pagecache_range()\n\nHolepunching filesystems ext4 and xfs are using truncate_inode_pages_range\nbut forgetting to unmap pages first (ocfs2 remembers).  This is not really\na bug, since races already require truncate_inode_page() to handle that\ncase once the page is locked; but it can be very inefficient if the file\nbeing punched happens to be mapped into many vmas.\n\nProvide a drop-in replacement truncate_pagecache_range() which does the\nunmapping pass first, handling the awkward mismatch between arguments to\ntruncate_inode_pages_range() and arguments to unmap_mapping_range().\n\nNote that holepunching does not unmap privately COWed pages in the range:\nPOSIX requires that we do so when truncating, but it\u0027s hard to justify,\ndifficult to implement without an i_size cutoff, and no filesystem is\nattempting to implement it.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Ben Myers \u003cbpm@sgi.com\u003e\nCc: Alex Elder \u003celder@kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c9aac08261512d70d7d4817bd222abca8b6bdd6",
      "tree": "41bbfed632bfc6233eac3e936cfdce75c5bd3a8f",
      "parents": [
        "ed0bb8ea059764c3fc882fb135473afd347335e9",
        "8bdec192b40cf7f7eec170b317c76089eb5eeddb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:04:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 15:04:26 2012 -0700"
      },
      "message": "Merge branch \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\nPull SLAB changes from Pekka Enberg:\n \"There\u0027s the new kmalloc_array() API, minor fixes and performance\n  improvements, but quite honestly, nothing terribly exciting.\"\n\n* \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  mm: SLAB Out-of-memory diagnostics\n  slab: introduce kmalloc_array()\n  slub: per cpu partial statistics change\n  slub: include include for prefetch\n  slub: Do not hold slub_lock when calling sysfs_slab_add()\n  slub: prefetch next freelist pointer in slab_alloc()\n  slab, cleanup: remove unneeded return\n"
    },
    {
      "commit": "69e1aaddd63104f37021d0b0f6abfd9623c9134c",
      "tree": "14ad49741b428d270b681694bb2df349465455b9",
      "parents": [
        "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
        "9d547c35799a4ddd235f1565cec2fff6c9263504"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates for 3.4 from Ted Ts\u0027o:\n \"Ext4 commits for 3.3 merge window; mostly cleanups and bug fixes\n\n  The changes to export dirty_writeback_interval are from Artem\u0027s s_dirt\n  cleanup patch series.  The same is true of the change to remove the\n  s_dirt helper functions which never got used by anyone in-tree.  I\u0027ve\n  run these changes by Al Viro, and am carrying them so that Artem can\n  more easily fix up the rest of the file systems during the next merge\n  window.  (Originally we had hopped to remove the use of s_dirt from\n  ext4 during this merge window, but his patches had some bugs, so I\n  ultimately ended dropping them from the ext4 tree.)\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (66 commits)\n  vfs: remove unused superblock helpers\n  mm: export dirty_writeback_interval\n  ext4: remove useless s_dirt assignment\n  ext4: write superblock only once on unmount\n  ext4: do not mark superblock as dirty unnecessarily\n  ext4: correct ext4_punch_hole return codes\n  ext4: remove restrictive checks for EOFBLOCKS_FL\n  ext4: always set then trimmed blocks count into len\n  ext4: fix trimmed block count accunting\n  ext4: fix start and len arguments handling in ext4_trim_fs()\n  ext4: update s_free_{inodes,blocks}_count during online resize\n  ext4: change some printk() calls to use ext4_msg() instead\n  ext4: avoid output message interleaving in ext4_error_\u003cfoo\u003e()\n  ext4: remove trailing newlines from ext4_msg() and ext4_error() messages\n  ext4: add no_printk argument validation, fix fallout\n  ext4: remove redundant \"EXT4-fs: \" from uses of ext4_msg\n  ext4: give more helpful error message in ext4_ext_rm_leaf()\n  ext4: remove unused code from ext4_ext_map_blocks()\n  ext4: rewrite punch hole to use ext4_ext_remove_space()\n  jbd2: cleanup journal tail after transaction commit\n  ...\n"
    },
    {
      "commit": "496b919b3bdd957d4b1727df79bfa3751bced1c1",
      "tree": "5585608ebdce5a7eca8f5ef334e6b167fcd5aab1",
      "parents": [
        "250f6715a4112d6686670c5a62ceb9305da94616"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Mar 24 10:26:21 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 12:18:32 2012 -0700"
      },
      "message": "Fix potential endless loop in kswapd when compaction is not enabled\n\nWe should only test compaction_suitable if the kernel is built with\nCONFIG_COMPACTION, otherwise the stub compaction_suitable function will\nalways return COMPACT_SKIPPED and send kswapd into an infinite loop.\n\nReported-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "accb61fe7bb0f5c2a4102239e4981650f9048519",
      "tree": "5e7120b80944d9719684b94e0c419761ba2d59e1",
      "parents": [
        "909af768e88867016f427264ae39d27a57b6a8ed"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Mar 23 15:02:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP\n\nSince we no longer need the VM_ALWAYSDUMP flag, let\u0027s use the freed bit\nfor \u0027VM_NODUMP\u0027 flag.  The idea is is to add a new madvise() flag:\nMADV_DONTDUMP, which can be set by applications to specifically request\nmemory regions which should not dump core.\n\nThe specific application I have in mind is qemu: we can add a flag there\nthat wouldn\u0027t dump all of guest memory when qemu dumps core.  This flag\nmight also be useful for security sensitive apps that want to absolutely\nmake sure that parts of memory are not dumped.  To clear the flag use:\nMADV_DODUMP.\n\n[akpm@linux-foundation.org: s/MADV_NODUMP/MADV_DONTDUMP/, s/MADV_CLEAR_NODUMP/MADV_DODUMP/, per Roland]\n[akpm@linux-foundation.org: fix up the architectures which broke]\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@hack.frob.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Matt Turner \u003cmattst88@gmail.com\u003e\nCc: \"James E.J. Bottomley\" \u003cjejb@parisc-linux.org\u003e\nCc: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "909af768e88867016f427264ae39d27a57b6a8ed",
      "tree": "5068b4d98e4bedecde89d9113dc7ef8c69633f45",
      "parents": [
        "1cc684ab75123efe7ff446eb821d44375ba8fa30"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Mar 23 15:02:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:42 2012 -0700"
      },
      "message": "coredump: remove VM_ALWAYSDUMP flag\n\nThe motivation for this patchset was that I was looking at a way for a\nqemu-kvm process, to exclude the guest memory from its core dump, which\ncan be quite large.  There are already a number of filter flags in\n/proc/\u003cpid\u003e/coredump_filter, however, these allow one to specify \u0027types\u0027\nof kernel memory, not specific address ranges (which is needed in this\ncase).\n\nSince there are no more vma flags available, the first patch eliminates\nthe need for the \u0027VM_ALWAYSDUMP\u0027 flag.  The flag is used internally by\nthe kernel to mark vdso and vsyscall pages.  However, it is simple\nenough to check if a vma covers a vdso or vsyscall page without the need\nfor this flag.\n\nThe second patch then replaces the \u0027VM_ALWAYSDUMP\u0027 flag with a new\n\u0027VM_NODUMP\u0027 flag, which can be set by userspace using new madvise flags:\n\u0027MADV_DONTDUMP\u0027, and unset via \u0027MADV_DODUMP\u0027.  The core dump filters\ncontinue to work the same as before unless \u0027MADV_DONTDUMP\u0027 is set on the\nregion.\n\nThe qemu code which implements this features is at:\n\n  http://people.redhat.com/~jbaron/qemu-dump/qemu-dump.patch\n\nIn my testing the qemu core dump shrunk from 383MB -\u003e 13MB with this\npatch.\n\nI also believe that the \u0027MADV_DONTDUMP\u0027 flag might be useful for\nsecurity sensitive apps, which might want to select which areas are\ndumped.\n\nThis patch:\n\nThe VM_ALWAYSDUMP flag is currently used by the coredump code to\nindicate that a vma is part of a vsyscall or vdso section.  However, we\ncan determine if a vma is in one these sections by checking it against\nthe gate_vma and checking for a non-NULL return value from\narch_vma_name().  Thus, freeing a valuable vma bit.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nAcked-by: Roland McGrath \u003croland@hack.frob.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nCc: Avi Kivity \u003cavi@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": "d2d393099de21eda91c5ec6a05d60e5dee4d5175",
      "tree": "92f2f5eaed87e35c43d8461a86f618b6f2a28406",
      "parents": [
        "def8cf72562e17ec8316ce0cb5697c7afd6400e3"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 23 15:02:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:41 2012 -0700"
      },
      "message": "signal: oom_kill_task: use SEND_SIG_FORCED instead of force_sig()\n\nChange oom_kill_task() to use do_send_sig_info(SEND_SIG_FORCED) instead\nof force_sig(SIGKILL).  With the recent changes we do not need force_ to\nkill the CLONE_NEWPID tasks.\n\nAnd this is more correct.  force_sig() can race with the exiting thread\neven if oom_kill_task() checks p-\u003emm !\u003d NULL, while\ndo_send_sig_info(group \u003d\u003e true) kille the whole process.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: David Rientjes \u003crientjes@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": "6629326b89b6e69cc44276e1649a31158bb2c819",
      "tree": "ca9463de7f327189cece1111112d2641114f3acc",
      "parents": [
        "934e18b5cb4531cc6e81865bf54115cfd21d1ac6"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Fri Mar 23 15:01:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:31 2012 -0700"
      },
      "message": "mm: hugetlb: cleanup duplicated code in unmapping vm range\n\nFix code duplication in __unmap_hugepage_range(), such as pte_page() and\nhuge_pte_none().\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "643ac9fc5429e85b8b7f534544b80bcc4f34c367",
      "tree": "f6db7d7e8a08761119d478ef7adf5bef4402f786",
      "parents": [
        "437538267b672f9320833907f1b5acbb2605f4be"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Mar 23 02:57:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:34:40 2012 -0700"
      },
      "message": "mm: fix testorder interaction between two kswapd patches\n\nAdjusting cc715d99e529 \"mm: vmscan: forcibly scan highmem if there are\ntoo many buffer_heads pinning highmem\" for -stable reveals that it was\nslightly wrong once on top of fe2c2a106663 \"vmscan: reclaim at order 0\nwhen compaction is enabled\", which specifically adds testorder for the\nzone_watermark_ok_safe() test.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aab008db8063364dc3c8ccf4981c21124866b395",
      "tree": "72914203f4decb023efdaabd0301a62d742dfa8c",
      "parents": [
        "4f5b1affdda3e0c48cac674182f52004137b0ffc",
        "16c0cfa425b8e1488f7a1873bd112a7a099325f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 19:52:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 19:52:47 2012 -0700"
      },
      "message": "Merge tag \u0027stable/for-linus-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm\n\nPull cleancache changes from Konrad Rzeszutek Wilk:\n \"This has some patches for the cleancache API that should have been\n  submitted a _long_ time ago.  They are basically cleanups:\n\n   - rename of flush to invalidate\n\n   - moving reporting of statistics into debugfs\n\n   - use __read_mostly as necessary.\n\n  Oh, and also the MAINTAINERS file change.  The files (except the\n  MAINTAINERS file) have been in #linux-next for months now.  The late\n  addition of MAINTAINERS file is a brain-fart on my side - didn\u0027t\n  realize I needed that just until I was typing this up - and I based\n  that patch on v3.3 - so the tree is on top of v3.3.\"\n\n* tag \u0027stable/for-linus-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm:\n  MAINTAINERS: Adding cleancache API to the list.\n  mm: cleancache: Use __read_mostly as appropiate.\n  mm: cleancache: report statistics via debugfs instead of sysfs.\n  mm: zcache/tmem/cleancache: s/flush/invalidate/\n  mm: cleancache: s/flush/invalidate/\n"
    },
    {
      "commit": "754b9800779402924fffe456b49d557e15260cbf",
      "tree": "0e0441eca766616fccd8fc37a3885397efc6063a",
      "parents": [
        "35cb8d9e18c0bb33b90d7e574abadbe23b65427d",
        "ea281a9ebaba3287130dbe15bb0aad6f798bb06b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:42:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:42:04 2012 -0700"
      },
      "message": "Merge branch \u0027x86-mce-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull MCE changes from Ingo Molnar.\n\n* \u0027x86-mce-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  x86/mce: Fix return value of mce_chrdev_read() when erst is disabled\n  x86/mce: Convert static array of pointers to per-cpu variables\n  x86/mce: Replace hard coded hex constants with symbolic defines\n  x86/mce: Recognise machine check bank signature for data path error\n  x86/mce: Handle \"action required\" errors\n  x86/mce: Add mechanism to safely save information in MCE handler\n  x86/mce: Create helper function to save addr/misc when needed\n  HWPOISON: Add code to handle \"action required\" errors.\n  HWPOISON: Clean up memory_failure() vs. __memory_failure()\n"
    },
    {
      "commit": "95211279c5ad00a317c98221d7e4365e02f20836",
      "tree": "2ddc8625378d2915b8c96392f3cf6663b705ed55",
      "parents": [
        "5375871d432ae9fc581014ac117b96aaee3cd0c7",
        "12724850e8064f64b6223d26d78c0597c742c65a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 09:04:48 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge first batch of patches from Andrew Morton:\n \"A few misc things and all the MM queue\"\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (92 commits)\n  memcg: avoid THP split in task migration\n  thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n  memcg: clean up existing move charge code\n  mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n  mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n  mm/memcontrol.c: s/stealed/stolen/\n  memcg: fix performance of mem_cgroup_begin_update_page_stat()\n  memcg: remove PCG_FILE_MAPPED\n  memcg: use new logic for page stat accounting\n  memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n  memcg: simplify move_account() check\n  memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n  memcg: kill dead prev_priority stubs\n  memcg: remove PCG_CACHE page_cgroup flag\n  memcg: let css_get_next() rely upon rcu_read_lock()\n  cgroup: revert ss_id_lock to spinlock\n  idr: make idr_get_next() good for rcu_read_lock()\n  memcg: remove unnecessary thp check in page stat accounting\n  memcg: remove redundant returns\n  memcg: enum lru_list lru\n  ...\n"
    },
    {
      "commit": "91913a2942d2b582c40673956dec1a9c71d32fe4",
      "tree": "b055ae821b46fa7e11e1f7035a3da7b1e711f5e4",
      "parents": [
        "182f514f883abb5f942c94e61c371c4b406352d4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Mar 21 22:33:00 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:33:00 2012 -0400"
      },
      "message": "mm: export dirty_writeback_interval\n\nExport \u0027dirty_writeback_interval\u0027 to make it visible to\nfile-systems. We are going to push superblock management down to\nfile-systems and get rid of the \u0027sync_supers\u0027 kernel thread completly.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12724850e8064f64b6223d26d78c0597c742c65a",
      "tree": "f0b91eeae069fe92906db7ad9d0d8a8003f05db4",
      "parents": [
        "d8c37c480678ebe09bc570f33e085e28049db035"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:34:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "memcg: avoid THP split in task migration\n\nCurrently we can\u0027t do task migration among memory cgroups without THP\nsplit, which means processes heavily using THP experience large overhead\nin task migration.  This patch introduces the code for moving charge of\nTHP and makes THP more valuable.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@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": "d8c37c480678ebe09bc570f33e085e28049db035",
      "tree": "c8c53fde803f1a9655f44193c97db76dc4a90fe1",
      "parents": [
        "8d32ff84401f1addb961c7af2c8d9baceb0ab9ba"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:34:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE\n\nThese macros will be used in a later patch, where all usages are expected\nto be optimized away without #ifdef CONFIG_TRANSPARENT_HUGEPAGE.  But to\ndetect unexpected usages, we convert the existing BUG() to BUILD_BUG().\n\n[akpm@linux-foundation.org: fix build in mm/pgtable-generic.c]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@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": "8d32ff84401f1addb961c7af2c8d9baceb0ab9ba",
      "tree": "bf62513b239dce072f0105c0b06ed694634a77d4",
      "parents": [
        "a488428871265979bcf2c46298a04c1d5826e6cb"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:34:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "memcg: clean up existing move charge code\n\n- Replace lengthy function name is_target_pte_for_mc() with a shorter\n  one in order to avoid ugly line breaks.\n\n- explicitly use MC_TARGET_* instead of simply using integers.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Hillf Danton \u003cdhillf@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": "a488428871265979bcf2c46298a04c1d5826e6cb",
      "tree": "87126bade942bcff8f36e538c8f45605fd080fd0",
      "parents": [
        "45f3e385b7a639c633d7a4b1e863c2d52b918258"
      ],
      "author": {
        "name": "Jeff Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Wed Mar 21 16:34:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "mm/memcontrol.c: remove unnecessary \u0027break\u0027 in mem_cgroup_read()\n\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45f3e385b7a639c633d7a4b1e863c2d52b918258",
      "tree": "8f0c068aff36cc4f915899ed68d2e8686d75b069",
      "parents": [
        "13fd1dd9db345f6b2babd1e80a1c929092eb4896"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "anton.vorontsov@linaro.org",
        "time": "Wed Mar 21 16:34:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()\n\nIn the following code:\n\n\tif (type \u003d\u003d _MEM)\n\t\tthresholds \u003d \u0026memcg-\u003ethresholds;\n\telse if (type \u003d\u003d _MEMSWAP)\n\t\tthresholds \u003d \u0026memcg-\u003ememsw_thresholds;\n\telse\n\t\tBUG();\n\n\tBUG_ON(!thresholds);\n\nThe BUG_ON() seems redundant.\n\nSigned-off-by: Anton Vorontsov \u003canton.vorontsov@linaro.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "13fd1dd9db345f6b2babd1e80a1c929092eb4896",
      "tree": "03d5fd77f06780bd5c164b82c6ba04b56a259b06",
      "parents": [
        "4331f7d339ee0b54603344b9d13662a9c022540c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Mar 21 16:34:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "mm/memcontrol.c: s/stealed/stolen/\n\nA grammatical fix.\n\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": "4331f7d339ee0b54603344b9d13662a9c022540c",
      "tree": "ea67ad19a4dff0f8bf7d335bb7ab148ecfb4d329",
      "parents": [
        "2ff76f1193f8481f7e6c29304eea4006e8e51569"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:02 2012 -0700"
      },
      "message": "memcg: fix performance of mem_cgroup_begin_update_page_stat()\n\nmem_cgroup_begin_update_page_stat() should be very fast because it\u0027s\ncalled very frequently.  Now, it needs to look up page_cgroup and its\nmemcg....this is slow.\n\nThis patch adds a global variable to check \"any memcg is moving or not\".\nWith this, the caller doesn\u0027t need to visit page_cgroup and memcg.\n\nHere is a test result.  A test program makes page faults onto a file,\nMAP_SHARED and makes each page\u0027s page_mapcount(page) \u003e 1, and free the\nrange by madvise() and page fault again.  This program causes 26214400\ntimes of page fault onto a file(size was 1G.) and shows shows the cost of\nmem_cgroup_begin_update_page_stat().\n\nBefore this patch for mem_cgroup_begin_update_page_stat()\n\n    [kamezawa@bluextal test]$ time ./mmap 1G\n\n    real    0m21.765s\n    user    0m5.999s\n    sys     0m15.434s\n\n    27.46%     mmap  mmap               [.] reader\n    21.15%     mmap  [kernel.kallsyms]  [k] page_fault\n     9.17%     mmap  [kernel.kallsyms]  [k] filemap_fault\n     2.96%     mmap  [kernel.kallsyms]  [k] __do_fault\n     2.83%     mmap  [kernel.kallsyms]  [k] __mem_cgroup_begin_update_page_stat\n\nAfter this patch\n\n    [root@bluextal test]# time ./mmap 1G\n\n    real    0m21.373s\n    user    0m6.113s\n    sys     0m15.016s\n\nIn usual path, calls to __mem_cgroup_begin_update_page_stat() goes away.\n\nNote: we may be able to remove this optimization in future if\n      we can get pointer to memcg directly from struct page.\n\n[akpm@linux-foundation.org: don\u0027t return a void]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "2ff76f1193f8481f7e6c29304eea4006e8e51569",
      "tree": "a263678dc298e29a0c54bb2e6f98bb1d5ee19751",
      "parents": [
        "89c06bd52fb9ffceddf84f7309d2e8c9f1666216"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: remove PCG_FILE_MAPPED\n\nWith the new lock scheme for updating memcg\u0027s page stat, we don\u0027t need a\nflag PCG_FILE_MAPPED which was duplicated information of page_mapped().\n\n[hughd@google.com: cosmetic fix]\n[hughd@google.com: add comment to MEM_CGROUP_CHARGE_TYPE_MAPPED case in __mem_cgroup_uncharge_common()]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "89c06bd52fb9ffceddf84f7309d2e8c9f1666216",
      "tree": "43ec3d97a89988bc143bed5796bcd7bef64212dc",
      "parents": [
        "312734c04e2fecc58429aec98194e4ff12d8f7d6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: use new logic for page stat accounting\n\nNow, page-stat-per-memcg is recorded into per page_cgroup flag by\nduplicating page\u0027s status into the flag.  The reason is that memcg has a\nfeature to move a page from a group to another group and we have race\nbetween \"move\" and \"page stat accounting\",\n\nUnder current logic, assume CPU-A and CPU-B.  CPU-A does \"move\" and CPU-B\ndoes \"page stat accounting\".\n\nWhen CPU-A goes 1st,\n\n            CPU-A                           CPU-B\n                                    update \"struct page\" info.\n    move_lock_mem_cgroup(memcg)\n    see pc-\u003eflags\n    copy page stat to new group\n    overwrite pc-\u003emem_cgroup.\n    move_unlock_mem_cgroup(memcg)\n                                    move_lock_mem_cgroup(mem)\n                                    set pc-\u003eflags\n                                    update page stat accounting\n                                    move_unlock_mem_cgroup(mem)\n\nstat accounting is guarded by move_lock_mem_cgroup() and \"move\" logic\n(CPU-A) doesn\u0027t see changes in \"struct page\" information.\n\nBut it\u0027s costly to have the same information both in \u0027struct page\u0027 and\n\u0027struct page_cgroup\u0027.  And, there is a potential problem.\n\nFor example, assume we have PG_dirty accounting in memcg.\nPG_..is a flag for struct page.\nPCG_ is a flag for struct page_cgroup.\n(This is just an example. The same problem can be found in any\n kind of page stat accounting.)\n\n\t  CPU-A                               CPU-B\n      TestSet PG_dirty\n      (delay)                        TestClear PG_dirty\n                                     if (TestClear(PCG_dirty))\n                                          memcg-\u003enr_dirty--\n      if (TestSet(PCG_dirty))\n          memcg-\u003enr_dirty++\n\nHere, memcg-\u003enr_dirty \u003d +1, this is wrong.  This race was reported by Greg\nThelen \u003cgthelen@google.com\u003e.  Now, only FILE_MAPPED is supported but\nfortunately, it\u0027s serialized by page table lock and this is not real bug,\n_now_,\n\nIf this potential problem is caused by having duplicated information in\nstruct page and struct page_cgroup, we may be able to fix this by using\noriginal \u0027struct page\u0027 information.  But we\u0027ll have a problem in \"move\naccount\"\n\nAssume we use only PG_dirty.\n\n         CPU-A                   CPU-B\n    TestSet PG_dirty\n    (delay)                    move_lock_mem_cgroup()\n                               if (PageDirty(page))\n                                      new_memcg-\u003enr_dirty++\n                               pc-\u003emem_cgroup \u003d new_memcg;\n                               move_unlock_mem_cgroup()\n    move_lock_mem_cgroup()\n    memcg \u003d pc-\u003emem_cgroup\n    new_memcg-\u003enr_dirty++\n\naccounting information may be double-counted.  This was original reason to\nhave PCG_xxx flags but it seems PCG_xxx has another problem.\n\nI think we need a bigger lock as\n\n     move_lock_mem_cgroup(page)\n     TestSetPageDirty(page)\n     update page stats (without any checks)\n     move_unlock_mem_cgroup(page)\n\nThis fixes both of problems and we don\u0027t have to duplicate page flag into\npage_cgroup.  Please note: move_lock_mem_cgroup() is held only when there\nare possibility of \"account move\" under the system.  So, in most path,\nstatus update will go without atomic locks.\n\nThis patch introduces mem_cgroup_begin_update_page_stat() and\nmem_cgroup_end_update_page_stat() both should be called at modifying\n\u0027struct page\u0027 information if memcg takes care of it.  as\n\n     mem_cgroup_begin_update_page_stat()\n     modify page information\n     mem_cgroup_update_page_stat()\n     \u003d\u003e never check any \u0027struct page\u0027 info, just update counters.\n     mem_cgroup_end_update_page_stat().\n\nThis patch is slow because we need to call begin_update_page_stat()/\nend_update_page_stat() regardless of accounted will be changed or not.  A\nfollowing patch adds an easy optimization and reduces the cost.\n\n[akpm@linux-foundation.org: s/lock/locked/]\n[hughd@google.com: fix deadlock by avoiding stat lock when anon]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "312734c04e2fecc58429aec98194e4ff12d8f7d6",
      "tree": "c1195cd46733b6a3909c11b2b5abcdee4412b99b",
      "parents": [
        "619d094b5872a5af153f1af77a8b7f7326faf0d0"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: remove PCG_MOVE_LOCK flag from page_cgroup\n\nPCG_MOVE_LOCK is used for bit spinlock to avoid race between overwriting\npc-\u003emem_cgroup and page statistics accounting per memcg.  This lock helps\nto avoid the race but the race is very rare because moving tasks between\ncgroup is not a usual job.  So, it seems using 1bit per page is too\ncostly.\n\nThis patch changes this lock as per-memcg spinlock and removes\nPCG_MOVE_LOCK.\n\nIf smaller lock is required, we\u0027ll be able to add some hashes but I\u0027d like\nto start from this.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "619d094b5872a5af153f1af77a8b7f7326faf0d0",
      "tree": "4de9ff8640d8cee092800cd722e621ea2db63640",
      "parents": [
        "9e3357907c84517d9e07bc0b19265807f0264b43"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: simplify move_account() check\n\nIn memcg, for avoiding take-lock-irq-off at accessing page_cgroup, a\nlogic, flag + rcu_read_lock(), is used.  This works as following\n\n     CPU-A                     CPU-B\n                             rcu_read_lock()\n    set flag\n                             if(flag is set)\n                                   take heavy lock\n                             do job.\n    synchronize_rcu()        rcu_read_unlock()\n    take heavy lock.\n\nIn recent discussion, it\u0027s argued that using per-cpu value for this flag\njust complicates the code because \u0027set flag\u0027 is very rare.\n\nThis patch changes \u0027flag\u0027 implementation from percpu to atomic_t.  This\nwill be much simpler.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e3357907c84517d9e07bc0b19265807f0264b43",
      "tree": "3ce1602eefd0c1f006c23170da16545478dc5404",
      "parents": [
        "a710920caedfcf56543136bfea300a6c593f9838"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)\n\nAs described in the log, I guess EXPORT was for preparing dirty\naccounting.  But _now_, we don\u0027t need to export this.  Remove this for\nnow.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b24028572fb69e9dd6de8c359eba2b2c66baa889",
      "tree": "563594eba40e5fd0b61c36c09705f128a8dfbe40",
      "parents": [
        "ca464d69b19120a826aa2534de2511a6f542edf5"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:22 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: remove PCG_CACHE page_cgroup flag\n\nWe record \u0027the page is cache\u0027 with the PCG_CACHE bit in page_cgroup.\nHere, \"CACHE\" means anonymous user pages (and SwapCache).  This doesn\u0027t\ninclude shmem.\n\nConsidering callers, at charge/uncharge, the caller should know what the\npage is and we don\u0027t need to record it by using one bit per page.\n\nThis patch removes PCG_CACHE bit and make callers of\nmem_cgroup_charge_statistics() to specify what the page is.\n\nAbout page migration: Mapping of the used page is not touched during migra\ntion (see page_remove_rmap) so we can rely on it and push the correct\ncharge type down to __mem_cgroup_uncharge_common from end_migration for\nunused page.  The force flag was misleading was abused for skipping the\nneedless page_mapped() / PageCgroupMigration() check, as we know the\nunused page is no longer mapped and cleared the migration flag just a few\nlines up.  But doing the checks is no biggie and it\u0027s not worth adding\nanother flag just to skip them.\n\n[akpm@linux-foundation.org: checkpatch fixes]\n[hughd@google.com: fix PageAnon uncharging]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e79dedde951e981612ed4e6d74873d61d2a113b",
      "tree": "eb759b4516068a39bc30a2e1758f0743a9c68762",
      "parents": [
        "1f2b71f41ee81735c25ef326da9a0610d640abc2"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 21 16:34:20 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:01 2012 -0700"
      },
      "message": "memcg: remove unnecessary thp check in page stat accounting\n\nCommit e94c8a9cbce1 (\"memcg: make mem_cgroup_split_huge_fixup() more\nefficient\") removed move_lock_page_cgroup().  So we do not have to check\nPageTransHuge in mem_cgroup_update_page_stat() and fallback into the\nlocked accounting because both move_account() and thp split are done\nwith compound_lock so they cannot race.\n\nThe race between update vs.  move is protected by mem_cgroup_stealed.\n\nPageTransHuge pages shouldn\u0027t appear in this code path currently because\nwe are tracking only file pages at the moment but later we are planning\nto track also other pages (e.g.  mlocked ones).\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Acked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: 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": "1f2b71f41ee81735c25ef326da9a0610d640abc2",
      "tree": "07d2c696698da7bf6446b11158e0291c73bbae6b",
      "parents": [
        "f156ab9333c7810f8c4b1a0413142f52534b2df1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:34:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "memcg: remove redundant returns\n\nRemove redundant returns from ends of functions, and one blank line.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: 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": "f156ab9333c7810f8c4b1a0413142f52534b2df1",
      "tree": "c456db15734c575223be69c57328e140cc4b489f",
      "parents": [
        "1eb4927251a4e5ab152e64afb29453547365fde8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:34:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "memcg: enum lru_list lru\n\nMostly we use \"enum lru_list lru\": change those few \"l\"s to \"lru\"s.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: 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": "1eb4927251a4e5ab152e64afb29453547365fde8",
      "tree": "e2b51066c91c8a704251dfdfab6b94471206a00f",
      "parents": [
        "d79154bb5223edad407db61f59b9b15b0080ed80"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:34:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "memcg: lru_size instead of MEM_CGROUP_ZSTAT\n\nI never understood why we need a MEM_CGROUP_ZSTAT(mz, idx) macro to\nobscure the LRU counts.  For easier searching? So call it lru_size\nrather than bare count (lru_length sounds better, but would be wrong,\nsince each huge page raises lru_size hugely).\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: 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": "d79154bb5223edad407db61f59b9b15b0080ed80",
      "tree": "28c7c706c5a78763fb75f9ff6e6d2b3a4d7fa82d",
      "parents": [
        "31a79235fc75b506e282e43723107a40f3bc5c07"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:34:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "memcg: replace mem and mem_cont stragglers\n\nReplace mem and mem_cont stragglers in memcontrol.c by memcg.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: 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": "052b1987faca3606109d88d96bce124851f7c4c2",
      "tree": "879df883edb01ea6e0da880e391b06bb69058129",
      "parents": [
        "1480de0340a8d5f094b74d7c4b902456c9a06903"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shli@kernel.org",
        "time": "Wed Mar 21 16:34:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "swap: don\u0027t do discard if no discard option added\n\nWhen swapon() was not passed the SWAP_FLAG_DISCARD option, sys_swapon()\nwill still perform a discard operation.  This can cause problems if\ndiscard is slow or buggy.\n\nReverse the order of the check so that a discard operation is performed\nonly if the sys_swapon() caller is attempting to enable discard.\n\nSigned-off-by: Shaohua Li \u003cshli@fusionio.com\u003e\nReported-by: Holger Kiehl \u003cHolger.Kiehl@dwd.de\u003e\nTested-by: Holger Kiehl \u003cHolger.Kiehl@dwd.de\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1480de0340a8d5f094b74d7c4b902456c9a06903",
      "tree": "6a4c4d776b6475d8a35cb4632340227e8ab311c2",
      "parents": [
        "88f6b4c32e531dc5b06bd05144f790847a1fdaeb"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:34:17 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "mm: forbid lumpy-reclaim in shrink_active_list()\n\nReset the reclaim mode in shrink_active_list() to RECLAIM_MODE_SINGLE |\nRECLAIM_MODE_ASYNC.  (sync/async sign is used only in shrink_page_list\nand does not affect shrink_active_list)\n\nCurrenly shrink_active_list() sometimes works in lumpy-reclaim mode, if\nRECLAIM_MODE_LUMPYRECLAIM is left over from an earlier\nshrink_inactive_list().  Meanwhile, in age_active_anon()\nsc-\u003ereclaim_mode is totally zero.  So the current behavior is too\ncomplex and confusing, and this looks like bug.\n\nIn general, shrink_active_list() populates the inactive list for the\nnext shrink_inactive_list().  Lumpy shring_inactive_list() isolates\npages around the chosen one from both the active and inactive lists.\nSo, there is no reason for lumpy isolation in shrink_active_list().\n\nSee also: https://lkml.org/lkml/2012/3/15/583\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nProposed-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\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": "88f6b4c32e531dc5b06bd05144f790847a1fdaeb",
      "tree": "751d07060432fe32200d7849e7901082968b3e51",
      "parents": [
        "d71b5a73fe9af42752c4329b087f7911b35f8f79"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "mmap.c: fix comment for __insert_vm_struct()\n\nThe comment above __insert_vm_struct seems to suggest that this function\nis also going to link the VMA with the anon_vma, but this is not true.\nThis function only links the VMA to the mm-\u003emm_rb tree and the mm-\u003emmap\nlinked list.\n\n[akpm@linux-foundation.org: improve comment layout and text]\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nAcked-by: 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": "b224ef856b1a5b949daff5937a9e187fe622b8f5",
      "tree": "7d119425e8734eba198f83dec781d8b9c6859923",
      "parents": [
        "8d13bddd11c10db40e2c81b4b224c11126691fc0"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "page_alloc: remove unused find_zone_movable_pfns_for_nodes() argument\n\nfind_zone_movable_pfns_for_nodes() does not use its argument.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.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": "8d13bddd11c10db40e2c81b4b224c11126691fc0",
      "tree": "bec31e54cbc43bf6b49c391d81893203b903b5ec",
      "parents": [
        "d1d5e05ffdc110021ae7937802e88ae0d223dcdc"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:55:00 2012 -0700"
      },
      "message": "page_alloc.c: remove add_from_early_node_map()\n\nadd_from_early_node_map() is unused.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@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": "40716e29243de46720e5773797791466c28904ec",
      "tree": "19616ad05cbead73d0643b002a7ced8baa292ee2",
      "parents": [
        "21a3c273f88c9cbbaf7e14505df0131d95c8f262"
      ],
      "author": {
        "name": "Steven Truelove",
        "email": "steven.truelove@utoronto.ca",
        "time": "Wed Mar 21 16:34:14 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "hugetlbfs: fix alignment of huge page requests\n\nWhen calling shmget() with SHM_HUGETLB, shmget aligns the request size to\nPAGE_SIZE, but this is not sufficient.\n\nModify hugetlb_file_setup() to align requests to the huge page size, and\nto accept an address argument so that all alignment checks can be\nperformed in hugetlb_file_setup(), rather than in its callers.  Change\nnewseg() and mmap_pgoff() to match the new prototype and eliminate a now\nredundant alignment check.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Steven Truelove \u003csteven.truelove@utoronto.ca\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea48cf7863c789579b170ef28e7fc62728365d6e",
      "tree": "3602d07d69e1b1b6d8a26f2b221705bb2862ee3c",
      "parents": [
        "05af2e104a0c282dcd9303431e1360750ba76de6"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm, counters: fold __sync_task_rss_stat() into sync_mm_rss()\n\nThere\u0027s no difference between sync_mm_rss() and __sync_task_rss_stat(),\nso fold the latter into the former.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: 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": "05af2e104a0c282dcd9303431e1360750ba76de6",
      "tree": "cdd5876f2d17b26cc3ded7ef85d04d0e853e9b7e",
      "parents": [
        "90481622d75715bfcb68501280a917dbfe516029"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:13 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm, counters: remove task argument to sync_mm_rss() and __sync_task_rss_stat()\n\nsync_mm_rss() can only be used for current to avoid race conditions in\niterating and clearing its per-task counters.  Remove the task argument\nfor it and its helper function, __sync_task_rss_stat(), to avoid thinking\nit can be used safely for anything other than current.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: 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": "90481622d75715bfcb68501280a917dbfe516029",
      "tree": "63f7d9e4455366ab326ee74e6b39acf76b618fcf",
      "parents": [
        "a1d776ee3147cec2a54a645e92eb2e3e2f65a137"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Wed Mar 21 16:34:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "hugepages: fix use after free bug in \"quota\" handling\n\nhugetlbfs_{get,put}_quota() are badly named.  They don\u0027t interact with the\ngeneral quota handling code, and they don\u0027t much resemble its behaviour.\nRather than being about maintaining limits on on-disk block usage by\nparticular users, they are instead about maintaining limits on in-memory\npage usage (including anonymous MAP_PRIVATE copied-on-write pages)\nassociated with a particular hugetlbfs filesystem instance.\n\nWorse, they work by having callbacks to the hugetlbfs filesystem code from\nthe low-level page handling code, in particular from free_huge_page().\nThis is a layering violation of itself, but more importantly, if the\nkernel does a get_user_pages() on hugepages (which can happen from KVM\namongst others), then the free_huge_page() can be delayed until after the\nassociated inode has already been freed.  If an unmount occurs at the\nwrong time, even the hugetlbfs superblock where the \"quota\" limits are\nstored may have been freed.\n\nAndrew Barry proposed a patch to fix this by having hugepages, instead of\nstoring a pointer to their address_space and reaching the superblock from\nthere, had the hugepages store pointers directly to the superblock,\nbumping the reference count as appropriate to avoid it being freed.\nAndrew Morton rejected that version, however, on the grounds that it made\nthe existing layering violation worse.\n\nThis is a reworked version of Andrew\u0027s patch, which removes the extra, and\nsome of the existing, layering violation.  It works by introducing the\nconcept of a hugepage \"subpool\" at the lower hugepage mm layer - that is a\nfinite logical pool of hugepages to allocate from.  hugetlbfs now creates\na subpool for each filesystem instance with a page limit set, and a\npointer to the subpool gets added to each allocated hugepage, instead of\nthe address_space pointer used now.  The subpool has its own lifetime and\nis only freed once all pages in it _and_ all other references to it (i.e.\nsuperblocks) are gone.\n\nsubpools are optional - a NULL subpool pointer is taken by the code to\nmean that no subpool limits are in effect.\n\nPrevious discussion of this bug found in:  \"Fix refcounting in hugetlbfs\nquota handling.\". See:  https://lkml.org/lkml/2011/8/11/28 or\nhttp://marc.info/?l\u003dlinux-mm\u0026m\u003d126928970510627\u0026w\u003d1\n\nv2: Fixed a bug spotted by Hillf Danton, and removed the extra parameter to\nalloc_huge_page() - since it already takes the vma, it is not necessary.\n\nSigned-off-by: Andrew Barry \u003cabarry@cray.com\u003e\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef6942224a185c9e434f6cfe69fe434e732f5b38",
      "tree": "e26664dbfd6077129d75f555757d36b5fbec43c2",
      "parents": [
        "cc9a6c8776615f9c194ccf0b63a0aa5628235545"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "ksm: cleanup: introduce find_mergeable_vma()\n\nThere are multiple places which perform the same check.  Add a new\nfind_mergeable_vma() to handle this.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Andrea Arcangeli \u003caarcange@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": "cc9a6c8776615f9c194ccf0b63a0aa5628235545",
      "tree": "0cbbf118e86541f8eb2fc7b717a0e08eaced986d",
      "parents": [
        "e845e199362cc5712ba0e7eedc14eed70e144258"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Mar 21 16:34:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "cpuset: mm: reduce large amounts of memory barrier related damage v3\n\nCommit c0ff7453bb5c (\"cpuset,mm: fix no node to alloc memory when\nchanging cpuset\u0027s mems\") wins a super prize for the largest number of\nmemory barriers entered into fast paths for one commit.\n\n[get|put]_mems_allowed is incredibly heavy with pairs of full memory\nbarriers inserted into a number of hot paths.  This was detected while\ninvestigating at large page allocator slowdown introduced some time\nafter 2.6.32.  The largest portion of this overhead was shown by\noprofile to be at an mfence introduced by this commit into the page\nallocator hot path.\n\nFor extra style points, the commit introduced the use of yield() in an\nimplementation of what looks like a spinning mutex.\n\nThis patch replaces the full memory barriers on both read and write\nsides with a sequence counter with just read barriers on the fast path\nside.  This is much cheaper on some architectures, including x86.  The\nmain bulk of the patch is the retry logic if the nodemask changes in a\nmanner that can cause a false failure.\n\nWhile updating the nodemask, a check is made to see if a false failure\nis a risk.  If it is, the sequence number gets bumped and parallel\nallocators will briefly stall while the nodemask update takes place.\n\nIn a page fault test microbenchmark, oprofile samples from\n__alloc_pages_nodemask went from 4.53% of all samples to 1.15%.  The\nactual results were\n\n                             3.3.0-rc3          3.3.0-rc3\n                             rc3-vanilla        nobarrier-v2r1\n    Clients   1 UserTime       0.07 (  0.00%)   0.08 (-14.19%)\n    Clients   2 UserTime       0.07 (  0.00%)   0.07 (  2.72%)\n    Clients   4 UserTime       0.08 (  0.00%)   0.07 (  3.29%)\n    Clients   1 SysTime        0.70 (  0.00%)   0.65 (  6.65%)\n    Clients   2 SysTime        0.85 (  0.00%)   0.82 (  3.65%)\n    Clients   4 SysTime        1.41 (  0.00%)   1.41 (  0.32%)\n    Clients   1 WallTime       0.77 (  0.00%)   0.74 (  4.19%)\n    Clients   2 WallTime       0.47 (  0.00%)   0.45 (  3.73%)\n    Clients   4 WallTime       0.38 (  0.00%)   0.37 (  1.58%)\n    Clients   1 Flt/sec/cpu  497620.28 (  0.00%) 520294.53 (  4.56%)\n    Clients   2 Flt/sec/cpu  414639.05 (  0.00%) 429882.01 (  3.68%)\n    Clients   4 Flt/sec/cpu  257959.16 (  0.00%) 258761.48 (  0.31%)\n    Clients   1 Flt/sec      495161.39 (  0.00%) 517292.87 (  4.47%)\n    Clients   2 Flt/sec      820325.95 (  0.00%) 850289.77 (  3.65%)\n    Clients   4 Flt/sec      1020068.93 (  0.00%) 1022674.06 (  0.26%)\n    MMTests Statistics: duration\n    Sys Time Running Test (seconds)             135.68    132.17\n    User+Sys Time Running Test (seconds)         164.2    160.13\n    Total Elapsed Time (seconds)                123.46    120.87\n\nThe overall improvement is small but the System CPU time is much\nimproved and roughly in correlation to what oprofile reported (these\nperformance figures are without profiling so skew is expected).  The\nactual number of page faults is noticeably improved.\n\nFor benchmarks like kernel builds, the overall benefit is marginal but\nthe system CPU time is slightly reduced.\n\nTo test the actual bug the commit fixed I opened two terminals.  The\nfirst ran within a cpuset and continually ran a small program that\nfaulted 100M of anonymous data.  In a second window, the nodemask of the\ncpuset was continually randomised in a loop.\n\nWithout the commit, the program would fail every so often (usually\nwithin 10 seconds) and obviously with the commit everything worked fine.\nWith this patch applied, it also worked fine so the fix should be\nfunctionally equivalent.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: 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": "e845e199362cc5712ba0e7eedc14eed70e144258",
      "tree": "3968125d82e512c3aee44ed96694fdd58b863506",
      "parents": [
        "c7cfa37b7324a190fc36ff116d79d0f899e8d273"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm, memcg: pass charge order to oom killer\n\nThe oom killer typically displays the allocation order at the time of oom\nas a part of its diangostic messages (for global, cpuset, and mempolicy\nooms).\n\nThe memory controller may also pass the charge order to the oom killer so\nit can emit the same information.  This is useful in determining how large\nthe memory allocation is that triggered the oom killer.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nAcked-by: 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": "c7cfa37b7324a190fc36ff116d79d0f899e8d273",
      "tree": "391cf185d299ee0aa892fa59be8910d6f3531356",
      "parents": [
        "9a3c531df9462df6cc2b060f749651723ffc180c"
      ],
      "author": {
        "name": "Copot Alexandru",
        "email": "alex.mihai.c@gmail.com",
        "time": "Wed Mar 21 16:34:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:59 2012 -0700"
      },
      "message": "mm/vmscan.c: fix spelling error\n\ns/noticable/noticeable/\n\nSigned-off-by: Copot Alexandru \u003calex.mihai.c@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": "9a3c531df9462df6cc2b060f749651723ffc180c",
      "tree": "448ad57ef6ea3b462849ea1bdd4732e0296e1f4f",
      "parents": [
        "47a133339c332f9f8e155c70f5da401aded69948"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Mar 21 16:34:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: update stale lock ordering comment for memory-failure.c\n\nWhen i_mmap_lock changed to a mutex the locking order in memory failure\nwas changed to take the sleeping lock first.  But the big fat mm lock\nordering comment (BFMLO) wasn\u0027t updated.  Do this here.\n\nPointed out by Andrew.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47a133339c332f9f8e155c70f5da401aded69948",
      "tree": "94f8fb512ebe8e29d0a3f11a04b04004afd4ab59",
      "parents": [
        "1010bb1b80edb0713415dfe1f97114d320f58c4f"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Mar 21 16:34:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: use global_dirty_limit in throttle_vm_writeout()\n\nWhen starting a memory hog task, a desktop box w/o swap is found to go\nunresponsive for a long time.  It\u0027s solely caused by lots of congestion\nwaits in throttle_vm_writeout():\n\n gnome-system-mo-4201 553.073384: congestion_wait: throttle_vm_writeout+0x70/0x7f shrink_mem_cgroup_zone+0x48f/0x4a1\n gnome-system-mo-4201 553.073386: writeback_congestion_wait: usec_timeout\u003d100000 usec_delayed\u003d100000\n           gtali-4237 553.080377: congestion_wait: throttle_vm_writeout+0x70/0x7f shrink_mem_cgroup_zone+0x48f/0x4a1\n           gtali-4237 553.080378: writeback_congestion_wait: usec_timeout\u003d100000 usec_delayed\u003d100000\n            Xorg-3483 553.103375: congestion_wait: throttle_vm_writeout+0x70/0x7f shrink_mem_cgroup_zone+0x48f/0x4a1\n            Xorg-3483 553.103377: writeback_congestion_wait: usec_timeout\u003d100000 usec_delayed\u003d100000\n\nThe root cause is, the dirty threshold is knocked down a lot by the memory\nhog task.  Fixed by using global_dirty_limit which decreases gradually on\nsuch events and can guarantee we stay above (the also decreasing) nr_dirty\nin the progress of following down to the new dirty threshold.\n\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\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": "1010bb1b80edb0713415dfe1f97114d320f58c4f",
      "tree": "70aeaba13b61aa442e0c48c99a1035e204910982",
      "parents": [
        "a05b0855fd15504972dba2358e5faa172a1e50ba"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Mar 21 16:34:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: don\u0027t set __GFP_WRITE on ramfs/sysfs writes\n\nThere is not much point in skipping zones during allocation based on the\ndirty usage which they\u0027ll never contribute to.  And we\u0027d like to avoid\npage reclaim waits when writing to ramfs/sysfs etc.\n\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f5bf18fa22f8c41a13eb8762c7373eb3a93a7333",
      "tree": "3da24eb0edae3563c1937088b72a413e7026fdec",
      "parents": [
        "f0cb3c76ae1ced85f9034480b1b24cd96530ec78"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@linux.vnet.ibm.com",
        "time": "Wed Mar 21 16:34:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "bootmem/sparsemem: remove limit constraint in alloc_bootmem_section\n\nWhile testing AMS (Active Memory Sharing) / CMO (Cooperative Memory\nOvercommit) on powerpc, we tripped the following:\n\n  kernel BUG at mm/bootmem.c:483!\n  cpu 0x0: Vector: 700 (Program Check) at [c000000000c03940]\n      pc: c000000000a62bd8: .alloc_bootmem_core+0x90/0x39c\n      lr: c000000000a64bcc: .sparse_early_usemaps_alloc_node+0x84/0x29c\n      sp: c000000000c03bc0\n     msr: 8000000000021032\n    current \u003d 0xc000000000b0cce0\n    paca    \u003d 0xc000000001d80000\n      pid   \u003d 0, comm \u003d swapper\n  kernel BUG at mm/bootmem.c:483!\n  enter ? for help\n  [c000000000c03c80] c000000000a64bcc\n  .sparse_early_usemaps_alloc_node+0x84/0x29c\n  [c000000000c03d50] c000000000a64f10 .sparse_init+0x12c/0x28c\n  [c000000000c03e20] c000000000a474f4 .setup_arch+0x20c/0x294\n  [c000000000c03ee0] c000000000a4079c .start_kernel+0xb4/0x460\n  [c000000000c03f90] c000000000009670 .start_here_common+0x1c/0x2c\n\nThis is\n\n        BUG_ON(limit \u0026\u0026 goal + size \u003e limit);\n\nand after some debugging, it seems that\n\n\tgoal \u003d 0x7ffff000000\n\tlimit \u003d 0x80000000000\n\nand sparse_early_usemaps_alloc_node -\u003e\nsparse_early_usemaps_alloc_pgdat_section calls\n\n\treturn alloc_bootmem_section(usemap_size() * count, section_nr);\n\nThis is on a system with 8TB available via the AMS pool, and as a quirk\nof AMS in firmware, all of that memory shows up in node 0.  So, we end\nup with an allocation that will fail the goal/limit constraints.\n\nIn theory, we could \"fall-back\" to alloc_bootmem_node() in\nsparse_early_usemaps_alloc_node(), but since we actually have HOTREMOVE\ndefined, we\u0027ll BUG_ON() instead.  A simple solution appears to be to\nunconditionally remove the limit condition in alloc_bootmem_section,\nmeaning allocations are allowed to cross section boundaries (necessary\nfor systems of this size).\n\nJohannes Weiner pointed out that if alloc_bootmem_section() no longer\nguarantees section-locality, we need check_usemap_section_nr() to print\npossible cross-dependencies between node descriptors and the usemaps\nallocated through it.  That makes the two loops in\nsparse_early_usemaps_alloc_node() identical, so re-factor the code a\nbit.\n\n[akpm@linux-foundation.org: code simplification]\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Anton Blanchard \u003canton@au1.ibm.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ben Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Robert Jennings \u003crcj@linux.vnet.ibm.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[3.3.1]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0cb3c76ae1ced85f9034480b1b24cd96530ec78",
      "tree": "997ae67621f76b3b6bf588604f85738a8c97cbef",
      "parents": [
        "3268c63eded4612a3d07b56d1e02ce7731e6608e"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:34:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: drain percpu lru add/rotate page-vectors on cpu hot-unplug\n\nThis cpu hotplug hook was accidentally removed in commit 00a62ce91e55\n(\"mm: fix Committed_AS underflow on large NR_CPUS environment\")\n\nThe visible effect of this accident: some pages are borrowed in per-cpu\npage-vectors.  Truncate can deal with it, but these pages cannot be\nreused while this cpu is offline.  So this is like a temporary memory\nleak.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@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": "3268c63eded4612a3d07b56d1e02ce7731e6608e",
      "tree": "c8a07eb4cdf2697d610bb86d23eb46b0a5f892c2",
      "parents": [
        "385de35722c9a22917e7bc5e63cd83a8cffa5ecd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Wed Mar 21 16:34:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm: fix move/migrate_pages() race on task struct\n\nMigration functions perform the rcu_read_unlock too early.  As a result\nthe task pointed to may change from under us.  This can result in an oops,\nas reported by Dave Hansen in https://lkml.org/lkml/2012/2/23/302.\n\nThe following patch extend the period of the rcu_read_lock until after the\npermissions checks are done.  We also take a refcount so that the task\nreference is stable when calling security check functions and performing\ncpuset node validation (which takes a mutex).\n\nThe refcount is dropped before actual page migration occurs so there is no\nchange to the refcounts held during page migration.\n\nAlso move the determination of the mm of the task struct to immediately\nbefore the do_migrate*() calls so that it is clear that we switch from\nhandling the task during permission checks to the mm for the actual\nmigration.  Since the determination is only done once and we then no\nlonger use the task_struct we can be sure that we operate on a specific\naddress space that will not change from under us.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nReported-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "385de35722c9a22917e7bc5e63cd83a8cffa5ecd",
      "tree": "41ae2e23e096d189cdf614cf1eaf0c8f9ddeeb3b",
      "parents": [
        "6d9d88d07e132259c35f9493b15429e19198489c"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dnelson@redhat.com",
        "time": "Wed Mar 21 16:34:05 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "thp: allow a hwpoisoned head page to be put back to LRU\n\nAndrea Arcangeli pointed out to me that a check in __memory_failure()\nwhich was intended to prevent THP tail pages from being checked for the\nabsence of the PG_lru flag (something that is always the case), was also\npreventing THP head pages from being checked.\n\nA THP head page could actually benefit from the call to shake_page() by\nending up being put back to a LRU, provided it had been waiting in a\npagevec array.\n\nAndrea suggested that the \"!PageTransCompound(p)\" in the if-statement\nshould be replaced by a \"!PageTransTail(p)\", thus allowing THP head pages\nto be checked and possibly shaken.\n\nSigned-off-by: Dean Nelson \u003cdnelson@redhat.com\u003e\nCc: Jin Dongming \u003cjin.dongming@np.css.fujitsu.com\u003e\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Hidetoshi Seto \u003cseto.hidetoshi@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": "6d9d88d07e132259c35f9493b15429e19198489c",
      "tree": "96f880fd4f2a07de312f0db576c2484ab5d09457",
      "parents": [
        "08ab9b10d43aca091fdff58b69fc1ec89c5b8a83"
      ],
      "author": {
        "name": "Jarkko Sakkinen",
        "email": "jarkko.sakkinen@intel.com",
        "time": "Wed Mar 21 16:34:05 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "tmpfs: security xattr setting on inode creation\n\nAdds to generic xattr support introduced in Linux 3.0 by implementing\ninitxattrs callback.  This enables consulting of security attributes from\nLSM and EVM when inode is created.\n\n[hughd@google.com: moved under CONFIG_TMPFS_XATTR, with memcpy in shmem_xattr_alloc]\nSigned-off-by: Jarkko Sakkinen \u003cjarkko.sakkinen@intel.com\u003e\nReviewed-by: James Morris \u003cjames.l.morris@oracle.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08ab9b10d43aca091fdff58b69fc1ec89c5b8a83",
      "tree": "73abfd3a257f3feadc0fa28c3117aaa9d95af596",
      "parents": [
        "b76437579d1344b612cf1851ae610c636cec7db0"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Mar 21 16:34:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "mm, oom: force oom kill on sysrq+f\n\nThe oom killer chooses not to kill a thread if:\n\n - an eligible thread has already been oom killed and has yet to exit,\n   and\n\n - an eligible thread is exiting but has yet to free all its memory and\n   is not the thread attempting to currently allocate memory.\n\nSysRq+F manually invokes the global oom killer to kill a memory-hogging\ntask.  This is normally done as a last resort to free memory when no\nprogress is being made or to test the oom killer itself.\n\nFor both uses, we always want to kill a thread and never defer.  This\npatch causes SysRq+F to always kill an eligible thread and can be used to\nforce a kill even if another oom killed thread has failed to exit.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nAcked-by: 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": "b76437579d1344b612cf1851ae610c636cec7db0",
      "tree": "37c31c957f1159635258168e27e49b90347e37aa",
      "parents": [
        "9e81130b7ce23050335b1197bb51743517b5b9d0"
      ],
      "author": {
        "name": "Siddhesh Poyarekar",
        "email": "siddhesh.poyarekar@gmail.com",
        "time": "Wed Mar 21 16:34:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:58 2012 -0700"
      },
      "message": "procfs: mark thread stack correctly in proc/\u003cpid\u003e/maps\n\nStack for a new thread is mapped by userspace code and passed via\nsys_clone.  This memory is currently seen as anonymous in\n/proc/\u003cpid\u003e/maps, which makes it difficult to ascertain which mappings\nare being used for thread stacks.  This patch uses the individual task\nstack pointers to determine which vmas are actually thread stacks.\n\nFor a multithreaded program like the following:\n\n\t#include \u003cpthread.h\u003e\n\n\tvoid *thread_main(void *foo)\n\t{\n\t\twhile(1);\n\t}\n\n\tint main()\n\t{\n\t\tpthread_t t;\n\t\tpthread_create(\u0026t, NULL, thread_main, NULL);\n\t\tpthread_join(t, NULL);\n\t}\n\nproc/PID/maps looks like the following:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nHere, one could guess that 7f8a44492000-7f8a44c92000 is a stack since\nthe earlier vma that has no permissions (7f8a44e3d000-7f8a4503d000) but\nthat is not always a reliable way to find out which vma is a thread\nstack.  Also, /proc/PID/maps and /proc/PID/task/TID/maps has the same\ncontent.\n\nWith this patch in place, /proc/PID/task/TID/maps are treated as \u0027maps\nas the task would see it\u0027 and hence, only the vma that that task uses as\nstack is marked as [stack].  All other \u0027stack\u0027 vmas are marked as\nanonymous memory.  /proc/PID/maps acts as a thread group level view,\nwhere all thread stack vmas are marked as [stack:TID] where TID is the\nprocess ID of the task that uses that vma as stack, while the process\nstack is marked as [stack].\n\nSo /proc/PID/maps will look like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nThus marking all vmas that are used as stacks by the threads in the\nthread group along with the process stack.  The task level maps will\nhowever like this:\n\n    00400000-00401000 r-xp 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    00600000-00601000 rw-p 00000000 fd:0a 3671804                            /home/siddhesh/a.out\n    019ef000-01a10000 rw-p 00000000 00:00 0                                  [heap]\n    7f8a44491000-7f8a44492000 ---p 00000000 00:00 0\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    7f8a44c92000-7f8a44e3d000 r-xp 00000000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a44e3d000-7f8a4503d000 ---p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a4503d000-7f8a45041000 r--p 001ab000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45041000-7f8a45043000 rw-p 001af000 fd:00 2097482                    /lib64/libc-2.14.90.so\n    7f8a45043000-7f8a45048000 rw-p 00000000 00:00 0\n    7f8a45048000-7f8a4505f000 r-xp 00000000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4505f000-7f8a4525e000 ---p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525e000-7f8a4525f000 r--p 00016000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a4525f000-7f8a45260000 rw-p 00017000 fd:00 2099938                    /lib64/libpthread-2.14.90.so\n    7f8a45260000-7f8a45264000 rw-p 00000000 00:00 0\n    7f8a45264000-7f8a45286000 r-xp 00000000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45457000-7f8a4545a000 rw-p 00000000 00:00 0\n    7f8a45484000-7f8a45485000 rw-p 00000000 00:00 0\n    7f8a45485000-7f8a45486000 r--p 00021000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45486000-7f8a45487000 rw-p 00022000 fd:00 2097348                    /lib64/ld-2.14.90.so\n    7f8a45487000-7f8a45488000 rw-p 00000000 00:00 0\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0\n    7fff627ff000-7fff62800000 r-xp 00000000 00:00 0                          [vdso]\n    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]\n\nwhere only the vma that is being used as a stack by *that* task is\nmarked as [stack].\n\nAnalogous changes have been made to /proc/PID/smaps,\n/proc/PID/numa_maps, /proc/PID/task/TID/smaps and\n/proc/PID/task/TID/numa_maps. Relevant snippets from smaps and\nnuma_maps:\n\n    [siddhesh@localhost ~ ]$ pgrep a.out\n    1441\n    [siddhesh@localhost ~ ]$ cat /proc/1441/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack:1442]\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/smaps | grep \"\\[stack\"\n    7f8a44492000-7f8a44c92000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/smaps | grep \"\\[stack\"\n    7fff6273b000-7fff6275c000 rw-p 00000000 00:00 0                          [stack]\n    [siddhesh@localhost ~ ]$ cat /proc/1441/numa_maps | grep \"stack\"\n    7f8a44492000 default stack:1442 anon\u003d2 dirty\u003d2 N0\u003d2\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1442/numa_maps | grep \"stack\"\n    7f8a44492000 default stack anon\u003d2 dirty\u003d2 N0\u003d2\n    [siddhesh@localhost ~ ]$ cat /proc/1441/task/1441/numa_maps | grep \"stack\"\n    7fff6273a000 default stack anon\u003d3 dirty\u003d3 N0\u003d3\n\n[akpm@linux-foundation.org: checkpatch fixes]\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Siddhesh Poyarekar \u003csiddhesh.poyarekar@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jamie Lokier \u003cjamie@shareable.org\u003e\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "9e81130b7ce23050335b1197bb51743517b5b9d0",
      "tree": "6a359131ad2c36ca9e50f0c96a17ef755ad7e168",
      "parents": [
        "fcf4d8212a8f38334679e82ff14532b908b4b451"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:34:03 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "mm: hugetlb: bail out unmapping after serving reference page\n\nWhen unmapping a given VM range, we could bail out if a reference page is\nsupplied and is unmapped, which is a minor optimization.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d563c0501bf8702b9b683206c09b9defb37d8a8a",
      "tree": "ac3c870c1885337e340d807cd8b5dc0ad8eb0315",
      "parents": [
        "978ea78b65794ef07eb66b9946064dea66b52554"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:34:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "vmscan: handle isolated pages with lru lock released\n\nWhen shrinking inactive lru list, isolated pages are queued on locally\nprivate list, so the lock-hold time could be reduced if pages are counted\nwithout lock protection.\n\nTo achieve that, firstly updating reclaim stat is delayed until the\nputback stage, after reacquiring the lru lock.\n\nSecondly, operations related to vm and zone stats are now proteced with\npreemption disabled as they are per-cpu operations.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: 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": "6583a84304e5a6cb27ec2aace79ef9c4ba888d12",
      "tree": "48fbc25bafeeffb9527404b8a114aed8390aa5a6",
      "parents": [
        "28073b02bfaaed1e3278acfb8e6e7c9f76d9f2b6"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Wed Mar 21 16:34:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "rmap: anon_vma_prepare: Reduce code duplication by calling anon_vma_chain_link\n\nReduce code duplication by calling anon_vma_chain_link() from\nanon_vma_prepare().\n\nAlso move anon_vmal_chain_link() to a more suitable location in the file.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nReviewed-by: KAMEZWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: David Rientjes \u003crientjes@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": "28073b02bfaaed1e3278acfb8e6e7c9f76d9f2b6",
      "tree": "54ab2952e2bee85780438a011cf5c1f198ff3dd9",
      "parents": [
        "cc715d99e529d470dde2f33a6614f255adea71f3"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Wed Mar 21 16:34:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "mm: hugetlb: defer freeing pages when gathering surplus pages\n\nWhen gathering surplus pages, the number of needed pages is recomputed\nafter reacquiring hugetlb lock to catch changes in resv_huge_pages and\nfree_huge_pages.  Plus it is recomputed with the number of newly allocated\npages involved.\n\nThus freeing pages can be deferred a bit to see if the final page request\nis satisfied, though pages could be allocated less than needed.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@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": "cc715d99e529d470dde2f33a6614f255adea71f3",
      "tree": "f8e8aefb8416aed6747e9b5c071e9575484aa912",
      "parents": [
        "ce1744f4ed20ca873360e54502f8a71564ef7cc6"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Wed Mar 21 16:34:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "mm: vmscan: forcibly scan highmem if there are too many buffer_heads pinning highmem\n\nStuart Foster reported on bugzilla that copying large amounts of data\nfrom NTFS caused an OOM kill on 32-bit X86 with 16G of memory.  Andrew\nMorton correctly identified that the problem was NTFS was using 512\nblocks meaning each page had 8 buffer_heads in low memory pinning it.\n\nIn the past, direct reclaim used to scan highmem even if the allocating\nprocess did not specify __GFP_HIGHMEM but not any more.  kswapd no longer\nwill reclaim from zones that are above the high watermark.  The intention\nin both cases was to minimise unnecessary reclaim.  The downside is on\nmachines with large amounts of highmem that lowmem can be fully consumed\nby buffer_heads with nothing trying to free them.\n\nThe following patch is based on a suggestion by Andrew Morton to extend\nthe buffer_heads_over_limit case to force kswapd and direct reclaim to\nscan the highmem zone regardless of the allocation request or watermarks.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d42578\n\n[hughd@google.com: move buffer_heads_over_limit check up]\n[akpm@linux-foundation.org: buffer_heads_over_limit is unlikely]\nReported-by: Stuart Foster \u003csmf.linux@ntlworld.com\u003e\nTested-by: Stuart Foster \u003csmf.linux@ntlworld.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: stable \u003cstable@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": "ce1744f4ed20ca873360e54502f8a71564ef7cc6",
      "tree": "ec26dbc6a5417c75a8fa65ab093374d3e0045032",
      "parents": [
        "092b50bacd1cdbffef2643b7a46f2a215407919c"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Wed Mar 21 16:33:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "mm: replace PAGE_MIGRATION with IS_ENABLED(CONFIG_MIGRATION)\n\nSince commit 2a11c8ea20bf (\"kconfig: Introduce IS_ENABLED(),\nIS_BUILTIN() and IS_MODULE()\") there is a generic grep-friendly method\nfor checking config options in C expressions.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "025c5b2451e42c9e8dfdecd6dc84956ce8f321b5",
      "tree": "423b4ef1a0ce021360304a80f6e0ba902581a3ad",
      "parents": [
        "5aaabe831eb527e0d9284f0745d830a755f70393"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Wed Mar 21 16:33:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:57 2012 -0700"
      },
      "message": "thp: optimize away unnecessary page table locking\n\nCurrently when we check if we can handle thp as it is or we need to split\nit into regular sized pages, we hold page table lock prior to check\nwhether a given pmd is mapping thp or not.  Because of this, when it\u0027s not\n\"huge pmd\" we suffer from unnecessary lock/unlock overhead.  To remove it,\nthis patch introduces a optimized check function and replace several\nsimilar logics with it.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Jiri Slaby \u003cjslaby@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": "b716ad953a2bc4a543143c1d9836b7007a4b182f",
      "tree": "99791c6c857b1ff7b922eaa0163ec3c912549009",
      "parents": [
        "f44d21985eb6af7361d3785e26923355172147bd"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@linux.vnet.ibm.com",
        "time": "Wed Mar 21 16:33:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "mm: search from free_area_cache for the bigger size\n\nIf the required size is bigger than cached_hole_size it is better to\nsearch from free_area_cache - it is easier to get a free region,\nspecifically for the 64 bit process whose address space is large enough\n\nDo it just as hugetlb_get_unmapped_area_topdown() in arch/x86/mm/hugetlbpage.c\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: 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": "f44d21985eb6af7361d3785e26923355172147bd",
      "tree": "1ced398274730cee6cd9173696e6fe08e52c6e91",
      "parents": [
        "cbde83e21c4fd50bfc4240408355c1e5d393063d"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@linux.vnet.ibm.com",
        "time": "Wed Mar 21 16:33:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "mm: do not reset cached_hole_size when vma is unmapped\n\nIn the current code, cached_hole_size is set to the maximum value if the\nunmapped vma is less that free_area_cache so the next search will search\nfrom the base address.\n\nActually, we can keep cached_hole_size so that if the next required size\nis more than cached_hole_size, it can search from free_area_cache.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@linux.vnet.ibm.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: 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": "aad6ec3777bf4930d4f7293745cc4c17a2d87947",
      "tree": "9a2d141e3361e621d5d6f624d4f1b1e075dc9e7d",
      "parents": [
        "8575ec29f61da83a2bf382c8c490499dc022101e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Mar 21 16:33:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "mm: compaction: make compact_control order signed\n\n\"order\" is -1 when compacting via /proc/sys/vm/compact_memory.  Making\nit unsigned causes a bug in __compact_pgdat() when we test:\n\n\tif (cc-\u003eorder \u003c 0 || !compaction_deferred(zone, cc-\u003eorder))\n\t\tcompact_zone(zone, cc);\n\n[akpm@linux-foundation.org: make __compact_pgdat()\u0027s comparison match other code sites]\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@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": "8575ec29f61da83a2bf382c8c490499dc022101e",
      "tree": "bba641ceec47b52ce2a91bdf117aed01d476ea9f",
      "parents": [
        "aff622495c9a0b56148192e53bdec539f5e147f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Mar 21 16:33:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 17:54:56 2012 -0700"
      },
      "message": "compact_pgdat: workaround lockdep warning in kswapd\n\nI get this lockdep warning from swapping load on linux-next, due to\n\"vmscan: kswapd carefully call compaction\".\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: inconsistent lock state ]\n3.3.0-rc2-next-20120201 #5 Not tainted\n---------------------------------\ninconsistent {RECLAIM_FS-ON-W} -\u003e {IN-RECLAIM_FS-W} usage.\nkswapd0/28 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (pcpu_alloc_mutex){+.+.?.}, at: [\u003cffffffff810d6684\u003e] pcpu_alloc+0x67/0x325\n{RECLAIM_FS-ON-W} state was registered at:\n  [\u003cffffffff81099b75\u003e] mark_held_locks+0xd7/0x103\n  [\u003cffffffff8109a13c\u003e] lockdep_trace_alloc+0x85/0x9e\n  [\u003cffffffff810f6bdc\u003e] __kmalloc+0x6c/0x14b\n  [\u003cffffffff810d57fd\u003e] pcpu_mem_zalloc+0x59/0x62\n  [\u003cffffffff810d5d16\u003e] pcpu_extend_area_map+0x26/0xb1\n  [\u003cffffffff810d679f\u003e] pcpu_alloc+0x182/0x325\n  [\u003cffffffff810d694d\u003e] __alloc_percpu+0xb/0xd\n  [\u003cffffffff8142ebfd\u003e] snmp_mib_init+0x1e/0x2e\n  [\u003cffffffff8185cd8d\u003e] ipv4_mib_init_net+0x7a/0x184\n  [\u003cffffffff813dc963\u003e] ops_init.clone.0+0x6b/0x73\n  [\u003cffffffff813dc9cc\u003e] register_pernet_operations+0x61/0xa0\n  [\u003cffffffff813dca8e\u003e] register_pernet_subsys+0x29/0x42\n  [\u003cffffffff8185d044\u003e] inet_init+0x1ad/0x252\n  [\u003cffffffff810002e3\u003e] do_one_initcall+0x7a/0x12f\n  [\u003cffffffff81832bc5\u003e] kernel_init+0x9d/0x11e\n  [\u003cffffffff814e51e4\u003e] kernel_thread_helper+0x4/0x10\nirq event stamp: 656613\nhardirqs last  enabled at (656613): [\u003cffffffff814e0ddc\u003e] __mutex_unlock_slowpath+0x104/0x128\nhardirqs last disabled at (656612): [\u003cffffffff814e0d34\u003e] __mutex_unlock_slowpath+0x5c/0x128\nsoftirqs last  enabled at (655568): [\u003cffffffff8105b4a5\u003e] __do_softirq+0x120/0x136\nsoftirqs last disabled at (654757): [\u003cffffffff814e52dc\u003e] call_softirq+0x1c/0x30\n\nother info that might help us debug this:\n Possible unsafe locking scenario:\n\n       CPU0\n       ----\n  lock(pcpu_alloc_mutex);\n  \u003cInterrupt\u003e\n    lock(pcpu_alloc_mutex);\n\n *** DEADLOCK ***\n\nno locks held by kswapd0/28.\n\nstack backtrace:\nPid: 28, comm: kswapd0 Not tainted 3.3.0-rc2-next-20120201 #5\nCall Trace:\n [\u003cffffffff810981f4\u003e] print_usage_bug+0x1bf/0x1d0\n [\u003cffffffff81096c3e\u003e] ? print_irq_inversion_bug+0x1d9/0x1d9\n [\u003cffffffff810982c0\u003e] mark_lock_irq+0xbb/0x22e\n [\u003cffffffff810c5399\u003e] ? free_hot_cold_page+0x13d/0x14f\n [\u003cffffffff81098684\u003e] mark_lock+0x251/0x331\n [\u003cffffffff81098893\u003e] mark_irqflags+0x12f/0x141\n [\u003cffffffff81098e32\u003e] __lock_acquire+0x58d/0x753\n [\u003cffffffff810d6684\u003e] ? pcpu_alloc+0x67/0x325\n [\u003cffffffff81099433\u003e] lock_acquire+0x54/0x6a\n [\u003cffffffff810d6684\u003e] ? pcpu_alloc+0x67/0x325\n [\u003cffffffff8107a5b8\u003e] ? add_preempt_count+0xa9/0xae\n [\u003cffffffff814e0a21\u003e] mutex_lock_nested+0x5e/0x315\n [\u003cffffffff810d6684\u003e] ? pcpu_alloc+0x67/0x325\n [\u003cffffffff81098f81\u003e] ? __lock_acquire+0x6dc/0x753\n [\u003cffffffff810c9fb0\u003e] ? __pagevec_release+0x2c/0x2c\n [\u003cffffffff810d6684\u003e] pcpu_alloc+0x67/0x325\n [\u003cffffffff810c9fb0\u003e] ? __pagevec_release+0x2c/0x2c\n [\u003cffffffff810d694d\u003e] __alloc_percpu+0xb/0xd\n [\u003cffffffff8106c35e\u003e] schedule_on_each_cpu+0x23/0x110\n [\u003cffffffff810c9fcb\u003e] lru_add_drain_all+0x10/0x12\n [\u003cffffffff810f126f\u003e] __compact_pgdat+0x20/0x182\n [\u003cffffffff810f15c2\u003e] compact_pgdat+0x27/0x29\n [\u003cffffffff810c306b\u003e] ? zone_watermark_ok+0x1a/0x1c\n [\u003cffffffff810cdf6f\u003e] balance_pgdat+0x732/0x751\n [\u003cffffffff810ce0ed\u003e] kswapd+0x15f/0x178\n [\u003cffffffff810cdf8e\u003e] ? balance_pgdat+0x751/0x751\n [\u003cffffffff8106fd11\u003e] kthread+0x84/0x8c\n [\u003cffffffff814e51e4\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff810787ed\u003e] ? finish_task_switch+0x85/0xea\n [\u003cffffffff814e3861\u003e] ? retint_restore_args+0xe/0xe\n [\u003cffffffff8106fc8d\u003e] ? __init_kthread_worker+0x56/0x56\n [\u003cffffffff814e51e0\u003e] ? gs_change+0xb/0xb\n\nThe RECLAIM_FS notations indicate that it\u0027s doing the GFP_FS checking that\nNick hacked into lockdep a while back: I think we\u0027re intended to read that\n\"\u003cInterrupt\u003e\" in the DEADLOCK scenario as \"\u003cDirect reclaim\u003e\".\n\nI\u0027m hazy, I have not reached any conclusion as to whether it\u0027s right to\ncomplain or not; but I believe it\u0027s uneasy about kswapd now doing the\nmutex_lock(\u0026pcpu_alloc_mutex) which lru_add_drain_all() entails.  Nor have\nI reached any conclusion as to whether it\u0027s important for kswapd to do\nthat draining or not.\n\nBut so as not to get blocked on this, with lockdep disabled from giving\nfurther reports, here\u0027s a patch which removes the lru_add_drain_all() from\nkswapd\u0027s callpath (and calls it only once from compact_nodes(), instead of\nonce per node).\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "aff622495c9a0b56148192e53bdec539f5e147f2"
}
