)]}'
{
  "log": [
    {
      "commit": "1e11ad8dc42975d5c2bab7d478f6cd875602eda4",
      "tree": "62e755edfd19ac45cc11b50311ad802907485ff7",
      "parents": [
        "72494504498ff5ac2f086a83473d4dd1ca490bd3"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Fri Jun 08 13:21:26 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 08 15:07:35 2012 -0700"
      },
      "message": "mm, oom: fix badness score underflow\n\nIf the privileges given to root threads (3% of allowable memory) or a\nnegative value of /proc/pid/oom_score_adj happen to exceed the amount of\nrss of a thread, its badness score overflows as a result of commit\na7f638f999ff (\"mm, oom: normalize oom scores to oom_score_adj scale only\nfor userspace\").\n\nFix this by making the type signed and return 1, meaning the thread is\nstill eligible for kill, if the value is negative.\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0142ef6cdca5f9784eb0762ac50fe378d98d71d4",
      "tree": "d8c3912d206c2d286d305df06440f0f1098437a6",
      "parents": [
        "71fae7e714749a52cb8be777ec014f82e8a747f4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jun 07 14:21:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 07 14:43:54 2012 -0700"
      },
      "message": "shmem: replace_page must flush_dcache and others\n\nCommit bde05d1ccd51 (\"shmem: replace page if mapping excludes its zone\")\nis not at all likely to break for anyone, but it was an earlier version\nfrom before review feedback was incorporated.  Fix that up now.\n\n* shmem_replace_page must flush_dcache_page after copy_highpage [akpm]\n* Expand comment on why shmem_unuse_inode needs page_swapcount [akpm]\n* Remove excess of VM_BUG_ONs from shmem_replace_page [wangcong]\n* Check page_private matches swap before calling shmem_replace_page [hughd]\n* shmem_replace_page allow for unexpected race in radix_tree lookup [hughd]\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Stephane Marchesin \u003cmarcheu@chromium.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Airlie \u003cairlied@gmail.com\u003e\nCc: Daniel Vetter \u003cdaniel@ffwll.ch\u003e\nCc: Rob Clark \u003crob.clark@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": "99becf1328d8d71dd6f4480e3591d7dcdb389e57",
      "tree": "064206d6d3305b6b366be136eafdd5c2b44799d9",
      "parents": [
        "bf2785a818372603ad3ca3abcab65010f08a1d68",
        "03240b279dbbda41f2fc55ff4424acf651e25bef",
        "ad1ed2937eaa30adf9996ef5f21e0c1895f906b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 15:09:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 15:09:08 2012 -0700"
      },
      "message": "Pull \u0027for-linus\u0027 branches of git://git.kernel.org/pub/scm/linux/kernel/git/viro/{signal,vfs}\n\nPull signal and vfs compile breakage fixes from Al Viro.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal:\n  fixups for signal breakage\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  nommu: fix compilation of nommu.c\n"
    },
    {
      "commit": "ad1ed2937eaa30adf9996ef5f21e0c1895f906b0",
      "tree": "3238627961c45144f3235fa39b2ac98561c61078",
      "parents": [
        "9171c670b4915e30360c2aed530b8377fbbcc852"
      ],
      "author": {
        "name": "Greg Ungerer",
        "email": "gerg@uclinux.org",
        "time": "Mon Jun 04 14:29:59 2012 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 04 17:17:31 2012 -0400"
      },
      "message": "nommu: fix compilation of nommu.c\n\nCompiling 3.5-rc1 for nommu targets gives:\n\n  CC      mm/nommu.o\nmm/nommu.c: In function ‘sys_mmap_pgoff’:\nmm/nommu.c:1489:2: error: ‘ret’ undeclared (first use in this function)\nmm/nommu.c:1489:2: note: each undeclared identifier is reported only once for each function it appears in\n\nIt is trivially fixed by replacing \u0027ret\u0027 with the local variable that is\nalready defined for the return value \u0027retval\u0027.\n\nSigned-off-by: Greg Ungerer \u003cgerg@uclinux.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a3fe778c7895cd847d23c25ad566d83346282a77",
      "tree": "53ba1b736dac08680a08753f7163a1890d7a0d03",
      "parents": [
        "9171c670b4915e30360c2aed530b8377fbbcc852",
        "165c8aed5bbc6bdddbccae0ba9db451732558ff9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 12:28:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 04 12:28:45 2012 -0700"
      },
      "message": "Merge tag \u0027stable/frontswap.v16-tag\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm\n\nPull frontswap feature from Konrad Rzeszutek Wilk:\n \"Frontswap provides a \"transcendent memory\" interface for swap pages.\n  In some environments, dramatic performance savings may be obtained\n  because swapped pages are saved in RAM (or a RAM-like device) instead\n  of a swap disk.  This tag provides the basic infrastructure along with\n  some changes to the existing backends.\"\n\nFix up trivial conflict in mm/Makefile due to removal of swap token code\nchanging a line next to the new frontswap entry.\n\nThis pull request came in before the merge window even opened, it got\ndelayed to after the merge window by me just wanting to make sure it had\nactual users.  Apparently IBM is using this on their embedded side, and\nJan Beulich says that it\u0027s already made available for SLES and OpenSUSE\nusers.\n\nAlso acked by Rik van Riel, and Konrad points to other people liking it\ntoo.  So in it goes.\n\nBy Dan Magenheimer (4) and Konrad Rzeszutek Wilk (2)\nvia Konrad Rzeszutek Wilk\n* tag \u0027stable/frontswap.v16-tag\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/mm:\n  frontswap: s/put_page/store/g s/get_page/load\n  MAINTAINER: Add myself for the frontswap API\n  mm: frontswap: config and doc files\n  mm: frontswap: core frontswap functionality\n  mm: frontswap: core swap subsystem hooks and headers\n  mm: frontswap: add frontswap header file\n"
    },
    {
      "commit": "68e3e92620c323703bc7db75c2ba15239ee85c39",
      "tree": "0a825d6f78e43d9ecc86429a99dcb40ed6628c25",
      "parents": [
        "752dc185dacba1edcba425e67fc6df3c7793a5c3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 03 20:05:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 03 20:05:57 2012 -0700"
      },
      "message": "Revert \"mm: compaction: handle incorrect MIGRATE_UNMOVABLE type pageblocks\"\n\nThis reverts commit 5ceb9ce6fe9462a298bb2cd5c9f1ca6cb80a0199.\n\nThat commit seems to be the cause of the mm compation list corruption\nissues that Dave Jones reported.  The locking (or rather, absense\nthere-of) is dubious, as is the use of the \u0027page\u0027 variable once it has\nbeen found to be outside the pageblock range.\n\nSo revert it for now, we can re-visit this for 3.6.  If we even need to:\nas Minchan Kim says, \"The patch wasn\u0027t a bug fix and even test workload\nwas very theoretical\".\n\nReported-and-tested-by: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cb.zolnierkie@samsung.com\u003e\nCc: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "752dc185dacba1edcba425e67fc6df3c7793a5c3",
      "tree": "a2e05a91cff7d1549ba5fcaa3f583339db3412f1",
      "parents": [
        "2f9d3df8aa1cc3c6db5cfa0bad3f0745e04cc27d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sat Jun 02 00:27:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 03 20:05:47 2012 -0700"
      },
      "message": "mm: fix warning in __set_page_dirty_nobuffers\n\nNew tmpfs use of !PageUptodate pages for fallocate() is triggering the\nWARNING: at mm/page-writeback.c:1990 when __set_page_dirty_nobuffers()\nis called from migrate_page_copy() for compaction.\n\nIt is anomalous that migration should use __set_page_dirty_nobuffers()\non an address_space that does not participate in dirty and writeback\naccounting; and this has also been observed to insert surprising dirty\ntags into a tmpfs radix_tree, despite tmpfs not using tags at all.\n\nWe should probably give migrate_page_copy() a better way to preserve the\ntag and migrate accounting info, when mapping_cap_account_dirty().  But\nthat needs some more work: so in the interim, avoid the warning by using\na simple SetPageDirty on PageSwapBacked pages.\n\nReported-and-tested-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af4f8ba31a4e328677bec493ceeaf112ca193b65",
      "tree": "d97a6dc3a8ddcd2bcebe124a4716e565a7868cdc",
      "parents": [
        "efff0471b0dd8b08ca3830b06a9083f6d6cef44e",
        "c03f94ccbd67fbcf546e5a9fcfeb99ef0aca4ada"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 16:50:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 16:50:23 2012 -0700"
      },
      "message": "Merge branch \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux\n\nPull slab updates from Pekka Enberg:\n \"Mainly a bunch of SLUB fixes from Joonsoo Kim\"\n\n* \u0027slab/for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:\n  slub: use __SetPageSlab function to set PG_slab flag\n  slub: fix a memory leak in get_partial_node()\n  slub: remove unused argument of init_kmem_cache_node()\n  slub: fix a possible memory leak\n  Documentations: Fix slabinfo.c directory in vm/slub.txt\n  slub: fix incorrect return type of get_any_partial()\n"
    },
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "c3b2da314834499f34cba94f7053e55f6d6f92d8",
      "tree": "7012b569ee9e0781761a8eb388190979441583c7",
      "parents": [
        "033369d1af1264abc23bea2e174aa47cdd212f6f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 09:59:21 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:07:25 2012 -0400"
      },
      "message": "fs: introduce inode operation -\u003eupdate_time\n\nBtrfs has to make sure we have space to allocate new blocks in order to modify\nthe inode, so updating time can fail.  We\u0027ve gotten around this by having our\nown file_update_time but this is kind of a pain, and Christoph has indicated he\nwould like to make xfs do something different with atime updates.  So introduce\n-\u003eupdate_time, where we will deal with i_version an a/m/c time updates and\nindicate which changes need to be made.  The normal version just does what it\nhas always done, updates the time and marks the inode dirty, and then\nfilesystems can choose to do something different.\n\nI\u0027ve gone through all of the users of file_update_time and made them check for\nerrors with the exception of the fault code since it\u0027s complicated and I wasn\u0027t\nquite sure what to do there, also Jan is going to be pushing the file time\nupdates into page_mkwrite for those who have it so that should satisfy btrfs and\nmake it not a big deal to check the file_update_time() return code in the\ngeneric fault path. Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "17d1587f553dbdc9a55fe253903437f7e3e3448e",
      "tree": "ad17a16509d7a098d32adc9d37802446d3e4fce6",
      "parents": [
        "eb36c5873b96e8c7376768d3906da74aae6e3839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:19:20 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:18 2012 -0400"
      },
      "message": "unexport do_munmap()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eb36c5873b96e8c7376768d3906da74aae6e3839",
      "tree": "01c5290ed4c55fea85e0dc3f8d70eeaab44678cf",
      "parents": [
        "dc982501d9643ab0c117e7d87562857ce234652d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:17:35 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:18 2012 -0400"
      },
      "message": "new helper: vm_mmap_pgoff()\n\ntake it to mm/util.c, convert vm_mmap() to use of that one and\ntake it to mm/util.c as well, convert both sys_mmap_pgoff() to\nuse of vm_mmap_pgoff()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dc982501d9643ab0c117e7d87562857ce234652d",
      "tree": "6783ecec372875f18f8050f97fbb86f72b8bb890",
      "parents": [
        "e3fc629d7bb70848fbf479688a66d4e76dff46ac"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:11:57 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:17 2012 -0400"
      },
      "message": "kill do_mmap() completely\n\njust pull into vm_mmap()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3fc629d7bb70848fbf479688a66d4e76dff46ac",
      "tree": "96b6d5ffdb1c643fb28807a635e6ca4e24964034",
      "parents": [
        "98de59bfe4b2ff6344d9ad8e5296f80de5dcc5b6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 20:08:42 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:17 2012 -0400"
      },
      "message": "switch aio and shm to do_mmap_pgoff(), make do_mmap() static\n\nafter all, 0 bytes and 0 pages is the same thing...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9ac4ed4bd0adec75db13a4b08a39a3918ec0e3c9",
      "tree": "23aba68ec121692cd6f0449535524b6586e8914f",
      "parents": [
        "8b3ec6814c83d76b85bd13badc48552836c24839"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 17:13:15 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:16 2012 -0400"
      },
      "message": "move security_mmap_addr() to saner place\n\nit really should be done by get_unmapped_area(); that cuts down on\nthe amount of callers considerably and it\u0027s the right place for\nthat stuff anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8b3ec6814c83d76b85bd13badc48552836c24839",
      "tree": "2430a4511c7ea41f67b0d841f4c42eac43828db3",
      "parents": [
        "e5467859f7f79b69fc49004403009dfdba3bec53"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 17:11:23 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 10:37:01 2012 -0400"
      },
      "message": "take security_mmap_file() outside of -\u003emmap_sem\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "08615d7d85e5aa02c05bf6c4dde87d940e7f85f6",
      "tree": "18906149d313d25914160aca21cedf54b3a7e818",
      "parents": [
        "9fdadb2cbaf4b482dfd6086e8bd3d2db071a1702",
        "0a4dd35c67b144d8ef9432120105f1aab9293ee9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n\n - the \"misc\" tree - stuff from all over the map\n\n - checkpatch updates\n\n - fatfs\n\n - kmod changes\n\n - procfs\n\n - cpumask\n\n - UML\n\n - kexec\n\n - mqueue\n\n - rapidio\n\n - pidns\n\n - some checkpoint-restore feature work.  Reluctantly.  Most of it\n   delayed a release.  I\u0027m still rather worried that we don\u0027t have a\n   clear roadmap to completion for this work.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (78 patches)\n  kconfig: update compression algorithm info\n  c/r: prctl: add ability to set new mm_struct::exe_file\n  c/r: prctl: extend PR_SET_MM to set up more mm_struct entries\n  c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat\n  syscalls, x86: add __NR_kcmp syscall\n  fs, proc: introduce /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry\n  sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE\n  aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n  eventfd: change int to __u64 in eventfd_signal()\n  fs/nls: add Apple NLS\n  pidns: make killed children autoreap\n  pidns: use task_active_pid_ns in do_notify_parent\n  rapidio/tsi721: add DMA engine support\n  rapidio: add DMA engine support for RIO data transfers\n  ipc/mqueue: add rbtree node caching support\n  tools/selftests: add mq_perf_tests\n  ipc/mqueue: strengthen checks on mqueue creation\n  ipc/mqueue: correct mq_attr_ok test\n  ipc/mqueue: improve performance of send/recv\n  selftests: add mq_open_tests\n  ...\n"
    },
    {
      "commit": "ac34ebb3a67e699edcb5ac72f19d31679369dfaa",
      "tree": "21785208005952128545c0d7804c2dddf177766f",
      "parents": [
        "ee62c6b2dc93c09585b51fad18449dc5edb9977f"
      ],
      "author": {
        "name": "Christopher Yeoh",
        "email": "cyeoh@au1.ibm.com",
        "time": "Thu May 31 16:26:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:32 2012 -0700"
      },
      "message": "aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n\nA cleanup of rw_copy_check_uvector and compat_rw_copy_check_uvector after\nchanges made to support CMA in an earlier patch.\n\nRather than having an additional check_access parameter to these\nfunctions, the first paramater type is overloaded to allow the caller to\nspecify CHECK_IOVEC_ONLY which means check that the contents of the iovec\nare valid, but do not check the memory that they point to.  This is used\nby process_vm_readv/writev where we need to validate that a iovec passed\nto the syscall is valid but do not want to check the memory that it points\nto at this point because it refers to an address space in another process.\n\nSigned-off-by: Chris Yeoh \u003cyeohc@au1.ibm.com\u003e\nReviewed-by: 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": "e5467859f7f79b69fc49004403009dfdba3bec53",
      "tree": "73b011daf79eeddd61bbcaf65cd197b5e5f6f149",
      "parents": [
        "d007794a182bc072a7b7479909dbd0d67ba341be"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 13:30:51 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 31 13:11:54 2012 -0400"
      },
      "message": "split -\u003efile_mmap() into -\u003emmap_addr()/-\u003emmap_file()\n\n... i.e. file-dependent and address-dependent checks.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf74d14c4fbce9bcc9eb62f52d721d3399a2b87f",
      "tree": "f436aaf0045039f015c0290cbbde5ab0e8d09c22",
      "parents": [
        "4ad310b836d5c61ac6e9b5fd7db12d0cd57136d7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 12:09:53 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 21:04:57 2012 -0400"
      },
      "message": "unexport do_mmap()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "63a81db13205f21047a0799adfd3a2419f190577",
      "tree": "cda25987d6e331cb026383f50e351bd9f5f66934",
      "parents": [
        "657bec850ff98b82b3a617b588a6523487344ccc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 11:32:04 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 21:04:57 2012 -0400"
      },
      "message": "merge do_mremap() into sys_mremap()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ed37648e1cbf1bbebc200c6ea8fd8daf8325843",
      "tree": "60f27fc77a1e5c9c48790243266367318a3267dc",
      "parents": [
        "8bdc81c5069e43755d6e59e5e990e21ca200e8e2"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue May 15 14:57:33 2012 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 30 21:04:52 2012 -0400"
      },
      "message": "fs: move file_remove_suid() to fs/inode.c\n\nfile_remove_suid() is a generic function operates on struct file,\nit almost has no relations with file mapping, so move it to fs/inode.c.\n\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4523e1458566a0e8ecfaff90f380dd23acc44d27",
      "tree": "57e7423e1ec4e4f07ce8643d455297648bc31cb0",
      "parents": [
        "731a7378b81c2f5fa88ca1ae20b83d548d5613dc"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Wed May 30 07:51:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 08:48:13 2012 -0700"
      },
      "message": "mm: fix vma_resv_map() NULL pointer\n\nhugetlb_reserve_pages() can be used for either normal file-backed\nhugetlbfs mappings, or MAP_HUGETLB.  In the MAP_HUGETLB, semi-anonymous\nmode, there is not a VMA around.  The new call to resv_map_put() assumed\nthat there was, and resulted in a NULL pointer dereference:\n\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000030\n  IP: vma_resv_map+0x9/0x30\n  PGD 141453067 PUD 1421e1067 PMD 0\n  Oops: 0000 [#1] PREEMPT SMP\n  ...\n  Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36\n  RIP: vma_resv_map+0x9/0x30\n  ...\n  Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0)\n  Call Trace:\n    resv_map_put+0xe/0x40\n    hugetlb_reserve_pages+0xa6/0x1d0\n    hugetlb_file_setup+0x102/0x2c0\n    newseg+0x115/0x360\n    ipcget+0x1ce/0x310\n    sys_shmget+0x5a/0x60\n    system_call_fastpath+0x16/0x1b\n\nThis was reported by Dave Jones, but was reproducible with the\nlibhugetlbfs test cases, so shame on me for not running them in the\nfirst place.\n\nWith this, the oops is gone, and the output of libhugetlbfs\u0027s\nrun_tests.py is identical to plain 3.4 again.\n\n[ Marked for stable, since this was introduced by commit c50ac050811d\n  (\"hugetlb: fix resv_map leak in error path\") which was also marked for\n  stable ]\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: \u003cstable@vger.kernel.org\u003e        [2.6.32+]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0b0382bb4904965a9e9fca77ad87514dfda0d1c",
      "tree": "dc46873fa74e0d194e4a2571b16f0767e1919ae8",
      "parents": [
        "6d42e7e9f6d86ed4dfacde75a6cf515068f9749c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 02 14:34:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "-\u003eencode_fh() API change\n\npass inode + parent\u0027s inode or NULL instead of dentry + bool saying\nwhether we want the parent or not.\n\nNOTE: that needs ceph fix folded in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3f134619393cb6c6dfab7890a617d0ceca6d05d7",
      "tree": "39e05b42c99189cd4496e61a3e16107e065b0f04",
      "parents": [
        "3afe36b1fe7d1e3f66752bb9548a763942f3a104"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue May 29 15:07:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "memcg: decrement static keys at real destroy time\n\nWe call the destroy function when a cgroup starts to be removed, such as\nby a rmdir event.\n\nHowever, because of our reference counters, some objects are still\ninflight.  Right now, we are decrementing the static_keys at destroy()\ntime, meaning that if we get rid of the last static_key reference, some\nobjects will still have charges, but the code to properly uncharge them\nwon\u0027t be run.\n\nThis becomes a problem specially if it is ever enabled again, because now\nnew charges will be added to the staled charges making keeping it pretty\nmuch impossible.\n\nWe just need to be careful with the static branch activation: since there\nis no particular preferred order of their activation, we need to make sure\nthat we only start using it after all call sites are active.  This is\nachieved by having a per-memcg flag that is only updated after\nstatic_key_slow_inc() returns.  At this time, we are sure all sites are\nactive.\n\nThis is made per-memcg, not global, for a reason: it also has the effect\nof making socket accounting more consistent.  The first memcg to be\nlimited will trigger static_key() activation, therefore, accounting.  But\nall the others will then be accounted no matter what.  After this patch,\nonly limited memcgs will have its sockets accounted.\n\n[akpm@linux-foundation.org: move enum sock_flag_bits into sock.h,\n                            document enum sock_flag_bits,\n                            convert memcg_proto_active() and memcg_proto_activated() to test_bit(),\n                            redo tcp_update_limit() comment to 80 cols]\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3afe36b1fe7d1e3f66752bb9548a763942f3a104",
      "tree": "7cb138ee742517f2924c1cbc1ae18c4d6afab12b",
      "parents": [
        "fa9add641b1b1c564db916accac1db346e7a2759"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Tue May 29 15:07:10 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "memcg: always free struct memcg through schedule_work()\n\nRight now we free struct memcg with kfree right after a rcu grace period,\nbut defer it if we need to use vfree() to get rid of that memory area.  We\ndo that by need, because we need vfree to be called in a process context.\n\nThis patch unifies this behavior, by ensuring that even kfree will happen\nin a separate thread.  The goal is to have a stable place to call the\nupcoming jump label destruction function outside the realm of the\ncomplicated and quite far-reaching cgroup lock (that can\u0027t be held when\nholding either the cpu_hotplug.lock or jump_label_mutex)\n\n[akpm@linux-foundation.org: tweak comment]\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Li Zefan \u003clizefan@huawei.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa9add641b1b1c564db916accac1db346e7a2759",
      "tree": "875e74ec4d7fed0018fdbc134ad899949c5e3384",
      "parents": [
        "75b00af77ed5b5a3d55549f9e0c33f3969b9330c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm/memcg: apply add/del_page to lruvec\n\nTake lruvec further: pass it instead of zone to add_page_to_lru_list() and\ndel_page_from_lru_list(); and pagevec_lru_move_fn() pass lruvec down to\nits target functions.\n\nThis cleanup eliminates a swathe of cruft in memcontrol.c, including\nmem_cgroup_lru_add_list(), mem_cgroup_lru_del_list() and\nmem_cgroup_lru_move_lists() - which never actually touched the lists.\n\nIn their place, mem_cgroup_page_lruvec() to decide the lruvec, previously\na side-effect of add, and mem_cgroup_update_lru_size() to maintain the\nlru_size stats.\n\nWhilst these are simplifications in their own right, the goal is to bring\nthe evaluation of lruvec next to the spin_locking of the lrus, in\npreparation for a future patch.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\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": "75b00af77ed5b5a3d55549f9e0c33f3969b9330c",
      "tree": "17b59700daed9f536f50c375243ba6ce86c85945",
      "parents": [
        "4d7dcca213921fbaf08ee05359d28e4aaf2245f1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm: trivial cleanups in vmscan.c\n\nUtter trivia in mm/vmscan.c, mostly just reducing the linecount slightly;\nmost exciting change being get_scan_count() calling vmscan_swappiness()\nonce instead of twice.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\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": "4d7dcca213921fbaf08ee05359d28e4aaf2245f1",
      "tree": "1c31ea8e8f9f88ca60864fbdaf9dfa74b09be96f",
      "parents": [
        "af7c4b0ec257ea9abb9c6749dd5a5ba0b8fae1fd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:07:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm/memcg: get_lru_size not get_lruvec_size\n\nKonstantin just introduced mem_cgroup_get_lruvec_size() and\nget_lruvec_size(), I\u0027m about to add mem_cgroup_update_lru_size(): but\nwe\u0027re dealing with the same thing, lru_size[lru].  We ought to agree on\nthe naming, and I do think lru_size is the more correct: so rename his\nones to get_lru_size().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af7c4b0ec257ea9abb9c6749dd5a5ba0b8fae1fd",
      "tree": "f5abf6b2e7301fc0daa61de46021b1c102cdd4cc",
      "parents": [
        "fad02c2de0623fc6d4ff12ca72b60ea521118681"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:08 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm: memcg: print statistics from live counters\n\nDirectly print statistics and event counters instead of going through an\nintermediate accumulation stage into a separate array, which used to\nrequire defining statistic items in more than one place.\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "fad02c2de0623fc6d4ff12ca72b60ea521118681",
      "tree": "c94040481a13fae1215176356606e7f322affdad",
      "parents": [
        "13114716c744afe165c2148c944ed0306658921c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:28 2012 -0700"
      },
      "message": "mm: memcg: group swapped-out statistics counter logically\n\nThe counter of currently swapped out pages in a memcg (hierarchy) is\nsitting amidst ever-increasing event counters.  Move this item to the\nother counters that reflect current state rather than history.\n\nThis technically breaks the kernel ABI, but hopefully nobody relies on the\norder of items in memory.stat.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "13114716c744afe165c2148c944ed0306658921c",
      "tree": "3b0d3022ae3b9725bc0243414e6f74939bbdaeb1",
      "parents": [
        "78ccf5b5ab834080db25d8128e7dd33594cbf4df"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm: memcg: keep ratelimit counter separate from event counters\n\nAll events except the ratelimit counter are statistics exported to\nuserspace.  Keep this internal value out of the event count array.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "78ccf5b5ab834080db25d8128e7dd33594cbf4df",
      "tree": "999ce4d31c0b98d6bb437a9cb001ad6d938a6489",
      "parents": [
        "fada52ca0e48d227f055134e8cc32f583c5b8b53"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm: memcg: print statistics directly to seq_file\n\nBeing able to use seq_printf() allows being smarter about statistics\nname strings, which are currently listed twice, with the only difference\nbeing a \"total_\" prefix on the hierarchical version.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "fada52ca0e48d227f055134e8cc32f583c5b8b53",
      "tree": "2dc0b35e8a73679222d5257cd98411d324892148",
      "parents": [
        "6104621de4ffd94d66eae59cedc70d742a92316b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:06 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm: memcg: convert numa stat to read_seq_string interface\n\nInstead of using the raw seq_file file interface, switch over to the\nread_seq_string cftype callback and let cgroup core code set up the\nseq_file.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "6104621de4ffd94d66eae59cedc70d742a92316b",
      "tree": "b3e84fba03bde89409d8707029e743f238ef8d46",
      "parents": [
        "04eac7ffdea1090f81bc33bd8f4bf072b1fe5bdb"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:07:05 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm: memcg: remove obsolete statistics array boundary enum item\n\nMEM_CGROUP_STAT_DATA is a leftover from when item counters were living in\nthe same array as ever-increasing event counters.  It\u0027s no longer needed,\nuse MEM_CGROUP_STAT_NSTATS to iterate over the stat array.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ying Han \u003cyinghan@google.com\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"
    },
    {
      "commit": "2f3479b1478e223f142fe9cd27a2d2a4c3573c53",
      "tree": "87290215e74631106498dde89c43fa378bf9ede1",
      "parents": [
        "cc926f78420705817b807dbec0c5d3643827eba3"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue May 29 15:07:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "memcg: don\u0027t uncharge in mem_cgroup_move_account()\n\nNow, all callers pass \u0027false\u0027 for \u0027bool uncharge\u0027 so remove this argument.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: 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"
    },
    {
      "commit": "cc926f78420705817b807dbec0c5d3643827eba3",
      "tree": "fea47aea4b5963fbf06e77c593abeee3afb1958b",
      "parents": [
        "d01dd17f1067ca50dbb9d1d3400d33221ce339e7"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue May 29 15:07:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "memcg: move charges to root cgroup if use_hierarchy\u003d0\n\nPresently, at removal of cgroup, -\u003epre_destroy() is called and moves\ncharges to the parent cgroup.  A major reason for returning -EBUSY from\n-\u003epre_destroy() is that the \u0027moving\u0027 hits the parent\u0027s resource\nlimitation.  It happens only when use_hierarchy\u003d0.\n\nConsidering use_hierarchy\u003d0, all cgroups should be flat.  So, no one\ncannot justify moving charges to parent...parent and children are in flat\nconfiguration, not hierarchical.\n\nThis patch modifes the code to move charges to the root cgroup at\nrmdir/force_empty if use_hierarchy\u003d\u003d0.  This will much simplify rmdir()\nand reduce error in -\u003epre_destroy.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: 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"
    },
    {
      "commit": "d01dd17f1067ca50dbb9d1d3400d33221ce339e7",
      "tree": "07c8f7da424666c7fd81bb4a5b8288e68b87d094",
      "parents": [
        "2bb2ba9d51a8044a71a29608d2c4ef8f5b2d57a2"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue May 29 15:07:03 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "memcg: use res_counter_uncharge_until() in move_parent()\n\nBy using res_counter_uncharge_until(), we can avoid race and unnecessary\ncharging.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: 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"
    },
    {
      "commit": "f9be23d6da035241b7687b25e64401171986dcef",
      "tree": "9cdb45dc92785d18cbe6989abf8bf958618f28c8",
      "parents": [
        "90bdcfafdc660b359018262f0f8630d100e28760"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm/vmscan: kill struct mem_cgroup_zone\n\nKill struct mem_cgroup_zone and rename shrink_mem_cgroup_zone() to\nshrink_lruvec(), it always shrinks one lruvec which it takes as an\nargument.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90bdcfafdc660b359018262f0f8630d100e28760",
      "tree": "f88bc1668a2f5dc9558a5498359ff295d90d792c",
      "parents": [
        "90126375d89ab8e0bde30ff22139b6097d56ed8a"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:02 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:27 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into should_continue_reclaim()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90126375d89ab8e0bde30ff22139b6097d56ed8a",
      "tree": "3e18ac488acb6bf6f413a57eb8095f04e49d7cb2",
      "parents": [
        "1a93be0e7a6fc7f3d19101402665c7a958beb568"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into get_scan_count()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a93be0e7a6fc7f3d19101402665c7a958beb568",
      "tree": "af2988851801b6e5d04d3e3f6d5c2932d75ff08a",
      "parents": [
        "c56d5c7dfeb5cc754e17fa3d423086a3c551c219"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:01 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into shrink_list()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c56d5c7dfeb5cc754e17fa3d423086a3c551c219",
      "tree": "4c89ad9692dbd3a2e0eaf96de0162a5d3066925e",
      "parents": [
        "074291fea8bcedeabf295360e2ddd9bbb5830b4a"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into inactive_list_is_low()\n\nSwitch mem_cgroup_inactive_anon_is_low() to lruvec pointers,\nmem_cgroup_get_lruvec_size() is more effective than\nmem_cgroup_zone_nr_lru_pages()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "074291fea8bcedeabf295360e2ddd9bbb5830b4a",
      "tree": "01531a2ca7e9b648a4d8cd9bc772aa484ed2190d",
      "parents": [
        "27ac81d85e5cfcc755dd5fa3f04dc883ab5d821b"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: replace zone_nr_lru_pages() with get_lruvec_size()\n\nIf memory cgroup is enabled we always use lruvecs which are embedded into\nstruct mem_cgroup_per_zone, so we can reach lru_size counters via\ncontainer_of().\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27ac81d85e5cfcc755dd5fa3f04dc883ab5d821b",
      "tree": "e3b8ad8f4b67a3f1dc7a2a809a009a5544cade6b",
      "parents": [
        "95d918fc009072c2f88ce2e8b5db2e5abfad7c3e"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:07:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into putback_inactive_pages()\n\nAs zone_reclaim_stat is now located in the lruvec, we can reach it\ndirectly.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95d918fc009072c2f88ce2e8b5db2e5abfad7c3e",
      "tree": "a20527a9a9276f7814d4fdad780d56a7d6339d86",
      "parents": [
        "6a18adb35c27848195c938b0779ce882d63d3ed1"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: remove update_isolated_counts()\n\nupdate_isolated_counts() is no longer required, because lumpy-reclaim was\nremoved.  Insanity is over, now there is only one kind of inactive page.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a18adb35c27848195c938b0779ce882d63d3ed1",
      "tree": "e2b187e05b150db55764c8347472452edb50c6d3",
      "parents": [
        "5dc35979e444b50d5551bdeb7a7abc5c69c875d0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push zone pointer into shrink_page_list()\n\nIt doesn\u0027t need a pointer to the cgroup - pointer to the zone is enough.\nThis patch also kills the \"mz\" argument of page_check_references() - it is\nunused after \"mm: memcg: count pte references from every member of the\nreclaimed hierarch\"\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc35979e444b50d5551bdeb7a7abc5c69c875d0",
      "tree": "568fa3c4107ce1dd41385c98b4bbfc3dbff1fa8d",
      "parents": [
        "7f5e86c2ccc1480946d2c869d7f7d5278e828092"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: push lruvec pointer into isolate_lru_pages()\n\nMove the mem_cgroup_zone_lruvec() call from isolate_lru_pages() into\nshrink_[in]active_list().  Further patches push it to shrink_zone() step\nby step.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f5e86c2ccc1480946d2c869d7f7d5278e828092",
      "tree": "704612422963868042c9d240b4a395bd7bce8469",
      "parents": [
        "9e3b2f8cd340e13353a44c9a34caef2848131ed7"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:58 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm: add link from struct lruvec to struct zone\n\nThis is the first stage of struct mem_cgroup_zone removal.  Further\npatches replace struct mem_cgroup_zone with a pointer to struct lruvec.\n\nIf CONFIG_CGROUP_MEM_RES_CTLR\u003dn lruvec_zone() is just container_of().\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e3b2f8cd340e13353a44c9a34caef2848131ed7",
      "tree": "cda727e0e4f87992826075ea75c8519bf8e78034",
      "parents": [
        "3d58ab5c97fa2d145050242137ac39ca7d3bc2fc"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/vmscan: store \"priority\" in struct scan_control\n\nIn memory reclaim some function have too many arguments - \"priority\" is\none of them.  It can be stored in struct scan_control - we construct them\non the same level.  Instead of an open coded loop we set the initial\nsc.priority, and do_try_to_free_pages() decreases it down to zero.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d58ab5c97fa2d145050242137ac39ca7d3bc2fc",
      "tree": "e9d11fc9ababf9eafcb54cc60facd793eeafaf74",
      "parents": [
        "748dad36d645f5c4517a115d60bb3a0e8f877ac0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:26 2012 -0700"
      },
      "message": "mm/memcg: use vm_swappiness from target memory cgroup\n\nUse vm_swappiness from memory cgroup which is triggered this memory\nreclaim.  This is more reasonable and allows to kill one argument.\n\n[akpm@linux-foundation.org: fix build (patch skew)]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "748dad36d645f5c4517a115d60bb3a0e8f877ac0",
      "tree": "0f3206a06c3d58b922535957083d5216467eddb9",
      "parents": [
        "a0db00fcf5da79911b7ff2db63ea7c0a5711e096"
      ],
      "author": {
        "name": "Sha Zhengju",
        "email": "handai.szj@taobao.com",
        "time": "Tue May 29 15:06:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "memcg: make threshold index in the right position\n\nIndex current_threshold may point to threshold that just equal to usage\nafter last call of __mem_cgroup_threshold.  But after registering a new\nevent, it will change (pointing to threshold just below usage).  So make\nit consistent here.\n\nFor example:\nnow:\n\tthreshold array:  3  [5]  7  9   (usage \u003d 6, [index] \u003d 5)\n\nnext turn (after calling __mem_cgroup_threshold):\n\tthreshold array:  3   5  [7]  9   (usage \u003d 7, [index] \u003d 7)\n\nafter registering a new event (threshold \u003d 10):\n\tthreshold array:  3  [5]  7  9  10 (usage \u003d 7, [index] \u003d 5)\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\nCc: 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": "a0db00fcf5da79911b7ff2db63ea7c0a5711e096",
      "tree": "1b398808dbe3e672344049820a11b69889e3791e",
      "parents": [
        "3a7951b4cf8c6be48e20523b724d9188f6c91ba7"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue May 29 15:06:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "memcg: remove redundant parentheses\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": "3a7951b4cf8c6be48e20523b724d9188f6c91ba7",
      "tree": "c87db2590663ec59da24169522d289996b7357d6",
      "parents": [
        "92ba39a7acafb4f979fddcd22545603a11c349bb"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue May 29 15:06:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "memcg: mark stat field of mem_cgroup struct as __percpu\n\nIt fixes a lot of sparse warnings.\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": "92ba39a7acafb4f979fddcd22545603a11c349bb",
      "tree": "6feeca5992d43a4613100711bdbdb11b05dcf647",
      "parents": [
        "6bbda35ce1e854eae147d1365ac827eb6e229063"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue May 29 15:06:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "memcg: remove unused variable\n\nmm/memcontrol.c: In function `mc_handle_file_pte\u0027:\nmm/memcontrol.c:5206:16: warning: variable `inode\u0027 set but not used [-Wunused-but-set-variable]\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": "6bbda35ce1e854eae147d1365ac827eb6e229063",
      "tree": "e222ac89aaef14e96f2a06f3f54beea6161f79fb",
      "parents": [
        "bbf808ed7de68fdf626fd4f9718d88cf03ce13a9"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill@shutemov.name",
        "time": "Tue May 29 15:06:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "memcg: mark more functions/variables as static\n\nBased on sparse output.\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": "bbf808ed7de68fdf626fd4f9718d88cf03ce13a9",
      "tree": "91f3dc3eb619f2b809cdd9c1239a6db0e62c97ed",
      "parents": [
        "f3fd4a61928a5edf5b033a417e761b488b43e203"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: kill mem_cgroup_lru_del()\n\nThis patch kills mem_cgroup_lru_del(), we can use\nmem_cgroup_lru_del_list() instead.  On 0-order isolation we already have\nright lru list id.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "f3fd4a61928a5edf5b033a417e761b488b43e203",
      "tree": "f56c5b6f4a4c732c9167e4cacb3e9c25ced0d000",
      "parents": [
        "014483bcccc5edbf861d89dc1a6f7cdc02f9f4c0"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:54 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm: remove lru type checks from __isolate_lru_page()\n\nAfter patch \"mm: forbid lumpy-reclaim in shrink_active_list()\" we can\ncompletely remove anon/file and active/inactive lru type filters from\n__isolate_lru_page(), because isolation for 0-order reclaim always\nisolates pages from right lru list.  And pages-isolation for lumpy\nshrink_inactive_list() or memory-compaction anyway allowed to isolate\npages from all evictable lru lists.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "3cb9945179bd04e9282f31a1173ac11b1300c462",
      "tree": "06c7cb3dfc969f347b16eaca515e2b3ca9058f8f",
      "parents": [
        "89abfab133ef1f5902abafb744df72793213ac19"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 29 15:06:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm: push lru index into shrink_[in]active_list()\n\nLet\u0027s toss lru index through call stack to isolate_lru_pages(), this is\nbetter than its reconstructing from individual bits.\n\n[akpm@linux-foundation.org: fix kerneldoc, per Minchan]\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "89abfab133ef1f5902abafb744df72793213ac19",
      "tree": "29df29e2a34a0af3649417d2e430480c7e7e5fa1",
      "parents": [
        "c3c787e8c38557ccf44c670d73aebe630a2b1479"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:53 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: move reclaim_stat into lruvec\n\nWith mem_cgroup_disabled() now explicit, it becomes clear that the\nzone_reclaim_stat structure actually belongs in lruvec, per-zone when\nmemcg is disabled but per-memcg per-zone when it\u0027s enabled.\n\nWe can delete mem_cgroup_get_reclaim_stat(), and change\nupdate_page_reclaim_stat() to update just the one set of stats, the one\nwhich get_scan_count() will actually use.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Glauber Costa \u003cglommer@parallels.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": "c3c787e8c38557ccf44c670d73aebe630a2b1479",
      "tree": "132184792e88bbe6346a8d40999f9da70704f84e",
      "parents": [
        "86493009d3b7e51eee38575f9537b754f5b6c536"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:25 2012 -0700"
      },
      "message": "mm/memcg: scanning_global_lru means mem_cgroup_disabled\n\nAlthough one has to admire the skill with which it has been concealed,\nscanning_global_lru(mz) is actually just an interesting way to test\nmem_cgroup_disabled().  Too many developer hours have been wasted on\nconfusing it with global_reclaim(): just use mem_cgroup_disabled().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "86493009d3b7e51eee38575f9537b754f5b6c536",
      "tree": "2a9c53575daed7b025fee2c728e102095d364749",
      "parents": [
        "e91cbb42531626cd4fd0673ca01daf53e338d8f9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:52 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "memcg swap: use mem_cgroup_uncharge_swap()\n\nThat stuff __mem_cgroup_commit_charge_swapin() does with a swap entry, it\nhas a name and even a declaration: just use mem_cgroup_uncharge_swap().\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "e91cbb42531626cd4fd0673ca01daf53e338d8f9",
      "tree": "a7138650c4a4914e539f3eeeb69e39d22dba4242",
      "parents": [
        "4b91355e9dc9ac1eb3d69e56de093899ff2677ef"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "memcg swap: mem_cgroup_move_swap_account never needs fixup\n\nThe need_fixup arg to mem_cgroup_move_swap_account() is always false,\nso just remove it.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "4b91355e9dc9ac1eb3d69e56de093899ff2677ef",
      "tree": "b6d18618013eadd3b3e3144c90b16d0d5f07b3af",
      "parents": [
        "181eb39425f2b9275afcb015eaa547d11f71a02f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue May 29 15:06:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "memcg: fix/change behavior of shared anon at moving task\n\nThis patch changes memcg\u0027s behavior at task_move().\n\nAt task_move(), the kernel scans a task\u0027s page table and move the changes\nfor mapped pages from source cgroup to target cgroup.  There has been a\nbug at handling shared anonymous pages for a long time.\n\nBefore patch:\n  - The spec says \u0027shared anonymous pages are not moved.\u0027\n  - The implementation was \u0027shared anonymoys pages may be moved\u0027.\n    If page_mapcount \u003c\u003d2, shared anonymous pages\u0027s charge were moved.\n\nAfter patch:\n  - The spec says \u0027all anonymous pages are moved\u0027.\n  - The implementation is \u0027all anonymous pages are moved\u0027.\n\nConsidering usage of memcg, this will not affect user\u0027s experience.\n\u0027shared anonymous\u0027 pages only exists between a tree of processes which\ndon\u0027t do exec().  Moving one of process without exec() seems not sane.\nFor example, libcgroup will not be affected by this change.  (Anyway, no\none noticed the implementation for a long time...)\n\nBelow is a discussion log:\n\n - current spec/implementation are complex\n - Now, shared file caches are moved\n - It adds unclear check as page_mapcount(). To do correct check,\n   we should check swap users, etc.\n - No one notice this implementation behavior. So, no one get benefit\n   from the design.\n - In general, once task is moved to a cgroup for running, it will not\n   be moved....\n - Finally, we have control knob as memory.move_charge_at_immigrate.\n\nHere is a patch to allow moving shared pages, completely. This makes\nmemcg simpler and fix current broken code.\n\nSuggested-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Glauber Costa \u003cglommer@parallels.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "181eb39425f2b9275afcb015eaa547d11f71a02f",
      "tree": "0ce0f09b5a86931e580a0a6b88e546831c7318ed",
      "parents": [
        "4e2f07750d9a94e8f23e86408df5ab95be88bf11"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm/memblock: fix memory leak on extending regions\n\nThe overall memblock has been organized into the memory regions and\nreserved regions.  Initially, the memory regions and reserved regions are\nstored in the predetermined arrays of \"struct memblock _region\".  It\u0027s\npossible for the arrays to be enlarged when we have newly added regions,\nbut no free space left there.  The policy here is to create double-sized\narray either by slab allocator or memblock allocator.  Unfortunately, we\ndidn\u0027t free the old array, which might be allocated through slab allocator\nbefore.  That would cause memory leak.\n\nThe patch introduces 2 variables to trace where (slab or memblock) the\nmemory and reserved regions come from.  The memory for the memory or\nreserved regions will be deallocated by kfree() if that was allocated by\nslab allocator.  Thus to fix the memory leak issue.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.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": "4e2f07750d9a94e8f23e86408df5ab95be88bf11",
      "tree": "8d2d1b24619817b9a553361a9dc967b3c39a2585",
      "parents": [
        "5bf5f03c271907978489868a4c72aeb42b5127d2"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm/memblock: cleanup on duplicate VA/PA conversion\n\nThe overall memblock has been organized into the memory regions and\nreserved regions.  Initially, the memory regions and reserved regions are\nstored in the predetermined arrays of \"struct memblock _region\".  It\u0027s\npossible for the arrays to be enlarged when we have newly added regions\nfor them, but no enough space there.  Under the situation, We will created\ndouble-sized array to meet the requirement.  However, the original\nimplementation converted the VA (Virtual Address) of the newly allocated\narray of regions to PA (Physical Address), then translate back when we\nallocates the new array from slab.  That\u0027s actually unnecessary.\n\nThe patch removes the duplicate VA/PA conversion.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.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": "5bf5f03c271907978489868a4c72aeb42b5127d2",
      "tree": "2d6b283fa5ee83b723fd4b4a8f070ae53c60ebe9",
      "parents": [
        "dbda591d920b4c7692725b13e3f68ecb251e9080"
      ],
      "author": {
        "name": "Pravin B Shelar",
        "email": "pshelar@nicira.com",
        "time": "Tue May 29 15:06:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm: fix slab-\u003epage flags corruption\n\nTransparent huge pages can change page-\u003eflags (PG_compound_lock) without\ntaking Slab lock.  Since THP can not break slab pages we can safely access\ncompound page without taking compound lock.\n\nSpecifically this patch fixes a race between compound_unlock() and slab\nfunctions which perform page-flags updates.  This can occur when\nget_page()/put_page() is called on a page from slab.\n\n[akpm@linux-foundation.org: tweak comment text, fix comment layout, fix label indenting]\nReported-by: Amey Bhide \u003cabhide@nicira.com\u003e\nSigned-off-by: Pravin B Shelar \u003cpshelar@nicira.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbda591d920b4c7692725b13e3f68ecb251e9080",
      "tree": "15de210e18f06b02cfcd180556a07938a3d2578b",
      "parents": [
        "26c191788f18129af0eb32a358cdaea0c7479626"
      ],
      "author": {
        "name": "KyongHo",
        "email": "pullip.cho@samsung.com",
        "time": "Tue May 29 15:06:49 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm: fix faulty initialization in vmalloc_init()\n\nThe transfer of -\u003eflags causes some of the static mapping virtual\naddresses to be prematurely freed (before the mapping is removed) because\nVM_LAZY_FREE gets \"set\" if tmp-\u003eflags has VM_IOREMAP set.  This might\ncause subsequent vmalloc/ioremap calls to fail because it might allocate\none of the freed virtual address ranges that aren\u0027t unmapped.\n\nva-\u003eflags has different types of flags from tmp-\u003eflags.  If a region with\nVM_IOREMAP set is registered with vm_area_add_early(), it will be removed\nby __purge_vmap_area_lazy().\n\nFix vmalloc_init() to correctly initialize vmap_area for the given\nvm_struct.\n\nAlso initialise va-\u003evm.  If it is not set, find_vm_area() for the early\nvm regions will always fail.\n\nSigned-off-by: KyongHo Cho \u003cpullip.cho@samsung.com\u003e\nCc: \"Olav Haugan\" \u003cohaugan@codeaurora.org\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": "a7f638f999ff42310e9582273b1fe25ea6e469ba",
      "tree": "174dec4d849b78023a23a15d5947cf1d3be9f564",
      "parents": [
        "fe35004fbf9eaf67482b074a2e032abb9c89b1dd"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 29 15:06:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm, oom: normalize oom scores to oom_score_adj scale only for userspace\n\nThe oom_score_adj scale ranges from -1000 to 1000 and represents the\nproportion of memory available to the process at allocation time.  This\nmeans an oom_score_adj value of 300, for example, will bias a process as\nthough it was using an extra 30.0% of available memory and a value of\n-350 will discount 35.0% of available memory from its usage.\n\nThe oom killer badness heuristic also uses this scale to report the oom\nscore for each eligible process in determining the \"best\" process to\nkill.  Thus, it can only differentiate each process\u0027s memory usage by\n0.1% of system RAM.\n\nOn large systems, this can end up being a large amount of memory: 256MB\non 256GB systems, for example.\n\nThis can be fixed by having the badness heuristic to use the actual\nmemory usage in scoring threads and then normalizing it to the\noom_score_adj scale for userspace.  This results in better comparison\nbetween eligible threads for kill and no change from the userspace\nperspective.\n\nSuggested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-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": "fe35004fbf9eaf67482b074a2e032abb9c89b1dd",
      "tree": "a4c1387c914e6967d9a2e60174dc1dd78af72ee8",
      "parents": [
        "c50ac050811d6485616a193eb0f37bfbd191cc89"
      ],
      "author": {
        "name": "Satoru Moriya",
        "email": "satoru.moriya@hds.com",
        "time": "Tue May 29 15:06:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm: avoid swapping out with swappiness\u003d\u003d0\n\nSometimes we\u0027d like to avoid swapping out anonymous memory.  In\nparticular, avoid swapping out pages of important process or process\ngroups while there is a reasonable amount of pagecache on RAM so that we\ncan satisfy our customers\u0027 requirements.\n\nOTOH, we can control how aggressive the kernel will swap memory pages with\n/proc/sys/vm/swappiness for global and\n/sys/fs/cgroup/memory/memory.swappiness for each memcg.\n\nBut with current reclaim implementation, the kernel may swap out even if\nwe set swappiness\u003d0 and there is pagecache in RAM.\n\nThis patch changes the behavior with swappiness\u003d\u003d0.  If we set\nswappiness\u003d\u003d0, the kernel does not swap out completely (for global reclaim\nuntil the amount of free pages and filebacked pages in a zone has been\nreduced to something very very small (nr_free + nr_filebacked \u003c high\nwatermark)).\n\nSigned-off-by: Satoru Moriya \u003csatoru.moriya@hds.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@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": "c50ac050811d6485616a193eb0f37bfbd191cc89",
      "tree": "e237c67e83182bad5744e17c867bb6bceb207544",
      "parents": [
        "5c2b8a162b5f8616f709bf20d5ec88f709485522"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "hugetlb: fix resv_map leak in error path\n\nWhen called for anonymous (non-shared) mappings, hugetlb_reserve_pages()\ndoes a resv_map_alloc().  It depends on code in hugetlbfs\u0027s\nvm_ops-\u003eclose() to release that allocation.\n\nHowever, in the mmap() failure path, we do a plain unmap_region() without\nthe remove_vma() which actually calls vm_ops-\u003eclose().\n\nThis is a decent fix.  This leak could get reintroduced if new code (say,\nafter hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return\nan error.  But, I think it would have to unroll the reservation anyway.\n\nChristoph\u0027s test case:\n\n\thttp://marc.info/?l\u003dlinux-mm\u0026m\u003d133728900729735\n\nThis patch applies to 3.4 and later.  A version for earlier kernels is at\nhttps://lkml.org/lkml/2012/5/22/418.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Christoph Lameter \u003ccl@linux.com\u003e\nTested-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[2.6.32+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5c2b8a162b5f8616f709bf20d5ec88f709485522",
      "tree": "a07e74eb0f8da552fc9ff0acd1b38817c952ba4c",
      "parents": [
        "e48982734ea0500d1eba4f9d96195acc5406cad6"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:24 2012 -0700"
      },
      "message": "mm/bootmem.c: cleanup on addition to bootmem data list\n\nThe objects of \"struct bootmem_data_t\" are linked together to form\ndouble-linked list sequentially based on its minimal page frame number.\n\nThe current implementation implicitly supports the following cases,\nwhich means the inserting point for current bootmem data depends on how\n\"list_for_each\" works.  That makes the code a little hard to read.\nBesides, \"list_for_each\" and \"list_entry\" can be replaced with\n\"list_for_each_entry\".\n\n        - The linked list is empty.\n        - There has no entry in the linked list, whose minimal page\n          frame number is bigger than current one.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.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": "e48982734ea0500d1eba4f9d96195acc5406cad6",
      "tree": "eceae6285010e2540750dcd1fef1d24df1876859",
      "parents": [
        "692569946fbf56fbb75d85c57679541f9a3550b4"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue May 29 15:06:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm: consider all swapped back pages in used-once logic\n\nCommit 645747462435 (\"vmscan: detect mapped file pages used only once\")\nmade mapped pages have another round in inactive list because they might\nbe just short lived and so we could consider them again next time.  This\nheuristic helps to reduce pressure on the active list with a streaming\nIO worklods.\n\nThis patch fixes a regression introduced by this commit for heavy shmem\nbased workloads because unlike Anon pages, which are excluded from this\nheuristic because they are usually long lived, shmem pages are handled\nas a regular page cache.\n\nThis doesn\u0027t work quite well, unfortunately, if the workload is mostly\nbacked by shmem (in memory database sitting on 80% of memory) with a\nstreaming IO in the background (backup - up to 20% of memory).  Anon\ninactive list is full of (dirty) shmem pages when watermarks are hit.\nShmem pages are kept in the inactive list (they are referenced) in the\nfirst round and it is hard to reclaim anything else so we reach lower\nscanning priorities very quickly which leads to an excessive swap out.\n\nLet\u0027s fix this by excluding all swap backed pages (they tend to be long\nlived wrt.  the regular page cache anyway) from used-once heuristic and\nrather activate them if they are referenced.\n\nThe customer\u0027s workload is shmem backed database (80% of RAM) and they\nare measuring transactions/s with an IO in the background (20%).\nTransactions touch more or less random rows in the table.  The\ntransaction rate fell by a factor of 3 (in the worst case) because of\ncommit 64574746.  This patch restores the previous numbers.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\t[2.6.34+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51300cef41c9355a7d428fe0714888d3c72a6f2f",
      "tree": "acde5b26bec6d11ac7265b1fcd6a59309907a4c7",
      "parents": [
        "acc50c110cf6f1a8bd1af410b2c7bc29ca624678"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue May 29 15:06:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm/page_alloc.c: cleanups\n\n- make pageflag_names[] const\n\n- remove null termination of pageflag_names[]\n\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "acc50c110cf6f1a8bd1af410b2c7bc29ca624678",
      "tree": "a0efadad1426fdcec66e659466dc2f3c7ca63ea9",
      "parents": [
        "be9cd873e2a706a688e37224d48e135efd8c0d26"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm: page_alloc: catch out-of-date list of page flag names\n\nString tables with names of enum items are always prone to go out of\nsync with the enums themselves.  Ensure during compile time that the\nname table of page flags has the same size as the page flags enum.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be9cd873e2a706a688e37224d48e135efd8c0d26",
      "tree": "7e962e6da0b1cd010ded0b1901394c78e85863e2",
      "parents": [
        "782182e53a6cdb3e3d04cc40516e173046942a32"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:44 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm/buddy: dump PG_compound_lock page flag\n\nThe array pageflag_names[] does conversion from page flags into their\ncorresponding names so that a meaningful representation of the\ncorresponding page flag can be printed.  This mechanism is used while\ndumping page frames.  However, the array missed PG_compound_lock.  So\nthe PG_compound_lock page flag would be printed as a digital number\ninstead of a meaningful string.\n\nThe patch fixes that and prints \"compound_lock\" for the PG_compound_lock\npage flag.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.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": "782182e53a6cdb3e3d04cc40516e173046942a32",
      "tree": "9e6f74d90b65ca12d4992c034ffa9b2415f37068",
      "parents": [
        "4fb5ef089b288942c6fc3f85c4ecb4016c1aa4c3"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue May 29 15:06:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm: move readahead syscall to mm/readahead.c\n\nIt is better to define readahead(2) in mm/readahead.c than in\nmm/filemap.c.\n\nSigned-off-by: Cong Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.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": "4fb5ef089b288942c6fc3f85c4ecb4016c1aa4c3",
      "tree": "aff66acd4b8a0e8cc060f5bf20ad3d6d75bdb7ab",
      "parents": [
        "1aac1400319d30786f32b9290e9cc923937b3d57"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "tmpfs: support SEEK_DATA and SEEK_HOLE\n\nIt\u0027s quite easy for tmpfs to scan the radix_tree to support llseek\u0027s new\nSEEK_DATA and SEEK_HOLE options: so add them while the minutiae are still\non my mind (in particular, the !PageUptodate-ness of pages fallocated but\nstill unwritten).\n\nBut I don\u0027t know who actually uses SEEK_DATA or SEEK_HOLE, and whether it\nwould be of any use to them on tmpfs.  This code adds 92 lines and 752\nbytes on x86_64 - is that bloat or worthwhile?\n\n[akpm@linux-foundation.org: fix warning with CONFIG_TMPFS\u003dn]\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Josef Bacik \u003cjosef@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andreas Dilger \u003cadilger@dilger.ca\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nCc: Jeff liu \u003cjeff.liu@oracle.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Sunil Mushran \u003csunil.mushran@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": "1aac1400319d30786f32b9290e9cc923937b3d57",
      "tree": "14b44023c7645a5d264f0d537838fea77244eecc",
      "parents": [
        "1635f6a74152f1dcd1b888231609d64875f0a81a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "tmpfs: quit when fallocate fills memory\n\nAs it stands, a large fallocate() on tmpfs is liable to fill memory with\npages, freed on failure except when they run into swap, at which point\nthey become fixed into the file despite the failure.  That feels quite\nwrong, to be consuming resources precisely when they\u0027re in short supply.\n\nGo the other way instead: shmem_fallocate() indicate the range it has\nfallocated to shmem_writepage(), keeping count of pages it\u0027s allocating;\nshmem_writepage() reactivate instead of swapping out pages fallocated by\nthis syscall (but happily swap out those from earlier occasions), keeping\ncount; shmem_fallocate() compare counts and give up once the reactivated\npages have started to coming back to writepage (approximately: some zones\nwould in fact recycle faster than others).\n\nThis is a little unusual, but works well: although we could consider the\nfailure to swap as a bug, and fix it later with SWAP_MAP_FALLOC handling\nadded in swapfile.c and memcontrol.c, I doubt that we shall ever want to.\n\n(If there\u0027s no swap, an over-large fallocate() on tmpfs is limited in the\nsame way as writing: stopped by rlimit, or by tmpfs mount size if that was\nset sensibly, or by __vm_enough_memory() heuristics if OVERCOMMIT_GUESS or\nOVERCOMMIT_NEVER.  If OVERCOMMIT_ALWAYS, then it is liable to OOM-kill\nothers as writing would, but stops and frees if interrupted.)\n\nNow that everything is freed on failure, we can then skip updating ctime.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.com\u003e\nCc: Kay Sievers \u003ckay@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1635f6a74152f1dcd1b888231609d64875f0a81a",
      "tree": "a2919520e0a8fead3930d23136ca30829f0fc64a",
      "parents": [
        "e2d12e22c59ce714008aa5266d769f8568d74eac"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "tmpfs: undo fallocation on failure\n\nIn the previous episode, we left the already-fallocated pages attached to\nthe file when shmem_fallocate() fails part way through.\n\nNow try to do better, by extending the earlier optimization of !Uptodate\npages (then always under page lock) to !Uptodate pages (outside of page\nlock), representing fallocated pages.  And don\u0027t waste time clearing them\nat the time of fallocate(), leave that until later if necessary.\n\nAdapt shmem_truncate_range() to shmem_undo_range(), so that a failing\nfallocate can recognize and remove precisely those !Uptodate allocations\nwhich it added (and were not independently allocated by racing tasks).\n\nBut unless we start playing with swapfile.c and memcontrol.c too, once one\nof our fallocated pages reaches shmem_writepage(), we do then have to\ninstantiate it as an ordinarily allocated page, before swapping out.  This\nis unsatisfactory, but improved in the next episode.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.com\u003e\nCc: Kay Sievers \u003ckay@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2d12e22c59ce714008aa5266d769f8568d74eac",
      "tree": "c4c52d14887c54304af947c2a6c75cb8d1bb7826",
      "parents": [
        "17cf28afea2a1112f240a3a2da8af883be024811"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "tmpfs: support fallocate preallocation\n\nThe systemd plumbers expressed a wish that tmpfs support preallocation.\nCong Wang wrote a patch, but several kernel guys expressed scepticism:\nhttps://lkml.org/lkml/2011/11/18/137\n\nChristoph Hellwig: What for exactly? Please explain why preallocating on\ntmpfs would make any sense.\n\nKay Sievers: To be able to safely use mmap(), regarding SIGBUS, on files\non the /dev/shm filesystem.  The glibc fallback loop for -ENOSYS [or\n-EOPNOTSUPP] on fallocate is just ugly.\n\nHugh Dickins: If tmpfs is going to support\nfallocate(FALLOC_FL_PUNCH_HOLE), it would seem perverse to permit the\ndeallocation but fail the allocation.  Christoph Hellwig: Agreed.\n\nNow that we do have shmem_fallocate() for hole-punching, plumb in basic\nsupport for preallocation mode too.  It\u0027s fairly straightforward (though\nquite a few details needed attention), except for when it fails part way\nthrough.  What a pity that fallocate(2) was not specified to return the\nlength allocated, permitting short fallocations!\n\nAs it is, when it fails part way through, we ought to free what has just\nbeen allocated by this system call; but must be very sure not to free any\nallocated earlier, or any allocated by racing accesses (not all excluded\nby i_mutex).\n\nBut we cannot distinguish them: so in this patch simply leak allocations\non partial failure (they will be freed later if the file is removed).\n\nAn attractive alternative approach would have been for fallocate() not to\nallocate pages at all, but note reservations by entries in the radix-tree.\n But that would give less assurance, and, critically, would be hard to fit\nwith mem cgroups (who owns the reservations?): allocating pages lets\nfallocate() behave in just the same way as write().\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.com\u003e\nCc: Kay Sievers \u003ckay@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17cf28afea2a1112f240a3a2da8af883be024811",
      "tree": "ed9e3eb9b1d44118a12e4ecdf369e3b9b3208be1",
      "parents": [
        "3f31d07571eeea18a7d34db9af21d2285b807a17"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:23 2012 -0700"
      },
      "message": "mm/fs: remove truncate_range\n\nRemove vmtruncate_range(), and remove the truncate_range method from\nstruct inode_operations: only tmpfs ever supported it, and tmpfs has now\nconverted over to using the fallocate method of file_operations.\n\nUpdate Documentation accordingly, adding (setlease and) fallocate lines.\nAnd while we\u0027re in mm.h, remove duplicate declarations of shmem_lock() and\nshmem_file_setup(): everyone is now using the ones in shmem_fs.h.\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@redhat.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": "3f31d07571eeea18a7d34db9af21d2285b807a17",
      "tree": "04350a376ef0cbe32cf2ff11067d4a0a920fd093",
      "parents": [
        "83e4fa9c16e4af7122e31be3eca5d57881d236fe"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm/fs: route MADV_REMOVE to FALLOC_FL_PUNCH_HOLE\n\nNow tmpfs supports hole-punching via fallocate(), switch madvise_remove()\nto use do_fallocate() instead of vmtruncate_range(): which extends\nmadvise(,,MADV_REMOVE) support from tmpfs to ext4, ocfs2 and xfs.\n\nThere is one more user of vmtruncate_range() in our tree,\nstaging/android\u0027s ashmem_shrink(): convert it to use do_fallocate() too\n(but if its unpinned areas are already unmapped - I don\u0027t know - then it\nwould do better to use shmem_truncate_range() directly).\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Colin Cross \u003cccross@android.com\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linux-foundation.org\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger@dilger.ca\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.de\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Ben Myers \u003cbpm@sgi.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@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": "83e4fa9c16e4af7122e31be3eca5d57881d236fe",
      "tree": "594bc4152a58314a3f5068aefaa28783d1f2021a",
      "parents": [
        "ec9516fbc5fa814014991e1ae7f8860127122105"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:40 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "tmpfs: support fallocate FALLOC_FL_PUNCH_HOLE\n\ntmpfs has supported hole-punching since 2.6.16, via\nmadvise(,,MADV_REMOVE).\n\nBut nowadays fallocate(,FALLOC_FL_PUNCH_HOLE|FALLOC_FL_KEEP_SIZE,,) is\nthe agreed way to punch holes.\n\nSo add shmem_fallocate() to support that, and tweak shmem_truncate_range()\nto support partial pages at both the beginning and end of range (never\nneeded for madvise, which demands rounded addr and rounds up length).\n\nBased-on-patch-by: Cong Wang \u003camwang@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Cong Wang \u003camwang@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": "ec9516fbc5fa814014991e1ae7f8860127122105",
      "tree": "e719b64b939e791499e115a63f4e7d1dd0448b16",
      "parents": [
        "2f6e38f3cd17a7858112f538c1700c747170db1f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "tmpfs: optimize clearing when writing\n\nNick proposed years ago that tmpfs should avoid clearing its pages where\nwrite will overwrite them with new data, as ramfs has long done.  But I\nmessed it up and just got bad data.  Tried again recently, it works\nfine.\n\nHere\u0027s time output for writing 4GiB 16 times on this Core i5 laptop:\n\nbefore: real\t0m21.169s user\t0m0.028s sys\t0m21.057s\n        real\t0m21.382s user\t0m0.016s sys\t0m21.289s\n        real\t0m21.311s user\t0m0.020s sys\t0m21.217s\n\nafter:  real\t0m18.273s user\t0m0.032s sys\t0m18.165s\n        real\t0m18.354s user\t0m0.020s sys\t0m18.265s\n        real\t0m18.440s user\t0m0.032s sys\t0m18.337s\n\nramfs:  real\t0m16.860s user\t0m0.028s sys\t0m16.765s\n        real\t0m17.382s user\t0m0.040s sys\t0m17.273s\n        real\t0m17.133s user\t0m0.044s sys\t0m17.021s\n\nYes, I have done perf reports, but they need more explanation than they\ndeserve: in summary, clear_page vanishes, its cache loading shifts into\ncopy_user_generic_unrolled; shmem_getpage_gfp goes down, and\nsurprisingly mark_page_accessed goes way up - I think because they are\nrespectively where the cache gets to be reloaded after being purged by\nclear or copy.\n\nSuggested-by: Nick Piggin \u003cnpiggin@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f6e38f3cd17a7858112f538c1700c747170db1f",
      "tree": "894181551acd46caea34ff2b3fba13ffd049fcbd",
      "parents": [
        "bde05d1ccd512696b09db9dd2e5f33ad19152605"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:38 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "tmpfs: enable NOSEC optimization\n\nLet tmpfs into the NOSEC optimization (avoiding file_remove_suid()\noverhead on most common writes): set MS_NOSEC on its superblocks.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Cong Wang \u003cxiyou.wangcong@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": "bde05d1ccd512696b09db9dd2e5f33ad19152605",
      "tree": "affa2c836136cac6ec0e503ce8996670d385ebbb",
      "parents": [
        "5ceb9ce6fe9462a298bb2cd5c9f1ca6cb80a0199"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Tue May 29 15:06:38 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "shmem: replace page if mapping excludes its zone\n\nThe GMA500 GPU driver uses GEM shmem objects, but with a new twist: the\nbacking RAM has to be below 4GB.  Not a problem while the boards\nsupported only 4GB: but now Intel\u0027s D2700MUD boards support 8GB, and\ntheir GMA3600 is managed by the GMA500 driver.\n\nshmem/tmpfs has never pretended to support hardware restrictions on the\nbacking memory, but it might have appeared to do so before v3.1, and\neven now it works fine until a page is swapped out then back in.  When\nread_cache_page_gfp() supplied a freshly allocated page for copy, that\ncompensated for whatever choice might have been made by earlier swapin\nreadahead; but swapoff was likely to destroy the illusion.\n\nWe\u0027d like to continue to support GMA500, so now add a new\nshmem_should_replace_page() check on the zone when about to move a page\nfrom swapcache to filecache (in swapin and swapoff cases), with\nshmem_replace_page() to allocate and substitute a suitable page (given\ngma500/gem.c\u0027s mapping_set_gfp_mask GFP_KERNEL | __GFP_DMA32).\n\nThis does involve a minor extension to mem_cgroup_replace_page_cache()\n(the page may or may not have already been charged); and I\u0027ve removed a\ncomment and call to mem_cgroup_uncharge_cache_page(), which in fact is\nalways a no-op while PageSwapCache.\n\nAlso removed optimization of an unlikely path in shmem_getpage_gfp(),\nnow that we need to check PageSwapCache more carefully (a racing caller\nmight already have made the copy).  And at one point shmem_unuse_inode()\nneeds to use the hitherto private page_swapcount(), to guard against\nracing with inode eviction.\n\nIt would make sense to extend shmem_should_replace_page(), to cover\ncpuset and NUMA mempolicy restrictions too, but set that aside for now:\nneeds a cleanup of shmem mempolicy handling, and more testing, and ought\nto handle swap faults in do_swap_page() as well as shmem.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Stephane Marchesin \u003cmarcheu@chromium.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Airlie \u003cairlied@gmail.com\u003e\nCc: Daniel Vetter \u003cdaniel@ffwll.ch\u003e\nCc: Rob Clark \u003crob.clark@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": "5ceb9ce6fe9462a298bb2cd5c9f1ca6cb80a0199",
      "tree": "52a6d3c27eceb8848a8e8d7e3de9e39ff8cc680c",
      "parents": [
        "238305bb4d418c95977162ba13c11880685fc731"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "b.zolnierkie@samsung.com",
        "time": "Tue May 29 15:06:37 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: compaction: handle incorrect MIGRATE_UNMOVABLE type pageblocks\n\nWhen MIGRATE_UNMOVABLE pages are freed from MIGRATE_UNMOVABLE type\npageblock (and some MIGRATE_MOVABLE pages are left in it) waiting until an\nallocation takes ownership of the block may take too long.  The type of\nthe pageblock remains unchanged so the pageblock cannot be used as a\nmigration target during compaction.\n\nFix it by:\n\n* Adding enum compact_mode (COMPACT_ASYNC_[MOVABLE,UNMOVABLE], and\n  COMPACT_SYNC) and then converting sync field in struct compact_control\n  to use it.\n\n* Adding nr_pageblocks_skipped field to struct compact_control and\n  tracking how many destination pageblocks were of MIGRATE_UNMOVABLE type.\n   If COMPACT_ASYNC_MOVABLE mode compaction ran fully in\n  try_to_compact_pages() (COMPACT_COMPLETE) it implies that there is not a\n  suitable page for allocation.  In this case then check how if there were\n  enough MIGRATE_UNMOVABLE pageblocks to try a second pass in\n  COMPACT_ASYNC_UNMOVABLE mode.\n\n* Scanning the MIGRATE_UNMOVABLE pageblocks (during COMPACT_SYNC and\n  COMPACT_ASYNC_UNMOVABLE compaction modes) and building a count based on\n  finding PageBuddy pages, page_count(page) \u003d\u003d 0 or PageLRU pages.  If all\n  pages within the MIGRATE_UNMOVABLE pageblock are in one of those three\n  sets change the whole pageblock type to MIGRATE_MOVABLE.\n\nMy particular test case (on a ARM EXYNOS4 device with 512 MiB, which means\n131072 standard 4KiB pages in \u0027Normal\u0027 zone) is to:\n\n- allocate 120000 pages for kernel\u0027s usage\n- free every second page (60000 pages) of memory just allocated\n- allocate and use 60000 pages from user space\n- free remaining 60000 pages of kernel memory\n  (now we have fragmented memory occupied mostly by user space pages)\n- try to allocate 100 order-9 (2048 KiB) pages for kernel\u0027s usage\n\nThe results:\n- with compaction disabled I get 11 successful allocations\n- with compaction enabled - 14 successful allocations\n- with this patch I\u0027m able to get all 100 successful allocations\n\nNOTE: If we can make kswapd aware of order-0 request during compaction, we\ncan enhance kswapd with changing mode to COMPACT_ASYNC_FULL\n(COMPACT_ASYNC_MOVABLE + COMPACT_ASYNC_UNMOVABLE).  Please see the\nfollowing thread:\n\n\thttp://marc.info/?l\u003dlinux-mm\u0026m\u003d133552069417068\u0026w\u003d2\n\n[minchan@kernel.org: minor cleanups]\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Marek Szyprowski \u003cm.szyprowski@samsung.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cb.zolnierkie@samsung.com\u003e\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "238305bb4d418c95977162ba13c11880685fc731",
      "tree": "43f578a711e85af44b1b1b43e8f32ef86490486f",
      "parents": [
        "e9079911e6c8fb7882de142de76f3ee49b54e000"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:36 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: remove sparsemem allocation details from the bootmem allocator\n\nalloc_bootmem_section() derives allocation area constraints from the\nspecified sparsemem section.  This is a bit specific for a generic memory\nallocator like bootmem, though, so move it over to sparsemem.\n\nAs __alloc_bootmem_node_nopanic() already retries failed allocations with\nrelaxed area constraints, the fallback code in sparsemem.c can be removed\nand the code becomes a bit more compact overall.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9079911e6c8fb7882de142de76f3ee49b54e000",
      "tree": "9151744d050e93bddcacc3a46c37dfb198fefbb3",
      "parents": [
        "ba539868331874da02017e8dda8ed5b86af6d21a"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:36 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: bootmem: pass pgdat instead of pgdat-\u003ebdata down the stack\n\nPass down the node descriptor instead of the more specific bootmem node\ndescriptor down the call stack, like nobootmem does, when there is no good\nreason for the two to be different.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba539868331874da02017e8dda8ed5b86af6d21a",
      "tree": "27056839b40648fe3e9d121411e4745417587e89",
      "parents": [
        "2c478eae96501163c5c5d5f682bba4d34a7ea1d4"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: nobootmem: unify allocation policy of (non-)panicking node allocations\n\nWhile the panicking node-specific allocation function tries to satisfy\nnode+goal, goal, node, anywhere, the non-panicking function still does\nnode+goal, goal, anywhere.\n\nMake it simpler: define the panicking version in terms of the non-panicking\none, like the node-agnostic interface, so they always behave the same way\napart from how to deal with allocation failure.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c478eae96501163c5c5d5f682bba4d34a7ea1d4",
      "tree": "0c42430aa1b4209df62b34662343f32febf2cd36",
      "parents": [
        "421456edd27cf512b8f0025245a0f3572bd69b00"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: nobootmem: panic on node-specific allocation failure\n\n__alloc_bootmem_node and __alloc_bootmem_low_node documentation claims\nthe functions panic on allocation failure.  Do it.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "421456edd27cf512b8f0025245a0f3572bd69b00",
      "tree": "5514646e0a4113774f9c612b57b645206f71439e",
      "parents": [
        "ab3818432294a19ad793a0965d89867b4ce6255b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:22 2012 -0700"
      },
      "message": "mm: bootmem: unify allocation policy of (non-)panicking node allocations\n\nWhile the panicking node-specific allocation function tries to satisfy\nnode+goal, goal, node, anywhere, the non-panicking function still does\nnode+goal, goal, anywhere.\n\nMake it simpler: define the panicking version in terms of the\nnon-panicking one, like the node-agnostic interface, so they always behave\nthe same way apart from how to deal with allocation failure.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab3818432294a19ad793a0965d89867b4ce6255b",
      "tree": "1cffc6d97b2735b9ce776874e02b35adfc890e5e",
      "parents": [
        "c12ab504aa6076d1f1d37ee32431608ed11a1c3b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: bootmem: allocate in order node+goal, goal, node, anywhere\n\nMatch the nobootmem version of __alloc_bootmem_node.  Try to satisfy both\nthe node and the goal, then just the goal, then just the node, then\nallocate anywhere before panicking.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c12ab504aa6076d1f1d37ee32431608ed11a1c3b",
      "tree": "efe963c9536fe306380dd01d135daaf00f2c5154",
      "parents": [
        "c6785b6bf1b2a4b47238b24ee56f61e27c3af682"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:33 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: bootmem: split out goal-to-node mapping from goal dropping\n\nMatching the desired goal to the right node is one thing, dropping the\ngoal when it can not be satisfied is another.  Split this into separate\nfunctions so that subsequent patches can use the node-finding but drop and\nhandle the goal fallback on their own terms.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6785b6bf1b2a4b47238b24ee56f61e27c3af682",
      "tree": "a6925c9acfda1a62e61b3d960b1de31be545fc2a",
      "parents": [
        "549381e19cc7874bb15f0e4760c1004d4fe28d8a"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:33 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: bootmem: rename alloc_bootmem_core to alloc_bootmem_bdata\n\nCallsites need to provide a bootmem_data_t *, make the naming more\ndescriptive.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "549381e19cc7874bb15f0e4760c1004d4fe28d8a",
      "tree": "fc2aef8ca6e57837e484b54e3f038a273a700ee8",
      "parents": [
        "6dccdcbe2c3ebe152847ac8507e7bded4e3f4546"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue May 29 15:06:32 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: bootmem: remove redundant offset check when finally freeing bootmem\n\nWhen bootmem releases an unaligned BITS_PER_LONG pages chunk of memory\nto the page allocator, it checks the bitmap if there are still\nunreserved pages in the chunk (set bits), but also if the offset in the\nchunk indicates BITS_PER_LONG loop iterations already.\n\nBut since the consulted bitmap is only a one-word-excerpt of the full\nper-node bitmap, there can not be more than BITS_PER_LONG bits set in\nit.  The additional offset check is unnecessary.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@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": "6dccdcbe2c3ebe152847ac8507e7bded4e3f4546",
      "tree": "32d748a8b981e98b64547ab8a7064453b7686334",
      "parents": [
        "955c1cd7401565671b064e499115344ec8067dfd"
      ],
      "author": {
        "name": "Gavin Shan",
        "email": "shangw@linux.vnet.ibm.com",
        "time": "Tue May 29 15:06:32 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: bootmem: fix checking the bitmap when finally freeing bootmem\n\nWhen bootmem releases an unaligned chunk of memory at the beginning of a\nnode to the page allocator, it iterates from that unaligned PFN but\nchecks an aligned word of the page bitmap.  The checked bits do not\ncorrespond to the PFNs and, as a result, reserved pages can be freed.\n\nProperly shift the bitmap word so that the lowest bit corresponds to the\nstarting PFN before entering the freeing loop.\n\nThis bug has been around since commit 41546c17418f (\"bootmem: clean up\nfree_all_bootmem_core\") (2.6.27) without known reports.\n\nSigned-off-by: Gavin Shan \u003cshangw@linux.vnet.ibm.com\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@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": "955c1cd7401565671b064e499115344ec8067dfd",
      "tree": "eee1370c654ac7d17403ca82a751e64a6ee041d9",
      "parents": [
        "2099597401c7710c00b0d7c32b24a44a193836e1"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue May 29 15:06:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm/page_alloc.c: remove pageblock_default_order()\n\nThis has always been broken: one version takes an unsigned int and the\nother version takes no arguments.  This bug was hidden because one\nversion of set_pageblock_order() was a macro which doesn\u0027t evaluate its\nargument.\n\nSimplify it all and remove pageblock_default_order() altogether.\n\nReported-by: rajman mekaco \u003crajman.mekaco@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\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": "a62e2f4f508863da8e0c2f2b42f5252a87330297",
      "tree": "b9f6f77322d9a72ba753e45bd8671fecf4016c1a",
      "parents": [
        "3af684c7c5b3dddf7c5d83b8ad431380cdc6f164"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bhelgaas@google.com",
        "time": "Tue May 29 15:06:30 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 29 16:22:21 2012 -0700"
      },
      "message": "mm: print physical addresses consistently with other parts of kernel\n\nPrint physical address info in a style consistent with the %pR style used\nelsewhere in the kernel.  For example:\n\n    -Zone PFN ranges:\n    +Zone ranges:\n    -  DMA32    0x00000010 -\u003e 0x00100000\n    +  DMA32    [mem 0x00010000-0xffffffff]\n    -  Normal   0x00100000 -\u003e 0x01080000\n    +  Normal   [mem 0x100000000-0x107fffffff]\n\nSigned-off-by: Bjorn Helgaas \u003cbhelgaas@google.com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "5febcbe99d4766cc383909c447e002e63d8b4592"
}
