)]}'
{
  "log": [
    {
      "commit": "a1cb2c60ddc98ff4e5246f410558805401ceee67",
      "tree": "49e3e620ff2974dc78fad8df0b343b07b75be407",
      "parents": [
        "3d470fc385defa60d9af610f05db8e7f8b4f2f5e"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Mon Oct 31 17:09:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:51 2011 -0700"
      },
      "message": "mm/vmstat.c: cache align vm_stat\n\nAvoid false sharing of the vm_stat array.\n\nThis was found to adversely affect tmpfs I/O performance.\n\nTests run on a 640 cpu UV system.\n\nWith 120 threads doing parallel writes, each to different tmpfs mounts:\nNo patch:\t\t~300 MB/sec\nWith vm_stat alignment:\t~430 MB/sec\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: Christoph Lameter \u003ccl@gentwo.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d470fc385defa60d9af610f05db8e7f8b4f2f5e",
      "tree": "8db16148d94a2ae2723e209e0f2d7fe026361972",
      "parents": [
        "35d8c7ad7208dad5d352c483408e555022750978"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Mon Oct 31 17:09:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:51 2011 -0700"
      },
      "message": "mm: munlock use mapcount to avoid terrible overhead\n\nA process spent 30 minutes exiting, just munlocking the pages of a large\nanonymous area that had been alternately mprotected into page-sized vmas:\nfor every single page there\u0027s an anon_vma walk through all the other\nlittle vmas to find the right one.\n\nA general fix to that would be a lot more complicated (use prio_tree on\nanon_vma?), but there\u0027s one very simple thing we can do to speed up the\ncommon case: if a page to be munlocked is mapped only once, then it is our\nvma that it is mapped into, and there\u0027s no need whatever to walk through\nall the others.\n\nOkay, there is a very remote race in munlock_vma_pages_range(), if between\nits follow_page() and lock_page(), another process were to munlock the\nsame page, then page reclaim remove it from our vma, then another process\nmlock it again.  We would find it with page_mapcount 1, yet it\u0027s still\nmlocked in another process.  But never mind, that\u0027s much less likely than\nthe down_read_trylock() failure which munlocking already tolerates (in\ntry_to_unmap_one()): in due course page reclaim will discover and move the\npage to unevictable instead.\n\n[akpm@linux-foundation.org: add comment]\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@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": "35d8c7ad7208dad5d352c483408e555022750978",
      "tree": "19de03a943fb00f7ed239147256aa558ddfd99b3",
      "parents": [
        "0089e4853ae1ac161fae5137170971ccb6f4f152"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Mon Oct 31 17:09:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:51 2011 -0700"
      },
      "message": "mm/huge_memory: fix typo when updating mmu cache\n\nThere are three cases of update_mmu_cache() in the file, and the case in\nfunction collapse_huge_page() has a typo, namely the last parameter used,\nwhich is corrected based on the other two cases.\n\nDue to the define of update_mmu_cache by X86, the only arch that\nimplements THP currently, the change here has no really crystal point, but\none or two minutes of efforts could be saved for those archs that are\nlikely to support THP in future.\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0089e4853ae1ac161fae5137170971ccb6f4f152",
      "tree": "6e23993f320cd6b0d45a5fb4832188cd2092efe2",
      "parents": [
        "df9d6985be2a7e7683c46e4c6ea608fc69f02b45"
      ],
      "author": {
        "name": "Hillf Danton",
        "email": "dhillf@gmail.com",
        "time": "Mon Oct 31 17:09:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm/huge_memory: fix copying user highpage\n\nThe THP copy-on-write handler falls back to regular-sized pages for a huge\npage replacement upon allocation failure or if THP has been individually\ndisabled in the target VMA.  The loop responsible for copying page-sized\nchunks accidentally uses multiples of PAGE_SHIFT instead of PAGE_SIZE as\nthe virtual address arg for copy_user_highpage().\n\nSigned-off-by: Hillf Danton \u003cdhillf@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "df9d6985be2a7e7683c46e4c6ea608fc69f02b45",
      "tree": "81bcf7cfbc842a7eee7aa18104a1fbecd2d316e8",
      "parents": [
        "e0c23279c9f800c403f37511484d9014ac83adec"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@gentwo.org",
        "time": "Mon Oct 31 17:09:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm: do not drain pagevecs for mlockall(MCL_FUTURE)\n\nMCL_FUTURE does not move pages between lru list and draining the LRU per\ncpu pagevecs is a nasty activity.  Avoid doing it unecessarily.\n\nSigned-off-by: Christoph Lameter \u003ccl@gentwo.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "e0c23279c9f800c403f37511484d9014ac83adec",
      "tree": "9dcf058d3d1c691328ea5839dfe9c340e47ee3fa",
      "parents": [
        "e0887c19b2daa140f20ca8104bdc5740f39dbb86"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:09:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: abort reclaim/compaction if compaction can proceed\n\nIf compaction can proceed, shrink_zones() stops doing any work but its\ncallers still call shrink_slab() which raises the priority and potentially\nsleeps.  This is unnecessary and wasteful so this patch aborts direct\nreclaim/compaction entirely if compaction can proceed.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\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\nCc: Josh Boyer \u003cjwboyer@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0887c19b2daa140f20ca8104bdc5740f39dbb86",
      "tree": "86330414eb04b5989e68661c205aa52d46ca7ebf",
      "parents": [
        "21ee9f398be209ccbb62929d35961ca1ed48eec3"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Oct 31 17:09:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: limit direct reclaim for higher order allocations\n\nWhen suffering from memory fragmentation due to unfreeable pages, THP page\nfaults will repeatedly try to compact memory.  Due to the unfreeable\npages, compaction fails.\n\nNeedless to say, at that point page reclaim also fails to create free\ncontiguous 2MB areas.  However, that doesn\u0027t stop the current code from\ntrying, over and over again, and freeing a minimum of 4MB (2UL \u003c\u003c\nsc-\u003eorder pages) at every single invocation.\n\nThis resulted in my 12GB system having 2-3GB free memory, a corresponding\namount of used swap and very sluggish response times.\n\nThis can be avoided by having the direct reclaim code not reclaim from\nzones that already have plenty of free memory available for compaction.\n\nIf compaction still fails due to unmovable memory, doing additional\nreclaim will only hurt the system, not help.\n\n[jweiner@redhat.com: change comment to explain the order check]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-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": "21ee9f398be209ccbb62929d35961ca1ed48eec3",
      "tree": "4127e14f4a07a2cb7bc6eb902e9c7b0baab8e84f",
      "parents": [
        "2f1da6421570d064a94e17190a4955c2df99794d"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:09:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "vmscan: add barrier to prevent evictable page in unevictable list\n\nWhen a race between putback_lru_page() and shmem_lock with lock\u003d0 happens,\nprogrom execution order is as follows, but clear_bit in processor #1 could\nbe reordered right before spin_unlock of processor #1.  Then, the page\nwould be stranded on the unevictable list.\n\nspin_lock\nSetPageLRU\nspin_unlock\n                                clear_bit(AS_UNEVICTABLE)\n                                spin_lock\n                                if PageLRU()\n                                        if !test_bit(AS_UNEVICTABLE)\n                                        \tmove evictable list\nsmp_mb\nif !test_bit(AS_UNEVICTABLE)\n        move evictable list\n                                spin_unlock\n\nBut, pagevec_lookup() in scan_mapping_unevictable_pages() has\nrcu_read_[un]lock() so it could protect reordering before reaching\ntest_bit(AS_UNEVICTABLE) on processor #1 so this problem never happens.\nBut it\u0027s a unexpected side effect and we should solve this problem\nproperly.\n\nThis patch adds a barrier after mapping_clear_unevictable.\n\nI didn\u0027t meet this problem but just found during review.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "2f1da6421570d064a94e17190a4955c2df99794d",
      "tree": "8d382dfd9a264aa698131d4ae2a345ba3fb25794",
      "parents": [
        "e754d79d35f0b8612445a9bd7491c48d7317e3ad"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Oct 31 17:09:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm/huge_memory.c: quiet sparse noise\n\nQuiet the sparse noise:\n\nwarning: symbol \u0027khugepaged_scan\u0027 was not declared. Should it be static?\nwarning: context imbalance in \u0027khugepaged_scan_mm_slot\u0027 - unexpected unlock\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e754d79d35f0b8612445a9bd7491c48d7317e3ad",
      "tree": "6ba53676ba3b425144b7723793e9cda6581a6790",
      "parents": [
        "22d5368a0838c00ed0e3ec20e7ff8c6e46ba99ef"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Oct 31 17:09:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm/mempolicy.c: quiet sparse noise\n\nQuiet the spares noise:\n\nwarning: symbol \u0027default_policy\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Stephen Wilson \u003cwilsons@start.ca\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.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": "22d5368a0838c00ed0e3ec20e7ff8c6e46ba99ef",
      "tree": "9692d1a53240795454d46e8cd7abbd0c7002dfa0",
      "parents": [
        "2d7d3eb2bad116e0d1b3b3930a923c55f6d0f70e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Oct 31 17:09:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm/thrash.c: quiet sparse noise\n\nQuiet the following sparse noise:\n\nwarning: symbol \u0027swap_token_memcg\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d7d3eb2bad116e0d1b3b3930a923c55f6d0f70e",
      "tree": "ace773565549cc0b97657654983701b6ea5f9f55",
      "parents": [
        "264e56d8247ef6e31ed4386926cae86c61ddcb18"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Oct 31 17:09:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:50 2011 -0700"
      },
      "message": "mm/memblock.c: quiet sparse noise\n\nQuiet the following sparse noise in this file:\n\nwarning: symbol \u0027memblock_overlaps_region\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers,com\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@linux.intel.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Tomi Valkeinen \u003ctomi.valkeinen@nokia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "264e56d8247ef6e31ed4386926cae86c61ddcb18",
      "tree": "87e85ee670fb7ae4c0cd7bdeae700faff021bf48",
      "parents": [
        "3f380998aeb51b99d5d22cadb41162e1e9db70d2"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Oct 31 17:09:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm: disable user interface to manually rescue unevictable pages\n\nAt one point, anonymous pages were supposed to go on the unevictable list\nwhen no swap space was configured, and the idea was to manually rescue\nthose pages after adding swap and making them evictable again.  But\nnowadays, swap-backed pages on the anon LRU list are not scanned without\navailable swap space anyway, so there is no point in moving them to a\nseparate list anymore.\n\nThe manual rescue could also be used in case pages were stranded on the\nunevictable list due to race conditions.  But the code has been around for\na while now and newly discovered bugs should be properly reported and\ndealt with instead of relying on such a manual fixup.\n\nIn addition to the lack of a usecase, the sysfs interface to rescue pages\nfrom a specific NUMA node has been broken since its introduction, so it\u0027s\nunlikely that anybody ever relied on that.\n\nThis patch removes the functionality behind the sysctl and the\nnode-interface and emits a one-time warning when somebody tries to access\neither of them.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReported-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f380998aeb51b99d5d22cadb41162e1e9db70d2",
      "tree": "1d5bb20368b06c7b86e7257771209795bd764f00",
      "parents": [
        "4e9dc5df46001510ebd3b3e54faa650f474e51a3"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Mon Oct 31 17:09:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "vmscan.c: fix invalid strict_strtoul() check in write_scan_unevictable_node()\n\nwrite_scan_unevictable_node() checks the value req returned by\nstrict_strtoul() and returns 1 if req is 0.\n\nHowever, when strict_strtoul() returns 0, it means successful conversion\nof buf to unsigned long.\n\nDue to this, the function was not proceeding to scan the zones for\nunevictable pages even though we write a valid value to the\nscan_unevictable_pages sys file.\n\nChange this check slightly to check for invalid value in buf as well as 0\nvalue stored in res after successful conversion via strict_strtoul.  In\nboth cases, we do not perform the scanning of this node\u0027s zones.\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e9dc5df46001510ebd3b3e54faa650f474e51a3",
      "tree": "a774cae0bbf399401c6d3068859e4a8fe36ee121",
      "parents": [
        "d43a87e68e9e71d2987a29cc239acec4e8f410c9"
      ],
      "author": {
        "name": "Li Haifeng",
        "email": "omycle@gmail.com",
        "time": "Mon Oct 31 17:09:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm: fix kunmap_high() comment\n\nSigned-off-by: Li Haifeng \u003comycle@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": "d43a87e68e9e71d2987a29cc239acec4e8f410c9",
      "tree": "75b2950b286dcad4c4e7785f991ab0a35146b8d1",
      "parents": [
        "dd73e85f6d8f721d66bcbd2734a5f4bc3d3cd768"
      ],
      "author": {
        "name": "Kyungmin Park",
        "email": "kyungmin.park@samsung.com",
        "time": "Mon Oct 31 17:09:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm: compaction: make compact_zone_order() static\n\nThere\u0027s no compact_zone_order() user outside file scope, so make it static.\n\nSigned-off-by: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd73e85f6d8f721d66bcbd2734a5f4bc3d3cd768",
      "tree": "a39776b9025de8baf6a346a43db1aee9bbafad08",
      "parents": [
        "72a2ebd8bc62e6658513d3b2a1119e91c3ea6810"
      ],
      "author": {
        "name": "Dean Nelson",
        "email": "dnelson@redhat.com",
        "time": "Mon Oct 31 17:09:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "HWPOISON: convert pr_debug()s to pr_info()s\n\nCommit fb46e73520940b (\"HWPOISON: Convert pr_debugs to pr_info) authored\nby Andi Kleen converted a number of pr_debug()s to pr_info()s.\n\nAbout the same time additional code with pr_debug()s was added by two\nother commits 8c6c2ecb4466 (\"HWPOSION, hugetlb: recover from free hugepage\nerror when !MF_COUNT_INCREASED\") and d950b95882f3d (\"HWPOISON, hugetlb:\nsoft offlining for hugepage\").  And these pr_debug()s failed to get\nconverted to pr_info()s.\n\nThis patch converts them as well.  And does some minor related whitespace\ncleanup.\n\nSigned-off-by: Dean Nelson \u003cdnelson@redhat.com\u003e\nReviewed-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": "584cff54e1ff8f59d5109dc8093efedff8bcc375",
      "tree": "464c9acb8bf22bf3a052fef23d3fd9f4f892da4a",
      "parents": [
        "09f363c7363eb10cfb4b82094bd7064e5608258b"
      ],
      "author": {
        "name": "Kautuk Consul",
        "email": "consul.kautuk@gmail.com",
        "time": "Mon Oct 31 17:08:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm/mmap.c: eliminate the ret variable from mm_take_all_locks()\n\nThe ret variable is really not needed in mm_take_all_locks().\n\nSigned-off-by: Kautuk Consul \u003cconsul.kautuk@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": "20c8c62891a346e09c8d26de41ce78bd7a76c5b0",
      "tree": "6e0a81457ee2c142f96e6e3db66c479eac21fc4a",
      "parents": [
        "99ef0315f1b320f392acc4364598340e78758fd2"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Oct 31 17:08:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "mm-add-comment-explaining-task-state-setting-in-bdi_forker_thread-fix\n\nfiddle wording\n\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "99ef0315f1b320f392acc4364598340e78758fd2",
      "tree": "e8aadca4fd1debdf9ea17c238d3bf2fc73a96137",
      "parents": [
        "de7d2b567d040e3b67fe7121945982f14343213d"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "gaowanlong@cn.fujitsu.com",
        "time": "Mon Oct 31 17:08:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:49 2011 -0700"
      },
      "message": "ksm: fix the comment of try_to_unmap_one()\n\ntry_to_unmap_one() is called by try_to_unmap_ksm(), too.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "de7d2b567d040e3b67fe7121945982f14343213d",
      "tree": "c834efc1b4117049b5da786417d9cc14c2b31076",
      "parents": [
        "f0dfcde099453aa4c0dc42473828d15a6d492936"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:08:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mm/vmalloc.c: report more vmalloc failures\n\nSome vmalloc failure paths do not report OOM conditions.\n\nAdd warn_alloc_failed, which also does a dump_stack, to those failure\npaths.\n\nThis allows more site specific vmalloc failure logging message printks to\nbe removed.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0dfcde099453aa4c0dc42473828d15a6d492936",
      "tree": "50346f4e8d9a773f266194661edea903a855a110",
      "parents": [
        "d1f0ece6cdca973c01a46dff0eb062baafe78a85"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Mon Oct 31 17:08:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "kswapd: assign new_order and new_classzone_idx after wakeup in sleeping\n\nThere 2 places to read pgdat in kswapd.  One is return from a successful\nbalance, another is waked up from kswapd sleeping.  The new_order and\nnew_classzone_idx represent the balance input order and classzone_idx.\n\nBut current new_order and new_classzone_idx are not assigned after\nkswapd_try_to_sleep(), that will cause a bug in the following scenario.\n\n1: after a successful balance, kswapd goes to sleep, and new_order \u003d 0;\n   new_classzone_idx \u003d __MAX_NR_ZONES - 1;\n\n2: kswapd waked up with order \u003d 3 and classzone_idx \u003d ZONE_NORMAL\n\n3: in the balance_pgdat() running, a new balance wakeup happened with\n   order \u003d 5, and classzone_idx \u003d ZONE_NORMAL\n\n4: the first wakeup(order \u003d 3) finished successufly, return order \u003d 3\n   but, the new_order is still 0, so, this balancing will be treated as a\n   failed balance.  And then the second tighter balancing will be missed.\n\nSo, to avoid the above problem, the new_order and new_classzone_idx need\nto be assigned for later successful comparison.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1f0ece6cdca973c01a46dff0eb062baafe78a85",
      "tree": "570aabe98bb19454723c122cee74fa42cbfa49c9",
      "parents": [
        "d2ebd0f6b89567eb93ead4e2ca0cbe03021f344b"
      ],
      "author": {
        "name": "Jonghwan Choi",
        "email": "jhbird.choi@samsung.com",
        "time": "Mon Oct 31 17:08:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mm/memblock.c: small function definition fixes\n\nwarning: function \u0027memblock_memory_can_coalesce\u0027\nwith external linkage has definition.\n\nSigned-off-by: Jonghwan Choi \u003cjhbird.choi@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2ebd0f6b89567eb93ead4e2ca0cbe03021f344b",
      "tree": "1f8fc3f7702a8b4d362f5537e135e96f86043f8d",
      "parents": [
        "64212ec569bfdd094f7a23d9b09862209a983559"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Mon Oct 31 17:08:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "kswapd: avoid unnecessary rebalance after an unsuccessful balancing\n\nIn commit 215ddd66 (\"mm: vmscan: only read new_classzone_idx from pgdat\nwhen reclaiming successfully\") , Mel Gorman said kswapd is better to sleep\nafter a unsuccessful balancing if there is tighter reclaim request pending\nin the balancing.  But in the following scenario, kswapd do something that\nis not matched our expectation.  The patch fixes this issue.\n\n1, Read pgdat request A (classzone_idx, order \u003d 3)\n2, balance_pgdat()\n3, During pgdat, a new pgdat request B (classzone_idx, order \u003d 5) is placed\n4, balance_pgdat() returns but failed since returned order \u003d 0\n5, pgdat of request A assigned to balance_pgdat(), and do balancing again.\n   While the expectation behavior of kswapd should try to sleep.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nReviewed-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nTested-by: Pádraig Brady \u003cP@draigBrady.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "64212ec569bfdd094f7a23d9b09862209a983559",
      "tree": "af9a80c08795e602c5a6401fa3599562c2b6be48",
      "parents": [
        "3ee9a4f086716d792219c021e8509f91165a4128"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 31 17:08:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "debug-pagealloc: add support for highmem pages\n\nThis adds support for highmem pages poisoning and verification to the\ndebug-pagealloc feature for no-architecture support.\n\n[akpm@linux-foundation.org: remove unneeded preempt_disable/enable]\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "3ee9a4f086716d792219c021e8509f91165a4128",
      "tree": "f85162b8e024624f07909eaba4e85b89df924ebb",
      "parents": [
        "06d5e032adcbc7d50c606a1396f00e2474e4213e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:08:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mm: neaten warn_alloc_failed\n\nAdd __attribute__((format (printf...) to the function to validate format\nand arguments.  Use vsprintf extension %pV to avoid any possible message\ninterleaving.  Coalesce format string.  Convert printks/pr_warning to\npr_warn.\n\n[akpm@linux-foundation.org: use the __printf() macro]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37a1c49a91ad55f917a399ef2174b5ebda4283f9",
      "tree": "d272ab0f51016181493c6792f0cf229a87da9ae3",
      "parents": [
        "7b6efc2bc4f19952b25ebf9b236e5ac43cd386c2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Oct 31 17:08:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "thp: mremap support and TLB optimization\n\nThis adds THP support to mremap (decreases the number of split_huge_page()\ncalls).\n\nHere are also some benchmarks with a proggy like this:\n\n\u003d\u003d\u003d\n#define _GNU_SOURCE\n#include \u003csys/mman.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/time.h\u003e\n\n#define SIZE (5UL*1024*1024*1024)\n\nint main()\n{\n        static struct timeval oldstamp, newstamp;\n\tlong diffsec;\n\tchar *p, *p2, *p3, *p4;\n\tif (posix_memalign((void **)\u0026p, 2*1024*1024, SIZE))\n\t\tperror(\"memalign\"), exit(1);\n\tif (posix_memalign((void **)\u0026p2, 2*1024*1024, SIZE))\n\t\tperror(\"memalign\"), exit(1);\n\tif (posix_memalign((void **)\u0026p3, 2*1024*1024, 4096))\n\t\tperror(\"memalign\"), exit(1);\n\n\tmemset(p, 0xff, SIZE);\n\tmemset(p2, 0xff, SIZE);\n\tmemset(p3, 0x77, 4096);\n\tgettimeofday(\u0026oldstamp, NULL);\n\tp4 \u003d mremap(p, SIZE, SIZE, MREMAP_FIXED|MREMAP_MAYMOVE, p3);\n\tgettimeofday(\u0026newstamp, NULL);\n\tdiffsec \u003d newstamp.tv_sec - oldstamp.tv_sec;\n\tdiffsec \u003d newstamp.tv_usec - oldstamp.tv_usec + 1000000 * diffsec;\n\tprintf(\"usec %ld\\n\", diffsec);\n\tif (p \u003d\u003d MAP_FAILED || p4 !\u003d p3)\n\t//if (p \u003d\u003d MAP_FAILED)\n\t\tperror(\"mremap\"), exit(1);\n\tif (memcmp(p4, p2, SIZE))\n\t\tprintf(\"mremap bug\\n\"), exit(1);\n\tprintf(\"ok\\n\");\n\n\treturn 0;\n}\n\u003d\u003d\u003d\n\nTHP on\n\n Performance counter stats for \u0027./largepage13\u0027 (3 runs):\n\n          69195836 dTLB-loads                 ( +-   3.546% )  (scaled from 50.30%)\n             60708 dTLB-load-misses           ( +-  11.776% )  (scaled from 52.62%)\n         676266476 dTLB-stores                ( +-   5.654% )  (scaled from 69.54%)\n             29856 dTLB-store-misses          ( +-   4.081% )  (scaled from 89.22%)\n        1055848782 iTLB-loads                 ( +-   4.526% )  (scaled from 80.18%)\n              8689 iTLB-load-misses           ( +-   2.987% )  (scaled from 58.20%)\n\n        7.314454164  seconds time elapsed   ( +-   0.023% )\n\nTHP off\n\n Performance counter stats for \u0027./largepage13\u0027 (3 runs):\n\n        1967379311 dTLB-loads                 ( +-   0.506% )  (scaled from 60.59%)\n           9238687 dTLB-load-misses           ( +-  22.547% )  (scaled from 61.87%)\n        2014239444 dTLB-stores                ( +-   0.692% )  (scaled from 60.40%)\n           3312335 dTLB-store-misses          ( +-   7.304% )  (scaled from 67.60%)\n        6764372065 iTLB-loads                 ( +-   0.925% )  (scaled from 79.00%)\n              8202 iTLB-load-misses           ( +-   0.475% )  (scaled from 70.55%)\n\n        9.693655243  seconds time elapsed   ( +-   0.069% )\n\ngrep thp /proc/vmstat\nthp_fault_alloc 35849\nthp_fault_fallback 0\nthp_collapse_alloc 3\nthp_collapse_alloc_failed 0\nthp_split 0\n\nthp_split 0 confirms no thp split despite plenty of hugepages allocated.\n\nThe measurement of only the mremap time (so excluding the 3 long\nmemset and final long 10GB memory accessing memcmp):\n\nTHP on\n\nusec 14824\nusec 14862\nusec 14859\n\nTHP off\n\nusec 256416\nusec 255981\nusec 255847\n\nWith an older kernel without the mremap optimizations (the below patch\noptimizes the non THP version too).\n\nTHP on\n\nusec 392107\nusec 390237\nusec 404124\n\nTHP off\n\nusec 444294\nusec 445237\nusec 445820\n\nI guess with a threaded program that sends more IPI on large SMP it\u0027d\ncreate an even larger difference.\n\nAll debug options are off except DEBUG_VM to avoid skewing the\nresults.\n\nThe only problem for native 2M mremap like it happens above both the\nsource and destination address must be 2M aligned or the hugepmd can\u0027t be\nmoved without a split but that is an hardware limitation.\n\n[akpm@linux-foundation.org: coding-style nitpicking]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b6efc2bc4f19952b25ebf9b236e5ac43cd386c2",
      "tree": "bae674bd95329a498a5f2cc5d9c23bf5a4a54305",
      "parents": [
        "ebed48460be5abd86d9a24fa7c66378e58109f30"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Oct 31 17:08:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:48 2011 -0700"
      },
      "message": "mremap: avoid sending one IPI per page\n\nThis replaces ptep_clear_flush() with ptep_get_and_clear() and a single\nflush_tlb_range() at the end of the loop, to avoid sending one IPI for\neach page.\n\nThe mmu_notifier_invalidate_range_start/end section is enlarged\naccordingly but this is not going to fundamentally change things.  It was\nmore by accident that the region under mremap was for the most part still\navailable for secondary MMUs: the primary MMU was never allowed to\nreliably access that region for the duration of the mremap (modulo\ntrapping SIGSEGV on the old address range which sounds unpractical and\nflakey).  If users wants secondary MMUs not to lose access to a large\nregion under mremap they should reduce the mremap size accordingly in\nuserland and run multiple calls.  Overall this will run faster so it\u0027s\nactually going to reduce the time the region is under mremap for the\nprimary MMU which should provide a net benefit to apps.\n\nFor KVM this is a noop because the guest physical memory is never\nmremapped, there\u0027s just no point it ever moving it while guest runs.  One\ntarget of this optimization is JVM GC (so unrelated to the mmu notifier\nlogic).\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebed48460be5abd86d9a24fa7c66378e58109f30",
      "tree": "721d935953c58ac014e3d00ea1092ab480ea3356",
      "parents": [
        "6661672053aee709d93f5dbd7887c789364c11d4"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Oct 31 17:08:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mremap: check for overflow using deltas\n\nUsing \"- 1\" relies on the old_end to be page aligned and PAGE_SIZE \u003e 1,\nthose are reasonable requirements but the check remains obscure and it\nlooks more like an off by one error than an overflow check.  This I feel\nwill improve readability.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6661672053aee709d93f5dbd7887c789364c11d4",
      "tree": "9d11bdb001d4e08cb03f8fffb1e499a9204408d1",
      "parents": [
        "0a93ebef698b08ed04af0d7d913bab8aedfdc253"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Mon Oct 31 17:08:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "memblock: add NO_BOOTMEM config symbol\n\nWith the NO_BOOTMEM symbol added architectures may now use the following\nsyntax to tell that they do not need bootmem:\n\n\tselect NO_BOOTMEM\n\nThis is much more convinient than adding a new kconfig symbol which was\notherwise required.\n\nAdding this symbol does not conflict with the architctures that already\ndefine their own symbol.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a93ebef698b08ed04af0d7d913bab8aedfdc253",
      "tree": "dcdb4bba9355647dd060d9150422537ad126442a",
      "parents": [
        "f5252e009d5b87071a919221e4f6624184005368"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Mon Oct 31 17:08:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "memblock: add memblock_start_of_DRAM()\n\nSPARC32 require access to the start address.  Add a new helper\nmemblock_start_of_DRAM() to give access to the address of the first\nmemblock - which contains the lowest address.\n\nThe awkward name was chosen to match the already present\nmemblock_end_of_DRAM().\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Yinghai Lu \u003cyinghai@kernel.org\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f5252e009d5b87071a919221e4f6624184005368",
      "tree": "4be380e99c468dcb10597c445eb6b801897eafea",
      "parents": [
        "8c5fb8eadde41f67c61a7ac2d3246dab87bf7020"
      ],
      "author": {
        "name": "Mitsuo Hayasaka",
        "email": "mitsuo.hayasaka.hu@hitachi.com",
        "time": "Mon Oct 31 17:08:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mm: avoid null pointer access in vm_struct via /proc/vmallocinfo\n\nThe /proc/vmallocinfo shows information about vmalloc allocations in\nvmlist that is a linklist of vm_struct.  It, however, may access pages\nfield of vm_struct where a page was not allocated.  This results in a null\npointer access and leads to a kernel panic.\n\nWhy this happens: In __vmalloc_node_range() called from vmalloc(), newly\nallocated vm_struct is added to vmlist at __get_vm_area_node() and then,\nsome fields of vm_struct such as nr_pages and pages are set at\n__vmalloc_area_node().  In other words, it is added to vmlist before it is\nfully initialized.  At the same time, when the /proc/vmallocinfo is read,\nit accesses the pages field of vm_struct according to the nr_pages field\nat show_numa_info().  Thus, a null pointer access happens.\n\nThe patch adds the newly allocated vm_struct to the vmlist *after* it is\nfully initialized.  So, it can avoid accessing the pages field with\nunallocated page when show_numa_info() is called.\n\nSigned-off-by: Mitsuo Hayasaka \u003cmitsuo.hayasaka.hu@hitachi.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c5fb8eadde41f67c61a7ac2d3246dab87bf7020",
      "tree": "77d333e6e5f939c43ee57f16f499764e3ddb815a",
      "parents": [
        "798248206b59acc6e1238c778281419c041891a7"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 31 17:08:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mm/debug-pagealloc.c: use memchr_inv\n\nUse newly introduced memchr_inv() for page verification.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "798248206b59acc6e1238c778281419c041891a7",
      "tree": "ff8564431367b442b18bca4a0a9732e5799e2391",
      "parents": [
        "77311139f364d7f71fc9ba88f59fd90e60205007"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 31 17:08:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "lib/string.c: introduce memchr_inv()\n\nmemchr_inv() is mainly used to check whether the whole buffer is filled\nwith just a specified byte.\n\nThe function name and prototype are stolen from logfs and the\nimplementation is from SLUB.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Eric Dumazet \u003ceric.dumazet@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": "77311139f364d7f71fc9ba88f59fd90e60205007",
      "tree": "5cde11d67e431781893bb0375dcae665750ed6dc",
      "parents": [
        "16fb951237c2b0b28037b992ee44e7ee401c30d1"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Oct 31 17:08:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mm/debug-pagealloc.c: use plain __ratelimit() instead of printk_ratelimit()\n\nprintk_ratelimit() should not be used, because it shares ratelimiting\nstate with all other unrelated printk_ratelimit() callsites.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "16fb951237c2b0b28037b992ee44e7ee401c30d1",
      "tree": "756ba52239d304d8f45deb102f17960f0a8517ec",
      "parents": [
        "49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Oct 31 17:08:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "vmscan: count pages into balanced for zone with good watermark\n\nIt\u0027s possible a zone watermark is ok when entering the balance_pgdat()\nloop, while the zone is within the requested classzone_idx.  Count pages\nfrom this zone into `balanced\u0027.  In this way, we can skip shrinking zones\ntoo much for high order allocation.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "49ea7eb65e7c5060807fb9312b1ad4c3eab82e2c",
      "tree": "88eaa206cdcac1190817820a0eb56bca2585f9ea",
      "parents": [
        "92df3a723f84cdf8133560bbff950a7a99e92bc9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:47 2011 -0700"
      },
      "message": "mm: vmscan: immediately reclaim end-of-LRU dirty pages when writeback completes\n\nWhen direct reclaim encounters a dirty page, it gets recycled around the\nLRU for another cycle.  This patch marks the page PageReclaim similar to\ndeactivate_page() so that the page gets reclaimed almost immediately after\nthe page gets cleaned.  This is to avoid reclaiming clean pages that are\nyounger than a dirty page encountered at the end of the LRU that might\nhave been something like a use-once page.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.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": "92df3a723f84cdf8133560bbff950a7a99e92bc9",
      "tree": "503efc278236d877508da66ea7ec7cbb81203d64",
      "parents": [
        "f84f6e2b0868f198f97a32ba503d6f9f319a249a"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: throttle reclaim if encountering too many dirty pages under writeback\n\nWorkloads that are allocating frequently and writing files place a large\nnumber of dirty pages on the LRU.  With use-once logic, it is possible for\nthem to reach the end of the LRU quickly requiring the reclaimer to scan\nmore to find clean pages.  Ordinarily, processes that are dirtying memory\nwill get throttled by dirty balancing but this is a global heuristic and\ndoes not take into account that LRUs are maintained on a per-zone basis.\nThis can lead to a situation whereby reclaim is scanning heavily, skipping\nover a large number of pages under writeback and recycling them around the\nLRU consuming CPU.\n\nThis patch checks how many of the number of pages isolated from the LRU\nwere dirty and under writeback.  If a percentage of them under writeback,\nthe process will be throttled if a backing device or the zone is\ncongested.  Note that this applies whether it is anonymous or file-backed\npages that are under writeback meaning that swapping is potentially\nthrottled.  This is intentional due to the fact if the swap device is\ncongested, scanning more pages and dispatching more IO is not going to\nhelp matters.\n\nThe percentage that must be in writeback depends on the priority.  At\ndefault priority, all of them must be dirty.  At DEF_PRIORITY-1, 50% of\nthem must be, DEF_PRIORITY-2, 25% etc.  i.e.  as pressure increases the\ngreater the likelihood the process will get throttled to allow the flusher\nthreads to make some progress.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.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": "f84f6e2b0868f198f97a32ba503d6f9f319a249a",
      "tree": "2103afe0304afd0045dca4b92dfd35922cfc289b",
      "parents": [
        "966dbde2c208e07bab7a45a7855e1e693eabe661"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: do not writeback filesystem pages in kswapd except in high priority\n\nIt is preferable that no dirty pages are dispatched for cleaning from the\npage reclaim path.  At normal priorities, this patch prevents kswapd\nwriting pages.\n\nHowever, page reclaim does have a requirement that pages be freed in a\nparticular zone.  If it is failing to make sufficient progress (reclaiming\n\u003c SWAP_CLUSTER_MAX at any priority priority), the priority is raised to\nscan more pages.  A priority of DEF_PRIORITY - 3 is considered to be the\npoint where kswapd is getting into trouble reclaiming pages.  If this\npriority is reached, kswapd will dispatch pages for writing.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.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": "a18bba061c789f5815c3efc3c80e6ac269911964",
      "tree": "bec0234fb338f8e06b6e39df2cfa09acf2a968a3",
      "parents": [
        "ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: remove dead code related to lumpy reclaim waiting on pages under writeback\n\nLumpy reclaim worked with two passes - the first which queued pages for IO\nand the second which waited on writeback.  As direct reclaim can no longer\nwrite pages there is some dead code.  This patch removes it but direct\nreclaim will continue to wait on pages under writeback while in\nsynchronous reclaim mode.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.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": "ee72886d8ed5d9de3fa0ed3b99a7ca7702576a96",
      "tree": "d9596005d3ea38541c5dfe1c2a0b7d5a4d73488f",
      "parents": [
        "e10d59f2c3decaf22cc5d3de7040eba202bc2df3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Oct 31 17:07:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: do not writeback filesystem pages in direct reclaim\n\nTesting from the XFS folk revealed that there is still too much I/O from\nthe end of the LRU in kswapd.  Previously it was considered acceptable by\nVM people for a small number of pages to be written back from reclaim with\ntesting generally showing about 0.3% of pages reclaimed were written back\n(higher if memory was low).  That writing back a small number of pages is\nok has been heavily disputed for quite some time and Dave Chinner\nexplained it well;\n\n\tIt doesn\u0027t have to be a very high number to be a problem. IO\n\tis orders of magnitude slower than the CPU time it takes to\n\tflush a page, so the cost of making a bad flush decision is\n\tvery high. And single page writeback from the LRU is almost\n\talways a bad flush decision.\n\nTo complicate matters, filesystems respond very differently to requests\nfrom reclaim according to Christoph Hellwig;\n\n\txfs tries to write it back if the requester is kswapd\n\text4 ignores the request if it\u0027s a delayed allocation\n\tbtrfs ignores the request\n\nAs a result, each filesystem has different performance characteristics\nwhen under memory pressure and there are many pages being dirtied.  In\nsome cases, the request is ignored entirely so the VM cannot depend on the\nIO being dispatched.\n\nThe objective of this series is to reduce writing of filesystem-backed\npages from reclaim, play nicely with writeback that is already in progress\nand throttle reclaim appropriately when writeback pages are encountered.\nThe assumption is that the flushers will always write pages faster than if\nreclaim issues the IO.\n\nA secondary goal is to avoid the problem whereby direct reclaim splices\ntwo potentially deep call stacks together.\n\nThere is a potential new problem as reclaim has less control over how long\nbefore a page in a particularly zone or container is cleaned and direct\nreclaimers depend on kswapd or flusher threads to do the necessary work.\nHowever, as filesystems sometimes ignore direct reclaim requests already,\nit is not expected to be a serious issue.\n\nPatch 1 disables writeback of filesystem pages from direct reclaim\n\tentirely. Anonymous pages are still written.\n\nPatch 2 removes dead code in lumpy reclaim as it is no longer able\n\tto synchronously write pages. This hurts lumpy reclaim but\n\tthere is an expectation that compaction is used for hugepage\n\tallocations these days and lumpy reclaim\u0027s days are numbered.\n\nPatches 3-4 add warnings to XFS and ext4 if called from\n\tdirect reclaim. With patch 1, this \"never happens\" and is\n\tintended to catch regressions in this logic in the future.\n\nPatch 5 disables writeback of filesystem pages from kswapd unless\n\tthe priority is raised to the point where kswapd is considered\n\tto be in trouble.\n\nPatch 6 throttles reclaimers if too many dirty pages are being\n\tencountered and the zones or backing devices are congested.\n\nPatch 7 invalidates dirty pages found at the end of the LRU so they\n\tare reclaimed quickly after being written back rather than\n\twaiting for a reclaimer to find them\n\nI consider this series to be orthogonal to the writeback work but it is\nworth noting that the writeback work affects the viability of patch 8 in\nparticular.\n\nI tested this on ext4 and xfs using fs_mark, a simple writeback test based\non dd and a micro benchmark that does a streaming write to a large mapping\n(exercises use-once LRU logic) followed by streaming writes to a mix of\nanonymous and file-backed mappings.  The command line for fs_mark when\nbotted with 512M looked something like\n\n./fs_mark -d  /tmp/fsmark-2676  -D  100  -N  150  -n  150  -L  25  -t  1  -S0  -s  10485760\n\nThe number of files was adjusted depending on the amount of available\nmemory so that the files created was about 3xRAM.  For multiple threads,\nthe -d switch is specified multiple times.\n\nThe test machine is x86-64 with an older generation of AMD processor with\n4 cores.  The underlying storage was 4 disks configured as RAID-0 as this\nwas the best configuration of storage I had available.  Swap is on a\nseparate disk.  Dirty ratio was tuned to 40% instead of the default of\n20%.\n\nTesting was run with and without monitors to both verify that the patches\nwere operating as expected and that any performance gain was real and not\ndue to interference from monitors.\n\nHere is a summary of results based on testing XFS.\n\n512M1P-xfs           Files/s  mean                 32.69 ( 0.00%)     34.44 ( 5.08%)\n512M1P-xfs           Elapsed Time fsmark                    51.41     48.29\n512M1P-xfs           Elapsed Time simple-wb                114.09    108.61\n512M1P-xfs           Elapsed Time mmap-strm                113.46    109.34\n512M1P-xfs           Kswapd efficiency fsmark                 62%       63%\n512M1P-xfs           Kswapd efficiency simple-wb              56%       61%\n512M1P-xfs           Kswapd efficiency mmap-strm              44%       42%\n512M-xfs             Files/s  mean                 30.78 ( 0.00%)     35.94 (14.36%)\n512M-xfs             Elapsed Time fsmark                    56.08     48.90\n512M-xfs             Elapsed Time simple-wb                112.22     98.13\n512M-xfs             Elapsed Time mmap-strm                219.15    196.67\n512M-xfs             Kswapd efficiency fsmark                 54%       56%\n512M-xfs             Kswapd efficiency simple-wb              54%       55%\n512M-xfs             Kswapd efficiency mmap-strm              45%       44%\n512M-4X-xfs          Files/s  mean                 30.31 ( 0.00%)     33.33 ( 9.06%)\n512M-4X-xfs          Elapsed Time fsmark                    63.26     55.88\n512M-4X-xfs          Elapsed Time simple-wb                100.90     90.25\n512M-4X-xfs          Elapsed Time mmap-strm                261.73    255.38\n512M-4X-xfs          Kswapd efficiency fsmark                 49%       50%\n512M-4X-xfs          Kswapd efficiency simple-wb              54%       56%\n512M-4X-xfs          Kswapd efficiency mmap-strm              37%       36%\n512M-16X-xfs         Files/s  mean                 60.89 ( 0.00%)     65.22 ( 6.64%)\n512M-16X-xfs         Elapsed Time fsmark                    67.47     58.25\n512M-16X-xfs         Elapsed Time simple-wb                103.22     90.89\n512M-16X-xfs         Elapsed Time mmap-strm                237.09    198.82\n512M-16X-xfs         Kswapd efficiency fsmark                 45%       46%\n512M-16X-xfs         Kswapd efficiency simple-wb              53%       55%\n512M-16X-xfs         Kswapd efficiency mmap-strm              33%       33%\n\nUp until 512-4X, the FSmark improvements were statistically significant.\nFor the 4X and 16X tests the results were within standard deviations but\njust barely.  The time to completion for all tests is improved which is an\nimportant result.  In general, kswapd efficiency is not affected by\nskipping dirty pages.\n\n1024M1P-xfs          Files/s  mean                 39.09 ( 0.00%)     41.15 ( 5.01%)\n1024M1P-xfs          Elapsed Time fsmark                    84.14     80.41\n1024M1P-xfs          Elapsed Time simple-wb                210.77    184.78\n1024M1P-xfs          Elapsed Time mmap-strm                162.00    160.34\n1024M1P-xfs          Kswapd efficiency fsmark                 69%       75%\n1024M1P-xfs          Kswapd efficiency simple-wb              71%       77%\n1024M1P-xfs          Kswapd efficiency mmap-strm              43%       44%\n1024M-xfs            Files/s  mean                 35.45 ( 0.00%)     37.00 ( 4.19%)\n1024M-xfs            Elapsed Time fsmark                    94.59     91.00\n1024M-xfs            Elapsed Time simple-wb                229.84    195.08\n1024M-xfs            Elapsed Time mmap-strm                405.38    440.29\n1024M-xfs            Kswapd efficiency fsmark                 79%       71%\n1024M-xfs            Kswapd efficiency simple-wb              74%       74%\n1024M-xfs            Kswapd efficiency mmap-strm              39%       42%\n1024M-4X-xfs         Files/s  mean                 32.63 ( 0.00%)     35.05 ( 6.90%)\n1024M-4X-xfs         Elapsed Time fsmark                   103.33     97.74\n1024M-4X-xfs         Elapsed Time simple-wb                204.48    178.57\n1024M-4X-xfs         Elapsed Time mmap-strm                528.38    511.88\n1024M-4X-xfs         Kswapd efficiency fsmark                 81%       70%\n1024M-4X-xfs         Kswapd efficiency simple-wb              73%       72%\n1024M-4X-xfs         Kswapd efficiency mmap-strm              39%       38%\n1024M-16X-xfs        Files/s  mean                 42.65 ( 0.00%)     42.97 ( 0.74%)\n1024M-16X-xfs        Elapsed Time fsmark                   103.11     99.11\n1024M-16X-xfs        Elapsed Time simple-wb                200.83    178.24\n1024M-16X-xfs        Elapsed Time mmap-strm                397.35    459.82\n1024M-16X-xfs        Kswapd efficiency fsmark                 84%       69%\n1024M-16X-xfs        Kswapd efficiency simple-wb              74%       73%\n1024M-16X-xfs        Kswapd efficiency mmap-strm              39%       40%\n\nAll FSMark tests up to 16X had statistically significant improvements.\nFor the most part, tests are completing faster with the exception of the\nstreaming writes to a mixture of anonymous and file-backed mappings which\nwere slower in two cases\n\nIn the cases where the mmap-strm tests were slower, there was more\nswapping due to dirty pages being skipped.  The number of additional pages\nswapped is almost identical to the fewer number of pages written from\nreclaim.  In other words, roughly the same number of pages were reclaimed\nbut swapping was slower.  As the test is a bit unrealistic and stresses\nmemory heavily, the small shift is acceptable.\n\n4608M1P-xfs          Files/s  mean                 29.75 ( 0.00%)     30.96 ( 3.91%)\n4608M1P-xfs          Elapsed Time fsmark                   512.01    492.15\n4608M1P-xfs          Elapsed Time simple-wb                618.18    566.24\n4608M1P-xfs          Elapsed Time mmap-strm                488.05    465.07\n4608M1P-xfs          Kswapd efficiency fsmark                 93%       86%\n4608M1P-xfs          Kswapd efficiency simple-wb              88%       84%\n4608M1P-xfs          Kswapd efficiency mmap-strm              46%       45%\n4608M-xfs            Files/s  mean                 27.60 ( 0.00%)     28.85 ( 4.33%)\n4608M-xfs            Elapsed Time fsmark                   555.96    532.34\n4608M-xfs            Elapsed Time simple-wb                659.72    571.85\n4608M-xfs            Elapsed Time mmap-strm               1082.57   1146.38\n4608M-xfs            Kswapd efficiency fsmark                 89%       91%\n4608M-xfs            Kswapd efficiency simple-wb              88%       82%\n4608M-xfs            Kswapd efficiency mmap-strm              48%       46%\n4608M-4X-xfs         Files/s  mean                 26.00 ( 0.00%)     27.47 ( 5.35%)\n4608M-4X-xfs         Elapsed Time fsmark                   592.91    564.00\n4608M-4X-xfs         Elapsed Time simple-wb                616.65    575.07\n4608M-4X-xfs         Elapsed Time mmap-strm               1773.02   1631.53\n4608M-4X-xfs         Kswapd efficiency fsmark                 90%       94%\n4608M-4X-xfs         Kswapd efficiency simple-wb              87%       82%\n4608M-4X-xfs         Kswapd efficiency mmap-strm              43%       43%\n4608M-16X-xfs        Files/s  mean                 26.07 ( 0.00%)     26.42 ( 1.32%)\n4608M-16X-xfs        Elapsed Time fsmark                   602.69    585.78\n4608M-16X-xfs        Elapsed Time simple-wb                606.60    573.81\n4608M-16X-xfs        Elapsed Time mmap-strm               1549.75   1441.86\n4608M-16X-xfs        Kswapd efficiency fsmark                 98%       98%\n4608M-16X-xfs        Kswapd efficiency simple-wb              88%       82%\n4608M-16X-xfs        Kswapd efficiency mmap-strm              44%       42%\n\nUnlike the other tests, the fsmark results are not statistically\nsignificant but the min and max times are both improved and for the most\npart, tests completed faster.\n\nThere are other indications that this is an improvement as well.  For\nexample, in the vast majority of cases, there were fewer pages scanned by\ndirect reclaim implying in many cases that stalls due to direct reclaim\nare reduced.  KSwapd is scanning more due to skipping dirty pages which is\nunfortunate but the CPU usage is still acceptable\n\nIn an earlier set of tests, I used blktrace and in almost all cases\nthroughput throughout the entire test was higher.  However, I ended up\ndiscarding those results as recording blktrace data was too heavy for my\nliking.\n\nOn a laptop, I plugged in a USB stick and ran a similar tests of tests\nusing it as backing storage.  A desktop environment was running and for\nthe entire duration of the tests, firefox and gnome terminal were\nlaunching and exiting to vaguely simulate a user.\n\n1024M-xfs            Files/s  mean               0.41 ( 0.00%)        0.44 ( 6.82%)\n1024M-xfs            Elapsed Time fsmark               2053.52   1641.03\n1024M-xfs            Elapsed Time simple-wb            1229.53    768.05\n1024M-xfs            Elapsed Time mmap-strm            4126.44   4597.03\n1024M-xfs            Kswapd efficiency fsmark              84%       85%\n1024M-xfs            Kswapd efficiency simple-wb           92%       81%\n1024M-xfs            Kswapd efficiency mmap-strm           60%       51%\n1024M-xfs            Avg wait ms fsmark                5404.53     4473.87\n1024M-xfs            Avg wait ms simple-wb             2541.35     1453.54\n1024M-xfs            Avg wait ms mmap-strm             3400.25     3852.53\n\nThe mmap-strm results were hurt because firefox launching had a tendency\nto push the test out of memory.  On the postive side, firefox launched\nmarginally faster with the patches applied.  Time to completion for many\ntests was faster but more importantly - the \"Avg wait\" time as measured by\niostat was far lower implying the system would be more responsive.  It was\nalso the case that \"Avg wait ms\" on the root filesystem was lower.  I\ntested it manually and while the system felt slightly more responsive\nwhile copying data to a USB stick, it was marginal enough that it could be\nmy imagination.\n\nThis patch: do not writeback filesystem pages in direct reclaim.\n\nWhen kswapd is failing to keep zones above the min watermark, a process\nwill enter direct reclaim in the same manner kswapd does.  If a dirty page\nis encountered during the scan, this page is written to backing storage\nusing mapping-\u003ewritepage.\n\nThis causes two problems.  First, it can result in very deep call stacks,\nparticularly if the target storage or filesystem are complex.  Some\nfilesystems ignore write requests from direct reclaim as a result.  The\nsecond is that a single-page flush is inefficient in terms of IO.  While\nthere is an expectation that the elevator will merge requests, this does\nnot always happen.  Quoting Christoph Hellwig;\n\n\tThe elevator has a relatively small window it can operate on,\n\tand can never fix up a bad large scale writeback pattern.\n\nThis patch prevents direct reclaim writing back filesystem pages by\nchecking if current is kswapd.  Anonymous pages are still written to swap\nas there is not the equivalent of a flusher thread for anonymous pages.\nIf the dirty pages cannot be written back, they are placed back on the LRU\nlists.  There is now a direct dependency on dirty page balancing to\nprevent too many pages in the system being dirtied which would prevent\nreclaim making forward progress.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.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": "f11c0ca501af89fc07b0d9f17531ba3b68a4ef39",
      "tree": "c66a24b4ca2778b940c01a2af78eca6abc0b3421",
      "parents": [
        "4f31888c104687078f8d88c2f11eca1080c88464"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Oct 31 17:07:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "mm: vmscan: drop nr_force_scan[] from get_scan_count\n\nThe nr_force_scan[] tuple holds the effective scan numbers for anon and\nfile pages in case the situation called for a forced scan and the\nregularly calculated scan numbers turned out zero.\n\nHowever, the effective scan number can always be assumed to be\nSWAP_CLUSTER_MAX right before the division into anon and file.  The\nnumerators and denominator are properly set up for all cases, be it force\nscan for just file, just anon, or both, to do the right thing.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f31888c104687078f8d88c2f11eca1080c88464",
      "tree": "453bcfffe1955f6087156916eb102af1575206ee",
      "parents": [
        "f5fc870da2f8798edb5481cd2137a3b2d5bd1b19"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Mon Oct 31 17:07:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "mm: output a list of loaded modules when we hit bad_page()\n\nWhen we get a bad_page bug report, it\u0027s useful to see what modules the\nuser had loaded.\n\nSigned-off-by: Dave Jones \u003cdavej@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": "43362a4977e37db46f86f7e6ab935f0006956632",
      "tree": "5ab7070237ebd3f40d7fcfc0066586422da8310a",
      "parents": [
        "c9f01245b6a7d77d17deaa71af10f6aca14fa24e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Oct 31 17:07:18 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "oom: fix race while temporarily setting current\u0027s oom_score_adj\n\ntest_set_oom_score_adj() was introduced in 72788c385604 (\"oom: replace\nPF_OOM_ORIGIN with toggling oom_score_adj\") to temporarily elevate\ncurrent\u0027s oom_score_adj for ksm and swapoff without requiring an\nadditional per-process flag.\n\nUsing that function to both set oom_score_adj to OOM_SCORE_ADJ_MAX and\nthen reinstate the previous value is racy since it\u0027s possible that\nuserspace can set the value to something else itself before the old value\nis reinstated.  That results in userspace setting current\u0027s oom_score_adj\nto a different value and then the kernel immediately setting it back to\nits previous value without notification.\n\nTo fix this, a new compare_swap_oom_score_adj() function is introduced\nwith the same semantics as the compare and swap CAS instruction, or\nCMPXCHG on x86.  It is used to reinstate the previous value of\noom_score_adj if and only if the present value is the same as the old\nvalue.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9f01245b6a7d77d17deaa71af10f6aca14fa24e",
      "tree": "13ffde591a5bcefba39cb6393f09b27f1ebc1a30",
      "parents": [
        "7b0d44fa49b1dcfdcf4897f12ddd12ddeab1a9d7"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Oct 31 17:07:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "oom: remove oom_disable_count\n\nThis removes mm-\u003eoom_disable_count entirely since it\u0027s unnecessary and\ncurrently buggy.  The counter was intended to be per-process but it\u0027s\ncurrently decremented in the exit path for each thread that exits, causing\nit to underflow.\n\nThe count was originally intended to prevent oom killing threads that\nshare memory with threads that cannot be killed since it doesn\u0027t lead to\nfuture memory freeing.  The counter could be fixed to represent all\nthreads sharing the same mm, but it\u0027s better to remove the count since:\n\n - it is possible that the OOM_DISABLE thread sharing memory with the\n   victim is waiting on that thread to exit and will actually cause\n   future memory freeing, and\n\n - there is no guarantee that a thread is disabled from oom killing just\n   because another thread sharing its mm is oom disabled.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nReviewed-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b0d44fa49b1dcfdcf4897f12ddd12ddeab1a9d7",
      "tree": "c840608f5266e4ba783f4c4405efe89b69ae5754",
      "parents": [
        "f660daac474c6f7c2d710100e29b3276a6f4db0a"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Oct 31 17:07:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "oom: avoid killing kthreads if they assume the oom killed thread\u0027s mm\n\nAfter selecting a task to kill, the oom killer iterates all processes and\nkills all other threads that share the same mm_struct in different thread\ngroups.  It would not otherwise be helpful to kill a thread if its memory\nwould not be subsequently freed.\n\nA kernel thread, however, may assume a user thread\u0027s mm by using\nuse_mm().  This is only temporary and should not result in sending a\nSIGKILL to that kthread.\n\nThis patch ensures that only user threads and not kthreads are sent a\nSIGKILL if they share the same mm_struct as the oom killed task.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f660daac474c6f7c2d710100e29b3276a6f4db0a",
      "tree": "ad142e254a7b804cb158f2c64e9e6a77e8e4388c",
      "parents": [
        "d08c429b06d21bd2add88aea2cd1996f1b9b3bda"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Oct 31 17:07:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "oom: thaw threads if oom killed thread is frozen before deferring\n\nIf a thread has been oom killed and is frozen, thaw it before returning to\nthe page allocator.  Otherwise, it can stay frozen indefinitely and no\nmemory will be freed.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d08c429b06d21bd2add88aea2cd1996f1b9b3bda",
      "tree": "7a7f0002e4747ebc70978dcda565a09a943dc992",
      "parents": [
        "3da367c3e5fca71d4e778fa565d9b098d5518f4a"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Oct 31 17:07:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "mm/page-writeback.c: document bdi_min_ratio\n\nLooks like someone got distracted after adding the comment characters.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3da367c3e5fca71d4e778fa565d9b098d5518f4a",
      "tree": "915dff1989bdffaed157b56f724631b5d8f2d328",
      "parents": [
        "3fa36acbced23c563345de3179dfe1775f15be5e"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Oct 31 17:07:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "vmscan: add block plug for page reclaim\n\nper-task block plug can reduce block queue lock contention and increase\nrequest merge.  Currently page reclaim doesn\u0027t support it.  I originally\nthought page reclaim doesn\u0027t need it, because kswapd thread count is\nlimited and file cache write is done at flusher mostly.\n\nWhen I test a workload with heavy swap in a 4-node machine, each CPU is\ndoing direct page reclaim and swap.  This causes block queue lock\ncontention.  In my test, without below patch, the CPU utilization is about\n2% ~ 7%.  With the patch, the CPU utilization is about 1% ~ 3%.  Disk\nthroughput isn\u0027t changed.  This should improve normal kswapd write and\nfile cache write too (increase request merge for example), but might not\nbe so obvious as I explain above.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\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": "0dabec93de633a87adfbbe1d800a4c56cd19d73b",
      "tree": "51850bc562f8f95d284dbd7baeecfaefd573fccf",
      "parents": [
        "f80c0673610e36ae29d63e3297175e22f70dde5f"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:45 2011 -0700"
      },
      "message": "mm: migration: clean up unmap_and_move()\n\nunmap_and_move() is one a big messy function.  Clean it up.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f80c0673610e36ae29d63e3297175e22f70dde5f",
      "tree": "0a6aab3b637fa75961224e9261eb544156672c34",
      "parents": [
        "39deaf8585152f1a35c1676d3d7dc6ae0fb65967"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: zone_reclaim: make isolate_lru_page() filter-aware\n\nIn __zone_reclaim case, we don\u0027t want to shrink mapped page.  Nonetheless,\nwe have isolated mapped page and re-add it into LRU\u0027s head.  It\u0027s\nunnecessary CPU overhead and makes LRU churning.\n\nOf course, when we isolate the page, the page might be mapped but when we\ntry to migrate the page, the page would be not mapped.  So it could be\nmigrated.  But race is rare and although it happens, it\u0027s no big deal.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39deaf8585152f1a35c1676d3d7dc6ae0fb65967",
      "tree": "a7509ea61c2f1028ed7ef961aa1abd16d50905f9",
      "parents": [
        "4356f21d09283dc6d39a6f7287a65ddab61e2808"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:51 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: compaction: make isolate_lru_page() filter-aware\n\nIn async mode, compaction doesn\u0027t migrate dirty or writeback pages.  So,\nit\u0027s meaningless to pick the page and re-add it to lru list.\n\nOf course, when we isolate the page in compaction, the page might be dirty\nor writeback but when we try to migrate the page, the page would be not\ndirty, writeback.  So it could be migrated.  But it\u0027s very unlikely as\nisolate and migration cycle is much faster than writeout.\n\nSo, this patch helps cpu overhead and prevent unnecessary LRU churning.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4356f21d09283dc6d39a6f7287a65ddab61e2808",
      "tree": "34822a1662ea83291455834556a4fb5bf98ecd72",
      "parents": [
        "b9e84ac1536d35aee03b2601f19694949f0bd506"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: change isolate mode from #define to bitwise type\n\nChange ISOLATE_XXX macro with bitwise isolate_mode_t type.  Normally,\nmacro isn\u0027t recommended as it\u0027s type-unsafe and making debugging harder as\nsymbol cannot be passed throught to the debugger.\n\nQuote from Johannes\n\" Hmm, it would probably be cleaner to fully convert the isolation mode\ninto independent flags.  INACTIVE, ACTIVE, BOTH is currently a\ntri-state among flags, which is a bit ugly.\"\n\nThis patch moves isolate mode from swap.h to mmzone.h by memcontrol.h\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9e84ac1536d35aee03b2601f19694949f0bd506",
      "tree": "822eb1802818954248efc5cf67dc9a8a0ace5908",
      "parents": [
        "fcf634098c00dd9cd247447368495f0b79be12d1"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: compaction: trivial clean up in acct_isolated()\n\nacct_isolated of compaction uses page_lru_base_type which returns only\nbase type of LRU list so it never returns LRU_ACTIVE_ANON or\nLRU_ACTIVE_FILE.  In addtion, cc-\u003enr_[anon|file] is used in only\nacct_isolated so it doesn\u0027t have fields in conpact_control.\n\nThis patch removes fields from compact_control and makes clear function of\nacct_issolated which counts the number of anon|file pages isolated.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fcf634098c00dd9cd247447368495f0b79be12d1",
      "tree": "77fc98cd461bd52ba3b14e833d54a115ffbbd7bc",
      "parents": [
        "32ea845d5bafc37b7406bea1aee3005407cb0900"
      ],
      "author": {
        "name": "Christopher Yeoh",
        "email": "cyeoh@au1.ibm.com",
        "time": "Mon Oct 31 17:06:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "Cross Memory Attach\n\nThe basic idea behind cross memory attach is to allow MPI programs doing\nintra-node communication to do a single copy of the message rather than a\ndouble copy of the message via shared memory.\n\nThe following patch attempts to achieve this by allowing a destination\nprocess, given an address and size from a source process, to copy memory\ndirectly from the source process into its own address space via a system\ncall.  There is also a symmetrical ability to copy from the current\nprocess\u0027s address space into a destination process\u0027s address space.\n\n- Use of /proc/pid/mem has been considered, but there are issues with\n  using it:\n  - Does not allow for specifying iovecs for both src and dest, assuming\n    preadv or pwritev was implemented either the area read from or\n  written to would need to be contiguous.\n  - Currently mem_read allows only processes who are currently\n  ptrace\u0027ing the target and are still able to ptrace the target to read\n  from the target. This check could possibly be moved to the open call,\n  but its not clear exactly what race this restriction is stopping\n  (reason  appears to have been lost)\n  - Having to send the fd of /proc/self/mem via SCM_RIGHTS on unix\n  domain socket is a bit ugly from a userspace point of view,\n  especially when you may have hundreds if not (eventually) thousands\n  of processes  that all need to do this with each other\n  - Doesn\u0027t allow for some future use of the interface we would like to\n  consider adding in the future (see below)\n  - Interestingly reading from /proc/pid/mem currently actually\n  involves two copies! (But this could be fixed pretty easily)\n\nAs mentioned previously use of vmsplice instead was considered, but has\nproblems.  Since you need the reader and writer working co-operatively if\nthe pipe is not drained then you block.  Which requires some wrapping to\ndo non blocking on the send side or polling on the receive.  In all to all\ncommunication it requires ordering otherwise you can deadlock.  And in the\nexample of many MPI tasks writing to one MPI task vmsplice serialises the\ncopying.\n\nThere are some cases of MPI collectives where even a single copy interface\ndoes not get us the performance gain we could.  For example in an\nMPI_Reduce rather than copy the data from the source we would like to\ninstead use it directly in a mathops (say the reduce is doing a sum) as\nthis would save us doing a copy.  We don\u0027t need to keep a copy of the data\nfrom the source.  I haven\u0027t implemented this, but I think this interface\ncould in the future do all this through the use of the flags - eg could\nspecify the math operation and type and the kernel rather than just\ncopying the data would apply the specified operation between the source\nand destination and store it in the destination.\n\nAlthough we don\u0027t have a \"second user\" of the interface (though I\u0027ve had\nsome nibbles from people who may be interested in using it for intra\nprocess messaging which is not MPI).  This interface is something which\nhardware vendors are already doing for their custom drivers to implement\nfast local communication.  And so in addition to this being useful for\nOpenMPI it would mean the driver maintainers don\u0027t have to fix things up\nwhen the mm changes.\n\nThere was some discussion about how much faster a true zero copy would\ngo. Here\u0027s a link back to the email with some testing I did on that:\n\nhttp://marc.info/?l\u003dlinux-mm\u0026m\u003d130105930902915\u0026w\u003d2\n\nThere is a basic man page for the proposed interface here:\n\nhttp://ozlabs.org/~cyeoh/cma/process_vm_readv.txt\n\nThis has been implemented for x86 and powerpc, other architecture should\nmainly (I think) just need to add syscall numbers for the process_vm_readv\nand process_vm_writev. There are 32 bit compatibility versions for\n64-bit kernels.\n\nFor arch maintainers there are some simple tests to be able to quickly\nverify that the syscalls are working correctly here:\n\nhttp://ozlabs.org/~cyeoh/cma/cma-test-20110718.tgz\n\nSigned-off-by: Chris Yeoh \u003cyeohc@au1.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: \u003clinux-man@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f362f98e7c445643d27c610bb7a86b79727b592e",
      "tree": "399d9ebccdfbdfe9690ab1403a001d6f08e54b41",
      "parents": [
        "f793f2961170c0b49c1650e69e7825484159ce62",
        "f3c7691e8d30d88899b514675c7c86d19057b5fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:49:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue: (21 commits)\n  leases: fix write-open/read-lease race\n  nfs: drop unnecessary locking in llseek\n  ext4: replace cut\u0027n\u0027pasted llseek code with generic_file_llseek_size\n  vfs: add generic_file_llseek_size\n  vfs: do (nearly) lockless generic_file_llseek\n  direct-io: merge direct_io_walker into __blockdev_direct_IO\n  direct-io: inline the complete submission path\n  direct-io: separate map_bh from dio\n  direct-io: use a slab cache for struct dio\n  direct-io: rearrange fields in dio/dio_submit to avoid holes\n  direct-io: fix a wrong comment\n  direct-io: separate fields only used in the submission path from struct dio\n  vfs: fix spinning prevention in prune_icache_sb\n  vfs: add a comment to inode_permission()\n  vfs: pass all mask flags check_acl and posix_acl_permission\n  vfs: add hex format for MAY_* flag values\n  vfs: indicate that the permission functions take all the MAY_* flags\n  compat: sync compat_stats with statfs.\n  vfs: add \"device\" tag to /proc/self/mountstats\n  cleanup: vfs: small comment fix for block_invalidatepage\n  ...\n\nFix up trivial conflict in fs/gfs2/file.c (llseek changes)\n"
    },
    {
      "commit": "39be79c16f2b8eb07dd0d4e965cddfe39cc0534a",
      "tree": "821611221295d47c671ec72e1fb558efcedff03b",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Oct 27 23:53:08 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Fri Oct 28 13:55:08 2011 +0200"
      },
      "message": "vfs: iov_iter: have iov_iter_advance decrement nr_segs appropriately\n\nCurrently, when you call iov_iter_advance, then the pointer to the iovec\narray can be incremented, but it does not decrement the nr_segs value in\nthe iov_iter struct. The result is a iov_iter struct with a nr_segs\nvalue that goes beyond the end of the array.\n\nWhile I\u0027m not aware of anything that\u0027s specifically broken by this, it\nseems odd and a bit dangerous not to decrement that value. If someone\nwere to trust the nr_segs value to be correct, then they could end up\nwalking off the end of the array.\n\nChanging this might also provide some micro-optimization when dealing\nwith the last iovec in an array. Many of the other routines that deal\nwith iov_iter have optimized codepaths when nr_segs \u003d\u003d 1.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e182a345d40deba7c3165a2857812bf403818319",
      "tree": "01cace799491cbb6bea19c10de971fd3a84d9868",
      "parents": [
        "3cfef9524677a4ecb392d6fbffe6ebce6302f1d4",
        "fe353178653b15add8626f5474842601be160281",
        "dcc3be6a548a1e51adaab3be6d9dfbb68bc0e3a0"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 26 18:09:12 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Wed Oct 26 18:09:12 2011 +0300"
      },
      "message": "Merge branches \u0027slab/next\u0027 and \u0027slub/partial\u0027 into slab/for-linus\n"
    },
    {
      "commit": "59e52534172d845ebffb0d7e85fc56fb7b857051",
      "tree": "49552e03f1bdb413cd8b5f7542e91770688d7047",
      "parents": [
        "73692d9bb58ecc2fa73f4b2bfcf6eadaa6d49a26",
        "0d89e54c8249645404283436d952afc261a04e1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 12:11:02 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 12:11:02 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (59 commits)\n  MAINTAINERS: linux-m32r is moderated for non-subscribers\n  linux@lists.openrisc.net is moderated for non-subscribers\n  Drop default from \"DM365 codec select\" choice\n  parisc: Kconfig: cleanup Kernel page size default\n  Kconfig: remove redundant CONFIG_ prefix on two symbols\n  cris: remove arch/cris/arch-v32/lib/nand_init.S\n  microblaze: add missing CONFIG_ prefixes\n  h8300: drop puzzling Kconfig dependencies\n  MAINTAINERS: microblaze-uclinux@itee.uq.edu.au is moderated for non-subscribers\n  tty: drop superfluous dependency in Kconfig\n  ARM: mxc: fix Kconfig typo \u0027i.MX51\u0027\n  Fix file references in Kconfig files\n  aic7xxx: fix Kconfig references to READMEs\n  Fix file references in drivers/ide/\n  thinkpad_acpi: Fix printk typo \u0027bluestooth\u0027\n  bcmring: drop commented out line in Kconfig\n  btmrvl_sdio: fix typo \u0027btmrvl_sdio_sd6888\u0027\n  doc: raw1394: Trivial typo fix\n  CIFS: Don\u0027t free volume_info-\u003eUNC until we are entirely done with it.\n  treewide: Correct spelling of successfully in comments\n  ...\n"
    },
    {
      "commit": "36b8d186e6cc8e32cb5227f5645a58e1bc0af190",
      "tree": "1000ad26e189e6ff2c53fb7eeff605f59c7ad94e",
      "parents": [
        "cd85b557414fe4cd44ea6608825e96612a5fe2b2",
        "c45ed235abf1b0b6666417e3c394f18717976acd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 25 09:45:31 2011 +0200"
      },
      "message": "Merge branch \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security\n\n* \u0027next\u0027 of git://selinuxproject.org/~jmorris/linux-security: (95 commits)\n  TOMOYO: Fix incomplete read after seek.\n  Smack: allow to access /smack/access as normal user\n  TOMOYO: Fix unused kernel config option.\n  Smack: fix: invalid length set for the result of /smack/access\n  Smack: compilation fix\n  Smack: fix for /smack/access output, use string instead of byte\n  Smack: domain transition protections (v3)\n  Smack: Provide information for UDS getsockopt(SO_PEERCRED)\n  Smack: Clean up comments\n  Smack: Repair processing of fcntl\n  Smack: Rule list lookup performance\n  Smack: check permissions from user space (v2)\n  TOMOYO: Fix quota and garbage collector.\n  TOMOYO: Remove redundant tasklist_lock.\n  TOMOYO: Fix domain transition failure warning.\n  TOMOYO: Remove tomoyo_policy_memory_lock spinlock.\n  TOMOYO: Simplify garbage collector.\n  TOMOYO: Fix make namespacecheck warnings.\n  target: check hex2bin result\n  encrypted-keys: check hex2bin result\n  ...\n"
    },
    {
      "commit": "486cf46f3f9be5f2a966016c1a8fe01e32cde09e",
      "tree": "98a6e2376507dee6ea89a9b0073511c703d940dc",
      "parents": [
        "e4fcd69c9e4e273352e0f87cabd9648606da0c3e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Oct 19 12:50:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 19 23:42:58 2011 -0700"
      },
      "message": "mm: fix race between mremap and removing migration entry\n\nI don\u0027t usually pay much attention to the stale \"? \" addresses in\nstack backtraces, but this lucky report from Pawel Sikora hints that\nmremap\u0027s move_ptes() has inadequate locking against page migration.\n\n 3.0 BUG_ON(!PageLocked(p)) in migration_entry_to_page():\n kernel BUG at include/linux/swapops.h:105!\n RIP: 0010:[\u003cffffffff81127b76\u003e]  [\u003cffffffff81127b76\u003e]\n                       migration_entry_wait+0x156/0x160\n  [\u003cffffffff811016a1\u003e] handle_pte_fault+0xae1/0xaf0\n  [\u003cffffffff810feee2\u003e] ? __pte_alloc+0x42/0x120\n  [\u003cffffffff8112c26b\u003e] ? do_huge_pmd_anonymous_page+0xab/0x310\n  [\u003cffffffff81102a31\u003e] handle_mm_fault+0x181/0x310\n  [\u003cffffffff81106097\u003e] ? vma_adjust+0x537/0x570\n  [\u003cffffffff81424bed\u003e] do_page_fault+0x11d/0x4e0\n  [\u003cffffffff81109a05\u003e] ? do_mremap+0x2d5/0x570\n  [\u003cffffffff81421d5f\u003e] page_fault+0x1f/0x30\n\nmremap\u0027s down_write of mmap_sem, together with i_mmap_mutex or lock,\nand pagetable locks, were good enough before page migration (with its\nrequirement that every migration entry be found) came in, and enough\nwhile migration always held mmap_sem; but not enough nowadays, when\nthere\u0027s memory hotremove and compaction.\n\nThe danger is that move_ptes() lets a migration entry dodge around\nbehind remove_migration_pte()\u0027s back, so it\u0027s in the old location when\nlooking at the new, then in the new location when looking at the old.\n\nEither mremap\u0027s move_ptes() must additionally take anon_vma lock(), or\nmigration\u0027s remove_migration_pte() must stop peeking for is_swap_entry()\nbefore it takes pagetable lock.\n\nConsensus chooses the latter: we prefer to add overhead to migration\nthan to mremapping, which gets used by JVMs and by exec stack setup.\n\nReported-and-tested-by: Paweł Sikora \u003cpluto@agmk.net\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcc3be6a548a1e51adaab3be6d9dfbb68bc0e3a0",
      "tree": "afe8ced0d1944ed1a33db168eae6686bd6d038bb",
      "parents": [
        "9f26490412cf15b04ac8f44a512ba0b09e774576"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Tue Sep 06 14:46:01 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 23:03:31 2011 +0300"
      },
      "message": "slub: Discard slab page when node partial \u003e minimum partial number\n\nDiscarding slab should be done when node partial \u003e min_partial.  Otherwise,\nnode partial slab may eat up all memory.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "9f26490412cf15b04ac8f44a512ba0b09e774576",
      "tree": "56bc5068f353fb16a1038ffc0fdaaef54d7fd7c8",
      "parents": [
        "12d79634f8d7af5229b7d21143d50e7cf7d94177"
      ],
      "author": {
        "name": "Alex Shi",
        "email": "alex.shi@intel.com",
        "time": "Thu Sep 01 11:32:18 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 23:03:30 2011 +0300"
      },
      "message": "slub: correct comments error for per cpu partial\n\nCorrect comment errors, that mistake cpu partial objects number as pages\nnumber, may make reader misunderstand.\n\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ab067e99d22ec78ff646de1283348729d1aa66d4",
      "tree": "813af760ebc66398cb17cfe8652ae8e851eddbfd",
      "parents": [
        "d20bbfab01802e195a50435940f7e4aa747c217c"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segoon@openwall.com",
        "time": "Tue Sep 27 21:54:53 2011 +0400"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 27 22:59:27 2011 +0300"
      },
      "message": "mm: restrict access to slab files under procfs and sysfs\n\nHistorically /proc/slabinfo and files under /sys/kernel/slab/* have\nworld read permissions and are accessible to the world.  slabinfo\ncontains rather private information related both to the kernel and\nuserspace tasks.  Depending on the situation, it might reveal either\nprivate information per se or information useful to make another\ntargeted attack.  Some examples of what can be learned by\nreading/watching for /proc/slabinfo entries:\n\n1) dentry (and different *inode*) number might reveal other processes fs\nactivity.  The number of dentry \"active objects\" doesn\u0027t strictly show\nfile count opened/touched by a process, however, there is a good\ncorrelation between them.  The patch \"proc: force dcache drop on\nunauthorized access\" relies on the privacy of dentry count.\n\n2) different inode entries might reveal the same information as (1), but\nthese are more fine granted counters.  If a filesystem is mounted in a\nprivate mount point (or even a private namespace) and fs type differs from\nother mounted fs types, fs activity in this mount point/namespace is\nrevealed.  If there is a single ecryptfs mount point, the whole fs\nactivity of a single user is revealed.  Number of files in ecryptfs\nmount point is a private information per se.\n\n3) fuse_* reveals number of files / fs activity of a user in a user\nprivate mount point.  It is approx. the same severity as ecryptfs\ninfoleak in (2).\n\n4) sysfs_dir_cache similar to (2) reveals devices\u0027 addition/removal,\nwhich can be otherwise hidden by \"chmod 0700 /sys/\".  With 0444 slabinfo\nthe precise number of sysfs files is known to the world.\n\n5) buffer_head might reveal some kernel activity.  With other\ninformation leaks an attacker might identify what specific kernel\nroutines generate buffer_head activity.\n\n6) *kmalloc* infoleaks are very situational.  Attacker should watch for\nthe specific kmalloc size entry and filter the noise related to the unrelated\nkernel activity.  If an attacker has relatively silent victim system, he\nmight get rather precise counters.\n\nAdditional information sources might significantly increase the slabinfo\ninfoleak benefits.  E.g. if an attacker knows that the processes\nactivity on the system is very low (only core daemons like syslog and\ncron), he may run setxid binaries / trigger local daemon activity /\ntrigger network services activity / await sporadic cron jobs activity\n/ etc. and get rather precise counters for fs and network activity of\nthese privileged tasks, which is unknown otherwise.\n\nAlso hiding slabinfo and /sys/kernel/slab/* is a one step to complicate\nexploitation of kernel heap overflows (and possibly, other bugs).  The\nrelated discussion:\n\nhttp://thread.gmane.org/gmane.linux.kernel/1108378\n\nTo keep compatibility with old permission model where non-root\nmonitoring daemon could watch for kernel memleaks though slabinfo one\nshould do:\n\n    groupadd slabinfo\n    usermod -a -G slabinfo $MONITOR_USER\n\nAnd add the following commands to init scripts (to mountall.conf in\nUbuntu\u0027s upstart case):\n\n    chmod g+r /proc/slabinfo /sys/kernel/slab/*/*\n    chgrp slabinfo /proc/slabinfo /sys/kernel/slab/*/*\n\nSigned-off-by: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nReviewed-by: Kees Cook \u003ckees@ubuntu.com\u003e\nReviewed-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: Christoph Lameter \u003ccl@gentwo.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCC: Valdis.Kletnieks@vt.edu\nCC: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCC: Alan Cox \u003calan@linux.intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "fed678dc8a8b839c8189b5d889a94e865cd327dd",
      "tree": "d2bf10d2a4e4ca0a27ccd6f7ae40e8e259acfcfc",
      "parents": [
        "808bf29b9195c52239b9aaeda7c6082a0ddf07c6",
        "6c4867f6469964e34c5f4ee229a2a7f71a34c7ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  floppy: use del_timer_sync() in init cleanup\n  blk-cgroup: be able to remove the record of unplugged device\n  block: Don\u0027t check QUEUE_FLAG_SAME_COMP in __blk_complete_request\n  mm: Add comment explaining task state setting in bdi_forker_thread()\n  mm: Cleanup clearing of BDI_pending bit in bdi_forker_thread()\n  block: simplify force plug flush code a little bit\n  block: change force plug flush call order\n  block: Fix queue_flag update when rq_affinity goes from 2 to 1\n  block: separate priority boosting from REQ_META\n  block: remove READ_META and WRITE_META\n  xen-blkback: fixed indentation and comments\n  xen-blkback: Don\u0027t disconnect backend until state switched to XenbusStateClosed.\n"
    },
    {
      "commit": "b6a68a5ba4a5111379625d6d921e1c24fc17dc3a",
      "tree": "e6ce115ad4c71fa6340e9691f54e4d4400dadf6f",
      "parents": [
        "6d7c2b4cfa5cb17c9f84c949bfece17b60b0f929",
        "130655ef097940b627e8e04fa7c6f3b51cf24f85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 19 08:02:41 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 19 08:02:41 2011 -0700"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 of git://github.com/penberg/linux\n\n* \u0027slab/urgent\u0027 of git://github.com/penberg/linux:\n  slub: add slab with one free object to partial list tail\n"
    },
    {
      "commit": "d20bbfab01802e195a50435940f7e4aa747c217c",
      "tree": "82b0007e33c083050a4e60a49dbb2f5477b4c99d",
      "parents": [
        "a37933c37c14b64e81c7c9cc44a5d3f5e0c91412",
        "136333d104bd3a62d783b0ac3d0f32ac0108c5d0"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Sep 19 17:46:07 2011 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Mon Sep 19 17:46:07 2011 +0300"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 into slab/next\n"
    },
    {
      "commit": "e060c38434b2caa78efe7cedaff4191040b65a15",
      "tree": "407361230bf6733f63d8e788e4b5e6566ee04818",
      "parents": [
        "10e4ac572eeffe5317019bd7330b6058a400dfc2",
        "cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:05 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:18 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nFast-forward merge with Linus to be able to merge patches\nbased on more recent version of the tree.\n"
    },
    {
      "commit": "8c1fec1ba83b7ce20b65a492a6e73e8d524aed88",
      "tree": "e494a63feeaf0ce15b2384fb8bc93c8c10380a94",
      "parents": [
        "558feb0818374d657fbc1ea03776ee20f204b3a6"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat May 28 10:36:34 2011 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 13:56:56 2011 +0200"
      },
      "message": "mm: Convert vmalloc/memset to vzalloc\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941",
      "tree": "5c8c8b127e8bd31300fba1f5aa155c6463c4c78f",
      "parents": [
        "4f5b04800a224aadb6cffcbbc3d3fa26e2367c7f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Sep 15 08:45:19 2011 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:17:56 2011 -0700"
      },
      "message": "mm: account skipped entries to avoid looping in find_get_pages\n\nThe found entries by find_get_pages() could be all swap entries.  In\nthis case we skip the entries, but make sure the skipped entries are\naccounted, so we don\u0027t keep looping.\n\nUsing nr_found \u003e nr_skip to simplify code as suggested by Eric.\n\nReported-and-tested-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "461ae488ecb125b140d7ea29ceeedbcce9327003",
      "tree": "165b09655495312068acfc7c0bc91df409c9c2ff",
      "parents": [
        "185efc0f9a1f2d6ad6d4782c5d9e529f3290567f"
      ],
      "author": {
        "name": "David Vrabel",
        "email": "david.vrabel@citrix.com",
        "time": "Wed Sep 14 16:22:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:38 2011 -0700"
      },
      "message": "mm: sync vmalloc address space page tables in alloc_vm_area()\n\nXen backend drivers (e.g., blkback and netback) would sometimes fail to\nmap grant pages into the vmalloc address space allocated with\nalloc_vm_area().  The GNTTABOP_map_grant_ref would fail because Xen could\nnot find the page (in the L2 table) containing the PTEs it needed to\nupdate.\n\n(XEN) mm.c:3846:d0 Could not find L1 PTE for address fbb42000\n\nnetback and blkback were making the hypercall from a kernel thread where\ntask-\u003eactive_mm !\u003d \u0026init_mm and alloc_vm_area() was only updating the page\ntables for init_mm.  The usual method of deferring the update to the page\ntables of other processes (i.e., after taking a fault) doesn\u0027t work as a\nfault cannot occur during the hypercall.\n\nThis would work on some systems depending on what else was using vmalloc.\n\nFix this by reverting ef691947d8a3 (\"vmalloc: remove vmalloc_sync_all()\nfrom alloc_vm_area()\") and add a comment to explain why it\u0027s needed.\n\nSigned-off-by: David Vrabel \u003cdavid.vrabel@citrix.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Ian Campbell \u003cIan.Campbell@citrix.com\u003e\nCc: Keir Fraser \u003ckeir.xen@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[3.0.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "185efc0f9a1f2d6ad6d4782c5d9e529f3290567f",
      "tree": "9330dac6b7f17fad7d99e444b3544210109e2d99",
      "parents": [
        "a4d3e9e76337059406fcf3ead288c0df22a790e9"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Sep 14 16:21:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:38 2011 -0700"
      },
      "message": "memcg: Revert \"memcg: add memory.vmscan_stat\"\n\nRevert the post-3.0 commit 82f9d486e59f5 (\"memcg: add\nmemory.vmscan_stat\").\n\nThe implementation of per-memcg reclaim statistics violates how memcg\nhierarchies usually behave: hierarchically.\n\nThe reclaim statistics are accounted to child memcgs and the parent\nhitting the limit, but not to hierarchy levels in between.  Usually,\nhierarchical statistics are perfectly recursive, with each level\nrepresenting the sum of itself and all its children.\n\nSince this exports statistics to userspace, this may lead to confusion\nand problems with changing things after the release, so revert it now,\nwe can try again later.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@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": "a4d3e9e76337059406fcf3ead288c0df22a790e9",
      "tree": "a0213478caaa3845bf62a4cbe6b65979be5e34b4",
      "parents": [
        "d4c32f355cec2647efb65e4b24e630bd2386f787"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Sep 14 16:21:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:37 2011 -0700"
      },
      "message": "mm: vmscan: fix force-scanning small targets without swap\n\nWithout swap, anonymous pages are not scanned.  As such, they should not\ncount when considering force-scanning a small target if there is no swap.\n\nOtherwise, targets are not force-scanned even when their effective scan\nnumber is zero and the other conditions--kswapd/memcg--apply.\n\nThis fixes 246e87a93934 (\"memcg: fix get_scan_count() for small\ntargets\").\n\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0d6617c7732c083659566117ca620eda6f1a87af",
      "tree": "7048e92884564d04dc330b9eb1fe81b64d9b7424",
      "parents": [
        "2bbff6c761e31b4642d297513cd3e0e89bc68ff7"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Sep 14 16:21:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:37 2011 -0700"
      },
      "message": "numa: fix NUMA compile error when sysfs and procfs are disabled\n\nThe vmstat_text array is only defined for CONFIG_SYSFS or CONFIG_PROC_FS,\nyet it is referenced for per-node vmstat with CONFIG_NUMA:\n\n\tdrivers/built-in.o: In function `node_read_vmstat\u0027:\n\tnode.c:(.text+0x1106df): undefined reference to `vmstat_text\u0027\n\nIntroduced in commit fa25c503dfa2 (\"mm: per-node vmstat: show proper\nvmstats\").\n\nDefine the array for CONFIG_NUMA as well.\n\n[akpm@linux-foundation.org: remove unneeded ifdefs]\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReported-by: Cong Wang \u003camwang@redhat.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bbff6c761e31b4642d297513cd3e0e89bc68ff7",
      "tree": "4555f0e22d503e04d5b1ff103096d6bd517a2422",
      "parents": [
        "8aacc9f550feb09c8b26470498345c192996a68e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Sep 14 16:21:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:36 2011 -0700"
      },
      "message": "mm/mempolicy.c: make copy_from_user() provably correct\n\nWhen compiling mm/mempolicy.c with struct user copy checks the following\nwarning is shown:\n\n  In file included from arch/x86/include/asm/uaccess.h:572,\n                   from include/linux/uaccess.h:5,\n                   from include/linux/highmem.h:7,\n                   from include/linux/pagemap.h:10,\n                   from include/linux/mempolicy.h:70,\n                   from mm/mempolicy.c:68:\n  In function `copy_from_user\u0027,\n      inlined from `compat_sys_get_mempolicy\u0027 at mm/mempolicy.c:1415:\n  arch/x86/include/asm/uaccess_64.h:64: warning: call to `copy_from_user_overflow\u0027 declared with attribute warning: copy_from_user() buffer size is not provably correct\n    LD      mm/built-in.o\n\nFix this by passing correct buffer size value.\n\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": "8aacc9f550feb09c8b26470498345c192996a68e",
      "tree": "c55adebcb37152e9a504696d468adb0b852d4f04",
      "parents": [
        "bcd438be3b66110dfe70f655cadb2b20e201f076"
      ],
      "author": {
        "name": "Caspar Zhang",
        "email": "caspar@casparzhang.com",
        "time": "Wed Sep 14 16:20:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:36 2011 -0700"
      },
      "message": "mm/mempolicy.c: fix pgoff in mbind vma merge\n\ncommit 9d8cebd4bcd7 (\"mm: fix mbind vma merge problem\") didn\u0027t really\nfix the mbind vma merge problem due to wrong pgoff value passing to\nvma_merge(), which made vma_merge() always return NULL.\n\nBefore the patch applied, we are getting a result like:\n\n  addr \u003d 0x7fa58f00c000\n  [snip]\n  7fa58f00c000-7fa58f00d000 rw-p 00000000 00:00 0\n  7fa58f00d000-7fa58f00e000 rw-p 00000000 00:00 0\n  7fa58f00e000-7fa58f00f000 rw-p 00000000 00:00 0\n\nhere 7fa58f00c000-\u003e7fa58f00f000 we get 3 VMAs which are expected to be\nmerged described as described in commit 9d8cebd.\n\nRe-testing the patched kernel with the reproducer provided in commit\n9d8cebd, we get the correct result:\n\n  addr \u003d 0x7ffa5aaa2000\n  [snip]\n  7ffa5aaa2000-7ffa5aaa6000 rw-p 00000000 00:00 0\n  7fffd556f000-7fffd5584000 rw-p 00000000 00:00 0                          [stack]\n\nSigned-off-by: Caspar Zhang \u003ccaspar@casparzhang.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.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": "12d79634f8d7af5229b7d21143d50e7cf7d94177",
      "tree": "06096e3fdcc4c7fe84b9111d2f6274514bfb72b0",
      "parents": [
        "aca726a07a71ff7aedc0e90a91f80a2701adcca5"
      ],
      "author": {
        "name": "Alex,Shi",
        "email": "alex.shi@intel.com",
        "time": "Wed Sep 07 10:26:36 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Sep 13 20:41:25 2011 +0300"
      },
      "message": "slub: Code optimization in get_partial_node()\n\nI find a way to reduce a variable in get_partial_node(). That is also helpful\nfor code understanding.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Alex Shi \u003calex.shi@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "09f40f98bfa2ac22a332a713629a2f8f92896834",
      "tree": "92fac9d374b195845cd859206c7dfd110fce21fb",
      "parents": [
        "5a042aa4b8e994a15d2c2ee750219971f0ab3905"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Sep 02 17:04:10 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 02 17:17:02 2011 -0600"
      },
      "message": "mm: Add comment explaining task state setting in bdi_forker_thread()\n\nCC: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5a042aa4b8e994a15d2c2ee750219971f0ab3905",
      "tree": "d7169fad55f66551fb8e8eb845cd1807bed25c47",
      "parents": [
        "56ebdaf2fa3c5276be201c5d1aff1490b682ecf2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Sep 02 17:04:09 2011 -0600"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 02 17:17:02 2011 -0600"
      },
      "message": "mm: Cleanup clearing of BDI_pending bit in bdi_forker_thread()\n\nbdi_forker_thread() clears BDI_pending bit at the end of the main loop.\nHowever clearing of this bit must not be done in some cases which is\nhandled by calling \u0027continue\u0027 from switch statement. That\u0027s kind of\nunusual construct and without a good reason so change the function into\nmore intuitive code flow.\n\nCC: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCC: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "136333d104bd3a62d783b0ac3d0f32ac0108c5d0",
      "tree": "dbac3ee89362a3707823bbd1185ad0423cb153de",
      "parents": [
        "130655ef097940b627e8e04fa7c6f3b51cf24f85"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed Aug 24 08:57:52 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Aug 27 11:59:00 2011 +0300"
      },
      "message": "slub: explicitly document position of inserting slab to partial list\n\nAdding slab to partial list head/tail is sensitive to performance.\nSo explicitly uses DEACTIVATE_TO_TAIL/DEACTIVATE_TO_HEAD to document\nit to avoid we get it wrong.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "130655ef097940b627e8e04fa7c6f3b51cf24f85",
      "tree": "c5b968196fe7f7ffcbe9def5dc70dc413a318dbd",
      "parents": [
        "81107188f123e3c2217ac2f2feb2a1147904c62f"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Aug 23 08:36:59 2011 +0800"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Sat Aug 27 11:58:59 2011 +0300"
      },
      "message": "slub: add slab with one free object to partial list tail\n\nThe slab has just one free object, adding it to partial list head doesn\u0027t make\nsense. And it can cause lock contentation. For example,\n1. CPU takes the slab from partial list\n2. fetch an object\n3. switch to another slab\n4. free an object, then the slab is added to partial list again\nIn this way n-\u003elist_lock will be heavily contended.\nIn fact, Alex had a hackbench regression. 3.1-rc1 performance drops about 70%\nagainst 3.0. This patch fixes it.\n\nAcked-by: Christoph Lameter \u003ccl@linux.com\u003e\nReported-by: Alex Shi \u003calex.shi@intel.com\u003e\nSigned-off-by: Shaohua Li \u003cshli@kernel.org\u003e\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "23751be0094012eb6b4756fa80ca54b3eb83069f",
      "tree": "30c33d9165bb33d64bd42d6e9bc1e4cbed1c0780",
      "parents": [
        "86383b55791bd97e88ef493e33ef521ee244f3d9"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Aug 25 15:59:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:34 2011 -0700"
      },
      "message": "memcg: fix hierarchical oom locking\n\nCommit 79dfdaccd1d5 (\"memcg: make oom_lock 0 and 1 based rather than\ncounter\") tried to oom lock the hierarchy and roll back upon\nencountering an already locked memcg.\n\nThe code is confused when it comes to detecting a locked memcg, though,\nso it would fail and rollback after locking one memcg and encountering\nan unlocked second one.\n\nThe result is that oom-locking hierarchies fails unconditionally and\nthat every oom killer invocation simply goes to sleep on the oom\nwaitqueue forever.  The tasks practically hang forever without anyone\nintervening, possibly holding locks that trip up unrelated tasks, too.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "439423f6894aa0dec22187526827456f5004baed",
      "tree": "1f22238a24b83e0beb1467a1f73b0db952c69894",
      "parents": [
        "4c30c6f566c0989ddaee3407da44751e340a63ed"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 25 15:59:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:34 2011 -0700"
      },
      "message": "vmscan: clear ZONE_CONGESTED for zone with good watermark\n\nZONE_CONGESTED is only cleared in kswapd, but pages can be freed in any\ntask.  It\u0027s possible ZONE_CONGESTED isn\u0027t cleared in some cases:\n\n 1. the zone is already balanced just entering balance_pgdat() for\n    order-0 because concurrent tasks free memory.  In this case, later\n    check will skip the zone as it\u0027s balanced so the flag isn\u0027t cleared.\n\n 2. high order balance fallbacks to order-0.  quote from Mel: At the\n    end of balance_pgdat(), kswapd uses the following logic;\n\n\tIf reclaiming at high order {\n\t\tfor each zone {\n\t\t\tif all_unreclaimable\n\t\t\t\tskip\n\t\t\tif watermark is not met\n\t\t\t\torder \u003d 0\n\t\t\t\tloop again\n\n\t\t\t/* watermark is met */\n\t\t\tclear congested\n\t\t}\n\t}\n\n    i.e. it clears ZONE_CONGESTED if it the zone is balanced.  if not,\n    it restarts balancing at order-0.  However, if the higher zones are\n    balanced for order-0, kswapd will miss clearing ZONE_CONGESTED as\n    that only happens after a zone is shrunk.  This can mean that\n    wait_iff_congested() stalls unnecessarily.\n\nThis patch makes kswapd clear ZONE_CONGESTED during its initial\nhighmem-\u003edma scan for zones that are already balanced.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f51bdd2e97098a5cbb3cba7c3a56fa0e9ac3c444",
      "tree": "90419a74be50f313f7fefe99aa7776f8ba832233",
      "parents": [
        "7e8aa048989bf7e0604996a3e2068fb1a81f81bd"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Aug 25 15:59:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:34 2011 -0700"
      },
      "message": "mm: fix a vmscan warning\n\nI get the below warning:\n\n  BUG: using smp_processor_id() in preemptible [00000000] code: bash/746\n  caller is native_sched_clock+0x37/0x6e\n  Pid: 746, comm: bash Tainted: G        W   3.0.0+ #254\n  Call Trace:\n   [\u003cffffffff813435c6\u003e] debug_smp_processor_id+0xc2/0xdc\n   [\u003cffffffff8104158d\u003e] native_sched_clock+0x37/0x6e\n   [\u003cffffffff81116219\u003e] try_to_free_mem_cgroup_pages+0x7d/0x270\n   [\u003cffffffff8114f1f8\u003e] mem_cgroup_force_empty+0x24b/0x27a\n   [\u003cffffffff8114ff21\u003e] ? sys_close+0x38/0x138\n   [\u003cffffffff8114ff21\u003e] ? sys_close+0x38/0x138\n   [\u003cffffffff8114f257\u003e] mem_cgroup_force_empty_write+0x17/0x19\n   [\u003cffffffff810c72fb\u003e] cgroup_file_write+0xa8/0xba\n   [\u003cffffffff811522d2\u003e] vfs_write+0xb3/0x138\n   [\u003cffffffff8115241a\u003e] sys_write+0x4a/0x71\n   [\u003cffffffff8114ffd9\u003e] ? sys_close+0xf0/0x138\n   [\u003cffffffff8176deab\u003e] system_call_fastpath+0x16/0x1b\n\nsched_clock() can\u0027t be used with preempt enabled.  And we don\u0027t need\nfast approach to get clock here, so let\u0027s use ktime API.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-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": "5af12d0efdbd9967cc71a0a10c4025c4255a6254",
      "tree": "e5e036671dc7ae02bebaf201126d6c19104e02d1",
      "parents": [
        "a801876638c5ce650223476c4eb8f37cea32dc1c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Aug 25 15:59:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 16:25:33 2011 -0700"
      },
      "message": "memcg: pin execution to current cpu while draining stock\n\nCommit d1a05b6973c7 (\"memcg do not try to drain per-cpu caches without\npages\") added a drain_local_stock() call to a preemptible section.\n\nThe draining task looks up the cpu-local stock twice to set the\ndraining-flag, then to drain the stock and clear the flag again.  If the\ntask is migrated to a different CPU in between, noone will clear the\nflag on the first stock and it will be forever undrainable.  Its charge\ncan not be recovered and the cgroup can not be deleted anymore.\n\nProperly pin the task to the executing CPU while draining stocks.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e33f2d238e2e53e264c758c0849423a9308eb63e",
      "tree": "8137292b733fe0f8d10b8d004f2c58a9740c829b",
      "parents": [
        "be5378f3baabb5667508c42c56b4281f967d6861",
        "bb0822954aab7d23a3f902c2a103ee0242f6046e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 10:40:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 25 10:40:12 2011 -0700"
      },
      "message": "Merge branch \u0027urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback:\n  squeeze max-pause area and drop pass-good area\n"
    },
    {
      "commit": "81d66c70b546e7be5d7e1f1ca9676fd17c5973af",
      "tree": "73b65ca359b47c7952c99df9abebe5922c69ca5c",
      "parents": [
        "52288b6646ee4b1f3b97b5b64e4e84652c2a9bbe"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Tue Aug 23 09:28:02 2011 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 24 16:45:10 2011 +0200"
      },
      "message": "mm/vmscan.c: fix a typo in a comment \"relaimed\" to \"reclaimed\"\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "49e2258586b423684f03c278149ab46d8f8b6700",
      "tree": "d4404d1b09d6fe505da29a32602d193c4ef56ac9",
      "parents": [
        "497b66f2ecc97844493e6a147fd5a7e73f73f408"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:27 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:27 2011 +0300"
      },
      "message": "slub: per cpu cache for partial pages\n\nAllow filling out the rest of the kmem_cache_cpu cacheline with pointers to\npartial pages. The partial page list is used in slab_free() to avoid\nper node lock taking.\n\nIn __slab_alloc() we can then take multiple partial pages off the per\nnode partial list in one go reducing node lock pressure.\n\nWe can also use the per cpu partial list in slab_alloc() to avoid scanning\npartial lists for pages with free objects.\n\nThe main effect of a per cpu partial list is that the per node list_lock\nis taken for batches of partial pages instead of individual ones.\n\nPotential future enhancements:\n\n1. The pickup from the partial list could be perhaps be done without disabling\n   interrupts with some work. The free path already puts the page into the\n   per cpu partial list without disabling interrupts.\n\n2. __slab_free() may have some code paths that could use optimization.\n\nPerformance:\n\n\t\t\t\tBefore\t\tAfter\n./hackbench 100 process 200000\n\t\t\t\tTime: 1953.047\t1564.614\n./hackbench 100 process 20000\n\t\t\t\tTime: 207.176   156.940\n./hackbench 100 process 20000\n\t\t\t\tTime: 204.468\t156.940\n./hackbench 100 process 20000\n\t\t\t\tTime: 204.879\t158.772\n./hackbench 10 process 20000\n\t\t\t\tTime: 20.153\t15.853\n./hackbench 10 process 20000\n\t\t\t\tTime: 20.153\t15.986\n./hackbench 10 process 20000\n\t\t\t\tTime: 19.363\t16.111\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.518\t2.307\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.258\t2.339\n./hackbench 1 process 20000\n\t\t\t\tTime: 2.864\t2.163\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "497b66f2ecc97844493e6a147fd5a7e73f73f408",
      "tree": "6005da56ead66fca5fb413193bc52ad72a743b7c",
      "parents": [
        "acd19fd1a7b5152cf29f67aaab23aa61078aaa74"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:26 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:27 2011 +0300"
      },
      "message": "slub: return object pointer from get_partial() / new_slab().\n\nThere is no need anymore to return the pointer to a slab page from get_partial()\nsince the page reference can be stored in the kmem_cache_cpu structures \"page\" field.\n\nReturn an object pointer instead.\n\nThat in turn allows a simplification of the spaghetti code in __slab_alloc().\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "acd19fd1a7b5152cf29f67aaab23aa61078aaa74",
      "tree": "8695f48ccaa1baa3bc26df2d7b1b0648dd82078b",
      "parents": [
        "e6e82ea1127d899af7eee876f1c1103716d13772"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:25 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:26 2011 +0300"
      },
      "message": "slub: pass kmem_cache_cpu pointer to get_partial()\n\nPass the kmem_cache_cpu pointer to get_partial(). That way\nwe can avoid the this_cpu_write() statements.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "e6e82ea1127d899af7eee876f1c1103716d13772",
      "tree": "76325c985e7265dd5dff9b37b785fa17b7630b03",
      "parents": [
        "7db0d7054048da140798d8bfdd7fff5f74f85abf"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:24 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:26 2011 +0300"
      },
      "message": "slub: Prepare inuse field in new_slab()\n\ninuse will always be set to page-\u003eobjects. There is no point in\ninitializing the field to zero in new_slab() and then overwriting\nthe value in __slab_alloc().\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "7db0d7054048da140798d8bfdd7fff5f74f85abf",
      "tree": "e23816d3d5a6c25ec1037989ce4857e96440a0fa",
      "parents": [
        "69cb8e6b7c2982e015d2b35a34ac2674c79e801c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:23 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:25 2011 +0300"
      },
      "message": "slub: Remove useless statements in __slab_alloc\n\nTwo statements in __slab_alloc() do not have any effect.\n\n1. c-\u003epage is already set to NULL by deactivate_slab() called right before.\n\n2. gfpflags are masked in new_slab() before being passed to the page\n   allocator. There is no need to mask gfpflags in __slab_alloc in particular\n   since most frequent processing in __slab_alloc does not require the use of a\n   gfpmask.\n\nCc: torvalds@linux-foundation.org\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "69cb8e6b7c2982e015d2b35a34ac2674c79e801c",
      "tree": "37905e4cec71f96f2008e9d13c92cf0b976b3390",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 16:12:22 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Fri Aug 19 19:34:25 2011 +0300"
      },
      "message": "slub: free slabs without holding locks\n\nThere are two situations in which slub holds a lock while releasing\npages:\n\n\tA. During kmem_cache_shrink()\n\tB. During kmem_cache_close()\n\nFor A build a list while holding the lock and then release the pages\nlater. In case of B we are the last remaining user of the slab so\nthere is no need to take the listlock.\n\nAfter this patch all calls to the page allocator to free pages are\ndone without holding any spinlocks. kmem_cache_destroy() will still\nhold the slub_lock semaphore.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "bb0822954aab7d23a3f902c2a103ee0242f6046e",
      "tree": "3049962f0ecc05eea4b2b4ef5480b6708bc74ce7",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Aug 16 13:37:14 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Fri Aug 19 22:42:07 2011 +0800"
      },
      "message": "squeeze max-pause area and drop pass-good area\n\nRevert the pass-good area introduced in ffd1f609ab10 (\"writeback:\nintroduce max-pause and pass-good dirty limits\") and make the max-pause\narea smaller and safe.\n\nThis fixes ~30% performance regression in the ext3 data\u003dwriteback\nfio_mmap_randwrite_64k/fio_mmap_randrw_64k test cases, where there are\n12 JBOD disks, on each disk runs 8 concurrent tasks doing reads+writes.\n\nUsing deadline scheduler also has a regression, but not that big as CFQ,\nso this suggests we have some write starvation.\n\nThe test logs show that\n\n- the disks are sometimes under utilized\n\n- global dirty pages sometimes rush high to the pass-good area for\n  several hundred seconds, while in the mean time some bdi dirty pages\n  drop to very low value (bdi_dirty \u003c\u003c bdi_thresh).  Then suddenly the\n  global dirty pages dropped under global dirty threshold and bdi_dirty\n  rush very high (for example, 2 times higher than bdi_thresh). During\n  which time balance_dirty_pages() is not called at all.\n\nSo the problems are\n\n1) The random writes progress so slow that they break the assumption of\n   the max-pause logic that \"8 pages per 200ms is typically more than\n   enough to curb heavy dirtiers\".\n\n2) The max-pause logic ignored task_bdi_thresh and thus opens the possibility\n   for some bdi\u0027s to over dirty pages, leading to (bdi_dirty \u003e\u003e bdi_thresh)\n   and then (bdi_thresh \u003e\u003e bdi_dirty) for others.\n\n3) The higher max-pause/pass-good thresholds somehow leads to the bad\n   swing of dirty pages.\n\nThe fix is to allow the task to slightly dirty over task_bdi_thresh, but\nno way to exceed bdi_dirty and/or global dirty_thresh.\n\nTests show that it fixed the JBOD regression completely (both behavior\nand performance), while still being able to cut down large pause times\nin balance_dirty_pages() for single-disk cases.\n\nReported-by: Li Shaohua \u003cshaohua.li@intel.com\u003e\nTested-by: Li Shaohua \u003cshaohua.li@intel.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "f991879473828f320a714e9494fb37a26ccd6b66",
      "tree": "349fee2f3c0d9b10340f2fbdb03fa63c2570dbfa",
      "parents": [
        "72ed62bdc46d76c965fb95aecb5d0bf97c976723"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@citrix.com",
        "time": "Wed Aug 17 13:45:09 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 17 13:00:20 2011 -0700"
      },
      "message": "mm: make HASHED_PAGE_VIRTUAL page_address\u0027 struct page argument const.\n\nFollowup to 33dd4e0ec911 \"mm: make some struct page\u0027s const\" which missed the\nHASHED_PAGE_VIRTUAL case.\n\nSigned-off-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f982f91516fa4cfd9d20518833cd04ad714585be",
      "tree": "15c7992ad6e54fbda868a026afd5ecf98f9b1bca",
      "parents": [
        "97c24d1d455df17ca3ef281d1a290988f4686643"
      ],
      "author": {
        "name": "Clemens Ladisch",
        "email": "clemens@ladisch.de",
        "time": "Tue Jun 21 22:09:50 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 14 12:32:52 2011 -0700"
      },
      "message": "mm: fix wrong vmap address calculations with odd NR_CPUS values\n\nCommit db64fe02258f (\"mm: rewrite vmap layer\") introduced code that does\naddress calculations under the assumption that VMAP_BLOCK_SIZE is a\npower of two.  However, this might not be true if CONFIG_NR_CPUS is not\nset to a power of two.\n\nWrong vmap_block index/offset values could lead to memory corruption.\nHowever, this has never been observed in practice (or never been\ndiagnosed correctly); what caught this was the BUG_ON in vb_alloc() that\nchecks for inconsistent vmap_block indices.\n\nTo fix this, ensure that VMAP_BLOCK_SIZE always is a power of two.\n\nBugLink: https://bugzilla.kernel.org/show_bug.cgi?id\u003d31572\nReported-by: Pavel Kysilka \u003cgoldenfish@linuxsoft.cz\u003e\nReported-by: Matias A. Fonzo \u003cselk@dragora.org\u003e\nSigned-off-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: 2.6.28+ \u003cstable@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f50fad65b87a8776ae989ca059ad6c17925dfc3",
      "tree": "9d15fc968323357da6b3a534c4c40ff3192cf2f9",
      "parents": [
        "47e180d6523081605c970f806572beab8a205537"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.cz",
        "time": "Tue Aug 09 11:56:26 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 09 17:04:43 2011 -0700"
      },
      "message": "Revert \"memcg: get rid of percpu_charge_mutex lock\"\n\nThis reverts commit 8521fc50d433507a7cdc96bec280f9e5888a54cc.\n\nThe patch incorrectly assumes that using atomic FLUSHING_CACHED_CHARGE\nbit operations is sufficient but that is not true.  Johannes Weiner has\nreported a crash during parallel memory cgroup removal:\n\n  BUG: unable to handle kernel NULL pointer dereference at 0000000000000018\n  IP: [\u003cffffffff81083b70\u003e] css_is_ancestor+0x20/0x70\n  Oops: 0000 [#1] PREEMPT SMP\n  Pid: 19677, comm: rmdir Tainted: G        W   3.0.0-mm1-00188-gf38d32b #35 ECS MCP61M-M3/MCP61M-M3\n  RIP: 0010:[\u003cffffffff81083b70\u003e]  css_is_ancestor+0x20/0x70\n  RSP: 0018:ffff880077b09c88  EFLAGS: 00010202\n  Process rmdir (pid: 19677, threadinfo ffff880077b08000, task ffff8800781bb310)\n  Call Trace:\n   [\u003cffffffff810feba3\u003e] mem_cgroup_same_or_subtree+0x33/0x40\n   [\u003cffffffff810feccf\u003e] drain_all_stock+0x11f/0x170\n   [\u003cffffffff81103211\u003e] mem_cgroup_force_empty+0x231/0x6d0\n   [\u003cffffffff811036c4\u003e] mem_cgroup_pre_destroy+0x14/0x20\n   [\u003cffffffff81080559\u003e] cgroup_rmdir+0xb9/0x500\n   [\u003cffffffff81114d26\u003e] vfs_rmdir+0x86/0xe0\n   [\u003cffffffff81114e7b\u003e] do_rmdir+0xfb/0x110\n   [\u003cffffffff81114ea6\u003e] sys_rmdir+0x16/0x20\n   [\u003cffffffff8154d76b\u003e] system_call_fastpath+0x16/0x1b\n\nWe are crashing because we try to dereference cached memcg when we are\nchecking whether we should wait for draining on the cache.  The cache is\nalready cleaned up, though.\n\nThere is also a theoretical chance that the cached memcg gets freed\nbetween we test for the FLUSHING_CACHED_CHARGE and dereference it in\nmem_cgroup_same_or_subtree:\n\n        CPU0                    CPU1                         CPU2\n  mem\u003dstock-\u003ecached\n  stock-\u003ecached\u003dNULL\n                              clear_bit\n                                                        test_and_set_bit\n  test_bit()                    ...\n  \u003cpreempted\u003e             mem_cgroup_destroy\n  use after free\n\nThe percpu_charge_mutex protected from this race because sync draining\nis exclusive.\n\nIt is safer to revert now and come up with a more parallel\nimplementation later.\n\nSigned-off-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81107188f123e3c2217ac2f2feb2a1147904c62f",
      "tree": "53626e529423c12d082cbcc23012de0b39f26e4d",
      "parents": [
        "ef62fb32b7b21731e41aea3c1e08bcdb407c9eb9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Tue Aug 09 13:01:32 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 21:12:31 2011 +0300"
      },
      "message": "slub: Fix partial count comparison confusion\n\ndeactivate_slab() has the comparison if more than the minimum number of\npartial pages are in the partial list wrong. An effect of this may be that\nempty pages are not freed from deactivate_slab(). The result could be an\nOOM due to growth of the partial slabs per node. Frees mostly occur from\n__slab_free which is okay so this would only affect use cases where a lot\nof switching around of per cpu slabs occur.\n\nSwitching per cpu slabs occurs with high frequency if debugging options are\nenabled.\n\nReported-and-tested-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "ef62fb32b7b21731e41aea3c1e08bcdb407c9eb9",
      "tree": "f508ace02d80e7b80791aff0ada407ae104de7e3",
      "parents": [
        "6fbabb20faed9c08f8b96de4182bd721cbd1cfcf"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun Aug 07 18:30:38 2011 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 16:37:48 2011 +0300"
      },
      "message": "slub: fix check_bytes() for slub debugging\n\nThe check_bytes() function is used by slub debugging.  It returns a pointer\nto the first unmatching byte for a character in the given memory area.\n\nIf the character for matching byte is greater than 0x80, check_bytes()\ndoesn\u0027t work.  Becuase 64-bit pattern is generated as below.\n\n\tvalue64 \u003d value | value \u003c\u003c 8 | value \u003c\u003c 16 | value \u003c\u003c 24;\n\tvalue64 \u003d value64 | value64 \u003c\u003c 32;\n\nThe integer promotions are performed and sign-extended as the type of value\nis u8.  The upper 32 bits of value64 is 0xffffffff in the first line, and\nthe second line has no effect.\n\nThis fixes the 64-bit pattern generation.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nReviewed-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    },
    {
      "commit": "6fbabb20faed9c08f8b96de4182bd721cbd1cfcf",
      "tree": "932af354e7ac134bdf684fedce14f7c7bc94ba42",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Aug 08 11:16:56 2011 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@kernel.org",
        "time": "Tue Aug 09 16:36:02 2011 +0300"
      },
      "message": "slub: Fix full list corruption if debugging is on\n\nWhen a slab is freed by __slab_free() and the slab can only contain a\nsingle object ever then it was full (and therefore not on the partial\nlists but on the full list in the debug case) before we reached\nslab_empty.\n\nThis caused the following full list corruption when SLUB debugging was enabled:\n\n  [ 5913.233035] ------------[ cut here ]------------\n  [ 5913.233097] WARNING: at lib/list_debug.c:53 __list_del_entry+0x8d/0x98()\n  [ 5913.233101] Hardware name: Adamo 13\n  [ 5913.233105] list_del corruption. prev-\u003enext should be ffffea000434fd20, but was ffffea0004199520\n  [ 5913.233108] Modules linked in: nfs fscache fuse ebtable_nat ebtables ppdev parport_pc lp parport ipt_MASQUERADE iptable_nat nf_nat nfsd lockd nfs_acl auth_rpcgss xt_CHECKSUM sunrpc iptable_mangle bridge stp llc cpufreq_ondemand acpi_cpufreq freq_table mperf ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables rfcomm bnep arc4 iwlagn snd_hda_codec_hdmi snd_hda_codec_idt snd_hda_intel btusb mac80211 snd_hda_codec bluetooth snd_hwdep snd_seq snd_seq_device snd_pcm usb_debug dell_wmi sparse_keymap cdc_ether usbnet cdc_acm uvcvideo cdc_wdm mii cfg80211 snd_timer dell_laptop videodev dcdbas snd microcode v4l2_compat_ioctl32 soundcore joydev tg3 pcspkr snd_page_alloc iTCO_wdt i2c_i801 rfkill iTCO_vendor_support wmi virtio_net kvm_intel kvm ipv6 xts gf128mul dm_crypt i915 drm_kms_helper drm i2c_algo_bit i2c_core video [last unloaded: scsi_wait_scan]\n  [ 5913.233213] Pid: 0, comm: swapper Not tainted 3.0.0+ #127\n  [ 5913.233213] Call Trace:\n  [ 5913.233213]  \u003cIRQ\u003e  [\u003cffffffff8105df18\u003e] warn_slowpath_common+0x83/0x9b\n  [ 5913.233213]  [\u003cffffffff8105dfd3\u003e] warn_slowpath_fmt+0x46/0x48\n  [ 5913.233213]  [\u003cffffffff8127e7c1\u003e] __list_del_entry+0x8d/0x98\n  [ 5913.233213]  [\u003cffffffff8127e7da\u003e] list_del+0xe/0x2d\n  [ 5913.233213]  [\u003cffffffff814e0430\u003e] __slab_free+0x1db/0x235\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] ? bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff81133085\u003e] kmem_cache_free+0x88/0x102\n  [ 5913.233213]  [\u003cffffffff811706ab\u003e] bvec_free_bs+0x35/0x37\n  [ 5913.233213]  [\u003cffffffff811706e1\u003e] bio_free+0x34/0x64\n  [ 5913.233213]  [\u003cffffffff813dc390\u003e] dm_bio_destructor+0x12/0x14\n  [ 5913.233213]  [\u003cffffffff8116fef6\u003e] bio_put+0x2b/0x2d\n  [ 5913.233213]  [\u003cffffffff813dccab\u003e] clone_endio+0x9e/0xb4\n  [ 5913.233213]  [\u003cffffffff8116f7dd\u003e] bio_endio+0x2d/0x2f\n  [ 5913.233213]  [\u003cffffffffa00148da\u003e] crypt_dec_pending+0x5c/0x8b [dm_crypt]\n  [ 5913.233213]  [\u003cffffffffa00150a9\u003e] crypt_endio+0x78/0x81 [dm_crypt]\n\n[ Full discussion here: https://lkml.org/lkml/2011/8/4/375 ]\n\nMake sure that we remove such a slab also from the full lists.\n\nReported-and-tested-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-and-tested-by: Xiaotian Feng \u003cxtfeng@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n"
    }
  ],
  "next": "5a2f3a02aea164f4f59c0c3497772090a411b462"
}
