)]}'
{
  "log": [
    {
      "commit": "645747462435d84c6c6a64269ed49cc3015f753d",
      "tree": "4cbbddcddd429704dd4f205f6371bb329dcb0ff1",
      "parents": [
        "31c0569c3b0b6cc8a867ac6665ca081553f7984c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Fri Mar 05 13:42:22 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:27 2010 -0800"
      },
      "message": "vmscan: detect mapped file pages used only once\n\nThe VM currently assumes that an inactive, mapped and referenced file page\nis in use and promotes it to the active list.\n\nHowever, every mapped file page starts out like this and thus a problem\narises when workloads create a stream of such pages that are used only for\na short time.  By flooding the active list with those pages, the VM\nquickly gets into trouble finding eligible reclaim canditates.  The result\nis long allocation latencies and eviction of the wrong pages.\n\nThis patch reuses the PG_referenced page flag (used for unmapped file\npages) to implement a usage detection that scales with the speed of LRU\nlist cycling (i.e.  memory pressure).\n\nIf the scanner encounters those pages, the flag is set and the page cycled\nagain on the inactive list.  Only if it returns with another page table\nreference it is activated.  Otherwise it is reclaimed as \u0027not recently\nused cache\u0027.\n\nThis effectively changes the minimum lifetime of a used-once mapped file\npage from a full memory cycle to an inactive list cycle, which allows it\nto occur in linear streams without affecting the stable working set of the\nsystem.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: OSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c44b674323f4a2480dbeb65d4b487fa5f06f49e0",
      "tree": "b753050e6752eb2fc961ad3ea5dfdf88ef88364d",
      "parents": [
        "033a64b56aed798991de18d226085dfb1ccd858d"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Fri Mar 05 13:42:09 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:26 2010 -0800"
      },
      "message": "rmap: move exclusively owned pages to own anon_vma in do_wp_page()\n\nWhen the parent process breaks the COW on a page, both the original which\nis mapped at child and the new page which is mapped parent end up in that\nsame anon_vma.  Generally this won\u0027t be a problem, but for some workloads\nit could preserve the O(N) rmap scanning complexity.\n\nA simple fix is to ensure that, when a page which is mapped child gets\nreused in do_wp_page, because we already are the exclusive owner, the page\ngets moved to our own exclusive child\u0027s anon_vma.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5beb49305251e5669852ed541e8e2f2f7696c53e",
      "tree": "46457450a22f23938b24904aeba5d4ada2f53b20",
      "parents": [
        "648bcc771145172a14bc35eeb849ed08f6aa4f1e"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Fri Mar 05 13:42:07 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:26 2010 -0800"
      },
      "message": "mm: change anon_vma linking to fix multi-process server scalability issue\n\nThe old anon_vma code can lead to scalability issues with heavily forking\nworkloads.  Specifically, each anon_vma will be shared between the parent\nprocess and all its child processes.\n\nIn a workload with 1000 child processes and a VMA with 1000 anonymous\npages per process that get COWed, this leads to a system with a million\nanonymous pages in the same anon_vma, each of which is mapped in just one\nof the 1000 processes.  However, the current rmap code needs to walk them\nall, leading to O(N) scanning complexity for each page.\n\nThis can result in systems where one CPU is walking the page tables of\n1000 processes in page_referenced_one, while all other CPUs are stuck on\nthe anon_vma lock.  This leads to catastrophic failure for a benchmark\nlike AIM7, where the total number of processes can reach in the tens of\nthousands.  Real workloads are still a factor 10 less process intensive\nthan AIM7, but they are catching up.\n\nThis patch changes the way anon_vmas and VMAs are linked, which allows us\nto associate multiple anon_vmas with a VMA.  At fork time, each child\nprocess gets its own anon_vmas, in which its COWed pages will be\ninstantiated.  The parents\u0027 anon_vma is also linked to the VMA, because\nnon-COWed pages could be present in any of the children.\n\nThis reduces rmap scanning complexity to O(1) for the pages of the 1000\nchild processes, with O(N) complexity for at most 1/N pages in the system.\n This reduces the average scanning cost in heavily forking workloads from\nO(N) to 2.\n\nThe only real complexity in this patch stems from the fact that linking a\nVMA to anon_vmas now involves memory allocations.  This means vma_adjust\ncan fail, if it needs to attach a VMA to anon_vma structures.  This in\nturn means error handling needs to be added to the calling functions.\n\nA second source of complexity is that, because there can be multiple\nanon_vmas, the anon_vma linking in vma_adjust can no longer be done under\n\"the\" anon_vma lock.  To prevent the rmap code from walking up an\nincomplete VMA, this patch introduces the VM_LOCK_RMAP VMA flag.  This bit\nflag uses the same slot as the NOMMU VM_MAPPED_COPY, with an ifdef in mm.h\nto make sure it is impossible to compile a kernel that needs both symbolic\nvalues for the same bitflag.\n\nSome test results:\n\nWithout the anon_vma changes, when AIM7 hits around 9.7k users (on a test\nbox with 16GB RAM and not quite enough IO), the system ends up running\n\u003e99% in system time, with every CPU on the same anon_vma lock in the\npageout code.\n\nWith these changes, AIM7 hits the cross-over point around 29.7k users.\nThis happens with ~99% IO wait time, there never seems to be any spike in\nsystem time.  The anon_vma lock contention appears to be resolved.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9995ef978a7d5296fe04a9a2c5ca6e66d8bb4e5",
      "tree": "df4324273856e06b8277b7e4a0fa9289eb8e6385",
      "parents": [
        "407f9c8b0889ced1dbe2f9157e4e60c61329d5c9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:20 2009 -0800"
      },
      "message": "ksm: rmap_walk to remove_migation_ptes\n\nA side-effect of making ksm pages swappable is that they have to be placed\non the LRUs: which then exposes them to isolate_lru_page() and hence to\npage migration.\n\nAdd rmap_walk() for remove_migration_ptes() to use: rmap_walk_anon() and\nrmap_walk_file() in rmap.c, but rmap_walk_ksm() in ksm.c.  Perhaps some\nconsolidation with existing code is possible, but don\u0027t attempt that yet\n(try_to_unmap needs to handle nonlinears, but migration pte removal does\nnot).\n\nrmap_walk() is sadly less general than it appears: rmap_walk_anon(), like\nremove_anon_migration_ptes() which it replaces, avoids calling\npage_lock_anon_vma(), because that includes a page_mapped() test which\nfails when all migration ptes are in place.  That was valid when NUMA page\nmigration was introduced (holding mmap_sem provided the missing guarantee\nthat anon_vma\u0027s slab had not already been destroyed), but I believe not\nvalid in the memory hotremove case added since.\n\nFor now do the same as before, and consider the best way to fix that\nunlikely race later on.  When fixed, we can probably use rmap_walk() on\nhwpoisoned ksm pages too: for now, they remain among hwpoison\u0027s various\nexceptions (its PageKsm test comes before the page is locked, but its\npage_lock_anon_vma fails safely if an anon gets upgraded).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "db114b83ab6064d9b1d6ec5650e096c89bd95e25",
      "tree": "15e289b25fec011238f6838c6aafa1ff5e293224",
      "parents": [
        "5ad6468801d28c4d4ac9f48ec19297817c915f6a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: hold anon_vma in rmap_item\n\nFor full functionality, page_referenced_one() and try_to_unmap_one() need\nto know the vma: to pass vma down to arch-dependent flushes, or to observe\nVM_LOCKED or VM_EXEC.  But KSM keeps no record of vma: nor can it, since\nvmas get split and merged without its knowledge.\n\nInstead, note page\u0027s anon_vma in its rmap_item when adding to stable tree:\nall the vmas which might map that page are listed by its anon_vma.\n\npage_referenced_ksm() and try_to_unmap_ksm() then traverse the anon_vma,\nfirst to find the probable vma, that which matches rmap_item\u0027s mm; but if\nthat is not enough to locate all instances, traverse again to try the\nothers.  This catches those occasions when fork has duplicated a pte of a\nksm page, but ksmd has not yet come around to assign it an rmap_item.\n\nBut each rmap_item in the stable tree which refers to an anon_vma needs to\ntake a reference to it.  Andrea\u0027s anon_vma design cleverly avoided a\nreference count (an anon_vma was free when its list of vmas was empty),\nbut KSM now needs to add that.  Is a 32-bit count sufficient?  I believe\nso - the anon_vma is only free when both count is 0 and list is empty.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "5ad6468801d28c4d4ac9f48ec19297817c915f6a",
      "tree": "edd8dc48693f43278d6fe1614aca2bf660d4dc10",
      "parents": [
        "73848b4684e84a84cfd1555af78d41158f31e16b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:59:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:19 2009 -0800"
      },
      "message": "ksm: let shared pages be swappable\n\nInitial implementation for swapping out KSM\u0027s shared pages: add\npage_referenced_ksm() and try_to_unmap_ksm(), which rmap.c calls when\nfaced with a PageKsm page.\n\nMost of what\u0027s needed can be got from the rmap_items listed from the\nstable_node of the ksm page, without discovering the actual vma: so in\nthis patch just fake up a struct vma for page_referenced_one() or\ntry_to_unmap_one(), then refine that in the next patch.\n\nAdd VM_NONLINEAR to ksm_madvise()\u0027s list of exclusions: it has always been\nimplicit there (being only set with VM_SHARED, already excluded), but\nlet\u0027s make it explicit, to help justify the lack of nonlinear unmap.\n\nRely on the page lock to protect against concurrent modifications to that\npage\u0027s node of the stable tree.\n\nThe awkward part is not swapout but swapin: do_swap_page() and\npage_add_anon_rmap() now have to allow for new possibilities - perhaps a\nksm page still in swapcache, perhaps a swapcache page associated with one\nlocation in one anon_vma now needed for another location or anon_vma.\n(And the vma might even be no longer VM_MERGEABLE when that happens.)\n\nksm_might_need_to_copy() checks for that case, and supplies a duplicate\npage when necessary, simply leaving it to a subsequent pass of ksmd to\nrediscover the identity and merge them back into one ksm page.\nDisappointingly primitive: but the alternative would have to accumulate\nunswappable info about the swapped out ksm pages, limiting swappability.\n\nRemove page_add_ksm_rmap(): page_add_anon_rmap() now has to allow for the\nparticular case it was handling, so just use it instead.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@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": "3ca7b3c5b64d35fe02c35b5d44c2c58b49499fee",
      "tree": "bb6af24d3683788ef658282f8794af19d2232663",
      "parents": [
        "bb3ab596832b920c703d1aea1ce76d69c0f71fb7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:17 2009 -0800"
      },
      "message": "mm: define PAGE_MAPPING_FLAGS\n\nAt present we define PageAnon(page) by the low PAGE_MAPPING_ANON bit set\nin page-\u003emapping, with the higher bits a pointer to the anon_vma; and have\ndefined PageKsm(page) as that with NULL anon_vma.\n\nBut KSM swapping will need to store a pointer there: so in preparation for\nthat, now define PAGE_MAPPING_FLAGS as the low two bits, including\nPAGE_MAPPING_KSM (always set along with PAGE_MAPPING_ANON, until some\nother use for the bit emerges).\n\nDeclare page_rmapping(page) to return the pointer part of page-\u003emapping,\nand page_anon_vma(page) to return the anon_vma pointer when that\u0027s what it\nis.  Use these in a few appropriate places: notably, unuse_vma() has been\ntesting page-\u003emapping, but is better to be testing page_anon_vma() (cases\nmay be added in which flag bits are set without any pointer).\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "21333b2b66b805a360641568588e5a0bb06d9d1f",
      "tree": "c0ce4d31e31ae2d2b1ef975b00c0611a3099c7a3",
      "parents": [
        "f8af4da3b4c14e7267c4ffb952079af3912c51c5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:01:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: no debug in page_dup_rmap()\n\npage_dup_rmap(), used on each mapped page when forking, was originally\njust an inline atomic_inc of mapcount.  2.6.22 added CONFIG_DEBUG_VM\nout-of-line checks to it, which would need to be ever-so-slightly\ncomplicated to allow for the PageKsm() we\u0027re about to define.\n\nBut I think these checks never caught anything.  And if it\u0027s coding errors\nwe\u0027re worried about, such checks should be in page_remove_rmap() too, not\njust when forking; whereas if it\u0027s pagetable corruption we\u0027re worried\nabout, then they shouldn\u0027t be limited to CONFIG_DEBUG_VM.\n\nOh, just revert page_dup_rmap() to an inline atomic_inc of mapcount.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a46079cf57a7f7758e8b926980a4f852f89b34d",
      "tree": "efd72e830201370d6273bd436dda5a3c4cd6ed9b",
      "parents": [
        "4db96cf077aa938b11fe7ac79ecc9b29ec00fbab"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:15 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:15 2009 +0200"
      },
      "message": "HWPOISON: The high level memory error handler in the VM v7\n\nAdd the high level memory handler that poisons pages\nthat got corrupted by hardware (typically by a two bit flip in a DIMM\nor a cache) on the Linux level. The goal is to prevent everyone\nfrom accessing these pages in the future.\n\nThis done at the VM level by marking a page hwpoisoned\nand doing the appropriate action based on the type of page\nit is.\n\nThe code that does this is portable and lives in mm/memory-failure.c\n\nTo quote the overview comment:\n\nHigh level machine check handler. Handles pages reported by the\nhardware as being corrupted usually due to a 2bit ECC memory or cache\nfailure.\n\nThis focuses on pages detected as corrupted in the background.\nWhen the current CPU tries to consume corruption the currently\nrunning process can just be killed directly instead. This implies\nthat if the error cannot be handled for some reason it\u0027s safe to\njust ignore it because no corruption has been consumed yet. Instead\nwhen that happens another machine check will happen.\n\nHandles page cache pages in various states. The tricky part\nhere is that we can access any page asynchronous to other VM\nusers, because memory failures could happen anytime and anywhere,\npossibly violating some of their assumptions. This is why this code\nhas to be extremely careful. Generally it tries to use normal locking\nrules, as in get the standard locks, even if that means the\nerror handling takes potentially a long time.\n\nSome of the operations here are somewhat inefficient and have non\nlinear algorithmic complexity, because the data structures have not\nbeen optimized for this case. This is in particular the case\nfor the mapping from a vma to a process. Since this case is expected\nto be rare we hope we can get away with this.\n\nThere are in principle two strategies to kill processes on poison:\n- just unmap the data and wait for an actual reference before\nkilling\n- kill as soon as corruption is detected.\nBoth have advantages and disadvantages and should be used\nin different situations. Right now both are implemented and can\nbe switched with a new sysctl vm.memory_failure_early_kill\nThe default is early kill.\n\nThe patch does some rmap data structure walking on its own to collect\nprocesses to kill. This is unusual because normally all rmap data structure\nknowledge is in rmap.c only. I put it here for now to keep\neverything together and rmap knowledge has been seeping out anyways\n\nIncludes contributions from Johannes Weiner, Chris Mason, Fengguang Wu,\nNick Piggin (who did a lot of great work) and others.\n\nCc: npiggin@suse.de\nCc: riel@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\n"
    },
    {
      "commit": "888b9f7c58ebe8303bad817cd554df887a683957",
      "tree": "ebd01e55f5a6631a463fbb863adfbe9dcf49ad7d",
      "parents": [
        "14fa31b89c5ae79e4131da41761378a6df674352"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:11 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:11 2009 +0200"
      },
      "message": "HWPOISON: Handle hardware poisoned pages in try_to_unmap\n\nWhen a page has the poison bit set replace the PTE with a poison entry.\nThis causes the right error handling to be done later when a process runs\ninto it.\n\nv2: add a new flag to not do that (needed for the memory-failure handler\nlater) (Fengguang)\nv3: remove unnecessary is_migration_entry() test (Fengguang, Minchan)\n\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "14fa31b89c5ae79e4131da41761378a6df674352",
      "tree": "c6c79e89e0aa0b2efeaf657d4715250a406ab699",
      "parents": [
        "a6e04aa92965565968573a220a35b4e907385697"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:10 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:10 2009 +0200"
      },
      "message": "HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n\ntry_to_unmap currently has multiple modi (migration, munlock, normal unmap)\nwhich are selected by magic flag variables. The logic is not very straight\nforward, because each of these flag change multiple behaviours (e.g.\nmigration turns off aging, not only sets up migration ptes etc.)\nAlso the different flags interact in magic ways.\n\nA later patch in this series adds another mode to try_to_unmap, so\nthis becomes quickly unmanageable.\n\nReplace the different flags with a action code (migration, munlock, munmap)\nand some additional flags as modifiers (ignore mlock, ignore aging).\nThis makes the logic more straight forward and allows easier extension\nto new behaviours. Change all the caller to declare what they want to\ndo.\n\nThis patch is supposed to be a nop in behaviour. If anyone can prove\nit is not that would be a bug.\n\nCc: Lee.Schermerhorn@hp.com\nCc: npiggin@suse.de\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "10be22dfe1e6ad978269dc275147e0ed049187bb",
      "tree": "d00418a59d9de0aadd092559d92f0d348d87a4b1",
      "parents": [
        "d466f2fcb32cd97fd586bfa33f5dba3ac78aadb0"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:04 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:04 2009 +0200"
      },
      "message": "HWPOISON: Export some rmap vma locking to outside world\n\nNeeded for later patch that walks rmap entries on its own.\n\nThis used to be very frowned upon, but memory-failure.c does\nsome rather specialized rmap walking and rmap has been stable\nfor quite some time, so I think it\u0027s ok now to export it.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "01ff53f416757da416413bc32229770a8448b6ef",
      "tree": "31374589a0a6116ff3d756137fa0b0ac87f49e2e",
      "parents": [
        "a5c9b696ec109bb54d547fdb437a7a0c2d514670"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Tue Jun 23 12:37:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 23 12:50:05 2009 -0700"
      },
      "message": "rmap: fixup page_referenced() for nommu systems\n\nAfter the recent changes that went into mm/vmscan.c to overhaul stuff, we\nended up with these warnings on no-mmu systems:\n\n  mm/vmscan.c: In function `shrink_page_list\u0027:\n  mm/vmscan.c:580: warning: unused variable `vm_flags\u0027\n  mm/vmscan.c: In function `shrink_active_list\u0027:\n  mm/vmscan.c:1294: warning: `vm_flags\u0027 may be used uninitialized in this function\n  mm/vmscan.c:1242: note: `vm_flags\u0027 was declared here\n\nThis is because the no-mmu function defines page_referenced() to work on\nthe first argument only (the page).  It does not clear the vm_flags given\nto it because for no-mmu systems, they never actually get utilized.  Since\nthat is no longer strictly true, we need to set vm_flags to 0 like\neveryone else so gcc can do proper dead code elimination without annoying\nus with unused warnings.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: David McCullough \u003cdavidm@snapgear.com\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Paul Mundt \u003clethal@linux-sh.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": "6fe6b7e35785e3232ffe7f81d3893f1316710a02",
      "tree": "6f47c03735504d8aab8f7b048465b87cc5b15861",
      "parents": [
        "608e8e66a154cbc3d591a59dcebfd9cbc9e3431a"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:33:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:44 2009 -0700"
      },
      "message": "vmscan: report vm_flags in page_referenced()\n\nCollect vma-\u003evm_flags of the VMAs that actually referenced the page.\n\nThis is preparing for more informed reclaim heuristics, eg.  to protect\nexecutable file pages more aggressively.  For now only the VM_EXEC bit\nwill be used by the caller.\n\nThanks to Johannes, Peter and Minchan for all the good tips.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6837765963f1723e80ca97b1fae660f3a60d77df",
      "tree": "a9a6ed4b7e3bf188966da78b04bf39298f24375a",
      "parents": [
        "bce7394a3ef82b8477952fbab838e4a6e8cb47d2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: remove CONFIG_UNEVICTABLE_LRU config option\n\nCurrently, nobody wants to turn UNEVICTABLE_LRU off.  Thus this\nconfigurability is unnecessary.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Rik van Riel \u003criel@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": "edc315fd222497ae4f4b959a9e31ada1e68a4755",
      "tree": "aaf1a6b015368c52097ed0c362a24bf18e40897f",
      "parents": [
        "2509ef26db4699a5d9fa876e90ddfc107afcab84"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: remove vma from page_remove_rmap\n\nRemove page_remove_rmap()\u0027s vma arg, which was only for the Eeek message.\nAnd remove the BUG_ON(page_mapcount(page) \u003d\u003d 0) from CONFIG_DEBUG_VM\u0027s\npage_dup_rmap(): we\u0027re trying to be more resilient about that than BUGs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2afd1c928f1132b8d0099866e75ce8ad713a1180",
      "tree": "e31d1cfd0b11df74e0241fe43e4be2c72a8946ff",
      "parents": [
        "b5934c531849ff4a51ce0f290141efe564290e40"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: make page_lock_anon_vma() static\n\npage_lock_anon_vma() and page_unlock_anon_vma() were made available to\nshow_page_path() in vmscan.c; but now that has been removed, make them\nstatic in rmap.c again, they\u0027re better kept private if possible.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fdd2e5f88a259a537bb239e0c03c973cb6ea402a",
      "tree": "e97192ba1a7b7f341c8d3debc3fe7639b2eaa284",
      "parents": [
        "1a651a00e20fd4997f0b91258f6f95b7d96edcd9"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 18 20:28:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:40 2008 -0700"
      },
      "message": "make mm/rmap.c:anon_vma_cachep static\n\nThis patch makes the needlessly global anon_vma_cachep static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af936a1606246a10c145feac3770f6287f483f02",
      "tree": "8b1ca7fabb5c749ffdecd654519889c6c2ed2fb6",
      "parents": [
        "64d6519dda3905dfb94d3f93c07c5f263f41813f"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "vmscan: unevictable LRU scan sysctl\n\nThis patch adds a function to scan individual or all zones\u0027 unevictable\nlists and move any pages that have become evictable onto the respective\nzone\u0027s inactive list, where shrink_inactive_list() will deal with them.\n\nAdds sysctl to scan all nodes, and per node attributes to individual\nnodes\u0027 zones.\n\nKosaki: If evictable page found in unevictable lru when write\n/proc/sys/vm/scan_unevictable_pages, print filename and file offset of\nthese pages.\n\n[akpm@linux-foundation.org: fix one CONFIG_MMU\u003dn build error]\n[kosaki.motohiro@jp.fujitsu.com: adapt vmscan-unevictable-lru-scan-sysctl.patch to new sysfs API]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b291f000393f5a0b679012b39d79fbc85c018233",
      "tree": "28eb785d4d157d3396e4377294e6054635a4bd90",
      "parents": [
        "89e004ea55abe201b29e2d6e35124101f1288ef7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:30 2008 -0700"
      },
      "message": "mlock: mlocked pages are unevictable\n\nMake sure that mlocked pages also live on the unevictable LRU, so kswapd\nwill not scan them over and over again.\n\nThis is achieved through various strategies:\n\n1) add yet another page flag--PG_mlocked--to indicate that\n   the page is locked for efficient testing in vmscan and,\n   optionally, fault path.  This allows early culling of\n   unevictable pages, preventing them from getting to\n   page_referenced()/try_to_unmap().  Also allows separate\n   accounting of mlock\u0027d pages, as Nick\u0027s original patch\n   did.\n\n   Note:  Nick\u0027s original mlock patch used a PG_mlocked\n   flag.  I had removed this in favor of the PG_unevictable\n   flag + an mlock_count [new page struct member].  I\n   restored the PG_mlocked flag to eliminate the new\n   count field.\n\n2) add the mlock/unevictable infrastructure to mm/mlock.c,\n   with internal APIs in mm/internal.h.  This is a rework\n   of Nick\u0027s original patch to these files, taking into\n   account that mlocked pages are now kept on unevictable\n   LRU list.\n\n3) update vmscan.c:page_evictable() to check PageMlocked()\n   and, if vma passed in, the vm_flags.  Note that the vma\n   will only be passed in for new pages in the fault path;\n   and then only if the \"cull unevictable pages in fault\n   path\" patch is included.\n\n4) add try_to_unlock() to rmap.c to walk a page\u0027s rmap and\n   ClearPageMlocked() if no other vmas have it mlocked.\n   Reuses as much of try_to_unmap() as possible.  This\n   effectively replaces the use of one of the lru list links\n   as an mlock count.  If this mechanism let\u0027s pages in mlocked\n   vmas leak through w/o PG_mlocked set [I don\u0027t know that it\n   does], we should catch them later in try_to_unmap().  One\n   hopes this will be rare, as it will be relatively expensive.\n\nOriginal mm/internal.h, mm/rmap.c and mm/mlock.c changes:\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nsplitlru: introduce __get_user_pages():\n\n  New munlock processing need to GUP_FLAGS_IGNORE_VMA_PERMISSIONS.\n  because current get_user_pages() can\u0027t grab PROT_NONE pages theresore it\n  cause PROT_NONE pages can\u0027t munlock.\n\n[akpm@linux-foundation.org: fix this for pagemap-pass-mm-into-pagewalkers.patch]\n[akpm@linux-foundation.org: untangle patch interdependencies]\n[akpm@linux-foundation.org: fix things after out-of-order merging]\n[hugh@veritas.com: fix page-flags mess]\n[lee.schermerhorn@hp.com: fix munlock page table walk - now requires \u0027mm\u0027]\n[kosaki.motohiro@jp.fujitsu.com: build fix]\n[kosaki.motohiro@jp.fujitsu.com: fix truncate race and sevaral comments]\n[kosaki.motohiro@jp.fujitsu.com: splitlru: introduce __get_user_pages()]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "479db0bf408e65baa14d2a9821abfcbc0804b847",
      "tree": "acdaaed567afefa36ac2fe27cfe22cfefeb50cd5",
      "parents": [
        "2d70b68d42b5196a48ccb639e3797f097ef5bea3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Aug 20 14:09:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:32 2008 -0700"
      },
      "message": "mm: dirty page tracking race fix\n\nThere is a race with dirty page accounting where a page may not properly\nbe accounted for.\n\nclear_page_dirty_for_io() calls page_mkclean; then TestClearPageDirty.\n\npage_mkclean walks the rmaps for that page, and for each one it cleans and\nwrite protects the pte if it was dirty.  It uses page_check_address to\nfind the pte.  That function has a shortcut to avoid the ptl if the pte is\nnot present.  Unfortunately, the pte can be switched to not-present then\nback to present by other code while holding the page table lock -- this\nshould not be a signal for page_mkclean to ignore that pte, because it may\nbe dirty.\n\nFor example, powerpc64\u0027s set_pte_at will clear a previously present pte\nbefore setting it to the desired value.  There may also be other code in\ncore mm or in arch which do similar things.\n\nThe consequence of the bug is loss of data integrity due to msync, and\nloss of dirty page accounting accuracy.  XIP\u0027s __xip_unmap could easily\nalso be unreliable (depending on the exact XIP locking scheme), which can\nlead to data corruption.\n\nFix this by having an option to always take ptl to check the pte in\npage_check_address.\n\nIt\u0027s possible to retain this optimization for page_referenced and\ntry_to_unmap.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nCc: Carsten Otte \u003ccotte@freenet.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7906d00cd1f687268f0a3599442d113767795ae6",
      "tree": "63609454d164a088d7f535f826764579c0f297f6",
      "parents": [
        "6beeac76f5f96590fb751af5e138fbc3f62e8460"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: add mm_take_all_locks() operation\n\nmm_take_all_locks holds off reclaim from an entire mm_struct.  This allows\nmmu notifiers to register into the mm at any time with the guarantee that\nno mmu operation is in progress on the mm.\n\nThis operation locks against the VM for all pte/vma/mm related operations\nthat could ever happen on a certain mm.  This includes vmtruncate,\ntry_to_unmap, and all page faults.\n\nThe caller must take the mmap_sem in write mode before calling\nmm_take_all_locks().  The caller isn\u0027t allowed to release the mmap_sem\nuntil mm_drop_all_locks() returns.\n\nmmap_sem in write mode is required in order to block all operations that\ncould modify pagetables and free pages without need of altering the vma\nlayout (for example populate_range() with nonlinear vmas).  It\u0027s also\nneeded in write mode to avoid new anon_vmas to be associated with existing\nvmas.\n\nA single task can\u0027t take more than one mm_take_all_locks() in a row or it\nwould deadlock.\n\nmm_take_all_locks() and mm_drop_all_locks are expensive operations that\nmay have to take thousand of locks.\n\nmm_take_all_locks() can fail if it\u0027s interrupted by signals.\n\nWhen mmu_notifier_register returns, we must be sure that the driver is\nnotified if some task is in the middle of a vmtruncate for the \u0027mm\u0027 where\nthe mmu notifier was registered (mmu_notifier_invalidate_range_start/end\nis run around the vmtruncation but mmu_notifier_register can run after\nmmu_notifier_invalidate_range_start and before\nmmu_notifier_invalidate_range_end).  Same problem for rmap paths.  And\nwe\u0027ve to remove page pinning to avoid replicating the tlb_gather logic\ninside KVM (and GRU doesn\u0027t work well with page pinning regardless of\nneeding tlb_gather), so without mm_take_all_locks when vmtruncate frees\nthe page, kvm would have no way to notice that it mapped into sptes a page\nthat is going into the freelist without a chance of any further\nmmu_notifier notification.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bed7161a519a2faef53e1bce1b47595e297c1d14",
      "tree": "fbc0541340465f7d83221b829a9382cac2855916",
      "parents": [
        "8697d33194faae6fdd6b2e799f6308aa00cfdf67"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make page_referenced() cgroup aware\n\nMake page_referenced() cgroup aware.  Without this patch, page_referenced()\ncan cause a page to be skipped while reclaiming pages.  This patch ensures\nthat other cgroups do not hold pages in a particular cgroup hostage.  It\nis required to ensure that shared pages are freed from a cgroup when they\nare not actively referenced from the cgroup that brought them in\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@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": "c97a9e10eaee328e6eea9f76acf7bacd7d48ef56",
      "tree": "f14bf796d087e130452a2e2457c75eb1eca27483",
      "parents": [
        "ea125892a17f43919c726777ed1e4929d41e7984"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed May 16 22:11:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:06 2007 -0700"
      },
      "message": "mm: more rmap checking\n\nRe-introduce rmap verification patches that Hugh removed when he removed\nPG_map_lock. PG_map_lock actually isn\u0027t needed to synchronise access to\nanonymous pages, because PG_locked and PTL together already do.\n\nThese checks were important in discovering and fixing a rare rmap corruption\nin SLES9.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7de6b8057976584e5a422574cae4dd21c677b4d4",
      "tree": "900bc533401715eec4e44b73e388a74f08b3f1a5",
      "parents": [
        "19900cdee29c812857ce938ab449e1053d516252"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Dec 22 01:09:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:49 2006 -0800"
      },
      "message": "[PATCH] mm: more rmap debugging\n\nAdd more debugging in the rmap code in an attempt to locate to source of\nthe occasional \"mapcount went negative\" assertions.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d08b3851da41d0ee60851f2c75b118e1f7a5fc89",
      "tree": "a01f6930a1387e8f66607e2fe16c62bb7044353b",
      "parents": [
        "725d704ecaca4a43f067092c140d4f3271cf2856"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: tracking shared dirty pages\n\nTracking of dirty pages in shared writeable mmap()s.\n\nThe idea is simple: write protect clean shared writeable pages, catch the\nwrite-fault, make writeable and set dirty.  On page write-back clean all the\nPTE dirty bits and write protect them once again.\n\nThe implementation is a tad harder, mainly because the default\nbacking_dev_info capabilities were too loosely maintained.  Hence it is not\nenough to test the backing_dev_info for cap_account_dirty.\n\nThe current heuristic is as follows, a VMA is eligible when:\n - its shared writeable\n    (vm_flags \u0026 (VM_WRITE|VM_SHARED)) \u003d\u003d (VM_WRITE|VM_SHARED)\n - it is not a \u0027special\u0027 mapping\n    (vm_flags \u0026 (VM_PFNMAP|VM_INSERTPAGE)) \u003d\u003d 0\n - the backing_dev_info is cap_account_dirty\n    mapping_cap_account_dirty(vma-\u003evm_file-\u003ef_mapping)\n - f_op-\u003emmap() didn\u0027t change the default page protection\n\nPage from remap_pfn_range() are explicitly excluded because their COW\nsemantics are already horrid enough (see vm_normal_page() in do_wp_page()) and\nbecause they don\u0027t have a backing store anyway.\n\nmprotect() is taught about the new behaviour as well.  However it overrides\nthe last condition.\n\nCleaning the pages on write-back is done with page_mkclean() a new rmap call.\nIt can be called on any page, but is currently only implemented for mapped\npages, if the page is found the be of a VMA that accounts dirty pages it will\nalso wrprotect the PTE.\n\nFinally, in fs/buffers.c:try_to_free_buffers(); remove clear_page_dirty() from\nunder -\u003eprivate_lock.  This seems to be safe, since -\u003eprivate_lock is used to\nserialize access to the buffers, not the page itself.  This is needed because\nclear_page_dirty() will call into page_mkclean() and would thereby violate\nlocking order.\n\n[dhowells@redhat.com: Provide a page_mkclean() implementation for NOMMU]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d75a0fcda2cfc71b50e16dc89e0c32c57d427e85",
      "tree": "cc9dda0a0e53e62c859bf7fcafe7b9c9f6de2352",
      "parents": [
        "0697212a411c1dae03c27845f2de2f3adb32c331"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:50 2006 -0700"
      },
      "message": "[PATCH] Swapless page migration: rip out swap based logic\n\nRip the page migration logic out.\n\nRemove all code that has to do with swapping during page migration.\n\nThis also guts the ability to migrate pages to swap.  No one used that so lets\nlet it go for good.\n\nPage migration should be a bit broken after this patch.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "62c4f0a2d5a188f73a94f2cb8ea0dba3e7cf0a7f",
      "tree": "e85ca2d0dd43f90dccf758338764c3caa55f333f",
      "parents": [
        "089f26d5e31b7bf42a9a8fefec08b30cd27f4b0e"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Apr 26 12:56:16 2006 +0100"
      },
      "message": "Don\u0027t include linux/config.h from anywhere else in include/\n\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "a3351e525e4768c29aa5d22ef59b5b38e0361e53",
      "tree": "457ab54f402b471c5158e8b361d059e88ab8cd62",
      "parents": [
        "a48d07afdf18212de22b959715b16793c5a6e57a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: remove_from_swap() to remove swap ptes\n\nAdd remove_from_swap\n\nremove_from_swap() allows the restoration of the pte entries that existed\nbefore page migration occurred for anonymous pages by walking the reverse\nmaps.  This reduces swap use and establishes regular pte\u0027s without the need\nfor page faults.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a48d07afdf18212de22b959715b16793c5a6e57a",
      "tree": "36d5963c29ceb5c2f6df53036cef5c0d30383dbf",
      "parents": [
        "b16664e44c54525be89dc07ad15a13b4eeec5634"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:38 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: migrate_pages() extension\n\nAdd direct migration support with fall back to swap.\n\nDirect migration support on top of the swap based page migration facility.\n\nThis allows the direct migration of anonymous pages and the migration of file\nbacked pages by dropping the associated buffers (requires writeout).\n\nFall back to swap out if necessary.\n\nThe patch is based on lots of patches from the hotplug project but the code\nwas restructured, documented and simplified as much as possible.\n\nNote that an additional patch that defines the migrate_page() method for\nfilesystems is necessary in order to avoid writeback for anonymous and file\nbacked pages.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Mike Kravetz \u003ckravetz@us.ibm.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9617d95e6e9ffd883cf90a89724fe60d7ab22f9a",
      "tree": "67d555d34d931bd253fbc4959ffdb1e5b904f2b0",
      "parents": [
        "224abf92b2f439a9030f21d2926ec8047d1ffcdb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Fri Jan 06 00:11:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:27 2006 -0800"
      },
      "message": "[PATCH] mm: rmap optimisation\n\nOptimise rmap functions by minimising atomic operations when we know there\nwill be no concurrent modifications.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7b7fd8f3ebbb2810d6893295aa984acd0fd30db",
      "tree": "01afc1edafc50a3c65ec8576c05c60da53d8d242",
      "parents": [
        "a93a117eaa0bec426d4671a49bfa96a6fdcd2ac9"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Nov 28 13:44:07 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:25 2005 -0800"
      },
      "message": "[PATCH] temporarily disable swap token on memory pressure\n\nSome users (hi Zwane) have seen a problem when running a workload that\neats nearly all of physical memory - th system does an OOM kill, even\nwhen there is still a lot of swap free.\n\nThe problem appears to be a very big task that is holding the swap\ntoken, and the VM has a very hard time finding any other page in the\nsystem that is swappable.\n\nInstead of ignoring the swap token when sc-\u003epriority reaches 0, we could\nsimply take the swap token away from the memory hog and make sure we\ndon\u0027t give it back to the memory hog for a few seconds.\n\nThis patch resolves the problem Zwane ran into.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c0718806cf955d5eb51ea77bffb5b21d9bba4972",
      "tree": "bd29659bbff68604127439ec8144230a40772621",
      "parents": [
        "67b02f119df50ffad5a4e9e53ea4c896535862cd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:31 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:41 2005 -0700"
      },
      "message": "[PATCH] mm: rmap with inner ptlock\n\nrmap\u0027s page_check_address descend without page_table_lock.  First just\npte_offset_map in case there\u0027s no pte present worth locking for, then take\npage_table_lock for the full check, and pass ptl back to caller in the same\nstyle as pte_offset_map_lock.  __xip_unmap, page_referenced_one and\ntry_to_unmap_one use pte_unmap_unlock.  try_to_unmap_cluster also.\n\npage_check_address reformatted to avoid progressive indentation.  No use is\nmade of its one error code, return NULL when it fails.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ceffc078528befc008c6f2c2c4decda79eabd534",
      "tree": "a289e10162bdef0c0d9f6533f1a647b0fe1ed7a9",
      "parents": [
        "420edbcc09008342c7b2665453f6b370739aadb0"
      ],
      "author": {
        "name": "Carsten Otte",
        "email": "cotte@de.ibm.com",
        "time": "Thu Jun 23 22:05:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:06:41 2005 -0700"
      },
      "message": "[PATCH] xip: fs/mm: execute in place\n\n- generic_file* file operations do no longer have a xip/non-xip split\n- filemap_xip.c implements a new set of fops that require get_xip_page\n  aop to work proper. all new fops are exported GPL-only (don\u0027t like to\n  see whatever code use those except GPL modules)\n- __xip_unmap now uses page_check_address, which is no longer static\n  in rmap.c, and defined in linux/rmap.h\n- mm/filemap.h is now much more clean, plainly having just Linus\u0027\n  inline funcs moved here from filemap.c\n- fix includes in filemap_xip to make it build cleanly on i386\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
