)]}'
{
  "log": [
    {
      "commit": "0be8557bcd34887d5a42c01c5659cab5ecf99f13",
      "tree": "80d211221be1583303818cf201d6e40cc0674608",
      "parents": [
        "d57af9b2142f31a39dcfdeb30776baadfc802827"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Oct 27 15:34:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:17 2010 -0700"
      },
      "message": "fuse: use release_pages()\n\nReplace iterated page_cache_release() with release_pages(), which is\nfaster and shorter.\n\nNeeds release_pages() to be exported to modules.\n\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "47846b0650f2f62fc4217cfb36efc94b8d919727",
      "tree": "59c406cc569ac303d70949b4acdd4f5028f68872",
      "parents": [
        "dd3bb14f44a6382de2508ec387c7e5569ad2d4f1"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 25 15:06:06 2010 +0200"
      },
      "message": "mm: export lru_cache_add_*() to modules\n\nThis is needed to enable moving pages into the page cache in fuse with\nsplice(..., SPLICE_F_MOVE).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "fc91668eaf9e7ba61e867fc2218b7e9fb67faa4f",
      "tree": "08d443d76255e8d60ae6ba07d52cdc295172ded8",
      "parents": [
        "c475dab63ae798d81fb597a6a1859986b296d9d0"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Fri Mar 05 13:41:54 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:25 2010 -0800"
      },
      "message": "mm: remove free_hot_page()\n\nfree_hot_page() is just a wrapper around free_hot_cold_page() with\nparameter \u0027cold \u003d 0\u0027.  After adding a clear comment for\nfree_hot_cold_page(), it is reasonable to remove a level of call.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Americo Wang \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4481374ce88ba8f460c8b89f2572027bd27057d0",
      "tree": "6896601b6a1da0e3e932ffa75fcff966c834c02c",
      "parents": [
        "4738e1b9cf8f9e28d7de080a5e6ce5d0095ea18f"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: replace various uses of num_physpages by totalram_pages\n\nSizing of memory allocations shouldn\u0027t depend on the number of physical\npages found in a system, as that generally includes (perhaps a huge amount\nof) non-RAM pages.  The amount of what actually is usable as storage\nshould instead be used as a basis here.\n\nSome of the calculations (i.e.  those not intending to use high memory)\nshould likely even use (totalram_pages - totalhigh_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c0b13519d1c755d874e82c8fb8a6dcef0ee402c",
      "tree": "0fe6e6902a488ad6c59ecee971fe64c81edbcce3",
      "parents": [
        "401a8e1c1670085b8177330ca47d4f7c4ac88761"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:37 2009 -0700"
      },
      "message": "mm: return boolean from page_is_file_cache()\n\npage_is_file_cache() has been used for both boolean checks and LRU\narithmetic, which was always a bit weird.\n\nNow that page_lru_base_type() exists for LRU arithmetic, make\npage_is_file_cache() a real predicate function and adjust the\nboolean-using callsites to drop those pesky double negations.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\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": "401a8e1c1670085b8177330ca47d4f7c4ac88761",
      "tree": "5883daaed42fa2a186e5769bab1c10535dc39a41",
      "parents": [
        "b7c46d151cb82856a429709d1227ba1648028232"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: introduce page_lru_base_type()\n\nInstead of abusing page_is_file_cache() for LRU list index arithmetic, add\nanother helper with a more appropriate name and convert the non-boolean\nusers of page_is_file_cache() accordingly.\n\nThis new helper gives the LRU base type a page is supposed to live on,\ninactive anon or inactive file.\n\n[hugh.dickins@tiscali.co.uk: convert del_page_from_lru() also]\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\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": "00a62ce91e554198ef28234c91c36f850f5a3bc9",
      "tree": "367ef134219deef91903c3fa0eb108c13658f2c7",
      "parents": [
        "0763ed2355198cdef2f6a2098e9d52eb1fe4365d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Apr 30 15:08:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 15:36:10 2009 -0700"
      },
      "message": "mm: fix Committed_AS underflow on large NR_CPUS environment\n\nThe Committed_AS field can underflow in certain situations:\n\n\u003e         # while true; do cat /proc/meminfo  | grep _AS; sleep 1; done | uniq -c\n\u003e               1 Committed_AS: 18446744073709323392 kB\n\u003e              11 Committed_AS: 18446744073709455488 kB\n\u003e               6 Committed_AS:    35136 kB\n\u003e               5 Committed_AS: 18446744073709454400 kB\n\u003e               7 Committed_AS:    35904 kB\n\u003e               3 Committed_AS: 18446744073709453248 kB\n\u003e               2 Committed_AS:    34752 kB\n\u003e               9 Committed_AS: 18446744073709453248 kB\n\u003e               8 Committed_AS:    34752 kB\n\u003e               3 Committed_AS: 18446744073709320960 kB\n\u003e               7 Committed_AS: 18446744073709454080 kB\n\u003e               3 Committed_AS: 18446744073709320960 kB\n\u003e               5 Committed_AS: 18446744073709454080 kB\n\u003e               6 Committed_AS: 18446744073709320960 kB\n\nBecause NR_CPUS can be greater than 1000 and meminfo_proc_show() does\nnot check for underflow.\n\nBut NR_CPUS proportional isn\u0027t good calculation.  In general,\npossibility of lock contention is proportional to the number of online\ncpus, not theorical maximum cpus (NR_CPUS).\n\nThe current kernel has generic percpu-counter stuff.  using it is right\nway.  it makes code simplify and percpu_counter_read_positive() don\u0027t\nmake underflow issue.\n\nReported-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[All kernel versions]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "266cf658efcf6ac33541a46740f74f50c79d2b6b",
      "tree": "5c83b0879892d509e598dfd54be3ba3679ecd348",
      "parents": [
        "03fb3d2af96c2783c3a5bc03f3d984cf422f0e69"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:36 2009 +0100"
      },
      "message": "FS-Cache: Recruit a page flags for cache management\n\nRecruit a page flag to aid in cache management.  The following extra flag is\ndefined:\n\n (1) PG_fscache (PG_private_2)\n\n     The marked page is backed by a local cache and is pinning resources in the\n     cache driver.\n\nIf PG_fscache is set, then things that checked for PG_private will now also\ncheck for that.  This includes things like truncation and page invalidation.\nThe function page_has_private() had been added to make the checks for both\nPG_private and PG_private_2 at the same time.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Steve Dickson \u003csteved@redhat.com\u003e\nAcked-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nTested-by: Daire Byrne \u003cDaire.Byrne@framestore.com\u003e\n"
    },
    {
      "commit": "d1d7487173eab8352125cf6cc271940f24254bd4",
      "tree": "07de142c03385f05beac342ee1c4b93b236445c5",
      "parents": [
        "ad1c3544d0a85da7738ce8cff6f8a148da57935c"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Mar 31 15:23:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:13 2009 -0700"
      },
      "message": "mm: remove pagevec_swap_free()\n\npagevec_swap_free() is now unused.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "3e2f41f1f64744f7942980d93cc93dd3e5924560",
      "tree": "7b605c407b7470877fd9c5c853407f75edcbeb49",
      "parents": [
        "a3d8e0549d913e30968fa02e505dfe02c0a23e0d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add zone_reclaim_stat\n\nIntroduce mem_cgroup_per_zone::reclaim_stat member and its statics\ncollecting function.\n\nNow, get_scan_ratio() can calculate correct value on memcg reclaim.\n\n[hugh@veritas.com: avoid reclaim_stat oops when disabled]\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: 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": "6e9015716ae9b59e9635d692fddfcfb9582c146c",
      "tree": "e1876d3822c46a20e1c35b41580f5ef6b2f6e053",
      "parents": [
        "f89eb90e33fd4e4e0cc1a6d20afd63c5a561885a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:07 2009 -0800"
      },
      "message": "mm: introduce zone_reclaim struct\n\nAdd zone_reclam_stat struct for later enhancement.\n\nA later patch uses this.  This patch doesn\u0027t any behavior change (yet).\n\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "08e552c69c6930d64722de3ec18c51844d06ee28",
      "tree": "a744d57ed4b23401115f1033dcaac9e85d550e09",
      "parents": [
        "8c7c6e34a1256a5082d38c8e9bd1474476912715"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: synchronized LRU\n\nA big patch for changing memcg\u0027s LRU semantics.\n\nNow,\n  - page_cgroup is linked to mem_cgroup\u0027s its own LRU (per zone).\n\n  - LRU of page_cgroup is not synchronous with global LRU.\n\n  - page and page_cgroup is one-to-one and statically allocated.\n\n  - To find page_cgroup is on what LRU, you have to check pc-\u003emem_cgroup as\n    - lru \u003d page_cgroup_zoneinfo(pc, nid_of_pc, zid_of_pc);\n\n  - SwapCache is handled.\n\nAnd, when we handle LRU list of page_cgroup, we do following.\n\n\tpc \u003d lookup_page_cgroup(page);\n\tlock_page_cgroup(pc); .....................(1)\n\tmz \u003d page_cgroup_zoneinfo(pc);\n\tspin_lock(\u0026mz-\u003elru_lock);\n\t.....add to LRU\n\tspin_unlock(\u0026mz-\u003elru_lock);\n\tunlock_page_cgroup(pc);\n\nBut (1) is spin_lock and we have to be afraid of dead-lock with zone-\u003elru_lock.\nSo, trylock() is used at (1), now. Without (1), we can\u0027t trust \"mz\" is correct.\n\nThis is a trial to remove this dirty nesting of locks.\nThis patch changes mz-\u003elru_lock to be zone-\u003elru_lock.\nThen, above sequence will be written as\n\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\tmem_cgroup_add/remove/etc_lru() {\n\t\tpc \u003d lookup_page_cgroup(page);\n\t\tmz \u003d page_cgroup_zoneinfo(pc);\n\t\tif (PageCgroupUsed(pc)) {\n\t\t\t....add to LRU\n\t\t}\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\nThis is much simpler.\n(*) We\u0027re safe even if we don\u0027t take lock_page_cgroup(pc). Because..\n    1. When pc-\u003emem_cgroup can be modified.\n       - at charge.\n       - at account_move().\n    2. at charge\n       the PCG_USED bit is not set before pc-\u003emem_cgroup is fixed.\n    3. at account_move()\n       the page is isolated and not on LRU.\n\nPros.\n  - easy for maintenance.\n  - memcg can make use of laziness of pagevec.\n  - we don\u0027t have to duplicated LRU/Active/Unevictable bit in page_cgroup.\n  - LRU status of memcg will be synchronized with global LRU\u0027s one.\n  - # of locks are reduced.\n  - account_move() is simplified very much.\nCons.\n  - may increase cost of LRU rotation.\n    (no impact if memcg is not configured.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2c43eed8334e878702fca713b212ae2a11d84b9",
      "tree": "4eb3f9b9153df5e7a638b15a6f7c9aa924066a94",
      "parents": [
        "7b1fe59793e61f826bef053107b57b23954833bb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:36 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: try_to_free_swap replaces remove_exclusive_swap_page\n\nremove_exclusive_swap_page(): its problem is in living up to its name.\n\nIt doesn\u0027t matter if someone else has a reference to the page (raised\npage_count); it doesn\u0027t matter if the page is mapped into userspace\n(raised page_mapcount - though that hints it may be worth keeping the\nswap): all that matters is that there be no more references to the swap\n(and no writeback in progress).\n\nswapoff (try_to_unuse) has been removing pages from swapcache for years,\nwith no concern for page count or page mapcount, and we used to have a\ncomment in lookup_swap_cache() recognizing that: if you go for a page of\nswapcache, you\u0027ll get the right page, but it could have been removed from\nswapcache by the time you get page lock.\n\nSo, give up asking for exclusivity: get rid of\nremove_exclusive_swap_page(), and remove_exclusive_swap_page_ref() and\nremove_exclusive_swap_page_count() which were spawned for the recent LRU\nwork: replace them by the simpler try_to_free_swap() which just checks\npage_swapcount().\n\nSimilarly, remove the page_count limitation from free_swap_and_count(),\nbut assume that it\u0027s worth holding on to the swap if page is mapped and\nswap nowhere near full.  Add a vm_swap_full() test in free_swap_cache()?\nIt would be consistent, but I think we probably have enough for now.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5934c531849ff4a51ce0f290141efe564290e40",
      "tree": "0c741a5bd6178db11f1147875f59e7a1a9d1754d",
      "parents": [
        "51726b1222863852c46ca21ed0115b85d1edfd89"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: add_active_or_unevictable into rmap\n\nlru_cache_add_active_or_unevictable() and page_add_new_anon_rmap() always\nappear together.  Save some symbol table space and some jumping around by\nremoving lru_cache_add_active_or_unevictable(), folding its code into\npage_add_new_anon_rmap(): like how we add file pages to lru just after\nadding them to page cache.\n\nRemove the nearby \"TODO: is this safe?\" comments (yes, it is safe), and\nchange page_add_new_anon_rmap()\u0027s address BUG_ON to VM_BUG_ON as\noriginally intended.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "1b0bd118862cd9fe9ac2872137a1b8107e83ff9d",
      "tree": "2bd59ee95762164d4e98bbafd251e3abd31c2af1",
      "parents": [
        "5594c8c813d9e907ff55da7080d42653478b73e8"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: get rid of pagevec_release_nonlru()\n\nspeculative page references patch (commit:\ne286781d5f2e9c846e012a39653a166e9d31777d) removed last\npagevec_release_nonlru() caller.\n\nSo this function can be removed now.\n\nThis patch doesn\u0027t have any functional change.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6841c8e26357904ef462650273f5d5015f7bb370",
      "tree": "17621c8b63393b725f42dad26ac671dd1926c9c1",
      "parents": [
        "02d211688727ad02bb4555b1aa8ae2de16b21b39"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Dec 09 13:14:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:53 2008 -0800"
      },
      "message": "mm: remove UP version of lru_add_drain_all()\n\nCurrently, lru_add_drain_all() has two version.\n  (1) use schedule_on_each_cpu()\n  (2) don\u0027t use schedule_on_each_cpu()\n\nGerald Schaefer reported it doesn\u0027t work well on SMP (not NUMA) S390\nmachine.\n\n  offline_pages() calls lru_add_drain_all() followed by drain_all_pages().\n  While drain_all_pages() works on each cpu, lru_add_drain_all() only runs\n  on the current cpu for architectures w/o CONFIG_NUMA. This let us run\n  into the BUG_ON(!PageBuddy(page)) in __offline_isolated_pages() during\n  memory hotplug stress test on s390. The page in question was still on the\n  pcp list, because of a race with lru_add_drain_all() and drain_all_pages()\n  on different cpus.\n\nActually, Almost machine has CONFIG_UNEVICTABLE_LRU\u003dy. Then almost machine use\n(1) version lru_add_drain_all although the machine is UP.\n\nThen this ifdef is not valueable.\nsimple removing is better.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nAcked-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.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": "9ff473b9a72942c5ac0ad35607cae28d8d59ed7a",
      "tree": "32a6eca5447abc95cf7fa8482d1e3f8237806621",
      "parents": [
        "f1d0b063d993527754f062c589b73f125024d216"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue Dec 02 10:31:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 02 15:50:40 2008 -0800"
      },
      "message": "vmscan: evict streaming IO first\n\nCount the insertion of new pages in the statistics used to drive the\npageout scanning code.  This should help the kernel quickly evict\nstreaming file IO.\n\nWe count on the fact that new file pages start on the inactive file LRU\nand new anonymous pages start on the active anon list.  This means\nstreaming file IO will increment the recent scanned file statistic, while\nleaving the recent rotated file statistic alone, driving pageout scanning\nto the file LRUs.\n\nPageout activity does its own list manipulation.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Gene Heskett \u003cgene.heskett@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": "64d6519dda3905dfb94d3f93c07c5f263f41813f",
      "tree": "62cae88edcb858c42a5b4b568eb77801299250bb",
      "parents": [
        "5344b7e648980cc2ca613ec03a56a8222ff48820"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "swap: cull unevictable pages in fault path\n\nIn the fault paths that install new anonymous pages, check whether the\npage is evictable or not using lru_cache_add_active_or_unevictable().  If\nthe page is evictable, just add it to the active lru list [via the pagevec\ncache], else add it to the unevictable list.\n\nThis \"proactive\" culling in the fault path mimics the handling of mlocked\npages in Nick Piggin\u0027s series to keep mlocked pages off the lru lists.\n\nNotes:\n\n1) This patch is optional--e.g., if one is concerned about the\n   additional test in the fault path.  We can defer the moving of\n   nonreclaimable pages until when vmscan [shrink_*_list()]\n   encounters them.  Vmscan will only need to handle such pages\n   once, but if there are a lot of them it could impact system\n   performance.\n\n2) The \u0027vma\u0027 argument to page_evictable() is require to notice that\n   we\u0027re faulting a page into an mlock()ed vma w/o having to scan the\n   page\u0027s rmap in the fault path.   Culling mlock()ed anon pages is\n   currently the only reason for this patch.\n\n3) We can\u0027t cull swap pages in read_swap_cache_async() because the\n   vma argument doesn\u0027t necessarily correspond to the swap cache\n   offset passed in by swapin_readahead().  This could [did!] result\n   in mlocking pages in non-VM_LOCKED vmas if [when] we tried to\n   cull in this path.\n\n4) Move set_pte_at() to after where we add page to lru to keep it\n   hidden from other tasks that might walk the page table.\n   We already do it in this order in do_anonymous() page.  And,\n   these are COW\u0027d anon pages.  Is this safe?\n\n[riel@redhat.com: undo an overzealous code cleanup]\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: 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": "894bc310419ac95f4fa4142dc364401a7e607f65",
      "tree": "15d56a7333b41620016b845d2323dd06e822b621",
      "parents": [
        "8a7a8544a4f6554ec2d8048ac9f9672f442db5a2"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "Unevictable LRU Infrastructure\n\nWhen the system contains lots of mlocked or otherwise unevictable pages,\nthe pageout code (kswapd) can spend lots of time scanning over these\npages.  Worse still, the presence of lots of unevictable pages can confuse\nkswapd into thinking that more aggressive pageout modes are required,\nresulting in all kinds of bad behaviour.\n\nInfrastructure to manage pages excluded from reclaim--i.e., hidden from\nvmscan.  Based on a patch by Larry Woodman of Red Hat.  Reworked to\nmaintain \"unevictable\" pages on a separate per-zone LRU list, to \"hide\"\nthem from vmscan.\n\nKosaki Motohiro added the support for the memory controller unevictable\nlru list.\n\nPages on the unevictable list have both PG_unevictable and PG_lru set.\nThus, PG_unevictable is analogous to and mutually exclusive with\nPG_active--it specifies which LRU list the page is on.\n\nThe unevictable infrastructure is enabled by a new mm Kconfig option\n[CONFIG_]UNEVICTABLE_LRU.\n\nA new function \u0027page_evictable(page, vma)\u0027 in vmscan.c tests whether or\nnot a page may be evictable.  Subsequent patches will add the various\n!evictable tests.  We\u0027ll want to keep these tests light-weight for use in\nshrink_active_list() and, possibly, the fault path.\n\nTo avoid races between tasks putting pages [back] onto an LRU list and\ntasks that might be moving the page from non-evictable to evictable state,\nthe new function \u0027putback_lru_page()\u0027 -- inverse to \u0027isolate_lru_page()\u0027\n-- tests the \"evictability\" of a page after placing it on the LRU, before\ndropping the reference.  If the page has become unevictable,\nputback_lru_page() will redo the \u0027putback\u0027, thus moving the page to the\nunevictable list.  This way, we avoid \"stranding\" evictable pages on the\nunevictable list.\n\n[akpm@linux-foundation.org: fix fallout from out-of-order merge]\n[riel@redhat.com: fix UNEVICTABLE_LRU and !PROC_PAGE_MONITOR build]\n[nishimura@mxp.nes.nec.co.jp: remove redundant mapping check]\n[kosaki.motohiro@jp.fujitsu.com: unevictable-lru-infrastructure: putback_lru_page()/unevictable page handling rework]\n[kosaki.motohiro@jp.fujitsu.com: kill unnecessary lock_page() in vmscan.c]\n[kosaki.motohiro@jp.fujitsu.com: revert migration change of unevictable lru infrastructure]\n[kosaki.motohiro@jp.fujitsu.com: revert to unevictable-lru-infrastructure-kconfig-fix.patch]\n[kosaki.motohiro@jp.fujitsu.com: restore patch failure of vmstat-unevictable-and-mlocked-pages-vm-events.patch]\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\nDebugged-by: Benjamin Kidwell \u003cbenjkidwell@yahoo.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\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": "4f98a2fee8acdb4ac84545df98cccecfd130f8db",
      "tree": "035a2937f4c3e2f7b4269412041c073ac646937c",
      "parents": [
        "b2e185384f534781fd22f5ce170b2ad26f97df70"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: split LRU lists into anon \u0026 file sets\n\nSplit the LRU lists in two, one set for pages that are backed by real file\nsystems (\"file\") and one for pages that are backed by memory and swap\n(\"anon\").  The latter includes tmpfs.\n\nThe advantage of doing this is that the VM will not have to scan over lots\nof anonymous pages (which we generally do not want to swap out), just to\nfind the page cache pages that it should evict.\n\nThis patch has the infrastructure and a basic policy to balance how much\nwe scan the anon lists and how much we scan the file lists.  The big\npolicy changes are in separate patches.\n\n[lee.schermerhorn@hp.com: collect lru meminfo statistics from correct offset]\n[kosaki.motohiro@jp.fujitsu.com: prevent incorrect oom under split_lru]\n[kosaki.motohiro@jp.fujitsu.com: fix pagevec_move_tail() doesn\u0027t treat unevictable page]\n[hugh@veritas.com: memcg swapbacked pages active]\n[hugh@veritas.com: splitlru: BDI_CAP_SWAP_BACKED]\n[akpm@linux-foundation.org: fix /proc/vmstat units]\n[nishimura@mxp.nes.nec.co.jp: memcg: fix handling of shmem migration]\n[kosaki.motohiro@jp.fujitsu.com: adjust Quicklists field of /proc/meminfo]\n[kosaki.motohiro@jp.fujitsu.com: fix style issue of get_scan_ratio()]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.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: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68a22394c286a2daf06ee8d65d8835f738faefa5",
      "tree": "1fb91d5bf57a1f6d1cabaac0a6f5d86060ebecb5",
      "parents": [
        "f04e9ebbe4909f9a41efd55149bc353299f4e83b"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: free swap space on swap-in/activation\n\nIf vm_swap_full() (swap space more than 50% full), the system will free\nswap space at swapin time.  With this patch, the system will also free the\nswap space in the pageout code, when we decide that the page is not a\ncandidate for swapout (and just wasting swap space).\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-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": "f04e9ebbe4909f9a41efd55149bc353299f4e83b",
      "tree": "4ff31c7f918edafe7d4e4dd0e926b6ac545c7897",
      "parents": [
        "b69408e88bd86b98feb7b9a38fd865e1ddb29827"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Sat Oct 18 20:26:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "swap: use an array for the LRU pagevecs\n\nTurn the pagevecs into an array just like the LRUs.  This significantly\ncleans up the source code and reduces the size of the kernel by about 13kB\nafter all the LRU lists have been created further down in the split VM\npatch series.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-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": "b69408e88bd86b98feb7b9a38fd865e1ddb29827",
      "tree": "b19277c29fe624870ba776cc6ada59928cd2796d",
      "parents": [
        "62695a84eb8f2e718bf4dfb21700afaa7a08e0ea"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Sat Oct 18 20:26:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: Use an indexed array for LRU variables\n\nCurrently we are defining explicit variables for the inactive and active\nlist.  An indexed array can be more generic and avoid repeating similar\ncode in several places in the reclaim code.\n\nWe are saving a few bytes in terms of code size:\n\nBefore:\n\n   text    data     bss     dec     hex filename\n4097753  573120 4092484 8763357  85b7dd vmlinux\n\nAfter:\n\n   text    data     bss     dec     hex filename\n4097729  573120 4092484 8763333  85b7c5 vmlinux\n\nHaving an easy way to add new lru lists may ease future work on the\nreclaim code.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-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": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab33dc09a5c0d2bd6757afa1c2f804c9657daec0",
      "tree": "37da268ee6841d1fdad2d0e6d737b7b3223f7ff3",
      "parents": [
        "7e6cbea39aaa32480145915751119227f29f6f7b"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:46 2008 -0700"
      },
      "message": "swap: update function comment of release_pages\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "f84f9504bddeec33a72d64ebe95143d3aaeb3f9b",
      "tree": "cf390092511689e9ae340a4cb74cf2104d5785ed",
      "parents": [
        "27ac792ca0b0a1e7e65f20342260650516c95864"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Wed Jul 23 21:28:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: remove initialization of static per-cpu variables\n\nThis was required by some old, no-longer-used gcc on sparc.\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@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": "80119ef5c8153e0a6cc5edf00c083dc98a9bd348",
      "tree": "a2af11a3991b1bebe9d764ab6d4d28891e86eda2",
      "parents": [
        "6c7c6afbb8c0e60d32a563cae7c6889211e9d9d8"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Fri May 23 13:04:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "mm: fix atomic_t overflow in vm\n\nThe atomic_t type is 32bit but a 64bit system can have more than 2^32\npages of virtual address space available.  Without this we overflow on\nludicrously large mappings\n\nSigned-off-by: Alan Cox \u003calan@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": "ac6aadb24b7d4f0e54246732e221c102073412bf",
      "tree": "1936c3e847fca977b8c0d650416c66655f7633ad",
      "parents": [
        "f05111f50105ac479a008cf85749cf9c956453ea"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Apr 28 02:12:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:20 2008 -0700"
      },
      "message": "mm: rotate_reclaimable_page() cleanup\n\nClean up messy conditional calling of test_clear_page_writeback() from both\nrotate_reclaimable_page() and end_page_writeback().\n\nThe only user of rotate_reclaimable_page() is end_page_writeback() so this is\nOK.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "7682486b3ee06f800d5b11033371c7c5e92e3057",
      "tree": "d0c2eda3204b085fc63200c787b2cf04f0298729",
      "parents": [
        "6cb2a21049b8990df4576c5fce4d48d0206c22d5"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm: fix various kernel-doc comments\n\nFix various kernel-doc notation in mm/:\n\nfilemap.c: add function short description; convert 2 to kernel-doc\nfremap.c: change parameter \u0027prot\u0027 to @prot\npagewalk.c: change \"-\" in function parameters to \":\"\nslab.c: fix short description of kmem_ptr_validate()\nswap.c: fix description \u0026 parameters of put_pages_list()\nswap_state.c: fix function parameters\nvmalloc.c: change \"@returns\" to \"Returns:\" since that is not a parameter\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "427d5416f317681498337ab19218d195edea02d6",
      "tree": "967cfc87ec775ca3c05f95f2339697e796383191",
      "parents": [
        "bd845e38c7a7251a95a8f2c38aa7fb87140b771d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:03 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: move_lists on page not page_cgroup\n\nEach caller of mem_cgroup_move_lists is having to use page_get_page_cgroup:\nit\u0027s more convenient if it acts upon the page itself not the page_cgroup; and\nin a later patch this becomes important to handle within memcontrol.c.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@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": "66e1707bc34609f626e2e7b4fe7e454c9748bad5",
      "tree": "d850a729887485874c976ba64eb85e3406e488a1",
      "parents": [
        "67e465a77ba658635309ee00b367bec6555ea544"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: add per cgroup LRU and reclaim\n\nAdd the page_cgroup to the per cgroup LRU.  The reclaim algorithm has\nbeen modified to make the isolate_lru_pages() as a pluggable component.  The\nscan_control data structure now accepts the cgroup on behalf of which\nreclaims are carried out.  try_to_free_pages() has been extended to become\ncgroup aware.\n\n[akpm@linux-foundation.org: fix warning]\n[Lee.Schermerhorn@hp.com: initialize all scan_control\u0027s isolate_pages member]\n[bunk@kernel.org: make do_try_to_free_pages() static]\n[hugh@veritas.com: memcgroup: fix try_to_free order]\n[kamezawa.hiroyu@jp.fujitsu.com: this unlock_page_cgroup() is unnecessary]\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\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: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\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": "920c7a5d0c94b8ce740f1d76fa06422f2a95a757",
      "tree": "74ab4b9b5a6f4279b9b9d2a463c6700546ba0011",
      "parents": [
        "1e548deb5d1630ca14ba04da04e3b6b3766178c7"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: remove fastcall from mm/\n\nfastcall is always defined to be empty, remove it\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "183ff22bb6bd8188c904ebfb479656ae52230b72",
      "tree": "425207fc9cdca03df64ee8241ba764c75db4d8d1",
      "parents": [
        "676b1855de0a18100b3c340084eb8ef72bde4fb1"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@fire.lp0.eux",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "message": "spelling fixes: mm/\n\nSpelling fixes in mm/.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "e0bf68ddec4f4f90e5871404be4f1854c17f3120",
      "tree": "36203a3558cbe26d698bed18be69b3822fb5eef2",
      "parents": [
        "dc62a30e274d003a4d08fb888f1520add4b21373"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: bdi init hooks\n\nprovide BDI constructor/destructor hooks\n\n[akpm@linux-foundation.org: compile fix]\nSigned-off-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": "902aaed0d983dfd459fcb2b678608d4584782200",
      "tree": "00b18597d87101ba1b37e5dcfde1d91312870160",
      "parents": [
        "754af6f5a85fcd1ecb456851d20c65e4c6ce10ab"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Tue Oct 16 01:24:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: use pagevec to rotate reclaimable page\n\nWhile running some memory intensive load, system response deteriorated just\nafter swap-out started.\n\nThe cause of this problem is that when a PG_reclaim page is moved to the tail\nof the inactive LRU list in rotate_reclaimable_page(), lru_lock spin lock is\nacquired every page writeback .  This deteriorates system performance and\nmakes interrupt hold off time longer when swap-out started.\n\nFollowing patch solves this problem.  I use pagevec in rotating reclaimable\npages to mitigate LRU spin lock contention and reduce interrupt hold off time.\n\nI did a test that allocating and touching pages in multiple processes, and\npinging to the test machine in flooding mode to measure response under memory\nintensive load.\n\nThe test result is:\n\n\t-2.6.23-rc5\n\t--- testmachine ping statistics ---\n\t3000 packets transmitted, 3000 received, 0% packet loss, time 53222ms\n\trtt min/avg/max/mdev \u003d 0.074/0.652/172.228/7.176 ms, pipe 11, ipg/ewma\n17.746/0.092 ms\n\n\t-2.6.23-rc5-patched\n\t--- testmachine ping statistics ---\n\t3000 packets transmitted, 3000 received, 0% packet loss, time 51924ms\n\trtt min/avg/max/mdev \u003d 0.072/0.108/3.884/0.114 ms, pipe 2, ipg/ewma\n17.314/0.091 ms\n\nMax round-trip-time was improved.\n\nThe test machine spec is that 4CPU(3.16GHz, Hyper-threading enabled)\n8GB memory , 8GB swap.\n\nI did ping test again to observe performance deterioration caused by taking\na ref.\n\n\t-2.6.23-rc6-with-modifiedpatch\n\t--- testmachine ping statistics ---\n\t3000 packets transmitted, 3000 received, 0% packet loss, time 53386ms\n\trtt min/avg/max/mdev \u003d 0.074/0.110/4.716/0.147 ms, pipe 2, ipg/ewma 17.801/0.129 ms\n\nThe result for my original patch is as follows.\n\n\t-2.6.23-rc5-with-originalpatch\n\t--- testmachine ping statistics ---\n\t3000 packets transmitted, 3000 received, 0% packet loss, time 51924ms\n\trtt min/avg/max/mdev \u003d 0.072/0.108/3.884/0.114 ms, pipe 2, ipg/ewma 17.314/0.091 ms\n\nThe influence to response was small.\n\n[akpm@linux-foundation.org: fix uninitalised var warning]\n[hugh@veritas.com: fix locking]\n[randy.dunlap@oracle.com: fix function declaration]\n[hugh@veritas.com: fix BUG at include/linux/mm.h:220!]\n[hugh@veritas.com: kill redundancy in rotate_reclaimable_page]\n[hugh@veritas.com: move_tail_pages into lru_add_drain]\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43fac94dd62667c83dd2daa5b7ac548512af780a",
      "tree": "68b8cf73959afd24410f3f398bda5953c7dcbadd",
      "parents": [
        "39e91e433169bdfd5a312654e5988986662afd7f"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Tue Oct 16 01:24:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "Clean up duplicate includes in mm/\n\nThis patch cleans up duplicate includes in\n\tmm/\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d85f33855c303acfa87fa457157cef755b6087df",
      "tree": "f1184a1a24b432727b0399594ede37c7539db888",
      "parents": [
        "30520864839dc796fd314812e7036e754880b47d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "Make page-\u003eprivate usable in compound pages\n\nIf we add a new flag so that we can distinguish between the first page and the\ntail pages then we can avoid to use page-\u003eprivate in the first page.\npage-\u003eprivate \u003d\u003d page for the first page, so there is no real information in\nthere.\n\nFreeing up page-\u003eprivate makes the use of compound pages more transparent.\nThey become more usable like real pages.  Right now we have to be careful f.e.\n if we are going beyond PAGE_SIZE allocations in the slab on i386 because we\ncan then no longer use the private field.  This is one of the issues that\ncause us not to support debugging for page size slabs in SLAB.\n\nHaving page-\u003eprivate available for SLUB would allow more meta information in\nthe page struct.  I can probably avoid the 16 bit ints that I have in there\nright now.\n\nAlso if page-\u003eprivate is available then a compound page may be equipped with\nbuffer heads.  This may free up the way for filesystems to support larger\nblocks than page size.\n\nWe add PageTail as an alias of PageReclaim.  Compound pages cannot currently\nbe reclaimed.  Because of the alias one needs to check PageCompound first.\n\nThe RFC for the this approach was discussed at\nhttp://marc.info/?t\u003d117574302800001\u0026r\u003d1\u0026w\u003d2\n\n[nacc@us.ibm.com: fix hugetlbfs]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.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": "02316067852187b8bec781bec07410e91af79627",
      "tree": "856e3f4610c91a6548bf3bf5c70ecbc0b28a4145",
      "parents": [
        "a38a44c1a93078fc5fadc4ac2df8dea4697069e2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 06 20:38:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:39 2006 -0800"
      },
      "message": "[PATCH] hotplug CPU: clean up hotcpu_notifier() use\n\nThere was lots of #ifdef noise in the kernel due to hotcpu_notifier(fn,\nprio) not correctly marking \u0027fn\u0027 as used in the !HOTPLUG_CPU case, and thus\ngenerating compiler warnings of unused symbols, hence forcing people to add\n#ifdefs.\n\nthe compiler can skip truly unused functions just fine:\n\n    text    data     bss     dec     hex filename\n 1624412  728710 3674856 6027978  5bfaca vmlinux.before\n 1624412  728710 3674856 6027978  5bfaca vmlinux.after\n\n[akpm@osdl.org: topology.c fix]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33f2ef89f8e181486b63fdbdc97c6afa6ca9f34b",
      "tree": "b90eac24ff367bc628c44eaa51a9f0ea1b69d1a4",
      "parents": [
        "3c517a6132098ca37e122a2980fc64a9e798b0d7"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Wed Dec 06 20:33:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] mm: make compound page destructor handling explicit\n\nCurrently we we use the lru head link of the second page of a compound page\nto hold its destructor.  This was ok when it was purely an internal\nimplmentation detail.  However, hugetlbfs overrides this destructor\nviolating the layering.  Abstract this out as explicit calls, also\nintroduce a type for the callback function allowing them to be type\nchecked.  For each callback we pre-declare the function, causing a type\nerror on definition rather than on use elsewhere.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c4028958b6ecad064b1a6303a6a5906d4fe48d73",
      "tree": "1c4c89652c62a75da09f9b9442012007e4ac6250",
      "parents": [
        "65f27f38446e1976cc98fd3004b110fedcddd189"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:57:56 2006 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Nov 22 14:57:56 2006 +0000"
      },
      "message": "WorkStruct: make allyesconfig\n\nFix up for make allyesconfig.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\n"
    },
    {
      "commit": "b221385bc41d6789edde3d2fa0cb20d5045730eb",
      "tree": "93f3317247d587fd011eb9d77cd73a49670d8d5f",
      "parents": [
        "204ec841fbea3e5138168edbc3a76d46747cc987"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Sep 25 23:31:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:45 2006 -0700"
      },
      "message": "[PATCH] mm/: make functions static\n\nThis patch makes the following needlessly global functions static:\n - slab.c: kmem_find_general_cachep()\n - swap.c: __page_cache_release()\n - vmalloc.c: __vmalloc_node()\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "725d704ecaca4a43f067092c140d4f3271cf2856",
      "tree": "320cf8ab5457ac6c01c05da8c30d6026538ee259",
      "parents": [
        "a6ca1b99ed434f3fb41bbed647ed36c0420501e5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Sep 25 23:30:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: VM_BUG_ON\n\nIntroduce a VM_BUG_ON, which is turned on with CONFIG_DEBUG_VM.  Use this\nin the lightweight, inline refcounting functions; PageLRU and PageActive\nchecks in vmscan, because they\u0027re pretty well confined to vmscan.  And in\npage allocate/free fastpaths which can be the hottest parts of the kernel\nfor kbuilds.\n\nUnlike BUG_ON, VM_BUG_ON must not be used to execute statements with\nside-effects, and should not be used outside core mm code.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1d7ea7324ae7a59f8e17e4ba76a2707c1e6f24d2",
      "tree": "902b646ed70af86481a77a67582b79e67264a481",
      "parents": [
        "9b41ea7289a589993d3daabc61f999b4147872c4"
      ],
      "author": {
        "name": "Alexander Zarochentsev",
        "email": "zam@namesys.com",
        "time": "Sun Aug 13 23:24:27 2006 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Aug 14 12:54:29 2006 -0700"
      },
      "message": "[PATCH] fuse: fix error case in fuse_readpages\n\nDon\u0027t let fuse_readpages leave the @pages list not empty when exiting\non error.\n\n[akpm@osdl.org: kernel-doc fixes]\nSigned-off-by: Alexander Zarochentsev \u003czam@namesys.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "f8891e5e1f93a128c3900f82035e8541357896a7",
      "tree": "97b078ac97970962b17c85d39fd64cb48dc01168",
      "parents": [
        "ca889e6c45e0b112cb2ca9d35afc66297519b5d5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] Light weight event counters\n\nThe remaining counters in page_state after the zoned VM counter patches\nhave been applied are all just for show in /proc/vmstat.  They have no\nessential function for the VM.\n\nWe use a simple increment of per cpu variables.  In order to avoid the most\nsevere races we disable preempt.  Preempt does not prevent the race between\nan increment and an interrupt handler incrementing the same statistics\ncounter.  However, that race is exceedingly rare, we may only loose one\nincrement or so and there is no requirement (at least not in kernel) that\nthe vm event counters have to be accurate.\n\nIn the non preempt case this results in a simple increment for each\ncounter.  For many architectures this will be reduced by the compiler to a\nsingle instruction.  This single instruction is atomic for i386 and x86_64.\n And therefore even the rare race condition in an interrupt is avoided for\nboth architectures in most cases.\n\nThe patchset also adds an off switch for embedded systems that allows a\nbuilding of linux kernels without these counters.\n\nThe implementation of these counters is through inline code that hopefully\nresults in only a single instruction increment instruction being emitted\n(i386, x86_64) or in the increment being hidden though instruction\nconcurrency (EPIC architectures such as ia64 can get that done).\n\nBenefits:\n- VM event counter operations usually reduce to a single inline instruction\n  on i386 and x86_64.\n- No interrupt disable, only preempt disable for the preempt case.\n  Preempt disable can also be avoided by moving the counter into a spinlock.\n- Handling is similar to zoned VM counters.\n- Simple and easily extendable.\n- Can be omitted to reduce memory use for embedded use.\n\nReferences:\n\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113512330605497\u0026w\u003d2\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114988082814934\u0026w\u003d2\nlocal_t http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114991748606690\u0026w\u003d2\nV2 http://marc.theaimsgroup.com/?t\u003d115014808400007\u0026r\u003d1\u0026w\u003d2\nV3 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115024767022346\u0026w\u003d2\nV4 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115047968808926\u0026w\u003d2\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": "1bfba4e8ea0e555e3a0296051517d96253660ccc",
      "tree": "48ced9016b5c08f1be217677c25e6879c07b5278",
      "parents": [
        "a7addcea6ac7c0e9733a48cda06ca0880f116a48"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Mon Jun 26 00:24:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:17 2006 -0700"
      },
      "message": "[PATCH] core: use list_move()\n\nThis patch converts the combination of list_del(A) and list_add(A, B) to\nlist_move(A, B).\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3cbc564024d8f174202f023e8a2991782f6a9431",
      "tree": "5d523ef9694b7a0bf07d4db58718f4654afa3f04",
      "parents": [
        "d09042da7284a86ffbdd18695f517a71514ed598"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Fri Jun 23 02:05:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:06 2006 -0700"
      },
      "message": "[PATCH] percpu_counters: create lib/percpu_counter.c\n\n- Move percpu_counter routines from mm/swap.c to lib/percpu_counter.c\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0a945022778f100115d0cb6234eb28fc1b15ccaf",
      "tree": "85df4b5f7dd8bf59557091379c59b23b09115bf6",
      "parents": [
        "631d6747e1d877a4baa924cb373b8b9511a53e5e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 28 01:56:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] for_each_possible_cpu: fixes for generic part\n\nreplaces for_each_cpu with for_each_possible_cpu().\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "674539115cc88473f623581e1d53c0e2ecef2179",
      "tree": "7a32501091d7370ff4387df68804f918a089c631",
      "parents": [
        "4c84cacfa424264f7ad5287298d3ea4a3e935278"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:57 2006 -0800"
      },
      "message": "[PATCH] mm: less atomic ops\n\nIn the page release paths, we can be sure that nobody will mess with our\npage-\u003eflags because the refcount has dropped to 0.  So no need for atomic\noperations here.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c84cacfa424264f7ad5287298d3ea4a3e935278",
      "tree": "8cefe97dfd0cdfbdebe5636ccc68b14ab3ae1207",
      "parents": [
        "8d438f96d2b8eade6cbcd8adfc22dae6f5cbd6c0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:08:00 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:57 2006 -0800"
      },
      "message": "[PATCH] mm: PageActive no testset\n\nPG_active is protected by zone-\u003elru_lock, it does not need TestSet/TestClear\noperations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8d438f96d2b8eade6cbcd8adfc22dae6f5cbd6c0",
      "tree": "5248caf52ed9ba1dbb172d9e3bd3216c97ab3b84",
      "parents": [
        "46453a6e194a8c55fe6cf3dc8e1c4f24e2abc013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:07:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:56 2006 -0800"
      },
      "message": "[PATCH] mm: PageLRU no testset\n\nPG_lru is protected by zone-\u003elru_lock. It does not need TestSet/TestClear\noperations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46453a6e194a8c55fe6cf3dc8e1c4f24e2abc013",
      "tree": "e407665e6c8cdf33814007750c49fdbea0a21e0e",
      "parents": [
        "2492ecc1a16b8ccf679d2999dca4f1b48aef07ee"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Mar 22 00:07:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:53:56 2006 -0800"
      },
      "message": "[PATCH] mm: never ClearPageLRU released pages\n\nIf vmscan finds a zero refcount page on the lru list, never ClearPageLRU\nit.  This means the release code need not hold -\u003elru_lock to stabilise\nPageLRU, so that lock may be skipped entirely when releasing !PageLRU pages\n(because we know PageLRU won\u0027t have been temporarily cleared by vmscan,\nwhich was previously guaranteed by holding the lock to synchronise against\nvmscan).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5b40dc780ed996162f3af8712eb03beb24dcdbef",
      "tree": "17035c1d501390f00efac6895ee663c45d4fb699",
      "parents": [
        "8ba32fde2c5be52865b2fd7e5e3752a46971fabe"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Mar 16 23:04:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 17 07:51:25 2006 -0800"
      },
      "message": "[PATCH] fix race in pagevec_strip?\n\nWe can call try_to_release_page() with PagePrivate off and a valid\npage-\u003emapping This may cause all sorts of trouble for the filesystem\n*_releasepage() handlers.  XFS bombs out in that case.\n\nLock the page before checking for page private.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e2bab3d92486fb781f4d06f56339264ed1492392",
      "tree": "0295e1ed29794a8e804c4e28a3ea9e72777e533b",
      "parents": [
        "b884e25784f62a1c740d2e4c1ce19cb89644e986"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Mar 07 21:55:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 08 14:14:01 2006 -0800"
      },
      "message": "[PATCH] percpu_counter_sum()\n\nImplement percpu_counter_sum().  This is a more accurate but slower version of\npercpu_counter_read_positive().\n\nWe need this for Alex\u0027s speedup-ext3_statfs patch and for the nr_file\naccounting fix.  Otherwise these things would be too inaccurate on large CPU\ncounts.\n\nCc: Ravikiran G Thirumalai \u003ckiran@scalex86.org\u003e\nCc: Alex Tomas \u003calex@clusterfs.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "41d78ba55037468e6c86c53e3076d1a74841de39",
      "tree": "d970f18d18532009b17c736583429401dbd64ade",
      "parents": [
        "7277232374680595cdbc774fd246b206f56db015"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Feb 14 13:52:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 14 16:09:33 2006 -0800"
      },
      "message": "[PATCH] compound page: use page[1].lru\n\nIf a compound page has its own put_page_testzero destructor (the only current\nexample is free_huge_page), that is noted in page[1].mapping of the compound\npage.  But that\u0027s rather a poor place to keep it: functions which call\nset_page_dirty_lock after get_user_pages (e.g.  Infiniband\u0027s\n__ib_umem_release) ought to be checking first, otherwise set_page_dirty is\nliable to crash on what\u0027s not the address of a struct address_space.\n\nAnd now I\u0027m about to make that worse: it turns out that every compound page\nneeds a destructor, so we can no longer rely on hugetlb pages going their own\nspecial way, to avoid further problems of page-\u003emapping reuse.  For example,\nnot many people know that: on 50% of i386 -Os builds, the first tail page of a\ncompound page purports to be PageAnon (when its destructor has an odd\naddress), which surprises page_add_file_rmap.\n\nKeep the compound page destructor in page[1].lru.next instead.  And to free up\nthe common pairing of mapping and index, also move compound page order from\nindex to lru.prev.  Slab reuses page-\u003elru too: but if we ever need slab to use\ncompound pages, it can easily stack its use above this.\n\n(akpm: decoded version of the above: the tail pages of a compound page now\nhave -\u003emapping\u003d\u003dNULL, so there\u0027s no need for the set_page_dirty[_lock]()\ncaller to check that they\u0027re not compund pages before doing the dirty).\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": "8519fb30e438f8088b71a94a7d5a660a814d3872",
      "tree": "8d29a7b1fa33e5f65e649d363cfa10e83c4fab97",
      "parents": [
        "99f6d61bda82d09b2d94414d413d39f66a0b7da2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Feb 07 12:58:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 07 16:12:33 2006 -0800"
      },
      "message": "[PATCH] mm: compound release fix\n\nCompound pages on SMP systems can now often be freed from pagetables via\nthe release_pages path.  This uses put_page_testzero which does not handle\ncompound pages at all.  Releasing constituent pages from process mappings\ndecrements their count to a large negative number and leaks the reference\nat the head page - net result is a memory leak.\n\nThe problem was hidden because the debug check in put_page_testzero itself\nactually did take compound pages into consideration.\n\nFix the bug and the debug check.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-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": "053837fce7aa79025ed57656855df09f80175527",
      "tree": "05d7615894131a368fc4943f641b11acdd2ae694",
      "parents": [
        "e236a166b2bc437769a9b8b5d19186a3761bde48"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 18 17:42:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:17 2006 -0800"
      },
      "message": "[PATCH] mm: migration page refcounting fix\n\nMigration code currently does not take a reference to target page\nproperly, so between unlocking the pte and trying to take a new\nreference to the page with isolate_lru_page, anything could happen to\nit.\n\nFix this by holding the pte lock until we get a chance to elevate the\nrefcount.\n\nOther small cleanups while we\u0027re here.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\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": "78539fdfa4c21308e90c596f060df8114483862a",
      "tree": "475535625cb750317314ac4eda93c4f6fe57d4d9",
      "parents": [
        "f6d6d4fcd180f8e47bf6b13fc6cce1e6c156d0ea"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@sgi.com",
        "time": "Wed Jan 11 20:47:41 2006 +1100"
      },
      "committer": {
        "name": "Nathan Scott",
        "email": "nathans@sgi.com",
        "time": "Wed Jan 11 20:47:41 2006 +1100"
      },
      "message": "[XFS] Export pagevec_lookup for use on the XFS page writeout path,\nfor dealing with delayed allocate and unwritten extents (as well).\n\nSigned-off-by: Christoph Hellwig \u003chch@sgi.com\u003e\nSigned-off-by: Nathan Scott \u003cnathans@sgi.com\u003e\n"
    },
    {
      "commit": "80bfed904c690642db9d4178950735299160950b",
      "tree": "5aca96e02dfebf4665a9f1c7e1d3fa58d8009c09",
      "parents": [
        "210fe530305ee50cd889fe9250168228b2994f32"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Jan 06 00:11:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:28 2006 -0800"
      },
      "message": "[PATCH] consolidate lru_add_drain() and lru_drain_cache()\n\nCc: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nCc: Rajesh Shah \u003crajesh.shah@intel.com\u003e\nCc: Li Shaohua \u003cshaohua.li@intel.com\u003e\nCc: Srivatsa Vaddagiri \u003cvatsa@in.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "664beed0190fae687ac51295694004902ddeb18e",
      "tree": "89a7c8d9d541fb678c567834cb758fc88b375d47",
      "parents": [
        "1cdca61bf8537043edde8ef784ce1a1351361dac"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Nov 21 21:32:14 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Nov 22 09:13:42 2005 -0800"
      },
      "message": "[PATCH] unpaged: unifdefed PageCompound\n\nIt looks like snd_xxx is not the only nopage to be using PageReserved as a way\nof holding a high-order page together: which no longer works, but is masked by\nour failure to free from VM_RESERVED areas.  We cannot fix that bug without\nfirst substituting another way to hold the high-order page together, while\nfarming out the 0-order pages from within it.\n\nThat\u0027s just what PageCompound is designed for, but it\u0027s been kept under\nCONFIG_HUGETLB_PAGE.  Remove the #ifdefs: which saves some space (out- of-line\nput_page), doesn\u0027t slow down what most needs to be fast (already using\nhugetlb), and unifies the way we handle high-order pages.\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": "1b09d16489f831bfc23d1c7311ee331b0680e90e",
      "tree": "999528c9e6b6686bb008d6a683aab3527892fa61",
      "parents": [
        "47bdfb96de47d25bea423b5adbfe1c2e1ceaa296"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Nov 07 01:01:40 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:07 2005 -0800"
      },
      "message": "[PATCH] mm/swap.c: unexport vm_acct_memory\n\nI didn\u0027t find any possible modular usage in the kernel.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f28570185f98bfa83f775756ced79e9f22b6d93",
      "tree": "d193adb5d9597ff002ab1aa3a4d966458098b44a",
      "parents": [
        "ef0eaa13362041f531f951b89362bfbc177e2bc0"
      ],
      "author": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Tue Nov 01 10:22:55 2005 -0800"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Tue Nov 01 10:22:55 2005 -0800"
      },
      "message": "Export __pagevec_release and pagevec_lookup_tag\n\nThese are needed to implement cifs_writepages\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "c7e9dd4dd0b8dd75c410011b3c8f9980112fd0f8",
      "tree": "f044e989da0864fb614200f419f8185de5bd5560",
      "parents": [
        "39e88ca2c9d0f6d1e9f34ea2a6e86a652bb69a7a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Sun Oct 30 15:02:40 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:22 2005 -0800"
      },
      "message": "[PATCH] vm: remove redundant assignment from __pagevec_release_nonlru()\n\nThis patch removes redundant assignment from __pagevec_release_nonlru().\npages_to_free.cold is set to pvec-\u003ecold by pagevec_init() call right above\nthe assignment.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7",
      "tree": "1f76d33bb1d76221c6424bc5fed080a4f91349a6",
      "parents": [
        "b38c6845b695141259019e2b7c0fe6c32a6e720d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: split page table lock\n\nChristoph Lameter demonstrated very poor scalability on the SGI 512-way, with\na many-threaded application which concurrently initializes different parts of\na large anonymous area.\n\nThis patch corrects that, by using a separate spinlock per page table page, to\nguard the page table entries in that page, instead of using the mm\u0027s single\npage_table_lock.  (But even then, page_table_lock is still used to guard page\ntable allocation, and anon_vma allocation.)\n\nIn this implementation, the spinlock is tucked inside the struct page of the\npage table page: with a BUILD_BUG_ON in case it overflows - which it would in\nthe case of 32-bit PA-RISC with spinlock debugging enabled.\n\nSplitting the lock is not quite for free: another cacheline access.  Ideally,\nI suppose we would use split ptlock only for multi-threaded processes on\nmulti-cpu machines; but deciding that dynamically would have its own costs.\nSo for now enable it by config, at some number of cpus - since the Kconfig\nlanguage doesn\u0027t support inequalities, let preprocessor compare that with\nNR_CPUS.  But I don\u0027t think it\u0027s worth being user-configurable: for good\ntesting of both split and unsplit configs, split now at 4 cpus, and perhaps\nchange that to 8 later.\n\nThere is a benefit even for singly threaded processes: kswapd can be attacking\none part of the mm while another part is busy faulting.\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": "b5810039a54e5babf428e9a1e89fc1940fabff11",
      "tree": "835836cb527ec9bd525f93eb7e016f3dfb8c8ae2",
      "parents": [
        "f9c98d0287de42221c624482fd4f8d485c98ab22"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Oct 29 18:16:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] core remove PageReserved\n\nRemove PageReserved() calls from core code by tightening VM_RESERVED\nhandling in mm/ to cover PageReserved functionality.\n\nPageReserved special casing is removed from get_page and put_page.\n\nAll setting and clearing of PageReserved is retained, and it is now flagged\nin the page_alloc checks to help ensure we don\u0027t introduce any refcount\nbased freeing of Reserved pages.\n\nMAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being\ndeprecated.  We never completely handled it correctly anyway, and is be\nreintroduced in future if required (Hugh has a proof of concept).\n\nOnce PageReserved() calls are removed from kernel/power/swsusp.c, and all\narch/ and driver code, the Set and Clear calls, and the PG_reserved bit can\nbe trivially removed.\n\nLast real user of PageReserved is swsusp, which uses PageReserved to\ndetermine whether a struct page points to valid memory or not.  This still\nneeds to be addressed (a generic page_is_ram() should work).\n\nA last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and\nthus mapcounted and count towards shared rss).  These writes to the struct\npage could cause excessive cacheline bouncing on big systems.  There are a\nnumber of ways this could be addressed if it is an issue.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRefcount bug fix for filemap_xip.c\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"
    }
  ]
}
