)]}'
{
  "log": [
    {
      "commit": "ac34a1a3c39da0a1b9188d12a9ce85506364ed2a",
      "tree": "f74f34047c6bc516e29196685cc8671aff4a02d2",
      "parents": [
        "26c4caea9d697043cc5a458b96411b86d7f6babd"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Jun 27 16:18:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "memcg: fix direct softlimit reclaim to be called in limit path\n\nCommit d149e3b25d7c (\"memcg: add the soft_limit reclaim in global direct\nreclaim\") adds a softlimit hook to shrink_zones().  By this, soft limit\nis called as\n\n   try_to_free_pages()\n       do_try_to_free_pages()\n           shrink_zones()\n               mem_cgroup_soft_limit_reclaim()\n\nThen, direct reclaim is memcg softlimit hint aware, now.\n\nBut, the memory cgroup\u0027s \"limit\" path can call softlimit shrinker.\n\n   try_to_free_mem_cgroup_pages()\n       do_try_to_free_pages()\n           shrink_zones()\n               mem_cgroup_soft_limit_reclaim()\n\nThis will cause a global reclaim when a memcg hits limit.\n\nThis is bug. soft_limit_reclaim() should be called when\nscanning_global_lru(sc) \u003d\u003d true.\n\nAnd the commit adds a variable \"total_scanned\" for counting softlimit\nscanned pages....it\u0027s not \"total\".  This patch removes the variable and\nupdate sc-\u003enr_scanned instead of it.  This will affect shrink_slab()\u0027s\nscan condition but, global LRU is scanned by softlimit and I think this\nchange makes sense.\n\nTODO: avoid too much scanning of a zone when softlimit did enough work.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Ying Han \u003cyinghan@google.com\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": "08142579b6ca35883c1ed066a2681de6f6917062",
      "tree": "00735ed37753533f3b645714770b4fb036b5f7e0",
      "parents": [
        "9b679320a5fbf46454011e5c62e0b8991b0956d1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jun 27 16:18:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm: fix assertion mapping-\u003enrpages \u003d\u003d 0 in end_writeback()\n\nUnder heavy memory and filesystem load, users observe the assertion\nmapping-\u003enrpages \u003d\u003d 0 in end_writeback() trigger.  This can be caused by\npage reclaim reclaiming the last page from a mapping in the following\nrace:\n\n\tCPU0\t\t\t\tCPU1\n  ...\n  shrink_page_list()\n    __remove_mapping()\n      __delete_from_page_cache()\n        radix_tree_delete()\n\t\t\t\t\tevict_inode()\n\t\t\t\t\t  truncate_inode_pages()\n\t\t\t\t\t    truncate_inode_pages_range()\n\t\t\t\t\t      pagevec_lookup() - finds nothing\n\t\t\t\t\t  end_writeback()\n\t\t\t\t\t    mapping-\u003enrpages !\u003d 0 -\u003e BUG\n        page-\u003emapping \u003d NULL\n        mapping-\u003enrpages--\n\nFix the problem by doing a reliable check of mapping-\u003enrpages under\nmapping-\u003etree_lock in end_writeback().\n\nAnalyzed by Jay \u003cjinshan.xiong@whamcloud.com\u003e, lost in LKML, and dug out\nby Miklos Szeredi \u003cmszeredi@suse.de\u003e.\n\nCc: Jay \u003cjinshan.xiong@whamcloud.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b679320a5fbf46454011e5c62e0b8991b0956d1",
      "tree": "49ea7be5e8bb669ef99533a18c73555e2882efc5",
      "parents": [
        "aa2c96d6f329e66cc59352b0f12e8f04e6a9593b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Jun 27 16:18:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm/memory-failure.c: fix spinlock vs mutex order\n\nWe cannot take a mutex while holding a spinlock, so flip the order and\nfix the locking documentation.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9d90e5eb70e09903dadff42099b6c948f814050",
      "tree": "c3ab73df6dee61f9403bfd819a6b0cb9f3ca6085",
      "parents": [
        "94c1e62df4494b79782cb9c7279f827212d1de70"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "tmpfs: add shmem_read_mapping_page_gfp\n\nAlthough it is used (by i915) on nothing but tmpfs, read_cache_page_gfp()\nis unsuited to tmpfs, because it inserts a page into pagecache before\ncalling the filesystem\u0027s -\u003ereadpage: tmpfs may have pages in swapcache\nwhich only it knows how to locate and switch to filecache.\n\nAt present tmpfs provides a -\u003ereadpage method, and copes with this by\ncopying pages; but soon we can simplify it by removing its -\u003ereadpage.\nProvide shmem_read_mapping_page_gfp() now, ready for that transition,\n\nExport shmem_read_mapping_page_gfp() and add it to list in shmem_fs.h,\nwith shmem_read_mapping_page() inline for the common mapping_gfp case.\n\n(shmem_read_mapping_page_gfp or shmem_read_cache_page_gfp? Generally the\nread_mapping_page functions use the mapping\u0027s -\u003ereadpage, and the\nread_cache_page functions use the supplied filler, so I think\nread_cache_page_gfp was slightly misnamed.)\n\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": "94c1e62df4494b79782cb9c7279f827212d1de70",
      "tree": "43013fb403e592c535e6a7770be105b635ac9b63",
      "parents": [
        "072441e21ddcd1140606b7d4ef6eab579a86b0b3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "tmpfs: take control of its truncate_range\n\n2.6.35\u0027s new truncate convention gave tmpfs the opportunity to control\nits file truncation, no longer enforced from outside by vmtruncate().\nWe shall want to build upon that, to handle pagecache and swap together.\n\nSlightly redefine the -\u003etruncate_range interface: let it now be called\nbetween the unmap_mapping_range()s, with the filesystem responsible for\ndoing the truncate_inode_pages_range() from it - just as the filesystem\nis nowadays responsible for doing that from its -\u003esetattr.\n\nLet\u0027s rename shmem_notify_change() to shmem_setattr().  Instead of\ncalling the generic truncate_setsize(), bring that code in so we can\ncall shmem_truncate_range() - which will later be updated to perform its\nown variant of truncate_inode_pages_range().\n\nRemove the punch_hole unmap_mapping_range() from shmem_truncate_range():\nnow that the COW\u0027s unmap_mapping_range() comes after -\u003etruncate_range,\nthere is no need to call it a third time.\n\nExport shmem_truncate_range() and add it to the list in shmem_fs.h, so\nthat i915_gem_object_truncate() can call it explicitly in future; get\nthis patch in first, then update drm/i915 once this is available (until\nthen, i915 will just be doing the truncate_inode_pages() twice).\n\nThough introduced five years ago, no other filesystem is implementing\n-\u003etruncate_range, and its only other user is madvise(,,MADV_REMOVE): we\nexpect to convert it to fallocate(,FALLOC_FL_PUNCH_HOLE,,) shortly,\nwhereupon -\u003etruncate_range can be removed from inode_operations -\nshmem_truncate_range() will help i915 across that transition too.\n\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": "072441e21ddcd1140606b7d4ef6eab579a86b0b3",
      "tree": "6f059ad83c09dfbeb1def29e805839db3e5bf85f",
      "parents": [
        "5b8ba10198a109f8a02380648c5d29000caa9c55"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "mm: move shmem prototypes to shmem_fs.h\n\nBefore adding any more global entry points into shmem.c, gather such\nprototypes into shmem_fs.h.  Remove mm\u0027s own declarations from swap.h,\nbut for now leave the ones in mm.h: because shmem_file_setup() and\nshmem_zero_setup() are called from various places, and we should not\nforce other subsystems to update immediately.\n\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": "5b8ba10198a109f8a02380648c5d29000caa9c55",
      "tree": "1e4328d86395baa3d429c0d9911b7d7e1272629d",
      "parents": [
        "4d258b25d947521c8b913154db61ec55198243f8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Jun 27 16:18:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:12 2011 -0700"
      },
      "message": "mm: move vmtruncate_range to truncate.c\n\nYou would expect to find vmtruncate_range() next to vmtruncate() in\nmm/truncate.c: move it there.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: 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": "f957db4fcdd8f03e186aa8f041f4049e76ab741c",
      "tree": "34c5868d819fad1b831e72ca600e655a7b9d8872",
      "parents": [
        "7553e8f2d5161a2b7a9b7a9f37be1b77e735552f"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Jun 22 18:13:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 22 21:06:48 2011 -0700"
      },
      "message": "mm, hotplug: protect zonelist building with zonelists_mutex\n\nCommit 959ecc48fc75 (\"mm/memory_hotplug.c: fix building of node hotplug\nzonelist\") does not protect the build_all_zonelists() call with\nzonelists_mutex as needed.  This can lead to races in constructing\nzonelist ordering if a concurrent build is underway.  Protecting this\nwith lock_memory_hotplug() is insufficient since zonelists can be\nrebuild though sysfs as well.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7553e8f2d5161a2b7a9b7a9f37be1b77e735552f",
      "tree": "1e5413e5998a523f6f9a8ea647b56a6d91be4ee5",
      "parents": [
        "b1d7dd80aadb9042e83f9778b484a2f92e0b04d4"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Jun 22 18:13:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 22 21:06:47 2011 -0700"
      },
      "message": "mm, hotplug: fix error handling in mem_online_node()\n\nThe error handling in mem_online_node() is incorrect: hotadd_new_pgdat()\nreturns NULL if the new pgdat could not have been allocated and a pointer\nto it otherwise.\n\nmem_online_node() should fail if hotadd_new_pgdat() fails, not the\ninverse.  This fixes an issue when memoryless nodes are not onlined and\ntheir sysfs interface is not registered when their first cpu is brought\nup.\n\nThe bug was introduced by commit cf23422b9d76 (\"cpu/mem hotplug: enable\nCPUs online before local memory online\") iow v2.6.35.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd34739c03f2f9a79403d33419c2e61e11b4c403",
      "tree": "74e4e43b78d54994e88aef7df96f0f8f4b080934",
      "parents": [
        "eee2acbae95555006307395d8a6c91452d62851d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:05:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:24:11 2011 -0700"
      },
      "message": "mm: avoid anon_vma_chain allocation under anon_vma lock\n\nHugh Dickins points out that lockdep (correctly) spots a potential\ndeadlock on the anon_vma lock, because we now do a GFP_KERNEL allocation\nof anon_vma_chain while doing anon_vma_clone().  The problem is that\npage reclaim will want to take the anon_vma lock of any anonymous pages\nthat it will try to reclaim.\n\nSo re-organize the code in anon_vma_clone() slightly: first do just a\nGFP_NOWAIT allocation, which will usually work fine.  But if that fails,\nlet\u0027s just drop the lock and re-do the allocation, now with GFP_KERNEL.\n\nEnd result: not only do we avoid the locking problem, this also ends up\ngetting better concurrency in case the allocation does need to block.\nTim Chen reports that with all these anon_vma locking tweaks, we\u0027re now\nalmost back up to the spinlock performance.\n\nReported-and-tested-by: Hugh Dickins \u003chughd@google.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eee2acbae95555006307395d8a6c91452d62851d",
      "tree": "85b02243a07a5617ac45fe2d4a714e4f758f0a98",
      "parents": [
        "bb4aa39676f73b4657b3edd893ae83881c430c0c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Jun 17 13:54:23 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:23:52 2011 -0700"
      },
      "message": "mm: avoid repeated anon_vma lock/unlock sequences in unlink_anon_vmas()\n\nThis matches the anon_vma_clone() case, and uses the same lock helper\nfunctions.  Because of the need to potentially release the anon_vma\u0027s,\nit\u0027s a bit more complex, though.\n\nWe traverse the \u0027vma-\u003eanon_vma_chain\u0027 in two phases: the first loop gets\nthe anon_vma lock (with the helper function that only takes the lock\nonce for the whole loop), and removes any entries that don\u0027t need any\nmore processing.\n\nThe second phase just traverses the remaining list entries (without\nholding the anon_vma lock), and does any actual freeing of the\nanon_vma\u0027s that is required.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb4aa39676f73b4657b3edd893ae83881c430c0c",
      "tree": "6b8db9ed4a9e3fb6c232dd8447b0d24e76f5885a",
      "parents": [
        "eb96c925152fc289311e5d7e956b919e9b60ab53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 20:44:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 17 19:20:49 2011 -0700"
      },
      "message": "mm: avoid repeated anon_vma lock/unlock sequences in anon_vma_clone()\n\nIn anon_vma_clone() we traverse the vma-\u003eanon_vma_chain of the source\nvma, locking the anon_vma for each entry.\n\nBut they are all going to have the same root entry, which means that\nwe\u0027re locking and unlocking the same lock over and over again.  Which is\nexpensive in locked operations, but can get _really_ expensive when that\nroot entry sees any kind of lock contention.\n\nIn fact, Tim Chen reports a big performance regression due to this: when\nwe switched to use a mutex instead of a spinlock, the contention case\ngets much worse.\n\nSo to alleviate this all, this commit creates a small helper function\n(lock_anon_vma_root()) that can be used to take the lock just once\nrather than taking and releasing it over and over again.\n\nWe still have the same \"take the lock and release\" it behavior in the\nexit path (in unlink_anon_vmas()), but that one is a bit harder to fix\nsince we\u0027re actually freeing the anon_vma entries as we go, and that\nwill touch the lock too.\n\nReported-and-tested-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nTested-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99a15e21d96f6857dafab1e5167e5e8183215c9c",
      "tree": "eb6224c0bf11fc243de298c3fa665e418f849d16",
      "parents": [
        "7cc2ed05891f424c2e323bc1a368ddb5c78b90f2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jun 16 12:56:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 15:01:24 2011 -0700"
      },
      "message": "migrate: don\u0027t account swapcache as shmem\n\nswapcache will reach the below code path in migrate_page_move_mapping,\nand swapcache is accounted as NR_FILE_PAGES but it\u0027s not accounted as\nNR_SHMEM.\n\nHugh pointed out we must use PageSwapCache instead of comparing\nmapping to \u0026swapper_space, to avoid build failure with CONFIG_SWAP\u003dn.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9be34c9d526c305efb332ad53460b57d5f8edb3e",
      "tree": "43db860557f3080b254291dac1035be1468dfdff",
      "parents": [
        "19a1166fa2352f9c07a5ab34a3c2aab462cff35d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 00:35:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 16 00:35:09 2011 -0700"
      },
      "message": "mm: get rid of the most spurious find_vma_prev() users\n\nWe have some users of this function that date back to before the vma\nlist was doubly linked, and just are silly.  These days, you can find\nthe previous vma by just following the vma-\u003evm_prev pointer.\n\nIn some cases you don\u0027t need any find_vma() lookup at all, and in other\ncases you\u0027re better off with the regular \"find_vma()\" that uses the vma\ncache front-end lookup.\n\nSome \"find_vma_prev()\" users are still valid, though.  For example, in\nthe case of a stack that grows up, it can be the case that we don\u0027t find\nany \u0027vma\u0027 at all (because we\u0027re looking up an address that is past the\nlast vma), and that the stack that we want to grow is the \u0027prev\u0027 vma.\n\nBut that kind of special case aside, we generally should prefer to use\n\u0027find_vma()\u0027.\n\nNoticed due to a totally unrelated POWER memory corruption bug that just\nhappened to hit in \u0027find_vma_prev()\u0027 and made me go \"Hmm - why are we\nusing that function here?\".\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b472611a32a72f4a118c069c2d62a1a3f087afd",
      "tree": "166ec2dea398e7760c30077fb329cf7f2ab08c2b",
      "parents": [
        "c7cbb02222eccb82bfd42696b01abceddae663f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Jun 15 15:08:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "ksm: fix NULL pointer dereference in scan_get_next_rmap_item()\n\nAndrea Righi reported a case where an exiting task can race against\nksmd::scan_get_next_rmap_item (http://lkml.org/lkml/2011/6/1/742) easily\ntriggering a NULL pointer dereference in ksmd.\n\nksm_scan.mm_slot \u003d\u003d \u0026ksm_mm_head with only one registered mm\n\nCPU 1 (__ksm_exit)\t\tCPU 2 (scan_get_next_rmap_item)\n \t\t\t\tlist_empty() is false\nlock\t\t\t\tslot \u003d\u003d \u0026ksm_mm_head\nlist_del(slot-\u003emm_list)\n(list now empty)\nunlock\n\t\t\t\tlock\n\t\t\t\tslot \u003d list_entry(slot-\u003emm_list.next)\n\t\t\t\t(list is empty, so slot is still ksm_mm_head)\n\t\t\t\tunlock\n\t\t\t\tslot-\u003emm \u003d\u003d NULL ... Oops\n\nClose this race by revalidating that the new slot is not simply the list\nhead again.\n\nAndrea\u0027s test case:\n\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/mman.h\u003e\n\n#define BUFSIZE getpagesize()\n\nint main(int argc, char **argv)\n{\n\tvoid *ptr;\n\n\tif (posix_memalign(\u0026ptr, getpagesize(), BUFSIZE) \u003c 0) {\n\t\tperror(\"posix_memalign\");\n\t\texit(1);\n\t}\n\tif (madvise(ptr, BUFSIZE, MADV_MERGEABLE) \u003c 0) {\n\t\tperror(\"madvise\");\n\t\texit(1);\n\t}\n\t*(char *)NULL \u003d 0;\n\n\treturn 0;\n}\n\nReported-by: Andrea Righi \u003candrea@betterlinux.com\u003e\nTested-by: Andrea Righi \u003candrea@betterlinux.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f9e35b3b41f47c4e17d8132edbcab305a6aaa4b0",
      "tree": "d489fff3885bb7c4df0eebd2f074a398420740e6",
      "parents": [
        "d179e84ba5da1d0024087d1759a2938817a00f3f"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Jun 15 15:08:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: compaction: abort compaction if too many pages are isolated and caller is asynchronous V2\n\nAsynchronous compaction is used when promoting to huge pages.  This is all\nvery nice but if there are a number of processes in compacting memory, a\nlarge number of pages can be isolated.  An \"asynchronous\" process can\nstall for long periods of time as a result with a user reporting that\nfirefox can stall for 10s of seconds.  This patch aborts asynchronous\ncompaction if too many pages are isolated as it\u0027s better to fail a\nhugepage promotion than stall a process.\n\n[minchan.kim@gmail.com: return COMPACT_PARTIAL for abort]\nReported-and-tested-by: Ury Stankevich \u003curykhy@gmail.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-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": "d179e84ba5da1d0024087d1759a2938817a00f3f",
      "tree": "169c9cc4030a793df1bc29613eff85ee3acef9a9",
      "parents": [
        "7454f4ba40b419eb999a3c61a99da662bf1a2bb8"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Jun 15 15:08:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: vmscan: do not use page_count without a page pin\n\nIt is unsafe to run page_count during the physical pfn scan because\ncompound_head could trip on a dangling pointer when reading\npage-\u003efirst_page if the compound page is being freed by another CPU.\n\n[mgorman@suse.de: split out patch]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7454f4ba40b419eb999a3c61a99da662bf1a2bb8",
      "tree": "e0c12088e544378554bc371d99f497d93470c4c4",
      "parents": [
        "a582a738c763e106f47eab24b8146c698a9c700b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Jun 15 15:08:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "mm: compaction: ensure that the compaction free scanner does not move to the next zone\n\nCompaction works with two scanners, a migration and a free scanner.  When\nthe scanners crossover, migration within the zone is complete.  The\nlocation of the scanner is recorded on each cycle to avoid excesive\nscanning.\n\nWhen a zone is small and mostly reserved, it\u0027s very easy for the migration\nscanner to be close to the end of the zone.  Then the following situation\ncan occurs\n\n  o migration scanner isolates some pages near the end of the zone\n  o free scanner starts at the end of the zone but finds that the\n    migration scanner is already there\n  o free scanner gets reinitialised for the next cycle as\n    cc-\u003emigrate_pfn + pageblock_nr_pages\n    moving the free scanner into the next zone\n  o migration scanner moves into the next zone\n\nWhen this happens, NR_ISOLATED accounting goes haywire because some of the\naccounting happens against the wrong zone.  One zones counter remains\npositive while the other goes negative even though the overall global\ncount is accurate.  This was reported on X86-32 with !SMP because !SMP\nallows the negative counters to be visible.  The fact that it is the bug\nshould theoritically be possible there.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-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": "a582a738c763e106f47eab24b8146c698a9c700b",
      "tree": "aaa5eda6bae7adc04dc5cbd513f5c25ac684af97",
      "parents": [
        "5db8a73a8d7cc6a66afbf25ed7fda338caa8f5f9"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Jun 15 15:08:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:02 2011 -0700"
      },
      "message": "compaction: checks correct fragmentation index\n\nfragmentation_index() returns -1000 when the allocation might succeed\nThis doesn\u0027t match the comment and code in compaction_suitable(). I\nthought compaction_suitable should return COMPACT_PARTIAL in -1000\ncase, because in this case allocation could succeed depending on\nwatermarks.\n\nThe impact of this is that compaction starts and compact_finished() is\ncalled which rechecks the watermarks and the free lists.  It should have\nthe same result in that compaction should not start but is more expensive.\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5db8a73a8d7cc6a66afbf25ed7fda338caa8f5f9",
      "tree": "ef9de80dcee654053f3725570b0e053d2812d66a",
      "parents": [
        "d2c32258798f813dc2be6cbc32f78aa5ac5cb205"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Wed Jun 15 15:08:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm/memory-failure.c: fix page isolated count mismatch\n\nPages isolated for migration are accounted with the vmstat counters\nNR_ISOLATE_[ANON|FILE].  Callers of migrate_pages() are expected to\nincrement these counters when pages are isolated from the LRU.  Once the\npages have been migrated, they are put back on the LRU or freed and the\nisolated count is decremented.\n\nMemory failure is not properly accounting for pages it isolates causing\nthe NR_ISOLATED counters to be negative.  On SMP builds, this goes\nunnoticed as negative counters are treated as 0 due to expected per-cpu\ndrift.  On UP builds, the counter is treated by too_many_isolated() as a\nlarge value causing processes to enter D state during page reclaim or\ncompaction.  This patch accounts for pages isolated by memory failure\ncorrectly.\n\n[mel@csn.ul.ie: rewrote changelog]\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fbc29a25e484be073e7d762c9f7f1d4bf8aecc48",
      "tree": "276a9e1e0c3d8f653dd821c049ec4b6940a06c1d",
      "parents": [
        "26fe616844491a41a1abc02e29f7a9d1ec2f8ddb"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: avoid percpu cached charge draining at softlimit\n\nBased on Michal Hocko\u0027s comment.\n\nWe are not draining per cpu cached charges during soft limit reclaim\nbecause background reclaim doesn\u0027t care about charges.  It tries to free\nsome memory and charges will not give any.\n\nCached charges might influence only selection of the biggest soft limit\noffender but as the call is done only after the selection has been already\ndone it makes no change.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-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": "26fe616844491a41a1abc02e29f7a9d1ec2f8ddb",
      "tree": "cd8747ad8e96d6ebda771db41b96db11a4b09f26",
      "parents": [
        "7ae534d074e01e54d5cfbc9734b73fdfc855501f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix percpu cached charge draining frequency\n\nFor performance, memory cgroup caches some \"charge\" from res_counter into\nper cpu cache.  This works well but because it\u0027s cache, it needs to be\nflushed in some cases.  Typical cases are\n\n   1. when someone hit limit.\n\n   2. when rmdir() is called and need to charges to be 0.\n\nBut \"1\" has problem.\n\nRecently, with large SMP machines, we see many kworker runs because of\nflushing memcg\u0027s cache.  Bad things in implementation are that even if a\ncpu contains a cache for memcg not related to a memcg which hits limit,\ndrain code is called.\n\nThis patch does\n        A) check percpu cache contains a useful data or not.\n        B) check other asynchronous percpu draining doesn\u0027t run.\n        C) don\u0027t call local cpu callback.\n\n(*)This patch avoid changing the calling condition with hard-limit.\n\nWhen I run \"cat 1Gfile \u003e /dev/null\" under 300M limit memcg,\n\n[Before]\n13767 kamezawa  20   0 98.6m  424  416 D 10.0  0.0   0:00.61 cat\n   58 root      20   0     0    0    0 S  0.6  0.0   0:00.09 kworker/2:1\n   60 root      20   0     0    0    0 S  0.6  0.0   0:00.08 kworker/4:1\n    4 root      20   0     0    0    0 S  0.3  0.0   0:00.02 kworker/0:0\n   57 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/1:1\n   61 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/5:1\n   62 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/6:1\n   63 root      20   0     0    0    0 S  0.3  0.0   0:00.05 kworker/7:1\n\n[After]\n 2676 root      20   0 98.6m  416  416 D  9.3  0.0   0:00.87 cat\n 2626 kamezawa  20   0 15192 1312  920 R  0.3  0.0   0:00.28 top\n    1 root      20   0 19384 1496 1204 S  0.0  0.0   0:00.66 init\n    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd\n    3 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0\n    4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0\n\n[akpm@linux-foundation.org: make percpu_charge_mutex static, tweak comments]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nTested-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ae534d074e01e54d5cfbc9734b73fdfc855501f",
      "tree": "8c815762779fd79cc83db788aa29e6239212c3f4",
      "parents": [
        "733eda7ac316cd4e550fa096e4ed42356dc546e7"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix wrong check of noswap with softlimit\n\nHierarchical reclaim doesn\u0027t swap out if memsw and resource limits are\nthye same (memsw_is_minimum \u003d\u003d true) because we would hit mem+swap limit\nanyway (during hard limit reclaim).\n\nIf it comes to the soft limit we shouldn\u0027t consider memsw_is_minimum at\nall because it doesn\u0027t make much sense.  Either the soft limit is bellow\nthe hard limit and then we cannot hit mem+swap limit or the direct reclaim\ntakes a precedence.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37573e8c718277103f61f03741bdc5606d31b07e",
      "tree": "7142211508420a8ea90b8ae01bfa5ee93ffa1a44",
      "parents": [
        "8957712710e045044e3c44375c6a87d7ffa17d51"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "memcg: fix init_page_cgroup nid with sparsemem\n\nCommit 21a3c9646873 (\"memcg: allocate memory cgroup structures in local\nnodes\") makes page_cgroup allocation as NUMA aware.  But that caused a\nproblem https://bugzilla.kernel.org/show_bug.cgi?id\u003d36192.\n\nThe problem was getting a NID from invalid struct pages, which was not\ninitialized because it was out-of-node, out of [node_start_pfn,\nnode_end_pfn)\n\nNow, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn.  But\nthis may scan a pfn which is not on any node and can access memmap which\nis not initialized.\n\nThis makes page_cgroup_init() for SPARSEMEM node aware and remove a code\nto get nid from page-\u003eflags.  (Then, we\u0027ll use valid NID always.)\n\n[akpm@linux-foundation.org: try to fix up comments]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8957712710e045044e3c44375c6a87d7ffa17d51",
      "tree": "94d801709cb1a57d12695ba9b2f8da42996e178e",
      "parents": [
        "45d16f09ddd66597e561876f5652c05bf986360a"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm: memory.numa_stat: fix file permission\n\nCommit 406eb0c9ba76 (\"memcg: add memory.numastat api for numa\nstatistics\") adds memory.numa_stat file for memory cgroup.  But the file\npermissions are wrong.\n\n  [kamezawa@bluextal linux-2.6]$ ls -l /cgroup/memory/A/memory.numa_stat\n  ---------- 1 root root 0 Jun  9 18:36 /cgroup/memory/A/memory.numa_stat\n\nThis patch fixes the permission as\n\n  [root@bluextal kamezawa]# ls -l /cgroup/memory/A/memory.numa_stat\n  -r--r--r-- 1 root root 0 Jun 10 16:49 /cgroup/memory/A/memory.numa_stat\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b0320c7b7d1ac1bd5c2d9dff3258524ab39bad32",
      "tree": "bdac09caec787a28b1b31fea3c2911808e9cb6d1",
      "parents": [
        "959ecc48fc7506b9d7825ea70e40d92d9b308033"
      ],
      "author": {
        "name": "Rafael Aquini",
        "email": "aquini@linux.com",
        "time": "Wed Jun 15 15:08:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm: fix negative commitlimit when gigantic hugepages are allocated\n\nWhen 1GB hugepages are allocated on a system, free(1) reports less\navailable memory than what really is installed in the box.  Also, if the\ntotal size of hugepages allocated on a system is over half of the total\nmemory size, CommitLimit becomes a negative number.\n\nThe problem is that gigantic hugepages (order \u003e MAX_ORDER) can only be\nallocated at boot with bootmem, thus its frames are not accounted to\n\u0027totalram_pages\u0027.  However, they are accounted to hugetlb_total_pages()\n\nWhat happens to turn CommitLimit into a negative number is this\ncalculation, in fs/proc/meminfo.c:\n\n        allowed \u003d ((totalram_pages - hugetlb_total_pages())\n                * sysctl_overcommit_ratio / 100) + total_swap_pages;\n\nA similar calculation occurs in __vm_enough_memory() in mm/mmap.c.\n\nAlso, every vm statistic which depends on \u0027totalram_pages\u0027 will render\nconfusing values, as if system were \u0027missing\u0027 some part of its memory.\n\nImpact of this bug:\n\nWhen gigantic hugepages are allocated and sysctl_overcommit_memory \u003d\u003d\nOVERCOMMIT_NEVER.  In a such situation, __vm_enough_memory() goes through\nthe mentioned \u0027allowed\u0027 calculation and might end up mistakenly returning\n-ENOMEM, thus forcing the system to start reclaiming pages earlier than it\nwould be ususal, and this could cause detrimental impact to overall\nsystem\u0027s performance, depending on the workload.\n\nBesides the aforementioned scenario, I can only think of this causing\nannoyances with memory reports from /proc/meminfo and free(1).\n\n[akpm@linux-foundation.org: standardize comment layout]\nReported-by: Russ Anderson \u003crja@sgi.com\u003e\nSigned-off-by: Rafael Aquini \u003caquini@linux.com\u003e\nAcked-by: Russ Anderson \u003crja@sgi.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "959ecc48fc7506b9d7825ea70e40d92d9b308033",
      "tree": "31dc427bf7153c8bf47d72413386c4eb632a602d",
      "parents": [
        "de695e159e3fd679594eb45449d2638d54434c32"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:01 2011 -0700"
      },
      "message": "mm/memory_hotplug.c: fix building of node hotplug zonelist\n\nDuring memory hotplug we refresh zonelists when we online a page in a new\nzone.  It means that the node\u0027s zonelist is not initialized until pages\nare onlined.  So for example, \"nid\" passed by MEM_GOING_ONLINE notifier\nwill point to NODE_DATA(nid) which has no zone fallback list.  Moreover,\nif we hot-add cpu-only nodes, alloc_pages() will do no fallback.\n\nThis patch makes a zonelist when a new pgdata is available.\n\nNote: in production, at fujitsu, memory should be onlined before cpu\n      and our server didn\u0027t have any memory-less nodes and had no problems.\n\n      But recent changes in MEM_GOING_ONLINE+page_cgroup\n      will access not initialized zonelist of node.\n      Anyway, there are memory-less node and we need some care.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003cdave@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": "3957c7768e5ea02fd3345176ddd340f820e5d285",
      "tree": "b3cbefeea3ac3adea0ca9d49e140503c9e5754b6",
      "parents": [
        "5f1a19070b16c20cdc71ed0e981bfa19f8f6a4ee"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Wed Jun 15 15:08:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:00 2011 -0700"
      },
      "message": "mm: compaction: fix special case -1 order checks\n\nCommit 56de7263fcf3 (\"mm: compaction: direct compact when a high-order\nallocation fails\") introduced a check for cc-\u003eorder \u003d\u003d -1 in\ncompact_finished.  We should continue compacting in that case because\nthe request came from userspace and there is no particular order to\ncompact for.  Similar check has been added by 82478fb7 (mm: compaction:\nprevent division-by-zero during user-requested compaction) for\ncompaction_suitable.\n\nThe check is, however, done after zone_watermark_ok which uses order as a\nright hand argument for shifts.  Not only watermark check is pointless if\nwe can break out without it but it also uses 1 \u003c\u003c -1 which is not well\ndefined (at least from C standard).  Let\u0027s move the -1 check above\nzone_watermark_ok.\n\n[minchan.kim@gmail.com\u003e - caught compaction_suitable]\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hioryu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f1a19070b16c20cdc71ed0e981bfa19f8f6a4ee",
      "tree": "f3eaeb7a040e2484d71485118d58e34eb0760bf3",
      "parents": [
        "4bbd61fb9726808e72ab2aa440401f6e5e1aa8f7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jun 15 15:08:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:04:00 2011 -0700"
      },
      "message": "mm: fix wrong kunmap_atomic() pointer\n\nRunning a ktest.pl test, I hit the following bug on x86_32:\n\n  ------------[ cut here ]------------\n  WARNING: at arch/x86/mm/highmem_32.c:81 __kunmap_atomic+0x64/0xc1()\n   Hardware name:\n  Modules linked in:\n  Pid: 93, comm: sh Not tainted 2.6.39-test+ #1\n  Call Trace:\n   [\u003cc04450da\u003e] warn_slowpath_common+0x7c/0x91\n   [\u003cc042f5df\u003e] ? __kunmap_atomic+0x64/0xc1\n   [\u003cc042f5df\u003e] ? __kunmap_atomic+0x64/0xc1^M\n   [\u003cc0445111\u003e] warn_slowpath_null+0x22/0x24\n   [\u003cc042f5df\u003e] __kunmap_atomic+0x64/0xc1\n   [\u003cc04d4a22\u003e] unmap_vmas+0x43a/0x4e0\n   [\u003cc04d9065\u003e] exit_mmap+0x91/0xd2\n   [\u003cc0443057\u003e] mmput+0x43/0xad\n   [\u003cc0448358\u003e] exit_mm+0x111/0x119\n   [\u003cc044855f\u003e] do_exit+0x1ff/0x5fa\n   [\u003cc0454ea2\u003e] ? set_current_blocked+0x3c/0x40\n   [\u003cc0454f24\u003e] ? sigprocmask+0x7e/0x8e\n   [\u003cc0448b55\u003e] do_group_exit+0x65/0x88\n   [\u003cc0448b90\u003e] sys_exit_group+0x18/0x1c\n   [\u003cc0c3915f\u003e] sysenter_do_call+0x12/0x38\n  ---[ end trace 8055f74ea3c0eb62 ]---\n\nRunning a ktest.pl git bisect, found the culprit: commit e303297e6c3a\n(\"mm: extended batches for generic mmu_gather\")\n\nBut although this was the commit triggering the bug, it was not the one\noriginally responsible for the bug.  That was commit d16dfc550f53 (\"mm:\nmmu_gather rework\").\n\nThe code in zap_pte_range() has something that looks like the following:\n\n\tpte \u003d  pte_offset_map_lock(mm, pmd, addr, \u0026ptl);\n\tdo {\n\t\t[...]\n\t} while (pte++, addr +\u003d PAGE_SIZE, addr !\u003d end);\n\tpte_unmap_unlock(pte - 1, ptl);\n\nThe pte starts off pointing at the first element in the page table\ndirectory that was returned by the pte_offset_map_lock().  When it\u0027s done\nwith the page, pte will be pointing to anything between the next entry and\nthe first entry of the next page inclusive.  By doing a pte - 1, this puts\nthe pte back onto the original page, which is all that pte_unmap_unlock()\nneeds.\n\nIn most archs (64 bit), this is not an issue as the pte is ignored in the\npte_unmap_unlock().  But on 32 bit archs, where things may be kmapped, it\nis essential that the pte passed to pte_unmap_unlock() resides on the same\npage that was given by pte_offest_map_lock().\n\nThe problem came in d16dfc55 (\"mm: mmu_gather rework\") where it introduced\na \"break;\" from the while loop.  This alone did not seem to easily trigger\nthe bug.  But the modifications made by e303297e6 caused that \"break;\" to\nbe hit on the first iteration, before the pte++.\n\nThe pte not being incremented will now cause pte_unmap_unlock(pte - 1) to\nbe pointing to the previous page.  This will cause the wrong page to be\nunmapped, and also trigger the warning above.\n\nThe simple solution is to just save the pointer given by\npte_offset_map_lock() and use it in the unlock.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d7911ef30cb7bec52234c2b7a5c275ac8f07905a",
      "tree": "c3d9dc8ffc5d9478da434faecc27759ee34edf83",
      "parents": [
        "83cd81a34357a632509f7491eec81e62e71d65f7"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan: implement swap token priority aging\n\nWhile testing for memcg aware swap token, I observed a swap token was\noften grabbed an intermittent running process (eg init, auditd) and they\nnever release a token.\n\nWhy?\n\nSome processes (eg init, auditd, audispd) wake up when a process exiting.\nAnd swap token can be get first page-in process when a process exiting\nmakes no swap token owner.  Thus such above intermittent running process\noften get a token.\n\nAnd currently, swap token priority is only decreased at page fault path.\nThen, if the process sleep immediately after to grab swap token, the swap\ntoken priority never be decreased.  That\u0027s obviously undesirable.\n\nThis patch implement very poor (and lightweight) priority aging.  It only\nbe affect to the above corner case and doesn\u0027t change swap tendency\nworkload performance (eg multi process qsbench load)\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83cd81a34357a632509f7491eec81e62e71d65f7",
      "tree": "cc96e65bd3000fd9090dacfabdd8810e9c66e0c9",
      "parents": [
        "a433658c30974fc87ba3ff52d7e4e6299762aa3d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan: implement swap token trace\n\nThis is useful for observing swap token activity.\n\nexample output:\n\n             zsh-1845  [000]   598.962716: update_swap_token_priority:\nmm\u003dffff88015eaf7700 old_prio\u003d1 new_prio\u003d0\n          memtoy-1830  [001]   602.033900: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d947 new_prio\u003d949\n          memtoy-1830  [000]   602.041509: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d949 new_prio\u003d951\n          memtoy-1830  [000]   602.051959: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d951 new_prio\u003d953\n          memtoy-1830  [000]   602.052188: update_swap_token_priority:\nmm\u003dffff880037a45880 old_prio\u003d953 new_prio\u003d955\n          memtoy-1830  [001]   602.427184: put_swap_token:\ntoken_mm\u003dffff880037a45880\n             zsh-1789  [000]   602.427281: replace_swap_token:\nold_token_mm\u003d          (null) old_prio\u003d0 new_token_mm\u003dffff88015eaf7018\nnew_prio\u003d2\n             zsh-1789  [001]   602.433456: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d2 new_prio\u003d4\n             zsh-1789  [000]   602.437613: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d4 new_prio\u003d6\n             zsh-1789  [000]   602.443924: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d6 new_prio\u003d8\n             zsh-1789  [000]   602.451873: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d8 new_prio\u003d10\n             zsh-1789  [001]   602.462639: update_swap_token_priority:\nmm\u003dffff88015eaf7018 old_prio\u003d10 new_prio\u003d12\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel\u003criel@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a433658c30974fc87ba3ff52d7e4e6299762aa3d",
      "tree": "8df65e22af520ca5c020281763e6874d0bb51bc5",
      "parents": [
        "e1bbd19bc4afef7adb80cca163800391c4f5773d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan,memcg: memcg aware swap token\n\nCurrently, memcg reclaim can disable swap token even if the swap token mm\ndoesn\u0027t belong in its memory cgroup.  It\u0027s slightly risky.  If an admin\ncreates very small mem-cgroup and silly guy runs contentious heavy memory\npressure workload, every tasks are going to lose swap token and then\nsystem may become unresponsive.  That\u0027s bad.\n\nThis patch adds \u0027memcg\u0027 parameter into disable_swap_token().  and if the\nparameter doesn\u0027t match swap token, VM doesn\u0027t disable it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0164f69d0cf1a6abbc936851f5b72ece92187cda",
      "tree": "000bb234b98d76ce0b5195a3ee53a505aa0d3d86",
      "parents": [
        "f300ea499721ca208fc4714b9105bfd7e9f75be0"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Jun 15 15:08:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "mm/memory.c: fix kernel-doc notation\n\nFix new kernel-doc warnings in mm/memory.c:\n\n  Warning(mm/memory.c:1327): No description found for parameter \u0027tlb\u0027\n  Warning(mm/memory.c:1327): Excess function parameter \u0027tlbp\u0027 description in \u0027unmap_vmas\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@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": "f300ea499721ca208fc4714b9105bfd7e9f75be0",
      "tree": "afa4cb47cf030647491066b816df7f5fbf239bc6",
      "parents": [
        "ada9c93312f7ec49514c68c211595ce2601cebae"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Wed Jun 15 15:08:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:58 2011 -0700"
      },
      "message": "mm: remove khugepaged double thp vmstat update with CONFIG_NUMA\u003dn\n\nJohannes noticed the vmstat update is already taken care of by\nkhugepaged_alloc_hugepage() internally.  The only places that are required\nto update the vmstat are the callers of alloc_hugepage (callers of\nkhugepaged_alloc_hugepage aren\u0027t).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@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": "40779859de0f73b40390c6401a024d06cf024290",
      "tree": "b799c66c3886a8be5c40c3c382f1a5feda7dabef",
      "parents": [
        "ffdb8f1bfbd9cef1394f5d3c4a774015d4ac0f97",
        "a947eb95ea03199da7408a64baa97fbb613e9b84"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 13 13:00:53 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 13 13:00:53 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  SLAB: Record actual last user of freed objects.\n  slub: always align cpu_slab to honor cmpxchg_double requirement\n"
    },
    {
      "commit": "8397345172aa5cdcbc133977af9d525f45b874ea",
      "tree": "9b1077a62bbe06d20f1e49d1aa842db0435be085",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603",
        "e6bc45d65df8599fdbae73be9cec4ceed274db53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: make unlink() and rmdir() return ENOENT in preference to EROFS\n  lmLogOpen() broken failure exit\n  usb: remove bad dput after dentry_unhash\n  more conservative S_NOSEC handling\n"
    },
    {
      "commit": "e0dcd8a05be438b3d2e49ef61441ea3a463663f8",
      "tree": "a498479e6015180c26c5e5e37214b757b62098b3",
      "parents": [
        "0d6925d43bd637fe4da7acb7bf1d0b92d38ab34b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sun Jun 05 22:03:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 06 18:00:27 2011 +0900"
      },
      "message": "mm: fix ENOSPC returned by handle_mm_fault()\n\nAl Viro observes that in the hugetlb case, handle_mm_fault() may return\na value of the kind ENOSPC when its caller is expecting a value of the\nkind VM_FAULT_SIGBUS: fix alloc_huge_page()\u0027s failure returns.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e1f1de02c2275d7172e18dc4e7c2065777611bf",
      "tree": "15e9d202e64275cdbff6ed1d54804da5966d7d8d",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "message": "more conservative S_NOSEC handling\n\nCaching \"we have already removed suid/caps\" was overenthusiastic as merged.\nOn network filesystems we might have had suid/caps set on another client,\nsilently picked by this client on revalidate, all of that *without* clearing\nthe S_NOSEC flag.\n\nAFAICS, the only reasonably sane way to deal with that is\n\t* new superblock flag; unless set, S_NOSEC is not going to be set.\n\t* local block filesystems set it in their -\u003emount() (more accurately,\nmount_bdev() does, so does btrfs -\u003emount(), users of mount_bdev() other than\nlocal block ones clear it)\n\t* if any network filesystem (or a cluster one) wants to use S_NOSEC,\nit\u0027ll need to set MS_NOSEC in sb-\u003es_flags *AND* take care to clear S_NOSEC when\ninode attribute changes are picked from other clients.\n\nIt\u0027s not an earth-shattering hole (anybody that can set suid on another client\nwill almost certainly be able to write to the file before doing that anyway),\nbut it\u0027s a bug that needs fixing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a947eb95ea03199da7408a64baa97fbb613e9b84",
      "tree": "f3a6c46b2c1b19a332a009d0e5ddb7512e21a40f",
      "parents": [
        "d4d84fef6d0366b585b7de13527a0faeca84d9ce"
      ],
      "author": {
        "name": "Suleiman Souhlal",
        "email": "ssouhlal@FreeBSD.org",
        "time": "Thu Jun 02 00:16:42 2011 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Jun 03 19:33:50 2011 +0300"
      },
      "message": "SLAB: Record actual last user of freed objects.\n\nCurrently, when using CONFIG_DEBUG_SLAB, we put in kfree() or\nkmem_cache_free() as the last user of free objects, which is not\nvery useful, so change it to the caller of those functions instead.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "d4d84fef6d0366b585b7de13527a0faeca84d9ce",
      "tree": "c67449976f955cff4a2fe8a74affc2dd67c37b7e",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Chris Metcalf",
        "email": "cmetcalf@tilera.com",
        "time": "Thu Jun 02 10:19:41 2011 -0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Jun 03 19:33:49 2011 +0300"
      },
      "message": "slub: always align cpu_slab to honor cmpxchg_double requirement\n\nOn an architecture without CMPXCHG_LOCAL but with DEBUG_VM enabled,\nthe VM_BUG_ON() in __pcpu_double_call_return_bool() will cause an early\npanic during boot unless we always align cpu_slab properly.\n\nIn principle we could remove the alignment-testing VM_BUG_ON() for\narchitectures that don\u0027t have CMPXCHG_LOCAL, but leaving it in means\nthat new code will tend not to break x86 even if it is introduced\non another platform, and it\u0027s low cost to require alignment.\n\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c",
      "tree": "7318c8602f61c2052df308920bd681539f760555",
      "parents": [
        "f0f52a9463839c52a63c05d6e7d4a330d94a9794"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 02 06:11:24 2011 +0900"
      },
      "message": "Revert \"mm: fail GFP_DMA allocations when ZONE_DMA is not configured\"\n\nThis reverts commit a197b59ae6e8bee56fcef37ea2482dc08414e2ac.\n\nAs rmk says:\n \"Commit a197b59ae6e8 (mm: fail GFP_DMA allocations when ZONE_DMA is not\n  configured) is causing regressions on ARM with various drivers which\n  use GFP_DMA.\n\n  The behaviour up until now has been to silently ignore that flag when\n  CONFIG_ZONE_DMA is not enabled, and to allocate from the normal zone.\n  However, as a result of the above commit, such allocations now fail\n  which causes drivers to fail.  These are regressions compared to the\n  previous kernel version.\"\n\nso just revert it.\n\nRequested-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bc658c96037fc87463f0703ad2ea7c895344cb7e",
      "tree": "eed6d7b83dfa04b242231bb7a5c431348ea92c4d",
      "parents": [
        "139f37f5e14cd883eee2a8a36289f544b5390a44"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun May 29 10:33:44 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 09:25:48 2011 -0700"
      },
      "message": "mm, rmap: Add yet more comments to page_get_anon_vma/page_lock_anon_vma\n\nInspired by an analysis from Hugh on why again all this doesn\u0027t explode\nin our face.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eee0f252c6537da2e883f75d22cff1427515eaf3",
      "tree": "87ca6a49dd2d299b6cb4146ff3295bb625519b05",
      "parents": [
        "5dbe0af47f8a8f968bac2991c3ec974c6e3eaabc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sat May 28 13:20:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 16:55:32 2011 -0700"
      },
      "message": "mm: fix page_lock_anon_vma leaving mutex locked\n\nOn one machine I\u0027ve been getting hangs, a page fault\u0027s anon_vma_prepare()\nwaiting in anon_vma_lock(), other processes waiting for that page\u0027s lock.\n\nThis is a replay of last year\u0027s f18194275c39 \"mm: fix hang on\nanon_vma-\u003eroot-\u003elock\".\n\nThe new page_lock_anon_vma() places too much faith in its refcount: when\nit has acquired the mutex_trylock(), it\u0027s possible that a racing task in\nanon_vma_alloc() has just reallocated the struct anon_vma, set refcount\nto 1, and is about to reset its anon_vma-\u003eroot.\n\nFix this by saving anon_vma-\u003eroot, and relying on the usual page_mapped()\ncheck instead of a refcount check: if page is still mapped, the anon_vma\nis still ours; if page is not still mapped, we\u0027re no longer interested.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dbe0af47f8a8f968bac2991c3ec974c6e3eaabc",
      "tree": "e936955d61fc2a69e36b2e9276f5ad7585134255",
      "parents": [
        "826267cf1e6c6899eda1325a19f1b1d15c558b20"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sat May 28 13:17:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 16:09:26 2011 -0700"
      },
      "message": "mm: fix kernel BUG at mm/rmap.c:1017!\n\nI\u0027ve hit the \"address \u003e\u003d vma-\u003evm_end\" check in do_page_add_anon_rmap()\njust once.  The stack showed khugepaged allocation trying to compact\npages: the call to page_add_anon_rmap() coming from remove_migration_pte().\n\nThat path holds anon_vma lock, but does not hold mmap_sem: it can\ntherefore race with a split_vma(), and in commit 5f70b962ccc2 \"mmap:\navoid unnecessary anon_vma lock\" we just took away the anon_vma lock\nprotection when adjusting vma-\u003evm_end.\n\nI don\u0027t think that particular BUG_ON ever caught anything interesting,\nso better replace it by a comment, than reinstate the anon_vma locking.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "826267cf1e6c6899eda1325a19f1b1d15c558b20",
      "tree": "f022fabd26f035888c4fec972ff54163378b8962",
      "parents": [
        "36947a76826111e661a26cb0f668a5be6cc3ddb4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sat May 28 13:14:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 16:09:26 2011 -0700"
      },
      "message": "tmpfs: fix race between truncate and writepage\n\nWhile running fsx on tmpfs with a memhog then swapoff, swapoff was hanging\n(interruptibly), repeatedly failing to locate the owner of a 0xff entry in\nthe swap_map.\n\nAlthough shmem_writepage() does abandon when it sees incoming page index\nis beyond eof, there was still a window in which shmem_truncate_range()\ncould come in between writepage\u0027s dropping lock and updating swap_map,\nfind the half-completed swap_map entry, and in trying to free it,\nleave it in a state that swap_shmem_alloc() could not correct.\n\nArguably a bug in __swap_duplicate()\u0027s and swap_entry_free()\u0027s handling\nof the different cases, but easiest to fix by moving swap_shmem_alloc()\nunder cover of the lock.\n\nMore interesting than the bug: it\u0027s been there since 2.6.33, why could\nI not see it with earlier kernels?  The mmotm of two weeks ago seems to\nhave some magic for generating races, this is just one of three I found.\n\nWith yesterday\u0027s git I first saw this in mainline, bisected in search of\nthat magic, but the easy reproducibility evaporated.  Oh well, fix the bug.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36947a76826111e661a26cb0f668a5be6cc3ddb4",
      "tree": "ed5d92c9d71f9ca68e6a3583a10ebf911c9c44dd",
      "parents": [
        "a947e23a8ec04bccbfe98c5a2d64cd1f88b612d5",
        "69b4573296469fd3f70cf7044693074980517067"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 13:03:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 13:03:41 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (36 commits)\n  Cache xattr security drop check for write v2\n  fs: block_page_mkwrite should wait for writeback to finish\n  mm: Wait for writeback when grabbing pages to begin a write\n  configfs: remove unnecessary dentry_unhash on rmdir, dir rename\n  fat: remove unnecessary dentry_unhash on rmdir, dir rename\n  hpfs: remove unnecessary dentry_unhash on rmdir, dir rename\n  minix: remove unnecessary dentry_unhash on rmdir, dir rename\n  fuse: remove unnecessary dentry_unhash on rmdir, dir rename\n  coda: remove unnecessary dentry_unhash on rmdir, dir rename\n  afs: remove unnecessary dentry_unhash on rmdir, dir rename\n  affs: remove unnecessary dentry_unhash on rmdir, dir rename\n  9p: remove unnecessary dentry_unhash on rmdir, dir rename\n  ncpfs: fix rename over directory with dangling references\n  ncpfs: document dentry_unhash usage\n  ecryptfs: remove unnecessary dentry_unhash on rmdir, dir rename\n  hostfs: remove unnecessary dentry_unhash on rmdir, dir rename\n  hfsplus: remove unnecessary dentry_unhash on rmdir, dir rename\n  hfs: remove unnecessary dentry_unhash on rmdir, dir rename\n  omfs: remove unnecessary dentry_unhash on rmdir, dir rneame\n  udf: remove unnecessary dentry_unhash from rmdir, dir rename\n  ...\n"
    },
    {
      "commit": "c4a227d89f758e582fd167bb15245f2704de99ef",
      "tree": "f5b6e0091e6543c14d1cd7cf1f93e097a96bbd64",
      "parents": [
        "87367a0b71a5188e34a913c05673b5078f71a64d",
        "f506b3dc0ec454a16d40cab9ee5d75435b39dc50"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 12:55:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 28 12:55:55 2011 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (25 commits)\n  perf: Fix SIGIO handling\n  perf top: Don\u0027t stop if no kernel symtab is found\n  perf top: Handle kptr_restrict\n  perf top: Remove unused macro\n  perf events: initialize fd array to -1 instead of 0\n  perf tools: Make sure kptr_restrict warnings fit 80 col terms\n  perf tools: Fix build on older systems\n  perf symbols: Handle /proc/sys/kernel/kptr_restrict\n  perf: Remove duplicate headers\n  ftrace: Add internal recursive checks\n  tracing: Update btrfs\u0027s tracepoints to use u64 interface\n  tracing: Add __print_symbolic_u64 to avoid warnings on 32bit machine\n  ftrace: Set ops-\u003eflag to enabled even on static function tracing\n  tracing: Have event with function tracer check error return\n  ftrace: Have ftrace_startup() return failure code\n  jump_label: Check entries limit in __jump_label_update\n  ftrace/recordmcount: Avoid STT_FUNC symbols as base on ARM\n  scripts/tags.sh: Add magic for trace-events for etags too\n  scripts/tags.sh: Fix ctags for DEFINE_EVENT()\n  x86/ftrace: Fix compiler warning in ftrace.c\n  ...\n"
    },
    {
      "commit": "69b4573296469fd3f70cf7044693074980517067",
      "tree": "aea41eacb2a0f32748145a59bb8dc300b4485f36",
      "parents": [
        "d76ee18a8551e33ad7dbd55cac38bc7b094f3abb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Sat May 28 08:25:51 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 12:02:09 2011 -0400"
      },
      "message": "Cache xattr security drop check for write v2\n\nSome recent benchmarking on btrfs showed that a major scaling bottleneck\non large systems on btrfs is currently the xattr lookup on every write.\n\nWhy xattr lookup on every write I hear you ask?\n\nwrite wants to drop suid and security related xattrs that could set o\ncapabilities for executables.  To do that it currently looks up\nsecurity.capability on EVERY write (even for non executables) to decide\nwhether to drop it or not.\n\nIn btrfs this causes an additional tree walk, hitting some per file system\nlocks and quite bad scalability. In a simple read workload on a 8S\nsystem I saw over 90% CPU time in spinlocks related to that.\n\nChris Mason tells me this is also a problem in ext4, where it hits\nthe global mbcache lock.\n\nThis patch adds a simple per inode to avoid this problem.  We only\ndo the lookup once per file and then if there is no xattr cache\nthe decision. All xattr changes clear the flag.\n\nI also used the same flag to avoid the suid check, although\nthat one is pretty cheap.\n\nA file system can also set this flag when it creates the inode,\nif it has a cheap way to do so.  This is done for some common file systems\nin followon patches.\n\nWith this patch a major part of the lock contention disappears\nfor btrfs. Some testing on smaller systems didn\u0027t show significant\nperformance changes, but at least it helps the larger systems\nand is generally more efficient.\n\nv2: Rename is_sgid. add file system helper.\nCc: chris.mason@oracle.com\nCc: josef@redhat.com\nCc: viro@zeniv.linux.org.uk\nCc: agruen@linbit.com\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d08bcc887a1c8d12be8d81f747ffa2e8a44b67b",
      "tree": "258f4e3d384e451c921c5e0c503fd368f236a20a",
      "parents": [
        "98702467f829177b3993f17da9fe5c202d160e5e"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Fri May 27 12:23:34 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 01:03:21 2011 -0400"
      },
      "message": "mm: Wait for writeback when grabbing pages to begin a write\n\nWhen grabbing a page for a buffered IO write, the mm should wait for writeback\non the page to complete so that the page does not become writable during the IO\noperation.  This change is needed to provide page stability during writes for\nall filesystems.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d6a72fe465f4c54654a1d5488daeb820b4ecf275",
      "tree": "1b581d3b3452b47ba35e1ee3c96d05c030ed9726",
      "parents": [
        "b1d2dc3c06d8da7d58fb43d7123a91c1d6a4f576",
        "b1cff0ad1062621ae63cb6c5dc4165191fe2e9f1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 27 14:28:09 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 27 14:28:09 2011 +0200"
      },
      "message": "Merge branch \u0027tip/perf/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/urgent\n"
    },
    {
      "commit": "dc7acbb2518f250050179c8581a972df3b6a24f1",
      "tree": "bc14a36d5cfe1a1aa0d9a2a18ea6f19ad88a8958",
      "parents": [
        "f01e1af445fac107e91d62a2d59dd535f633810b",
        "4bf0ff24e371ce71521ccb21513203facfd8491f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 19:01:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 19:01:15 2011 -0700"
      },
      "message": "Merge branch \u0027upstream/tidy-xen-mmu-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen\n\n* \u0027upstream/tidy-xen-mmu-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen:\n  xen: fix compile without CONFIG_XEN_DEBUG_FS\n  Use arbitrary_virt_to_machine() to deal with ioremapped pud updates.\n  Use arbitrary_virt_to_machine() to deal with ioremapped pmd updates.\n  xen/mmu: remove all ad-hoc stats stuff\n  xen: use normal virt_to_machine for ptes\n  xen: make a pile of mmu pvop functions static\n  vmalloc: remove vmalloc_sync_all() from alloc_vm_area()\n  xen: condense everything onto xen_set_pte\n  xen: use mmu_update for xen_set_pte_at()\n  xen: drop all the special iomap pte paths.\n"
    },
    {
      "commit": "456f998ec817ebfa254464be4f089542fa390645",
      "tree": "5976aa500638f0bbade1a672233cad71765b89b8",
      "parents": [
        "406eb0c9ba765eb066406fd5ce9d5e2b169a4d5a"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "memcg: add the pagefault count into memcg stats\n\nTwo new stats in per-memcg memory.stat which tracks the number of page\nfaults and number of major page faults.\n\n  \"pgfault\"\n  \"pgmajfault\"\n\nThey are different from \"pgpgin\"/\"pgpgout\" stat which count number of\npages charged/discharged to the cgroup and have no meaning of reading/\nwriting page to disk.\n\nIt is valuable to track the two stats for both measuring application\u0027s\nperformance as well as the efficiency of the kernel page reclaim path.\nCounting pagefaults per process is useful, but we also need the aggregated\nvalue since processes are monitored and controlled in cgroup basis in\nmemcg.\n\nFunctional test: check the total number of pgfault/pgmajfault of all\nmemcgs and compare with global vmstat value:\n\n  $ cat /proc/vmstat | grep fault\n  pgfault 1070751\n  pgmajfault 553\n\n  $ cat /dev/cgroup/memory.stat | grep fault\n  pgfault 1071138\n  pgmajfault 553\n  total_pgfault 1071142\n  total_pgmajfault 553\n\n  $ cat /dev/cgroup/A/memory.stat | grep fault\n  pgfault 199\n  pgmajfault 0\n  total_pgfault 199\n  total_pgmajfault 0\n\nPerformance test: run page fault test(pft) wit 16 thread on faulting in\n15G anon pages in 16G container.  There is no regression noticed on the\n\"flt/cpu/s\"\n\nSample output from pft:\n\n  TAG pft:anon-sys-default:\n    Gb  Thr CLine   User     System     Wall    flt/cpu/s fault/wsec\n    15   16   1     0.67s   233.41s    14.76s   16798.546 266356.260\n\n  +-------------------------------------------------------------------------+\n      N           Min           Max        Median           Avg        Stddev\n  x  10     16682.962     17344.027     16913.524     16928.812      166.5362\n  +  10     16695.568     16923.896     16820.604     16824.652     84.816568\n  No difference proven at 95.0% confidence\n\n[akpm@linux-foundation.org: fix build]\n[hughd@google.com: shmem fix]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "406eb0c9ba765eb066406fd5ce9d5e2b169a4d5a",
      "tree": "71805cc1bcf4b1a4e7eb58a726d2ba21d913ba1a",
      "parents": [
        "1bac180bd29e03989f50054af97b53b8d37a364a"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:37 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "memcg: add memory.numastat api for numa statistics\n\nThe new API exports numa_maps per-memcg basis.  This is a piece of useful\ninformation where it exports per-memcg page distribution across real numa\nnodes.\n\nOne of the usecases is evaluating application performance by combining\nthis information w/ the cpu allocation to the application.\n\nThe output of the memory.numastat tries to follow w/ simiar format of\nnuma_maps like:\n\n  total\u003d\u003ctotal pages\u003e N0\u003d\u003cnode 0 pages\u003e N1\u003d\u003cnode 1 pages\u003e ...\n  file\u003d\u003ctotal file pages\u003e N0\u003d\u003cnode 0 pages\u003e N1\u003d\u003cnode 1 pages\u003e ...\n  anon\u003d\u003ctotal anon pages\u003e N0\u003d\u003cnode 0 pages\u003e N1\u003d\u003cnode 1 pages\u003e ...\n  unevictable\u003d\u003ctotal anon pages\u003e N0\u003d\u003cnode 0 pages\u003e N1\u003d\u003cnode 1 pages\u003e ...\n\nAnd we have per-node:\n\n  total \u003d file + anon + unevictable\n\n  $ cat /dev/cgroup/memory/memory.numa_stat\n  total\u003d250020 N0\u003d87620 N1\u003d52367 N2\u003d45298 N3\u003d64735\n  file\u003d225232 N0\u003d83402 N1\u003d46160 N2\u003d40522 N3\u003d55148\n  anon\u003d21053 N0\u003d3424 N1\u003d6207 N2\u003d4776 N3\u003d6646\n  unevictable\u003d3735 N0\u003d794 N1\u003d0 N2\u003d0 N3\u003d2941\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "1bac180bd29e03989f50054af97b53b8d37a364a",
      "tree": "6797cb73a27c1e8b7d1ea79764356dc69486dad4",
      "parents": [
        "4fd14ebf6e3b66423dfac2bc9defda7b83ee07b3"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: rename mem_cgroup_zone_nr_pages() to mem_cgroup_zone_nr_lru_pages()\n\nThe caller of the function has been renamed to zone_nr_lru_pages(), and\nthis is just fixing up in the memcg code.  The current name is easily to\nbe mis-read as zone\u0027s total number of pages.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fd14ebf6e3b66423dfac2bc9defda7b83ee07b3",
      "tree": "38fb451bf2e480091bf88540139378b68cdd2494",
      "parents": [
        "246e87a9393448c20873bc5dee64be68ed559e24"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Thu May 26 16:25:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: remove unused retry signal from reclaim\n\nIf the memcg reclaim code detects the target memcg below its limit it\nexits and returns a guaranteed non-zero value so that the charge is\nretried.\n\nNowadays, the charge side checks the memcg limit itself and does not rely\non this non-zero return value trick.\n\nThis patch removes it.  The reclaim code will now always return the true\nnumber of pages it reclaimed on its own.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Rik van Riel\u003criel@redhat.com\u003e\nAcked-by: Ying Han\u003cyinghan@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "246e87a9393448c20873bc5dee64be68ed559e24",
      "tree": "a17016142b267fcba2e3be9908f8138c8dcb3f3a",
      "parents": [
        "889976dbcb1218119fdd950fb7819084e37d7d37"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu May 26 16:25:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: fix get_scan_count() for small targets\n\nDuring memory reclaim we determine the number of pages to be scanned per\nzone as\n\n\t(anon + file) \u003e\u003e priority.\nAssume\n\tscan \u003d (anon + file) \u003e\u003e priority.\n\nIf scan \u003c SWAP_CLUSTER_MAX, the scan will be skipped for this time and\npriority gets higher.  This has some problems.\n\n  1. This increases priority as 1 without any scan.\n     To do scan in this priority, amount of pages should be larger than 512M.\n     If pages\u003e\u003epriority \u003c SWAP_CLUSTER_MAX, it\u0027s recorded and scan will be\n     batched, later. (But we lose 1 priority.)\n     If memory size is below 16M, pages \u003e\u003e priority is 0 and no scan in\n     DEF_PRIORITY forever.\n\n  2. If zone-\u003eall_unreclaimabe\u003d\u003dtrue, it\u0027s scanned only when priority\u003d\u003d0.\n     So, x86\u0027s ZONE_DMA will never be recoverred until the user of pages\n     frees memory by itself.\n\n  3. With memcg, the limit of memory can be small. When using small memcg,\n     it gets priority \u003c DEF_PRIORITY-2 very easily and need to call\n     wait_iff_congested().\n     For doing scan before priorty\u003d9, 64MB of memory should be used.\n\nThen, this patch tries to scan SWAP_CLUSTER_MAX of pages in force...when\n\n  1. the target is enough small.\n  2. it\u0027s kswapd or memcg reclaim.\n\nThen we can avoid rapid priority drop and may be able to recover\nall_unreclaimable in a small zones.  And this patch removes nr_saved_scan.\n This will allow scanning in this priority even when pages \u003e\u003e priority is\nvery small.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "889976dbcb1218119fdd950fb7819084e37d7d37",
      "tree": "7508706ddb6bcbe0f673aca3744f30f281b17734",
      "parents": [
        "4e4c941c108eff10844d2b441d96dab44f32f424"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: reclaim memory from nodes in round-robin order\n\nPresently, memory cgroup\u0027s direct reclaim frees memory from the current\nnode.  But this has some troubles.  Usually when a set of threads works in\na cooperative way, they tend to operate on the same node.  So if they hit\nlimits under memcg they will reclaim memory from themselves, damaging the\nactive working set.\n\nFor example, assume 2 node system which has Node 0 and Node 1 and a memcg\nwhich has 1G limit.  After some work, file cache remains and the usages\nare\n\n   Node 0:  1M\n   Node 1:  998M.\n\nand run an application on Node 0, it will eat its foot before freeing\nunnecessary file caches.\n\nThis patch adds round-robin for NUMA and adds equal pressure to each node.\nWhen using cpuset\u0027s spread memory feature, this will work very well.\n\nBut yes, a better algorithm is needed.\n\n[akpm@linux-foundation.org: comment editing]\n[kamezawa.hiroyu@jp.fujitsu.com: fix time comparisons]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a5b18d2bd79795407bf65451a2013bf4dfb588b",
      "tree": "0db53d8192c1beedf1628918feb91bec93e2537f",
      "parents": [
        "33278f7f0a9e5a9b29f59e07b7e3182d27769ac2"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu May 26 16:25:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: move page-freeing code out of lock\n\nMove page-freeing code out of swap_cgroup_mutex in the hope that it could\nreduce few of theoretical contentions between swapons and/or swapoffs.\n\nThis is just a cleanup, no functional changes.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "33278f7f0a9e5a9b29f59e07b7e3182d27769ac2",
      "tree": "8de853c293856cc227d703ffaa0e12410efa1fcd",
      "parents": [
        "268433b8e54486b12478e94ba18587bcc7de4d57"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu May 26 16:25:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: fix off-by-one when calculating swap cgroup map length\n\nIt allocated one more page than necessary if @max_pages was a multiple of\nSC_PER_PAGE.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "268433b8e54486b12478e94ba18587bcc7de4d57",
      "tree": "02686a62751fbdd2ad3125a53952c09381d7ac72",
      "parents": [
        "39cc98f1f8aa949afeea89f424c7494b0785d7da"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu May 26 16:25:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: mark init_section_page_cgroup() properly\n\nCommit ca371c0d7e23 (\"memcg: fix page_cgroup fatal error in FLATMEM\")\nremoves call to alloc_bootmem() in the function so that it can be marked\nas __meminit to reduce memory usage when MEMORY_HOTPLUG\u003dn.\n\nAlso as the new helper function alloc_page_cgroup() is called only in the\nfunction, it should be marked too.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39cc98f1f8aa949afeea89f424c7494b0785d7da",
      "tree": "d16d69a1c2f1db6150642d47927d77615507e856",
      "parents": [
        "d149e3b25d7c5f33de9aa866303926fa53535aa7"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Thu May 26 16:25:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: remove pointless next_mz nullification in mem_cgroup_soft_limit_reclaim()\n\nnext_mz is assigned to NULL if __mem_cgroup_largest_soft_limit_node\nselects the same mz.  This doesn\u0027t make much sense as we assign to the\nvariable right in the next loop.\n\nCompiler will probably optimize this out but it is little bit confusing\nfor the code reading.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d149e3b25d7c5f33de9aa866303926fa53535aa7",
      "tree": "160c8c3136246921458c96ab8257381d702208aa",
      "parents": [
        "0ae5e89c60c9eb87da36a2614836bc434b0ec2ad"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: add the soft_limit reclaim in global direct reclaim.\n\nWe recently added the change in global background reclaim which counts the\nreturn value of soft_limit reclaim.  Now this patch adds the similar logic\non global direct reclaim.\n\nWe should skip scanning global LRU on shrink_zone if soft_limit reclaim\ndoes enough work.  This is the first step where we start with counting the\nnr_scanned and nr_reclaimed from soft_limit reclaim into global\nscan_control.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\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": "0ae5e89c60c9eb87da36a2614836bc434b0ec2ad",
      "tree": "0d509fd83ac7e7d2f52dfcbba769c43aeeb68b5f",
      "parents": [
        "f042e707ee671e4beb5389abeb9a1819a2cf5532"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: count the soft_limit reclaim in global background reclaim\n\nThe global kswapd scans per-zone LRU and reclaims pages regardless of the\ncgroup. It breaks memory isolation since one cgroup can end up reclaiming\npages from another cgroup. Instead we should rely on memcg-aware target\nreclaim including per-memcg kswapd and soft_limit hierarchical reclaim under\nmemory pressure.\n\nIn the global background reclaim, we do soft reclaim before scanning the\nper-zone LRU. However, the return value is ignored. This patch is the first\nstep to skip shrink_zone() if soft_limit reclaim does enough work.\n\nThis is part of the effort which tries to reduce reclaiming pages in global\nLRU in memcg. The per-memcg background reclaim patchset further enhances the\nper-cgroup targetting reclaim, which I should have V4 posted shortly.\n\nTry running multiple memory intensive workloads within seperate memcgs. Watch\nthe counters of soft_steal in memory.stat.\n\n  $ cat /dev/cgroup/A/memory.stat | grep \u0027soft\u0027\n  soft_steal 240000\n  soft_scan 240000\n  total_soft_steal 240000\n  total_soft_scan 240000\n\nThis patch:\n\nIn the global background reclaim, we do soft reclaim before scanning the\nper-zone LRU.  However, the return value is ignored.\n\nWe would like to skip shrink_zone() if soft_limit reclaim does enough\nwork.  Also, we need to make the memory pressure balanced across per-memcg\nzones, like the logic vm-core.  This patch is the first step where we\nstart with counting the nr_scanned and nr_reclaimed from soft_limit\nreclaim into the global scan_control.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f780bdb7c1c73009cb57adcf99ef50027d80bf3c",
      "tree": "d15668ffcc40a2aaa31723b87cfda0b166f84d57",
      "parents": [
        "4714d1d32d97239fb5ae3e10521d3f133a899b66"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@andrew.cmu.edu",
        "time": "Thu May 26 16:25:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:34 2011 -0700"
      },
      "message": "cgroups: add per-thread subsystem callbacks\n\nAdd cgroup subsystem callbacks for per-thread attachment in atomic contexts\n\nAdd can_attach_task(), pre_attach(), and attach_task() as new callbacks\nfor cgroups\u0027s subsystem interface.  Unlike can_attach and attach, these\nare for per-thread operations, to be called potentially many times when\nattaching an entire threadgroup.\n\nAlso, the old \"bool threadgroup\" interface is removed, as replaced by\nthis.  All subsystems are modified for the new interface - of note is\ncpuset, which requires from/to nodemasks for attach to be globally scoped\n(though per-cpuset would work too) to persist from its pre_attach to\nattach_task and attach.\n\nThis is a pre-patch for cgroup-procs-writable.patch.\n\nSigned-off-by: Ben Blum \u003cbblum@andrew.cmu.edu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8d613e2a665bf1be9628a3c3f9bafe7599b32c0",
      "tree": "98d4da8d0e1a5fb1d9064626b4b96d95ccf26375",
      "parents": [
        "8a0599dd2471f2a2e409498c08a0ab339057ad06",
        "5bc20fc59706214d9591c11e1938a629d3538c12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:\n  xen: cleancache shim to Xen Transcendent Memory\n  ocfs2: add cleancache support\n  ext4: add cleancache support\n  btrfs: add cleancache support\n  ext3: add cleancache support\n  mm/fs: add hooks to support cleancache\n  mm: cleancache core ops functions and config\n  fs: add field to superblock to support cleancache\n  mm/fs: cleancache documentation\n\nFix up trivial conflict in fs/btrfs/extent_io.c due to includes\n"
    },
    {
      "commit": "ca16d140af91febe25daeb9e032bf8bd46b8c31f",
      "tree": "a093c3f244a1bdfc2a50e271a7e6df3324df0f05",
      "parents": [
        "4db70f73e56961b9bcdfd0c36c62847a18b7dbb5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu May 26 19:16:19 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:20:31 2011 -0700"
      },
      "message": "mm: don\u0027t access vm_flags as \u0027int\u0027\n\nThe type of vma-\u003evm_flags is \u0027unsigned long\u0027. Neither \u0027int\u0027 nor\n\u0027unsigned int\u0027. This patch fixes such misuse.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n[ Changed to use a typedef - we\u0027ll extend it to cover more cases\n  later, since there has been discussion about making it a 64-bit\n  type..                      - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c515e1fd361c2a08a9c2eb139396ec30a4f477dc",
      "tree": "cb1a27f27f065400fc79dc287594843e169d74ab",
      "parents": [
        "077b1f83a69d94f2918630a882d74939baca0bce"
      ],
      "author": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:43 2011 -0600"
      },
      "committer": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:43 2011 -0600"
      },
      "message": "mm/fs: add hooks to support cleancache\n\nThis fourth patch of eight in this cleancache series provides the\ncore hooks in VFS for: initializing cleancache per filesystem;\ncapturing clean pages reclaimed by page cache; attempting to get\npages from cleancache before filesystem read; and ensuring coherency\nbetween pagecache, disk, and cleancache.  Note that the placement\nof these hooks was stable from 2.6.18 to 2.6.38; a minor semantic\nchange was required due to a patchset in 2.6.39.\n\nAll hooks become no-ops if CONFIG_CLEANCACHE is unset, or become\na check of a boolean global if CONFIG_CLEANCACHE is set but no\ncleancache \"backend\" has claimed cleancache_ops.\n\nDetails and a FAQ can be found in Documentation/vm/cleancache.txt\n\n[v8: minchan.kim@gmail.com: adapt to new remove_from_page_cache function]\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik Van Riel \u003criel@redhat.com\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\n"
    },
    {
      "commit": "077b1f83a69d94f2918630a882d74939baca0bce",
      "tree": "96c47594b48df7dd588e3d8827f0ac151c350bc0",
      "parents": [
        "9fdfdcf17151e8326c4d18cc133abc6e58f47568"
      ],
      "author": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:36 2011 -0600"
      },
      "committer": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:36 2011 -0600"
      },
      "message": "mm: cleancache core ops functions and config\n\nThis third patch of eight in this cleancache series provides\nthe core code for cleancache that interfaces between the hooks in\nVFS and individual filesystems and a cleancache backend.  It also\nincludes build and config patches.\n\nTwo new files are added: mm/cleancache.c and include/linux/cleancache.h.\n\nNote that CONFIG_CLEANCACHE can default to on; in systems that do\nnot provide a cleancache backend, all hooks devolve to a simple\ncheck of a global enable flag, so performance impact should\nbe negligible but can be reduced to zero impact if config\u0027ed off.\nHowever for this first commit, it defaults to off.\n\nDetails and a FAQ can be found in Documentation/vm/cleancache.txt\n\nCredits: Cleancache_ops design derived from Jeremy Fitzhardinge\ndesign for tmem\n\n[v8: dan.magenheimer@oracle.com: fix exportfs call affecting btrfs]\n[v8: akpm@linux-foundation.org: use static inline function, not macro]\n[v7: dan.magenheimer@oracle.com: cleanup sysfs and remove cleancache prefix]\n[v6: JBeulich@novell.com: robustly handle buggy fs encode_fh actor definition]\n[v5: jeremy@goop.org: clean up global usage and static var names]\n[v5: jeremy@goop.org: simplify init hook and any future fs init changes]\n[v5: hch@infradead.org: cleaner non-global interface for ops registration]\n[v4: adilger@sun.com: interface must support exportfs FS\u0027s]\n[v4: hch@infradead.org: interface must support 64-bit FS on 32-bit kernel]\n[v3: akpm@linux-foundation.org: use one ops struct to avoid pointer hops]\n[v3: akpm@linux-foundation.org: document and ensure PageLocked reqts are met]\n[v3: ngupta@vflare.org: fix success/fail codes, change funcs to void]\n[v2: viro@ZenIV.linux.org.uk: use sane types]\nSigned-off-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nAcked-by: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik Van Riel \u003criel@redhat.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "49a78d085fa6b44d6ed791923c7172a6433589c2",
      "tree": "0fdf94bc4baf3e51f4b52c3718e6fa4f5dcb5032",
      "parents": [
        "3f5785ec31adcb7cafa9135087297a38d9698cf8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 18:06:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 18:06:54 2011 -0700"
      },
      "message": "slub: remove no-longer used \u0027unlock_out\u0027 label\n\nCommit a71ae47a2cbf (\"slub: Fix double bit unlock in debug mode\")\nremoved the only goto to this label, resulting in\n\n  mm/slub.c: In function \u0027__slab_alloc\u0027:\n  mm/slub.c:1834: warning: label \u0027unlock_out\u0027 defined but not used\n\nfixed trivially by the removal of the label itself too.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f29c50419c8d1998edd759f1990c4243a248f469",
      "tree": "bf75e1376757022dcb54a12eea705f6086649edd",
      "parents": [
        "6e9101aeec39961308176e0f59e73ac5d37d243a"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 19 14:35:33 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 25 19:56:23 2011 -0400"
      },
      "message": "maccess,probe_kernel: Make write/read src const void *\n\nThe functions probe_kernel_write() and probe_kernel_read() do not modify\nthe src pointer. Allow const pointers to be passed in without the need\nof a typecast.\n\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLink: http://lkml.kernel.org/r/1305824936.1465.4.camel@gandalf.stny.rr.com\n"
    },
    {
      "commit": "798ce8f1cca29dcc3f4b55947f611f4ffb32ac2b",
      "tree": "15fba84ba4b930397c29fe562504f66211365699",
      "parents": [
        "22e12bbc9bc38c6d0bd541d061a0f547596fc19d",
        "1547010e6e15a3f44f49381246421a1e19de526e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 09:14:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 09:14:07 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.40/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.40/core\u0027 of git://git.kernel.dk/linux-2.6-block: (40 commits)\n  cfq-iosched: free cic_index if cfqd allocation fails\n  cfq-iosched: remove unused \u0027group_changed\u0027 in cfq_service_tree_add()\n  cfq-iosched: reduce bit operations in cfq_choose_req()\n  cfq-iosched: algebraic simplification in cfq_prio_to_maxrq()\n  blk-cgroup: Initialize ioc-\u003ecgroup_changed at ioc creation time\n  block: move bd_set_size() above rescan_partitions() in __blkdev_get()\n  block: call elv_bio_merged() when merged\n  cfq-iosched: Make IO merge related stats per cpu\n  cfq-iosched: Fix a memory leak of per cpu stats for root group\n  backing-dev: Kill set but not used var in  bdi_debug_stats_show()\n  block: get rid of on-stack plugging debug checks\n  blk-throttle: Make no throttling rule group processing lockless\n  blk-cgroup: Make cgroup stat reset path blkg-\u003elock free for dispatch stats\n  blk-cgroup: Make 64bit per cpu stats safe on 32bit arch\n  blk-throttle: Make dispatch stats per cpu\n  blk-throttle: Free up a group only after one rcu grace period\n  blk-throttle: Use helper function to add root throtl group to lists\n  blk-throttle: Introduce a helper function to fill in device details\n  blk-throttle: Dynamically allocate root group\n  blk-cgroup: Allow sleeping while dynamically allocating a group\n  ...\n"
    },
    {
      "commit": "f67d9b1576c1c6e02100f8b27f4e9d66bbeb4d49",
      "tree": "c70649a911f85418c10075901c489caa7d8a0762",
      "parents": [
        "eb709b0d062efd653a61183af8e27b2711c3cf5c"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Tue May 24 17:12:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:38 2011 -0700"
      },
      "message": "nommu: add page alignment to mmap\n\nCurrently on nommu arch mmap(),mremap() and munmap() doesn\u0027t do\npage_align() which isn\u0027t consist with mmu arch and cause some issues.\n\nFirst, some drivers\u0027 mmap() function depends on vma-\u003evm_end - vma-\u003estart\nis page aligned which is true on mmu arch but not on nommu.  eg: uvc\ncamera driver.\n\nSecond munmap() may return -EINVAL[split file] error in cases when end is\nnot page aligned(passed into from userspace) but vma-\u003evm_end is aligned\ndure to split or driver\u0027s mmap() ops.\n\nAdd page alignment to fix those issues.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb709b0d062efd653a61183af8e27b2711c3cf5c",
      "tree": "ea0b4139854c2e713acab7ac679fa368ef9187ef",
      "parents": [
        "f68aa5b445fd00b67588ade611a4efb1a34dadb4"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue May 24 17:12:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:37 2011 -0700"
      },
      "message": "mm: batch activate_page() to reduce lock contention\n\nThe zone-\u003elru_lock is heavily contented in workload where activate_page()\nis frequently used.  We could do batch activate_page() to reduce the lock\ncontention.  The batched pages will be added into zone list when the pool\nis full or page reclaim is trying to drain them.\n\nFor example, in a 4 socket 64 CPU system, create a sparse file and 64\nprocesses, processes shared map to the file.  Each process read access the\nwhole file and then exit.  The process exit will do unmap_vmas() and cause\na lot of activate_page() call.  In such workload, we saw about 58% total\ntime reduction with below patch.  Other workloads with a lot of\nactivate_page also benefits a lot too.\n\nAndrew Morton suggested activate_page() and putback_lru_pages() should\nfollow the same path to active pages, but this is hard to implement (see\ncommit 7a608572a282a (\"Revert \"mm: batch activate_page() to reduce lock\ncontention\")).  On the other hand, do we really need putback_lru_pages()\nto follow the same path?  I tested several FIO/FFSB benchmark (about 20\nscripts for each benchmark) in 3 machines here from 2 sockets to 4\nsockets.  My test doesn\u0027t show anything significant with/without below\npatch (there is slight difference but mostly some noise which we found\neven without below patch before).  Below patch basically returns to the\nsame as my first post.\n\nI tested some microbenchmarks:\n  case-anon-cow-rand-mt         0.58%\n  case-anon-cow-rand           -3.30%\n  case-anon-cow-seq-mt         -0.51%\n  case-anon-cow-seq            -5.68%\n  case-anon-r-rand-mt           0.23%\n  case-anon-r-rand              0.81%\n  case-anon-r-seq-mt           -0.71%\n  case-anon-r-seq              -1.99%\n  case-anon-rx-rand-mt          2.11%\n  case-anon-rx-seq-mt           3.46%\n  case-anon-w-rand-mt          -0.03%\n  case-anon-w-rand             -0.50%\n  case-anon-w-seq-mt           -1.08%\n  case-anon-w-seq              -0.12%\n  case-anon-wx-rand-mt         -5.02%\n  case-anon-wx-seq-mt          -1.43%\n  case-fork                     1.65%\n  case-fork-sleep              -0.07%\n  case-fork-withmem             1.39%\n  case-hugetlb                 -0.59%\n  case-lru-file-mmap-read-mt   -0.54%\n  case-lru-file-mmap-read       0.61%\n  case-lru-file-mmap-read-rand -2.24%\n  case-lru-file-readonce       -0.64%\n  case-lru-file-readtwice     -11.69%\n  case-lru-memcg               -1.35%\n  case-mmap-pread-rand-mt       1.88%\n  case-mmap-pread-rand        -15.26%\n  case-mmap-pread-seq-mt        0.89%\n  case-mmap-pread-seq         -69.72%\n  case-mmap-xread-rand-mt       0.71%\n  case-mmap-xread-seq-mt        0.38%\n\nThe most significent are:\n  case-lru-file-readtwice     -11.69%\n  case-mmap-pread-rand        -15.26%\n  case-mmap-pread-seq         -69.72%\n\nwhich use activate_page a lot.  others are basically variations because\neach run has slightly difference.\n\nIn UP case, \u0027size mm/swap.o\u0027\nbefore the two patches:\n   text    data     bss     dec     hex filename\n   6466     896       4    7366    1cc6 mm/swap.o\nafter the two patches:\n   text    data     bss     dec     hex filename\n   6343     896       4    7243    1c4b mm/swap.o\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hiroyuki Kamezawa \u003ckamezawa.hiroyuki@gmail.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cfa54a0fcfc1017c6f122b6f21aaba36daa07f71",
      "tree": "c6bcc41b79475854254384b7b4912a2101364183",
      "parents": [
        "a539f3533b78e39a22723d6d3e1e11b6c14454d9"
      ],
      "author": {
        "name": "Andrew Barry",
        "email": "abarry@cray.com",
        "time": "Tue May 24 17:12:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:36 2011 -0700"
      },
      "message": "mm/page_alloc.c: prevent unending loop in __alloc_pages_slowpath()\n\nI believe I found a problem in __alloc_pages_slowpath, which allows a\nprocess to get stuck endlessly looping, even when lots of memory is\navailable.\n\nRunning an I/O and memory intensive stress-test I see a 0-order page\nallocation with __GFP_IO and __GFP_WAIT, running on a system with very\nlittle free memory.  Right about the same time that the stress-test gets\nkilled by the OOM-killer, the utility trying to allocate memory gets stuck\nin __alloc_pages_slowpath even though most of the systems memory was freed\nby the oom-kill of the stress-test.\n\nThe utility ends up looping from the rebalance label down through the\nwait_iff_congested continiously.  Because order\u003d0,\n__alloc_pages_direct_compact skips the call to get_page_from_freelist.\nBecause all of the reclaimable memory on the system has already been\nreclaimed, __alloc_pages_direct_reclaim skips the call to\nget_page_from_freelist.  Since there is no __GFP_FS flag, the block with\n__alloc_pages_may_oom is skipped.  The loop hits the wait_iff_congested,\nthen jumps back to rebalance without ever trying to\nget_page_from_freelist.  This loop repeats infinitely.\n\nThe test case is pretty pathological.  Running a mix of I/O stress-tests\nthat do a lot of fork() and consume all of the system memory, I can pretty\nreliably hit this on 600 nodes, in about 12 hours.  32GB/node.\n\nSigned-off-by: Andrew Barry \u003cabarry@cray.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2c8990aed5ab000491732b07c8c4465d1b389b8",
      "tree": "1aaac1e831410ac3e59c969f05426315d2054c28",
      "parents": [
        "5b52fc890bece77bffb9fade69239f71384ef02b"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue May 24 17:12:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:36 2011 -0700"
      },
      "message": "memsw: remove noswapaccount kernel parameter\n\nThe noswapaccount parameter has been deprecated since 2.6.38 without any\ncomplaints from users so we can remove it.  swapaccount\u003d0|1 can be used\ninstead.\n\nAs we are removing the parameter we can also clean up swapaccount because\nit doesn\u0027t have to accept an empty string anymore (to match noswapaccount)\nand so we can push \u003d into __setup macro rather than checking \"\u003d1\" resp.\n\"\u003d0\" strings\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Hiroyuki Kamezawa \u003ckamezawa.hiroyuki@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@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": "f69ff943df6972aae96c10733b6847fa094d8a59",
      "tree": "b0812b5e0b1376f193a9db088ebd8856deabed00",
      "parents": [
        "13057efb0a0063eb8042d99093ec88a52c4f1593"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:34 2011 -0700"
      },
      "message": "mm: proc: move show_numa_map() to fs/proc/task_mmu.c\n\nMoving show_numa_map() from mempolicy.c to task_mmu.c solves several\nissues.\n\n  - Having the show() operation \"miles away\" from the corresponding\n    seq_file iteration operations is a maintenance burden.\n\n  - The need to export ad hoc info like struct proc_maps_private is\n    eliminated.\n\n  - The implementation of show_numa_map() can be improved in a simple\n    manner by cooperating with the other seq_file operations (start,\n    stop, etc) -- something that would be messy to do without this\n    change.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9840e37239183a947a15d617c67e418c6e505dd8",
      "tree": "591ca1f930df133d9c212ccf09edcbd26b7d3d3e",
      "parents": [
        "722e2ee09b8dfc2ac5eedb802dc0d227702df084"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:33 2011 -0700"
      },
      "message": "mm: remove check_huge_range()\n\nThis function has been superseded by gather_hugetbl_stats() and is no\nlonger needed.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "722e2ee09b8dfc2ac5eedb802dc0d227702df084",
      "tree": "0ce839a50764cb5e50ad7e748773ae159a8dc9cc",
      "parents": [
        "b1f72d1857bb0de19ce20a59f3f85e6dc47bdec8"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:33 2011 -0700"
      },
      "message": "mm: make gather_stats() type-safe and remove forward declaration\n\nImprove the prototype of gather_stats() to take a struct numa_maps as\nargument instead of a generic void *.  Update all callers to make the\nrequired type explicit.\n\nSince gather_stats() is not needed before its definition and is scheduled\nto be moved out of mempolicy.c the declaration is removed as well.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b1f72d1857bb0de19ce20a59f3f85e6dc47bdec8",
      "tree": "4ce7e448a81f3315bb8aece1b38fc3cd15a7cf6d",
      "parents": [
        "29ea2f6982f1edc4302729116f2246dd7b45471d"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:33 2011 -0700"
      },
      "message": "mm: remove MPOL_MF_STATS\n\nMapping statistics in a NUMA environment is now computed using the generic\nwalk_page_range() logic.  Remove the old/equivalent functionality.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29ea2f6982f1edc4302729116f2246dd7b45471d",
      "tree": "b40d85bf30c25537bd269407748abbdb3644a54f",
      "parents": [
        "d98f6cb67fb5b9376d4957d7ba9f32eac35c2e08"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:32 2011 -0700"
      },
      "message": "mm: use walk_page_range() instead of custom page table walking code\n\nConverting show_numa_map() to use the generic routine decouples the\nfunction from mempolicy.c, allowing it to be moved out of the mm subsystem\nand into fs/proc.\n\nAlso, include KSM pages in /proc/pid/numa_maps statistics.  The pagewalk\nlogic implemented by check_pte_range() failed to account for such pages as\nthey were not applicable to the page migration case.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d98f6cb67fb5b9376d4957d7ba9f32eac35c2e08",
      "tree": "e7fbb12bde5e30154403bf4e8cabf0bcf817aa65",
      "parents": [
        "c856507f2b2b47a49d8587afb58930b463f6bff4"
      ],
      "author": {
        "name": "Stephen Wilson",
        "email": "wilsons@start.ca",
        "time": "Tue May 24 17:12:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:32 2011 -0700"
      },
      "message": "mm: export get_vma_policy()\n\nIn commit 48fce3429d (\"mempolicies: unexport get_vma_policy()\")\nget_vma_policy() was marked static as all clients were local to\nmempolicy.c.\n\nHowever, the decision to generate /proc/pid/numa_maps in the numa memory\npolicy code and outside the procfs subsystem introduces an artificial\ninterdependency between the two systems.  Exporting get_vma_policy() once\nagain is the first step to clean up this interdependency.\n\nSigned-off-by: Stephen Wilson \u003cwilsons@start.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b09e0fa4b4ea66266058eead43350bd7d55fec67",
      "tree": "35eed2e1bc39bbbca1c041b69e1e12e826241ccf",
      "parents": [
        "4eb317072be81bd93906f768679f745bc574e6b7"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue May 24 17:12:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:31 2011 -0700"
      },
      "message": "tmpfs: implement generic xattr support\n\nImplement generic xattrs for tmpfs filesystems.  The Feodra project, while\ntrying to replace suid apps with file capabilities, realized that tmpfs,\nwhich is used on the build systems, does not support file capabilities and\nthus cannot be used to build packages which use file capabilities.  Xattrs\nare also needed for overlayfs.\n\nThe xattr interface is a bit odd.  If a filesystem does not implement any\n{get,set,list}xattr functions the VFS will call into some random LSM hooks\nand the running LSM can then implement some method for handling xattrs.\nSELinux for example provides a method to support security.selinux but no\nother security.* xattrs.\n\nAs it stands today when one enables CONFIG_TMPFS_POSIX_ACL tmpfs will have\nxattr handler routines specifically to handle acls.  Because of this tmpfs\nwould loose the VFS/LSM helpers to support the running LSM.  To make up\nfor that tmpfs had stub functions that did nothing but call into the LSM\nhooks which implement the helpers.\n\nThis new patch does not use the LSM fallback functions and instead just\nimplements a native get/set/list xattr feature for the full security.* and\ntrusted.* namespace like a normal filesystem.  This means that tmpfs can\nnow support both security.selinux and security.capability, which was not\npreviously possible.\n\nThe basic implementation is that I attach a:\n\nstruct shmem_xattr {\n\tstruct list_head list; /* anchored by shmem_inode_info-\u003exattr_list */\n\tchar *name;\n\tsize_t size;\n\tchar value[0];\n};\n\nInto the struct shmem_inode_info for each xattr that is set.  This\nimplementation could easily support the user.* namespace as well, except\nsome care needs to be taken to prevent large amounts of unswappable memory\nbeing allocated for unprivileged users.\n\n[mszeredi@suse.cz: new config option, suport trusted.*, support symlinks]\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nTested-by: Serge Hallyn \u003cserge.hallyn@ubuntu.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nTested-by: Jordi Pujol \u003cjordipujolp@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": "4eb317072be81bd93906f768679f745bc574e6b7",
      "tree": "74558ef8caca65ddf62fd93030dae44b5e51535c",
      "parents": [
        "8bba154ef29e16331e578029e9050c74b87b7ff9"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue May 24 17:12:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:31 2011 -0700"
      },
      "message": "memblock/nobootmem: remove unneeded code from alloc_bootmem_node_high()\n\nThe bootmem wrapper with memblock supports top-down now, so we no longer\nneed this trick.\n\nSigned-off-by: Yinghai LU \u003cyinghai@kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Olaf Hering \u003colaf@aepfle.de\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a197b59ae6e8bee56fcef37ea2482dc08414e2ac",
      "tree": "ead0890373cc9c36321364efbad73a25898076ab",
      "parents": [
        "ba93fa81b5f2bf0076407a3a777fff122ce16220"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 24 17:12:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:29 2011 -0700"
      },
      "message": "mm: fail GFP_DMA allocations when ZONE_DMA is not configured\n\nThe page allocator will improperly return a page from ZONE_NORMAL even\nwhen __GFP_DMA is passed if CONFIG_ZONE_DMA is disabled.  The caller\nexpects DMA memory, perhaps for ISA devices with 16-bit address registers,\nand may get higher memory resulting in undefined behavior.\n\nThis patch causes the page allocator to return NULL in such circumstances\nwith a warning emitted to the kernel log on the first occurrence.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3bc42f584cf9024580adeb4031d4202dac05858",
      "tree": "5b18fa3d8e04d14963796c0ad6f3270cacfc784b",
      "parents": [
        "821ed6bbed3cf41c4050a431eeb822b33868d36a"
      ],
      "author": {
        "name": "Daniel Kiper",
        "email": "dkiper@net-space.pl",
        "time": "Tue May 24 17:12:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:28 2011 -0700"
      },
      "message": "mm: remove dependency on CONFIG_FLATMEM from online_page()\n\nonline_pages() is only compiled for CONFIG_MEMORY_HOTPLUG_SPARSE, so there\nis no need to support CONFIG_FLATMEM code within it.\n\nThis patch removes code that is never used.\n\nSigned-off-by: Daniel Kiper \u003cdkiper@net-space.pl\u003e\nAcked-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "821ed6bbed3cf41c4050a431eeb822b33868d36a",
      "tree": "50f6808a20263aaaf546a69218e1c1312ce7b51e",
      "parents": [
        "2cbea1d3ab11946885d37a2461072ee4d687cb4e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue May 24 17:12:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:27 2011 -0700"
      },
      "message": "mm: filter unevictable page out in deactivate_page()\n\nIt\u0027s pointless that deactive_page\u0027s operates on unevictable pages.  This\npatch removes unnecessary overhead which might be a bit problem in case\nthat there are many unevictable page in system(ex, mprotect workload)\n\n[akpm@linux-foundation.org: tidy up comment]\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2cbea1d3ab11946885d37a2461072ee4d687cb4e",
      "tree": "aab301cb3da1e633bbd7df2acc4b4c2e4f777b35",
      "parents": [
        "207d04baa3591a354711e863dd90087fc75873b3"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue May 24 17:12:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:27 2011 -0700"
      },
      "message": "readahead: trigger mmap sequential readahead on PG_readahead\n\nPreviously the mmap sequential readahead is triggered by updating\nra-\u003eprev_pos on each page fault and compare it with current page offset.\n\nIt costs dirtying the cache line on each _minor_ page fault.  So remove\nthe ra-\u003eprev_pos recording, and instead tag PG_readahead to trigger the\npossible sequential readahead.  It\u0027s not only more simple, but also will\nwork more reliably and reduce cache line bouncing on concurrent page\nfaults on shared struct file.\n\nIn the mosbench exim benchmark which does multi-threaded page faults on\nshared struct file, the ra-\u003emmap_miss and ra-\u003eprev_pos updates are found\nto cause excessive cache line bouncing on tmpfs, which actually disabled\nreadahead totally (shmem_backing_dev_info.ra_pages \u003d\u003d 0).\n\nSo remove the ra-\u003eprev_pos recording, and instead tag PG_readahead to\ntrigger the possible sequential readahead.  It\u0027s not only more simple, but\nalso will work more reliably on concurrent reads on shared struct file.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@intel.com\u003e\nReported-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "207d04baa3591a354711e863dd90087fc75873b3",
      "tree": "17498d55af5b2a588e7e7111e927a099236ca770",
      "parents": [
        "275b12bf5486f6f531111fd3d7dbbf01df427cfe"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Tue May 24 17:12:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "readahead: reduce unnecessary mmap_miss increases\n\nThe original INT_MAX is too large, reduce it to\n\n- avoid unnecessarily dirtying/bouncing the cache line\n\n- restore mmap read-around faster on changed access pattern\n\nBackground: in the mosbench exim benchmark which does multi-threaded page\nfaults on shared struct file, the ra-\u003emmap_miss updates are found to cause\nexcessive cache line bouncing on tmpfs.  The ra state updates are needless\nfor tmpfs because it actually disabled readahead totally\n(shmem_backing_dev_info.ra_pages \u003d\u003d 0).\n\nTested-by: Tim Chen \u003ctim.c.chen@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "275b12bf5486f6f531111fd3d7dbbf01df427cfe",
      "tree": "ebed0109eaa3e4a015bc1653f4d933f2e84c794f",
      "parents": [
        "1495f230fa7750479c79e3656286b9183d662077"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue May 24 17:12:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "readahead: return early when readahead is disabled\n\nReduce readahead overheads by returning early in do_sync_mmap_readahead().\n\ntmpfs has ra_pages\u003d0 and it can page fault really fast (not constraint by\nIO if not swapping).\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nTested-by: Tim Chen \u003ctim.c.chen@intel.com\u003e\nReported-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@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": "a09ed5e00084448453c8bada4dcd31e5fbfc2f21",
      "tree": "493f5f2a93efb080cdcc28e793cbcfc7999e66eb",
      "parents": [
        "7b1de5868b124d8f399d8791ed30a9b679d64d4d"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:25 2011 -0700"
      },
      "message": "vmscan: change shrink_slab() interfaces by passing shrink_control\n\nConsolidate the existing parameters to shrink_slab() into a new\nshrink_control struct.  This is needed later to pass the same struct to\nshrinkers.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@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": "7b1de5868b124d8f399d8791ed30a9b679d64d4d",
      "tree": "3a7d5d7a6ccc3226648cb0e56387614b7066c3ff",
      "parents": [
        "6d3163ce86dd386b4f7bda80241d7fea2bc0bb1d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue May 24 17:12:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:25 2011 -0700"
      },
      "message": "readahead: readahead page allocations are OK to fail\n\nPass __GFP_NORETRY|__GFP_NOWARN for readahead page allocations.\n\nreadahead page allocations are completely optional.  They are OK to fail\nand in particular shall not trigger OOM on themselves.\n\nReported-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@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": "6d3163ce86dd386b4f7bda80241d7fea2bc0bb1d",
      "tree": "169f74df152fa593e5dc9adfff7f6f7e31061028",
      "parents": [
        "0091a47da0b720ca39511c7d90dcc768cafcaf58"
      ],
      "author": {
        "name": "Arve Hjønnevåg",
        "email": "arve@android.com",
        "time": "Tue May 24 17:12:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:24 2011 -0700"
      },
      "message": "mm: check if any page in a pageblock is reserved before marking it MIGRATE_RESERVE\n\nThis fixes a problem where the first pageblock got marked MIGRATE_RESERVE\neven though it only had a few free pages.  eg, On current ARM port, The\nkernel starts at offset 0x8000 to leave room for boot parameters, and the\nmemory is freed later.\n\nThis in turn caused no contiguous memory to be reserved and frequent\nkswapd wakeups that emptied the caches to get more contiguous memory.\n\nUnfortunatelly, ARM needs order-2 allocation for pgd (see\narm/mm/pgd.c#pgd_alloc()).  Therefore the issue is not minor nor easy\navoidable.\n\n[kosaki.motohiro@jp.fujitsu.com: added some explanation]\n[kosaki.motohiro@jp.fujitsu.com: add !pfn_valid_within() to check]\n[minchan.kim@gmail.com: check end_pfn in pageblock_is_reserved]\nSigned-off-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Arve Hjønnevåg \u003carve@android.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Dave Hansen \u003cdave@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": "0c917313a8d84fcc0c376db3f7edb7c06f06f920",
      "tree": "de95ed4a300d1034b1abae2eb8c7e509c9dfb341",
      "parents": [
        "bd486285f24ac2fd1ff64688fb0729712c5712c4"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 24 17:12:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:23 2011 -0700"
      },
      "message": "mm: strictly require elevated page refcount in isolate_lru_page()\n\nisolate_lru_page() must be called only with stable reference to the page,\nthis is what is written in the comment above it, this is reasonable.\n\ncurrent isolate_lru_page() users and its page extra reference sources:\n\n mm/huge_memory.c:\n  __collapse_huge_page_isolate()\t- reference from pte\n\n mm/memcontrol.c:\n  mem_cgroup_move_parent()\t\t- get_page_unless_zero()\n  mem_cgroup_move_charge_pte_range()\t- reference from pte\n\n mm/memory-failure.c:\n  soft_offline_page()\t\t\t- fixed, reference from get_any_page()\n  delete_from_lru_cache() - reference from caller or get_page_unless_zero()\n\t[ seems like there bug, because __memory_failure() can call\n\t  page_action() for hpages tail, but it is ok for\n\t  isolate_lru_page(), tail getted and not in lru]\n\n mm/memory_hotplug.c:\n  do_migrate_range()\t\t\t- fixed, get_page_unless_zero()\n\n mm/mempolicy.c:\n  migrate_page_add()\t\t\t- reference from pte\n\n mm/migrate.c:\n  do_move_page_to_node_array()\t\t- reference from follow_page()\n\n mlock.c:\t\t\t\t- various external references\n\n mm/vmscan.c:\n  putback_lru_page()\t\t\t- reference from isolate_lru_page()\n\nIt seems that all isolate_lru_page() users are ready now for this\nrestriction.  So, let\u0027s replace redundant get_page_unless_zero() with\nget_page() and add page initial reference count check with VM_BUG_ON()\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd486285f24ac2fd1ff64688fb0729712c5712c4",
      "tree": "d0fde80eb5c05893ba3b624b8219436b3efb274a",
      "parents": [
        "700c2a46e88265326764197d5b8842490bae5569"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 24 17:12:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:23 2011 -0700"
      },
      "message": "mem-hwpoison: fix page refcount around isolate_lru_page()\n\nDrop first page reference only after calling isolate_lru_page() to keep\npage stable reference while isolating.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "700c2a46e88265326764197d5b8842490bae5569",
      "tree": "65f02f083e5eebfab0296499318e5a40992116a9",
      "parents": [
        "22943ab116af1ead4dc112ec408a93cf1365b34a"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue May 24 17:12:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:22 2011 -0700"
      },
      "message": "mem-hotplug: call isolate_lru_page with elevated refcount\n\nisolate_lru_page() must be called only with stable reference to page.  So,\nlet\u0027s grab normal page reference.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "22943ab116af1ead4dc112ec408a93cf1365b34a",
      "tree": "97fcfd64dc06ac9b60fb48c0cd331249fb96f13d",
      "parents": [
        "a238ab5b0239575c179f4976064192c3f7409dad"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue May 24 17:12:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:22 2011 -0700"
      },
      "message": "mm: print vmalloc() state after allocation failures\n\nI was tracking down a page allocation failure that ended up in vmalloc().\nSince vmalloc() uses 0-order pages, if somebody asks for an insane amount\nof memory, we\u0027ll still get a warning with \"order:0\" in it.  That\u0027s not\nvery useful.\n\nDuring recovery, vmalloc() also nicely frees all of the memory that it got\nup to the point of the failure.  That is wonderful, but it also quickly\nhides any issues.  We have a much different sitation if vmalloc()\nrepeatedly fails 10GB in to:\n\n\tvmalloc(100 * 1\u003c\u003c30);\n\nversus repeatedly failing 4096 bytes in to a:\n\n\tvmalloc(8192);\n\nThis patch will print out messages that look like this:\n\n[   68.123503] vmalloc: allocation failure, allocated 6680576 of 13426688 bytes\n[   68.124218] bash: page allocation failure: order:0, mode:0xd2\n[   68.124811] Pid: 3770, comm: bash Not tainted 2.6.39-rc3-00082-g85f2e68-dirty #333\n[   68.125579] Call Trace:\n[   68.125853]  [\u003cffffffff810f6da6\u003e] warn_alloc_failed+0x146/0x170\n[   68.126464]  [\u003cffffffff8107e05c\u003e] ? printk+0x6c/0x70\n[   68.126791]  [\u003cffffffff8112b5d4\u003e] ? alloc_pages_current+0x94/0xe0\n[   68.127661]  [\u003cffffffff8111ed37\u003e] __vmalloc_node_range+0x237/0x290\n...\n\nThe \u0027order\u0027 variable is added for clarity when calling warn_alloc_failed()\nto avoid having an unexplained \u00270\u0027 as an argument.\n\nThe \u0027tmp_mask\u0027 is because adding an open-coded \u0027| __GFP_NOWARN\u0027 would take\nus over 80 columns for the alloc_pages_node() call.  If we are going to\nadd a line, it might as well be one that makes the sucker easier to read.\n\nAs a side issue, I also noticed that ctl_ioctl() does vmalloc() based\nsolely on an unverified value passed in from userspace.  Granted, it\u0027s\nunder CAP_SYS_ADMIN, but it still frightens me a bit.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a238ab5b0239575c179f4976064192c3f7409dad",
      "tree": "bed3d186bee49318e1984eeac489a614ad6acb1b",
      "parents": [
        "de03c72cfce5b263a674d04348b58475ec50163c"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Tue May 24 17:12:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:21 2011 -0700"
      },
      "message": "mm: break out page allocation warning code\n\nThis originally started as a simple patch to give vmalloc() some more\nverbose output on failure on top of the plain page allocator messages.\nJohannes suggested that it might be nicer to lead with the vmalloc() info\n_before_ the page allocator messages.\n\nBut, I do think there\u0027s a lot of value in what __alloc_pages_slowpath()\ndoes with its filtering and so forth.\n\nThis patch creates a new function which other allocators can call instead\nof relying on the internal page allocator warnings.  It also gives this\nfunction private rate-limiting which separates it from other\nprintk_ratelimit() users.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Michal Nazarewicz \u003cmina86@mina86.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de03c72cfce5b263a674d04348b58475ec50163c",
      "tree": "e2b035234440bcd1aa88078c3f9c8457d461ef9c",
      "parents": [
        "692e0b35427a088bf75d9363788c61c7edbe93a5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue May 24 17:12:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:21 2011 -0700"
      },
      "message": "mm: convert mm-\u003ecpu_vm_cpumask into cpumask_var_t\n\ncpumask_t is very big struct and cpu_vm_mask is placed wrong position.\nIt might lead to reduce cache hit ratio.\n\nThis patch has two change.\n1) Move the place of cpumask into last of mm_struct. Because usually cpumask\n   is accessed only front bits when the system has cpu-hotplug capability\n2) Convert cpu_vm_mask into cpumask_var_t. It may help to reduce memory\n   footprint if cpumask_size() will use nr_cpumask_bits properly in future.\n\nIn addition, this patch change the name of cpu_vm_mask with cpu_vm_mask_var.\nIt may help to detect out of tree cpu_vm_mask users.\n\nThis patch has no functional change.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Koichi Yasutake \u003cyasutake.koichi@jp.panasonic.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "692e0b35427a088bf75d9363788c61c7edbe93a5",
      "tree": "db1b4365b70fbe809753e6ac097b60fb4f7299a8",
      "parents": [
        "9547d01bfb9c351dc19067f8a4cea9d3955f4125"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue May 24 17:12:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:21 2011 -0700"
      },
      "message": "mm: thp: optimize memcg charge in khugepaged\n\nWe don\u0027t need to hold the mmmap_sem through mem_cgroup_newpage_charge(),\nthe mmap_sem is only hold for keeping the vma stable and we don\u0027t need the\nvma stable anymore after we return from alloc_hugepage_vma().\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "9547d01bfb9c351dc19067f8a4cea9d3955f4125"
}
