)]}'
{
  "log": [
    {
      "commit": "6484eb3e2a81807722c5f28efef94d8338b7b996",
      "tree": "10ce36f412c2ff0c7eb399af1a189f8e354f56db",
      "parents": [
        "b3c466ce512923298ae8c0121d3e9f397a3f1210"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jun 16 15:31:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:32 2009 -0700"
      },
      "message": "page allocator: do not check NUMA node ID when the caller knows the node is valid\n\nCallers of alloc_pages_node() can optionally specify -1 as a node to mean\n\"allocate from the current node\".  However, a number of the callers in\nfast paths know for a fact their node is valid.  To avoid a comparison and\nbranch, this patch adds alloc_pages_exact_node() that only checks the nid\nwith VM_BUG_ON().  Callers that know their node is valid are then\nconverted.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\t[for the SLOB NUMA bits]\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ffc59b4d0bdfa00e882339f85b8a969bb7021e2",
      "tree": "6b6d96208f08bc394c8e64efed6767b9a95e7a6d",
      "parents": [
        "61b7cbdba2f3c588a0cf3db574c562805454b09b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:30 2009 -0700"
      },
      "message": "readahead: enforce full sync mmap readahead size\n\nNow that we do readahead for sequential mmap reads, here is a simple\nevaluation of the impacts, and one further optimization.\n\nIt\u0027s an NFS-root debian desktop system, readahead size \u003d 60 pages.\nThe numbers are grabbed after a fresh boot into console.\n\napproach        pgmajfault      RA miss ratio   mmap IO count   avg IO size(pages)\n   A            383             31.6%           383             11\n   B            225             32.4%           390             11\n   C            224             32.6%           307             13\n\ncase A: mmap sync/async readahead disabled\ncase B: mmap sync/async readahead enabled, with enforced full async readahead size\ncase C: mmap sync/async readahead enabled, with enforced full sync/async readahead size\nor:\nA \u003d vanilla 2.6.30-rc1\nB \u003d A plus mmap readahead\nC \u003d B plus this patch\n\nThe numbers show that\n- there are good possibilities for random mmap reads to trigger readahead\n- \u0027pgmajfault\u0027 is reduced by 1/3, due to the _async_ nature of readahead\n- case C can further reduce IO count by 1/4\n- readahead miss ratios are not quite affected\n\nThe theory is\n- readahead is _good_ for clustered random reads, and can perform\n  _better_ than readaround because they could be _async_.\n- async readahead size is guaranteed to be larger than readaround\n  size, and they are _async_, hence will mostly behave better\nHowever for B\n- sync readahead size could be smaller than readaround size, hence may\n  make things worse by produce more smaller IOs\nwhich will be fixed by this patch.\n\nFinal conclusion:\n- mmap readahead reduced major faults by 1/3 and no obvious overheads;\n- mmap io can be further reduced by 1/4 with this patch.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "61b7cbdba2f3c588a0cf3db574c562805454b09b",
      "tree": "657756b1ab5dc5fd63b341d999d492b868f4309c",
      "parents": [
        "10be0b372cac50e2e7a477852f98bf069a97a3fa"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:30 2009 -0700"
      },
      "message": "readahead: remove redundant test in shrink_readahead_size_eio()\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d30a11004e3411909f2448546f036a011978062e",
      "tree": "c1980adb410d9fabd2c2eb8af9f0ed8ee4b656da",
      "parents": [
        "2fad6f5deee5556f511eab58da78737a23ddb35d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:29 2009 -0700"
      },
      "message": "readahead: record mmap read-around states in file_ra_state\n\nMmap read-around now shares the same code style and data structure with\nreadahead code.\n\nThis also removes do_page_cache_readahead().  Its last user, mmap\nread-around, has been changed to call ra_submit().\n\nThe no-readahead-if-congested logic is dumped by the way.  Users will be\npretty sensitive about the slow loading of executables.  So it\u0027s\nunfavorable to disabled mmap read-around on a congested queue.\n\n[akpm@linux-foundation.org: coding-style fixes]\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2fad6f5deee5556f511eab58da78737a23ddb35d",
      "tree": "eca8262062c4fda63cb3bd34f9478f3fbfd7f518",
      "parents": [
        "70ac23cfa31f68289d4b720c6162b3929ab4de36"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:29 2009 -0700"
      },
      "message": "readahead: enforce full readahead size on async mmap readahead\n\nWe need this in one particular case and two more general ones.\n\nNow we do async readahead for sequential mmap reads, and do it with the\nhelp of PG_readahead.  For normal reads, PG_readahead is the sufficient\ncondition to do a sequential readahead.  But unfortunately, for mmap\nreads, there is a tiny nuisance:\n\n[11736.998347] readahead-init0(process: sh/23926, file: sda1/w3m, offset\u003d0:4503599627370495, ra\u003d0+4-3) \u003d 4\n[11737.014985] readahead-around(process: w3m/23926, file: sda1/w3m, offset\u003d0:0, ra\u003d290+32-0) \u003d 17\n[11737.019488] readahead-around(process: w3m/23926, file: sda1/w3m, offset\u003d0:0, ra\u003d118+32-0) \u003d 32\n[11737.024921] readahead-interleaved(process: w3m/23926, file: sda1/w3m, offset\u003d0:2, ra\u003d4+6-6) \u003d 6\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                 ~~~~~~~~~~~~~\n\nAn unfavorably small readahead.  The original dumb read-around size could\nbe more efficient.\n\nThat happened because ld-linux.so does a read(832) in L1 before mmap(),\nwhich triggers a 4-page readahead, with the second page tagged\nPG_readahead.\n\nL0: open(\"/lib/libc.so.6\", O_RDONLY)        \u003d 3\nL1: read(3, \"\\177ELF\\2\\1\\1\\0\\0\\0\\0\\0\\0\\0\\0\\0\\3\\0\u003e\\0\\1\\0\\0\\0\\340\\342\"..., 832) \u003d 832\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nL2: fstat(3, {st_mode\u003dS_IFREG|0755, st_size\u003d1420624, ...}) \u003d 0\nL3: mmap(NULL, 3527256, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) \u003d 0x7fac6e51d000\nL4: mprotect(0x7fac6e671000, 2097152, PROT_NONE) \u003d 0\nL5: mmap(0x7fac6e871000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x154000) \u003d 0x7fac6e871000\nL6: mmap(0x7fac6e876000, 16984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) \u003d 0x7fac6e876000\nL7: close(3)                                \u003d 0\n\nIn general, the PG_readahead flag will also be hit in cases\n\n- sequential reads\n\n- clustered random reads\n\nA full readahead size is desirable in both cases.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70ac23cfa31f68289d4b720c6162b3929ab4de36",
      "tree": "d610e506a9247a22ba54c379d8abb58958ada6da",
      "parents": [
        "ef00e08e26dd5d84271ef706262506b82195e752"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:29 2009 -0700"
      },
      "message": "readahead: sequential mmap readahead\n\nAuto-detect sequential mmap reads and do readahead for them.\n\nThe sequential mmap readahead will be triggered when\n- sync readahead: it\u0027s a major fault and (prev_offset \u003d\u003d offset-1);\n- async readahead: minor fault on PG_readahead page with valid readahead state.\n\nThe benefits of doing readahead instead of read-around:\n- less I/O wait thanks to async readahead\n- double real I/O size and no more cache hits\n\nThe single stream case is improved a little.\nFor 100,000 sequential mmap reads:\n\n                                    user       system    cpu        total\n(1-1)  plain -mm, 128KB readaround: 3.224      2.554     48.40%     11.838\n(1-2)  plain -mm, 256KB readaround: 3.170      2.392     46.20%     11.976\n(2)  patched -mm, 128KB readahead:  3.117      2.448     47.33%     11.607\n\nThe patched (2) has smallest total time, since it has no cache hit overheads\nand less I/O block time(thanks to async readahead). Here the I/O size\nmakes no much difference, since there\u0027s only one single stream.\n\nNote that (1-1)\u0027s real I/O size is 64KB and (1-2)\u0027s real I/O size is 128KB,\nsince the half of the read-around pages will be readahead cache hits.\n\nThis is going to make _real_ differences for _concurrent_ IO streams.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef00e08e26dd5d84271ef706262506b82195e752",
      "tree": "5f6cf72cf9bf0574ecfbd73f4ee5378d89298dd7",
      "parents": [
        "51daa88ebd8e0d437289f589af29d4b39379ea76"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 15:31:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:29 2009 -0700"
      },
      "message": "readahead: clean up and simplify the code for filemap page fault readahead\n\nThis shouldn\u0027t really change behavior all that much, but the single rather\ncomplex function with read-ahead inside a loop etc is broken up into more\nmanageable pieces.\n\nThe behaviour is also less subtle, with the read-ahead being done up-front\nrather than inside some subtle loop and thus avoiding the now unnecessary\nextra state variables (ie \"did_readaround\" is gone).\n\nFengguang: the code split in fact fixed a bug reported by Pavel Levshin:\nthe PGMAJFAULT accounting used to be bypassed when MADV_RANDOM is set, in\nwhich case the original code will directly jump to no_cached_page reading.\n\nCc: Pavel Levshin \u003clpk@581.spb.su\u003e\nCc: \u003cwli@movementarian.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7e839dd36fd940b0202cfb7d39b2a1b2dc59b1b",
      "tree": "5c99332a62aa8135bd58485e7f3c22634ecdc90c",
      "parents": [
        "1ebf26a9b338534def47f307c6c8694b6dfc0a79"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:31:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:28 2009 -0700"
      },
      "message": "readahead: move max_sane_readahead() calls into force_page_cache_readahead()\n\nImpact: code simplification.\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e767e0561d7fd2333df1921f1ab4176211f9036b",
      "tree": "3b936733f80ceb1ee61ce99f927d002d2296250e",
      "parents": [
        "bd6daba909d8484bd2ccf6017db4028d7a420927"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu May 28 14:34:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 29 08:40:02 2009 -0700"
      },
      "message": "memcg: fix deadlock between lock_page_cgroup and mapping tree_lock\n\nmapping-\u003etree_lock can be acquired from interrupt context.  Then,\nfollowing dead lock can occur.\n\nAssume \"A\" as a page.\n\n CPU0:\n       lock_page_cgroup(A)\n\t\tinterrupted\n\t\t\t-\u003e take mapping-\u003etree_lock.\n CPU1:\n       take mapping-\u003etree_lock\n\t\t-\u003e lock_page_cgroup(A)\n\nThis patch tries to fix above deadlock by moving memcg\u0027s hook to out of\nmapping-\u003etree_lock.  charge/uncharge of pagecache/swapcache is protected\nby page lock, not tree_lock.\n\nAfter this patch, lock_page_cgroup() is not called under mapping-\u003etree_lock.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f69955855eac55a048d26a1618f50dfaa160a006",
      "tree": "b43b2d49ca568c4c591415d0f4a69812ca1a781f",
      "parents": [
        "cd97824994042b809493807ea644ba26c0c23290"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 15 13:22:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 16 07:47:49 2009 -0700"
      },
      "message": "Export filemap_write_and_wait_range\n\nThis wasn\u0027t exported before and is useful (used by the experimental ext3\ndata\u003dguarded code)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nAcked-by: Theodore Tso \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "697f619fc87aa9bf5b6c8c756f7ea54e950d5cd5",
      "tree": "54ab6110a9e9d497ed21bf7423ff21e070d6bbb4",
      "parents": [
        "5dec8bfbdd4921522565a7b0e0c8760ae042ef6d"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon Apr 13 14:39:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 13 15:04:30 2009 -0700"
      },
      "message": "filemap: fix kernel-doc warnings\n\nFix filemap.c kernel-doc warnings:\n\nWarning(mm/filemap.c:575): No description found for parameter \u0027page\u0027\nWarning(mm/filemap.c:575): No description found for parameter \u0027waiter\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18bc0bbd162e3eb3e7ea2953c315ad4113a57164",
      "tree": "6c46e99774772b8ac0ef92633377f4328bd87dbf",
      "parents": [
        "c09ee9d206994655d55de60222a3024702ad2055"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Mon Feb 09 17:02:42 2009 +0300"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri Apr 03 14:53:36 2009 -0700"
      },
      "message": "Staging: pohmelfs: kconfig/makefile and vfs changes.\n\nThis patch adds Kconfig and Makefile entries and exports to\nVFS functions to be used by POHMELFS.\n\nSigned-off-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "385e1ca5f21c4680ad6a46a3aa2ea8af99e99c92",
      "tree": "7d887b59d943c5dd62c9604b7ea37fd2d650df71",
      "parents": [
        "b510882281d56873e1194021643b7c325336f84f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Apr 03 16:42:39 2009 +0100"
      },
      "message": "CacheFiles: Permit the page lock state to be monitored\n\nAdd a function to install a monitor on the page lock waitqueue for a particular\npage, thus allowing the page being unlocked to be detected.\n\nThis is used by CacheFiles to detect read completion on a page in the backing\nfilesystem so that it can then copy the data to the waiting netfs page.\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": "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": "f180053694b43d5714bf56cb95499a3c32ff155c",
      "tree": "00286fcc88d2842629b039da4009a1332b3a1719",
      "parents": [
        "34754b69a6f87aa6aa2860525a82f12532f83afd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 11:00:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 11:06:49 2009 +0100"
      },
      "message": "x86, mm: dont use non-temporal stores in pagecache accesses\n\nImpact: standardize IO on cached ops\n\nOn modern CPUs it is almost always a bad idea to use non-temporal stores,\nas the regression in this commit has shown it:\n\n  30d697f: x86: fix performance regression in write() syscall\n\nThe kernel simply has no good information about whether using non-temporal\nstores is a good idea or not - and trying to add heuristics only increases\ncomplexity and inserts fragility.\n\nThe regression on cached write()s took very long to be found - over two\nyears. So dont take any chances and let the hardware decide how it makes\nuse of its caches.\n\nThe only exception is drivers/gpu/drm/i915/i915_gem.c: there were we are\nabsolutely sure that another entity (the GPU) will pick up the dirty\ndata immediately and that the CPU will not touch that data before the\nGPU will.\n\nAlso, keep the _nocache() primitives to make it easier for people to\nexperiment with these details. There may be more clear-cut cases where\nnon-cached copies can be used, outside of filemap.c.\n\nCc: Salman Qazi \u003csqazi@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3255aa2eb636a508fc82a73fabbb8aaf2ff23c0f",
      "tree": "2a602fb8f4fefe666e8daedf1e1f755800bd700a",
      "parents": [
        "95f66b3770d6d0755b4a2d818c237574ffd74e4c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 08:21:52 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 10:20:03 2009 +0100"
      },
      "message": "x86, mm: pass in \u0027total\u0027 to __copy_from_user_*nocache()\n\nImpact: cleanup, enable future change\n\nAdd a \u0027total bytes copied\u0027 parameter to __copy_from_user_*nocache(),\nand update all the callsites.\n\nThe parameter is not used yet - architecture code can use it to\nmore intelligently decide whether the copy should be cached or\nnon-temporal.\n\nCc: Salman Qazi \u003csqazi@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6673e0c3fbeaed2cd08e2fd4a4aa97382d6fedb0",
      "tree": "eb33a94f5e4b0e035001f7c96ef44cade0fbb489",
      "parents": [
        "ed6bb6194350dc6ae97a65dbf2d621a3dbe6bbe9"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:02 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:18 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrapper special cases\n\nSystem calls with an unsigned long long argument can\u0027t be converted with\nthe standard wrappers since that would include a cast to long, which in\nturn means that we would lose the upper 32 bit on 32 bit architectures.\nAlso semctl can\u0027t use the standard wrapper since it has a \u0027union\u0027\nparameter.\n\nSo we handle them as special case and add some extra wrappers instead.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "2ed7c03ec17779afb4fcfa3b8c61df61bd4879ba",
      "tree": "4e0fefd574bab5470a02edf439727f472a9663c6",
      "parents": [
        "4c696ba7982501d43dea11dbbaabd2aa8a19cc42"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:13:54 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:14 2009 +0100"
      },
      "message": "[CVE-2009-0029] Convert all system calls to return a long\n\nConvert all system calls to return a long. This should be a NOP since all\nconverted types should have the same size anyway.\nWith the exception of sys_exit_group which returned void. But that doesn\u0027t\nmatter since the system call doesn\u0027t return.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "2c26fdd70c3094fa3e84caf9ef434911933d5477",
      "tree": "06a3bafc12f5f8fd91d9ed1fca5ea0a632ef2004",
      "parents": [
        "887007561ae58628f03aa9046949747c04f63be8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: revert gfp mask fix\n\nMy patch, memcg-fix-gfp_mask-of-callers-of-charge.patch changed gfp_mask\nof callers of charge to be GFP_HIGHUSER_MOVABLE for showing what will\nhappen at memory reclaim.\n\nBut in recent discussion, it\u0027s NACKed because it sounds ugly.\n\nThis patch is for reverting it and add some clean up to gfp_mask of\ncallers of charge.  No behavior change but need review before generating\nHUNK in deep queue.\n\nThis patch also adds explanation to meaning of gfp_mask passed to charge\nfunctions in memcontrol.h.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@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: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "67d58ac47d25f7e2a105248a4aea6113131ab874",
      "tree": "5bf9440696b72ec0962d352c6d60b81929b79602",
      "parents": [
        "856bf4d717feb8c55d4e2f817b71ebb70cfbc67b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "mm: pagecache gfp flags fix\n\nFrustratingly, gfp_t is really divided into two classes of flags.  One are\nthe context dependent ones (can we sleep?  can we enter filesystem?  block\nsubsystem?  should we use some extra reserves, etc.).  The other ones are\nthe type of memory required and depend on how the algorithm is implemented\nrather than the point at which the memory is allocated (highmem?  dma\nmemory?  etc).\n\nSome of the functions which allocate a page and add it to page cache take\na gfp_t, but sometimes those functions or their callers aren\u0027t really\ndoing the right thing: when allocating pagecache page, the memory type\nshould be mapping_gfp_mask(mapping).  When allocating radix tree nodes,\nthe memory type should be kernel mapped (not highmem) memory.  The gfp_t\nargument should only really be needed for context dependent options.\n\nThis patch doesn\u0027t really solve that tangle in a nice way, but it does\nattempt to fix a couple of bugs.\n\n- find_or_create_page changes its radix-tree allocation to only include\n  the main context dependent flags in order so the pagecache page may be\n  allocated from arbitrary types of memory without affecting the\n  radix-tree.  In practice, slab allocations don\u0027t come from highmem\n  anyway, and radix-tree only uses slab allocations.  So there isn\u0027t a\n  practical change (unless some fs uses GFP_DMA for pages).\n\n- grab_cache_page_nowait() is changed to allocate radix-tree nodes with\n  GFP_NOFS, because it is not supposed to reenter the filesystem.  This\n  bug could cause lock recursion if a filesystem is not expecting the\n  function to reenter the fs (as-per documentation).\n\nFilesystems should be careful about exactly what semantics they want and\nwhat they get when fiddling with gfp_t masks to allocate pagecache.  One\nshould be as liberal as possible with the type of memory that can be used,\nand same for the the context specific flags.\n\nSigned-off-by: 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": "48b47c561e41525061b5bc0cfd67d6367fd11dc4",
      "tree": "ae99a8cb55b4d2716847521953db4bddd66b8e8b",
      "parents": [
        "48aae42556e5ea1ba0d8ddab25352706577af2ed"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "mm: direct IO starvation improvement\n\nDirect IO can invalidate and sync a lot of pagecache pages in the mapping.\n A 4K direct IO will actually try to sync and/or invalidate the pagecache\nof the entire file, for example (which might be many GB or TB large).\n\nImprove this by doing range syncs.  Also, memory no longer has to be\nunmapped to catch the dirty bits for syncing, as dirty bits would remain\ncoherent due to dirty mmap accounting.\n\nThis fixes the immediate DM deadlocks when doing direct IO reads to block\ndevice with a mounted filesystem, if only by papering over the problem\nsomewhat rather than addressing the fsync starvation cases.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@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": "05fe478dd04e02fa230c305ab9b5616669821dd3",
      "tree": "9b551aad196b66e5c773ed7619386a1bb5e14f41",
      "parents": [
        "00266770b8b3a6a77f896ca501a0613739086832"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages integrity fix\n\nIn write_cache_pages, nr_to_write is heeded even for data-integrity syncs,\nso the function will return success after writing out nr_to_write pages,\neven if that was not sufficient to guarantee data integrity.\n\nThe callers tend to set it to values that could break data interity\nsemantics easily in practice.  For example, nr_to_write can be set to\nmapping-\u003enr_pages * 2, however if a file has a single, dirty page, then\nfsync is called, subsequent pages might be concurrently added and dirtied,\nthen write_cache_pages might writeout two of these newly dirty pages,\nwhile not writing out the old page that should have been written out.\n\nFix this by ignoring nr_to_write if it is a data integrity sync.\n\nThis is a data integrity bug.\n\nThe reason this has been done in the past is to avoid stalling sync\noperations behind page dirtiers.\n\n \"If a file has one dirty page at offset 1000000000000000 then someone\n  does an fsync() and someone else gets in first and starts madly writing\n  pages at offset 0, we want to write that page at 1000000000000000.\n  Somehow.\"\n\nWhat we do today is return success after an arbitrary amount of pages are\nwritten, whether or not we have provided the data-integrity semantics that\nthe caller has asked for.  Even this doesn\u0027t actually fix all stall cases\ncompletely: in the above situation, if the file has a huge number of pages\nin pagecache (but not dirty), then mapping-\u003enrpages is going to be huge,\neven if pages are being dirtied.\n\nThis change does indeed make the possibility of long stalls lager, and\nthat\u0027s not a good thing, but lying about data integrity is even worse.  We\nhave to either perform the sync, or return -ELINUXISLAME so at least the\ncaller knows what has happened.\n\nThere are subsequent competing approaches in the works to solve the stall\nproblems properly, without compromising data integrity.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf3f3bc5e734706730c12a323f9b2068052aa1f0",
      "tree": "d93fb6beb0916cc10aeb5674578bfa3ac40371c9",
      "parents": [
        "3340289ddf29ca75c3acfb3a6b72f234b2f74d5c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:38:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: don\u0027t mark_page_accessed in fault path\n\nDoing a mark_page_accessed at fault-time, then doing SetPageReferenced at\nunmap-time if the pte is young has a number of problems.\n\nmark_page_accessed is supposed to be roughly the equivalent of a young pte\nfor unmapped references. Unfortunately it doesn\u0027t come with any context:\nafter being called, reclaim doesn\u0027t know who or why the page was touched.\n\nSo calling mark_page_accessed not only adds extra lru or PG_referenced\nmanipulations for pages that are already going to have pte_young ptes anyway,\nbut it also adds these references which are difficult to work with from the\ncontext of vma specific references (eg. MADV_SEQUENTIAL pte_young may not\nwish to contribute to the page being referenced).\n\nThen, simply doing SetPageReferenced when zapping a pte and finding it is\nyoung, is not a really good solution either. SetPageReferenced does not\ncorrectly promote the page to the active list for example. So after removing\nmark_page_accessed from the fault path, several mmap()+touch+munmap() would\nhave a very different result from several read(2) calls for example, which\nis not really desirable.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "520c85346666d4d9a6fcaaa8450542302dc28b91",
      "tree": "9c9cc9e2493b606104dd8602302ae28258ebeac0",
      "parents": [
        "e8c82c2e23e3527e0c9dc195e432c16784d270fa",
        "4ae8978cf92a96257cd8998a49e781be83571d64"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 05 18:32:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 05 18:32:06 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  inotify: fix type errors in interfaces\n  fix breakage in reiserfs_new_inode()\n  fix the treatment of jfs special inodes\n  vfs: remove duplicate code in get_fs_type()\n  add a vfs_fsync helper\n  sys_execve and sys_uselib do not call into fsnotify\n  zero i_uid/i_gid on inode allocation\n  inode-\u003ei_op is never NULL\n  ntfs: don\u0027t NULL i_op\n  isofs check for NULL -\u003ei_op in root directory is dead code\n  affs: do not zero -\u003ei_op\n  kill suid bit only for regular files\n  vfs: lseek(fd, 0, SEEK_CUR) race condition\n"
    },
    {
      "commit": "7f5ff766a7babd72fc192125e12ef5570effff4c",
      "tree": "c41659d7614ea70c3dc853c6187f1860d030888b",
      "parents": [
        "5b6f1eb97d462a45be3b30759758b5fdbb562c8c"
      ],
      "author": {
        "name": "Dmitri Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon Dec 01 14:34:56 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 05 11:53:07 2009 -0500"
      },
      "message": "kill suid bit only for regular files\n\nWe don\u0027t have to do it because it is useless for non regular files.\nIn fact block device may trigger this path without dentry-\u003ed_inode-\u003ei_mutex.\n\n(akpm: concerns were expressed (by me) about S_ISDIR inodes)\n\nSigned-off-by: Dmitri Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e02ed4b4a2fae34aae766a5bb93ae235f60adb8",
      "tree": "bddfb61b7cc4a4007ae176ccb1ace5740b61da8d",
      "parents": [
        "9b913735e53ab0da4a792bac0de8e178cc13dcfb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 29 14:00:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "fs: remove prepare_write/commit_write\n\nNothing uses prepare_write or commit_write. Remove them from the tree\ncompletely.\n\n[akpm@linux-foundation.org: schedule simple_prepare_write() for unexporting]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b7abea9630bc8ffc663a751e46680db25c4cdf8d",
      "tree": "b37d5ba073ccea31328812c74598872d49a85735",
      "parents": [
        "073e587ec2cc377867e53d8b8959738a8e16cff6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:38 2008 -0700"
      },
      "message": "memcg: make page-\u003emapping NULL before uncharge\n\nThis patch tries to make page-\u003emapping to be NULL before\nmem_cgroup_uncharge_cache_page() is called.\n\n\"page-\u003emapping \u003d\u003d NULL\" is a good check for \"whether the page is still\nradix-tree or not\".  This patch also adds BUG_ON() to\nmem_cgroup_uncharge_cache_page();\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8413ac9d8c9a1366a4f57880723126cd24e5a5c3",
      "tree": "fcee6ff670dcfccf895a48e92d27f52902d34301",
      "parents": [
        "a978d6f521063514812a7094dbe5036e056e4de3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: page lock use lock bitops\n\ntrylock_page, unlock_page open and close a critical section. Hence,\nwe can use the lock bitops to get the desired memory ordering.\n\nAlso, mark trylock as likely to succeed (and remove the annotation from\ncallers).\n\nSigned-off-by: 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": "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": "e533b227055598b1f7dc8503a3b4f36b14b9da8a",
      "tree": "28fec4125eac45c8e2fac75b3d10ff5cd987d2f6",
      "parents": [
        "0999d978dcdcf59350dafa25afd70def9f924eee",
        "6b2ada82101a08e2830fb29d7dc9b858be637dd4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 15:17:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 15:17:40 2008 -0700"
      },
      "message": "Merge branch \u0027core-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-v28-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  do_generic_file_read: s/EINTR/EIO/ if lock_page_killable() fails\n  softirq, warning fix: correct a format to avoid a warning\n  softirqs, debug: preemption check\n  x86, pci-hotplug, calgary / rio: fix EBDA ioremap()\n  IO resources, x86: ioremap sanity check to catch mapping requests exceeding, fix\n  IO resources, x86: ioremap sanity check to catch mapping requests exceeding the BAR sizes\n  softlockup: Documentation/sysctl/kernel.txt: fix softlockup_thresh description\n  dmi scan: warn about too early calls to dmi_check_system()\n  generic: redefine resource_size_t as phys_addr_t\n  generic: make PFN_PHYS explicitly return phys_addr_t\n  generic: add phys_addr_t for holding physical addresses\n  softirq: allocate less vectors\n  IO resources: fix/remove printk\n  printk: robustify printk, update comment\n  printk: robustify printk, fix #2\n  printk: robustify printk, fix\n  printk: robustify printk\n\nFixed up conflicts in:\n\tarch/powerpc/include/asm/types.h\n\tarch/powerpc/platforms/Kconfig.cputype\nmanually.\n"
    },
    {
      "commit": "0c6aa2639ea83bfb7f91d72118bad70b3f60012a",
      "tree": "7ed277716200bdd949491aad355a2edf6d0864f3",
      "parents": [
        "b4d1d99fdd8b98fb03dfd6ef9b0ece220de38640"
      ],
      "author": {
        "name": "Krishna Kumar",
        "email": "krkumar2@in.ibm.com",
        "time": "Wed Oct 15 22:01:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:29 2008 -0700"
      },
      "message": "mm: do_generic_file_read() never gets a NULL \u0027filp\u0027 argument\n\nThe \u0027filp\u0027 argument to do_generic_file_read() is never NULL.\n\nSigned-off-by: Krishna Kumar \u003ckrkumar2@in.ibm.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85462323555dda749f1c5373a8d72679464c968d",
      "tree": "aeec1f9a2ad6665c70a88483cbe5e9a3a2f33536",
      "parents": [
        "7591103c08abade60aeddb432ed0686ddd0de1c6"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Sun Jun 08 21:20:43 2008 +0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 17:15:33 2008 +0200"
      },
      "message": "do_generic_file_read: s/EINTR/EIO/ if lock_page_killable() fails\n\nIf lock_page_killable() fails because the task was killed by SIGKILL or\nany other fatal signal, do_generic_file_read() returns -EIO.\n\nThis seems to be OK, because in fact the userspace won\u0027t see this error,\nthe task will dequeue SIGKILL and exit.\n\nHowever, /sbin/init is different, it will dequeue SIGKILL, ignore it, and\nreturn to the user-space with the bogus -EIO.\n\nChange the code to return the error code from lock_page_killable(), -EINTR.\nThis doesn\u0027t fix the bug, but perhaps makes sense anyway. Imho, with this\nchange the code looks a bit more logical, and the \"good\" init should handle\nthe spurious EINTR or short read.\n\nAfaics we can also change lock_page_killable() to return -ERESTARTNOINTR,\nbut this can\u0027t prevent the short reads.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ccfa806a9cfbbf1cd43d5b6aa47ef2c0eb518fd",
      "tree": "dd3f17e1aebc802b147627a4151add363f39b77c",
      "parents": [
        "344c790e3821dac37eb742ddd0b611a300f78b9a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Tue Sep 02 14:35:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 02 19:21:37 2008 -0700"
      },
      "message": "VFS: fix dio write returning EIO when try_to_release_page fails\n\nDio write returns EIO when try_to_release_page fails because bh is\nstill referenced.\n\nThe patch\n\n    commit 3f31fddfa26b7594b44ff2b34f9a04ba409e0f91\n    Author: Mingming Cao \u003ccmm@us.ibm.com\u003e\n    Date:   Fri Jul 25 01:46:22 2008 -0700\n\n        jbd: fix race between free buffer and commit transaction\n\nwas merged into 2.6.27-rc1, but I noticed that this patch is not enough\nto fix the race.\n\nI did fsstress test heavily to 2.6.27-rc1, and found that dio write still\nsometimes got EIO through this test.\n\nThe patch above fixed race between freeing buffer(dio) and committing\ntransaction(jbd) but I discovered that there is another race, freeing\nbuffer(dio) and ext3/4_ordered_writepage.\n\n: background_writeout()\n     -\u003ewrite_cache_pages()\n       -\u003eext3_ordered_writepage()\n     \t   walk_page_buffers() -\u003e take a bh ref\n \t   block_write_full_page() -\u003e unlock_page\n\t\t: \u003c- end_page_writeback\n                : \u003c- race! (dio write-\u003etry_to_release_page fails)\n      \t   walk_page_buffers() -\u003erelease a bh ref\n\next3_ordered_writepage holds bh ref and does unlock_page remaining\ntaking a bh ref, so this causes the race and failure of\ntry_to_release_page.\n\nTo fix this race, I used the approach of falling back to buffered\nwrites if try_to_release_page() fails on a page.\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@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": "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": "94ad374a0751f40d25e22e036c37f7263569d24c",
      "tree": "d1bbf5d64c4eaee7bfefae22ad87b96967187cc8",
      "parents": [
        "0056e65f9e28d83ee1a3fb4f7d0041e838f03c34"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 14:45:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 14:50:18 2008 -0700"
      },
      "message": "Fix off-by-one error in iov_iter_advance()\n\nThe iov_iter_advance() function would look at the iov-\u003eiov_len entry\neven though it might have iterated over the whole array, and iov was\npointing past the end.  This would cause DEBUG_PAGEALLOC to trigger a\nkernel page fault if the allocation was at the end of a page, and the\nnext page was unallocated.\n\nThe quick fix is to just change the order of the tests: check that there\nis any iovec data left before we check the iov entry itself.\n\nThanks to Alexey Dobriyan for finding this case, and testing the fix.\n\nReported-and-tested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e [2.6.25.x, 2.6.26.x]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8ab22b9abb5c55413802e4adc9aa6223324547c3",
      "tree": "cff3319e1275e8a7c083d492889ec6bd0c7712d3",
      "parents": [
        "d84a52f62f6a396ed77aa0052da74ca9e760b28a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Mon Jul 28 15:46:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "vfs: pagecache usage optimization for pagesize!\u003dblocksize\n\nWhen we read some part of a file through pagecache, if there is a\npagecache of corresponding index but this page is not uptodate, read IO\nis issued and this page will be uptodate.\n\nI think this is good for pagesize \u003d\u003d blocksize environment but there is\nroom for improvement on pagesize !\u003d blocksize environment.  Because in\nthis case a page can have multiple buffers and even if a page is not\nuptodate, some buffers can be uptodate.\n\nSo I suggest that when all buffers which correspond to a part of a file\nthat we want to read are uptodate, use this pagecache and copy data from\nthis pagecache to user buffer even if a page is not uptodate.  This can\nreduce read IO and improve system throughput.\n\nI wrote a benchmark program and got result number with this program.\n\nThis benchmark do:\n\n  1: mount and open a test file.\n\n  2: create a 512MB file.\n\n  3: close a file and umount.\n\n  4: mount and again open a test file.\n\n  5: pwrite randomly 300000 times on a test file.  offset is aligned\n     by IO size(1024bytes).\n\n  6: measure time of preading randomly 100000 times on a test file.\n\nThe result was:\n\t2.6.26\n        330 sec\n\n\t2.6.26-patched\n        226 sec\n\nArch:i386\nFilesystem:ext3\nBlocksize:1024 bytes\nMemory: 1GB\n\nOn ext3/4, a file is written through buffer/block.  So random read/write\nmixed workloads or random read after random write workloads are optimized\nwith this patch under pagesize !\u003d blocksize environment.  This test result\nshowed this.\n\nThe benchmark program is as follows:\n\n#include \u003cstdio.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003ctime.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/mount.h\u003e\n\n#define LEN 1024\n#define LOOP 1024*512 /* 512MB */\n\nmain(void)\n{\n\tunsigned long i, offset, filesize;\n\tint fd;\n\tchar buf[LEN];\n\ttime_t t1, t2;\n\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tmemset(buf, 0, LEN);\n\tfd \u003d open(\"/root/test1/testfile\", O_CREAT|O_RDWR|O_TRUNC);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\tfor (i \u003d 0; i \u003c LOOP; i++)\n\t\twrite(fd, buf, LEN);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tfd \u003d open(\"/root/test1/testfile\", O_RDWR);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\n\tfilesize \u003d LEN * LOOP;\n\tfor (i \u003d 0; i \u003c 300000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpwrite(fd, buf, LEN, offset);\n\t}\n\tprintf(\"start test\\n\");\n\ttime(\u0026t1);\n\tfor (i \u003d 0; i \u003c 100000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpread(fd, buf, LEN, offset);\n\t}\n\ttime(\u0026t2);\n\tprintf(\"%ld sec\\n\", t2-t1);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n}\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f1936b87783a3a56c9441b27b9ba7a747f11e8e",
      "tree": "024a0f3da74ba6365f209d03685133760146149b",
      "parents": [
        "c82e42da8a6b2f3a85dc4d4278cb8238702f8f64"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 24 16:50:14 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:16 2008 -0400"
      },
      "message": "[patch 3/5] vfs: change remove_suid() to file_remove_suid()\n\nAll calls to remove_suid() are made with a file pointer, because\n(similarly to file_update_time) it is called when the file is written.\n\nClean up callers by passing in a file instead of a dentry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "19fd6231279be3c3bdd02ed99f9b0eb195978064",
      "tree": "ee09121054262d73c551b57114acd855b82a7a82",
      "parents": [
        "a60637c85893e7191faaafa6a72e197c24386727"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: spinlock tree_lock\n\nmapping-\u003etree_lock has no read lockers.  convert the lock from an rwlock\nto a spinlock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-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": "a60637c85893e7191faaafa6a72e197c24386727",
      "tree": "fa3ec63f505e64d3b4a2be4efd9a5314ab5f6234",
      "parents": [
        "e286781d5f2e9c846e012a39653a166e9d31777d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: lockless pagecache\n\nCombine page_cache_get_speculative with lockless radix tree lookups to\nintroduce lockless page cache lookups (ie.  no mapping-\u003etree_lock on the\nread-side).\n\nThe only atomicity changes this introduces is that the gang pagecache\nlookup functions now behave as if they are implemented with multiple\nfind_get_page calls, rather than operating on a snapshot of the pages.  In\npractice, this atomicity guarantee is not used anyway, and it is to\nreplace individual lookups, so these semantics are natural.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-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": "e286781d5f2e9c846e012a39653a166e9d31777d",
      "tree": "14958fe6d8f3e0459c96c68b3034ea2433ab85ac",
      "parents": [
        "47feff2c8eefe85099f87c43d3096855f0085ca0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: speculative page references\n\nIf we can be sure that elevating the page_count on a pagecache page will\npin it, we can speculatively run this operation, and subsequently check to\nsee if we hit the right page rather than relying on holding a lock or\notherwise pinning a reference to the page.\n\nThis can be done if get_page/put_page behaves consistently throughout the\nwhole tree (ie.  if we \"get\" the page after it has been used for something\nelse, we must be able to free it with a put_page).\n\nActually, there is a period where the count behaves differently: when the\npage is free or if it is a constituent page of a compound page.  We need\nan atomic_inc_not_zero operation to ensure we don\u0027t try to grab the page\nin either case.\n\nThis patch introduces the core locking protocol to the pagecache (ie.\nadds page_cache_get_speculative, and tweaks some update-side code to make\nit work).\n\nThanks to Hugh for pointing out an improvement to the algorithm setting\npage_count to zero when we have control of all references, in order to\nhold off speculative getters.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix migration_entry_wait()]\n[hugh@veritas.com: fix add_to_page_cache]\n[akpm@linux-foundation.org: repair a comment]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: 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": "69029cd550284e32de13d6dd2f77b723c8a0e444",
      "tree": "b57b87e5025b6c01722f39302cb98d0dfcd58940",
      "parents": [
        "e8589cc189f96b87348ae83ea4db38eaac624135"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: remove refcnt from page_cgroup\n\nmemcg: performance improvements\n\nPatch Description\n 1/5 ... remove refcnt fron page_cgroup patch (shmem handling is fixed)\n 2/5 ... swapcache handling patch\n 3/5 ... add helper function for shmem\u0027s memory reclaim patch\n 4/5 ... optimize by likely/unlikely ppatch\n 5/5 ... remove redundunt check patch (shmem handling is fixed.)\n\nUnix bench result.\n\n\u003d\u003d 2.6.26-rc2-mm1 + memory resource controller\nExecl Throughput                           2915.4 lps   (29.6 secs, 3 samples)\nC Compiler Throughput                      1019.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5796.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1097.7 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               565.3 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1022128.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   544057.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    346481.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      319325.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     148788.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks       99051.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2058917.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1606109.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    854789.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         126145.2 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     2915.4      678.0\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   346481.0      875.0\nFile Copy 256 bufsize 500 maxblocks           1655.0    99051.0      598.5\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   854789.0     1473.8\nShell Scripts (8 concurrent)                     6.0     1097.7     1829.5\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                     991.3\n\n\u003d\u003d 2.6.26-rc2-mm1 + this set \u003d\u003d\nExecl Throughput                           3012.9 lps   (29.9 secs, 3 samples)\nC Compiler Throughput                       981.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5872.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1120.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               578.0 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1003993.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   550452.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    347159.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      314644.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     151852.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks      101000.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2033256.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1611814.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    847979.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         128148.7 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     3012.9      700.7\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   347159.0      876.7\nFile Copy 256 bufsize 500 maxblocks           1655.0   101000.0      610.3\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   847979.0     1462.0\nShell Scripts (8 concurrent)                     6.0     1120.3     1867.2\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                    1004.6\n\nThis patch:\n\nRemove refcnt from page_cgroup().\n\nAfter this,\n\n * A page is charged only when !page_mapped() \u0026\u0026 no page_cgroup is assigned.\n\t* Anon page is newly mapped.\n\t* File page is added to mapping-\u003etree.\n\n * A page is uncharged only when\n\t* Anon page is fully unmapped.\n\t* File page is removed from LRU.\n\nThere is no change in behavior from user\u0027s view.\n\nThis patch also removes unnecessary calls in rmap.c which was used only for\nrefcnt mangement.\n\n[akpm@linux-foundation.org: fix warning]\n[hugh@veritas.com: fix shmem_unuse_inode charging]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.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": "3f31fddfa26b7594b44ff2b34f9a04ba409e0f91",
      "tree": "88994baf22f65dc4da0bef17ce61eda09c59db2a",
      "parents": [
        "9ebfbe9f926553eabc21b4400918d1216b27ed0c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 25 01:46:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: fix race between free buffer and commit transaction\n\njournal_try_to_free_buffers() could race with jbd commit transaction when\nthe later is holding the buffer reference while waiting for the data\nbuffer to flush to disk.  If the caller of journal_try_to_free_buffers()\nrequest tries hard to release the buffers, it will treat the failure as\nerror and return back to the caller.  We have seen the directo IO failed\ndue to this race.  Some of the caller of releasepage() also expecting the\nbuffer to be dropped when passed with GFP_KERNEL mask to the\nreleasepage()-\u003ejournal_try_to_free_buffers().\n\nWith this patch, if the caller is passing the __GFP_WAIT and __GFP_FS to\nindicating this call could wait, in case of try_to_free_buffers() failed,\nlet\u0027s waiting for journal_commit_transaction() to finish commit the\ncurrent committing transaction, then try to free those buffers again.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@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": "11fa977ecde652ab324dd79c179deb52e82a8df1",
      "tree": "5842dab40a3754f3f34223b50f9dcfa5dd67dfa0",
      "parents": [
        "a858f7b2e9bb4eb665176dde5cf32eeaaf90f153"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Jul 23 21:27:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "generic_file_aio_read() cleanups\n\nAs akpm points out, there\u0027s really no need for generic_file_aio_read to\nmake a special case of count 0: just loop through nr_segs doing nothing.\nAnd as Harvey Harrison points out, there\u0027s no need to reset retval to 0\nwhere it\u0027s already 0.\n\nSetting count (or ocount) to 0 before calling generic_segment_checks is\nunnecessary too; but reluctantly I\u0027ll leave that removal to someone with a\nwider range of gcc versions to hand - 4.1.2 and 4.2.1 don\u0027t warn about it,\nbut perhaps others do - I forget which are the warniest versions.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nTested-by: Lawrence Greenfield \u003cleg@google.com\u003e\nCc: Christoph Rohland \u003chans-christoph.rohland@sap.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a969e903a944f69309ee5cc9e7c7b08310d1151e",
      "tree": "fa8a26a8e9b870b3c4f9a876070de03e4901c579",
      "parents": [
        "75353bed36cfbbfb55bbde0896bbf5a02d9ba355"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jul 23 21:27:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "kill generic_file_direct_IO()\n\ngeneric_file_direct_IO is a common helper around the invocation of\n-\u003edirect_IO.  But there\u0027s almost nothing shared between the read and write\nside, so we\u0027re better off without this helper.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4c0a0fdfae708f7aa438c27a380ed4071294e11",
      "tree": "f729aa07b21c0d40c3c2c254b1a99c5b5879b92a",
      "parents": [
        "9ddfc3dc75b5cc55ff3cfa586e962d252f1db9d3"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "vfs: export filemap_fdatawrite_range()\n\nMake filemap_fdatawrite_range() function public, so that it can later\nbe used in ordered mode rewrite by JBD/JBD2.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "3ef0f720e47e895b613b0305eb0a483e3ec11f23",
      "tree": "e696a950d76c90199661515e1068fc00102a15bf",
      "parents": [
        "3b73a223661ed137c5d3d2635f954382e94f5a43"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 14 16:05:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:13 2008 -0700"
      },
      "message": "mm: fix infinite loop in filemap_fault\n\nfilemap_fault will go into an infinite loop if -\u003ereadpage() fails\nasynchronously.\n\nAFAICS the bug was introduced by this commit, which removed the wait after the\nfinal readpage:\n\n   commit d00806b183152af6d24f46f0c33f14162ca1262a\n   Author: Nick Piggin \u003cnpiggin@suse.de\u003e\n   Date:   Thu Jul 19 01:46:57 2007 -0700\n\n       mm: fix fault vs invalidate race for linear mappings\n\nFix by reintroducing the wait_on_page_locked() after -\u003ereadpage() to make sure\nthe page is up-to-date before jumping back to the beginning of the function.\n\nI\u0027ve noticed this while testing nfs exporting on fuse.  The patch\nfixes it.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "7f3d4ee108c184ab215036051087aaaaa8de7661",
      "tree": "373f4f928f0687ca84478964b43c26e3ec9cec70",
      "parents": [
        "07416d29bcf608257f1e5280642dcbe0021518a3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 07 09:22:39 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:29:00 2008 +0200"
      },
      "message": "vfs: splice remove_suid() cleanup\n\ngeneric_file_splice_write() duplicates remove_suid() just because it\ndoesn\u0027t hold i_mutex.  But it grabs i_mutex inside splice_from_pipe()\nanyway, so this is rather pointless.\n\nMove locking to generic_file_splice_write() and call remove_suid() and\n__splice_from_pipe() instead.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "f7009264c519603b8ec67c881bd368a56703cfc9",
      "tree": "163c2fa590e3de5c9084f1cba5c1c2815dbd2dde",
      "parents": [
        "21bbb39c376ce6beeeb549d155f0d53dc76ed000"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Mar 10 11:43:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:20 2008 -0700"
      },
      "message": "iov_iter_advance() fix\n\niov_iter_advance() skips over zero-length iovecs, however it does not properly\nterminate at the end of the iovec array.  Fix this by checking against\ni-\u003ecount before we skip a zero-length iov.\n\nThe bug was reproduced with a test program that continually randomly creates\niovs to writev.  The fix was also verified with the same program and also it\ncould verify that the correct data was contained in the file after each\nwritev.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nTested-by: \"Kevin Coffman\" \u003ckwc@citi.umich.edu\u003e\nCc: \"Alexey Dobriyan\" \u003cadobriyan@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3426fadfa20454f124203768857e8f18ab4909bd",
      "tree": "2f65a70ca42a9f02a4e2eebc816300dbafe0d749",
      "parents": [
        "bf5a25e1fff88a1066e20cc7263329405e4939f6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Mar 10 01:12:08 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Mar 09 22:21:52 2008 -0700"
      },
      "message": "Do not include linux/backing-dev.h twice\n\nDon\u0027t include linux/backing-dev.h twice in mm/filemap.c, it\u0027s pointless.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5606c2d4447e80b1d72406af4e78af1eda611d4",
      "tree": "ebdaa1a0aae4279b84af82651c16a8777f76bfe4",
      "parents": [
        "fbf6bfca76d50abef478ba902b8597ecbadfd390"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Feb 13 15:03:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 16:21:18 2008 -0800"
      },
      "message": "remove final fastcall users\n\nfastcall always expands to empty, remove it.\n\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": "36e789144267105e0b3f2b9bca7db3184fce50dc",
      "tree": "cff6b92b2d54cf5e88db3f0fd71071a6b80b06f5",
      "parents": [
        "7437a51b30743ff1488981a393fc9e67894bf757"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Feb 08 04:21:24 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:39 2008 -0800"
      },
      "message": "kill do_generic_mapping_read\n\ndo_generic_mapping_read was used by gfs2 for internals reads, but this use\nof the interface was rather suboptimal (as was the whole interface) and has\nbeen replaced by an internal helper now.  This patch kills\ndo_generic_mapping_read and surrounding damage in preparation of additional\ncleanups for the buffered read path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2004dc8eec1b4f0692b3be87ea80c70faa44d619",
      "tree": "9458abfdecf29c08a33cccb845eb273c70ad49c5",
      "parents": [
        "476aed3870b26735c4fcfdaa95420fa9e1de5119"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Feb 08 04:20:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:32 2008 -0800"
      },
      "message": "Use pgoff_t instead of unsigned long\n\nConvert variables containing page indexes to pgoff_t.\n\nSigned-off-by: Jan Kara \u003cjack@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": "4c6bc8dd5a0932f2c0b30a5f0a124464b7f614d0",
      "tree": "90fda3b23ed1adb780ef063df4559ca929e6378a",
      "parents": [
        "35c754d79f4da80d5e8972f6403dd26f7962fd88"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@gmail.com",
        "time": "Thu Feb 07 00:14:05 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "mem-controller gfp-mask fix\n\nNeed to strip __GFP_HIGHMEM flag while passing to mem_container_cache_charge().\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@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": "35c754d79f4da80d5e8972f6403dd26f7962fd88",
      "tree": "5e497fd0ac832b5c832044d0267170d7144e1a0e",
      "parents": [
        "044d66c1d2b1c5aa50b4d6d68c21c6c93dd678da"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:05 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "memory controller BUG_ON()\n\nMove mem_controller_cache_charge() above radix_tree_preload().\nradix_tree_preload() disables preemption, even though the gfp_mask passed\ncontains __GFP_WAIT, we cannot really do __GFP_WAIT allocations, thus we\nhit a BUG_ON() in kmem_cache_alloc().\n\nThis patch moves mem_controller_cache_charge() to above radix_tree_preload()\nfor cache charging.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1a1cd590e3fcb0d2e230128daf2337ea55387dc",
      "tree": "eb660ab340c657a1eb595b2d4d8e8b62783bf6fb",
      "parents": [
        "bed7161a519a2faef53e1bce1b47595e297c1d14"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make charging gfp mask aware\n\nNick Piggin pointed out that swap cache and page cache addition routines\ncould be called from non GFP_KERNEL contexts.  This patch makes the\ncharging routine aware of the gfp context.  Charging might fail if the\ncgroup is over it\u0027s limit, in which case a suitable error is returned.\n\nThis patch was tested on a Powerpc box.  I am still looking at being able\nto test the path, through which allocations happen in non GFP_KERNEL\ncontexts.\n\n[kamezawa.hiroyu@jp.fujitsu.com: problem with ZONE_MOVABLE]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: 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": "8697d33194faae6fdd6b2e799f6308aa00cfdf67",
      "tree": "edf6b3e4698b80aac6f1d1f2b9e5698ce8dfa6e5",
      "parents": [
        "c7ba5c9e8176704bfac0729875fa62798037584d"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: add switch to control what type of pages to limit\n\nChoose if we want cached pages to be accounted or not.  By default both are\naccounted for.  A new set of tunables are added.\n\necho -n 1 \u003e mem_control_type\n\nswitches the accounting to account for only mapped pages\n\necho -n 3 \u003e mem_control_type\n\nswitches the behaviour back\n\n[bunk@kernel.org: mm/memcontrol.c: clenups]\n[akpm@linux-foundation.org: fix sparc32 build]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a9f3ccd24741b50200c3f33d62534c7271f3dfc",
      "tree": "066aabd8d2952299501f067a91cbfd6f47ee62f6",
      "parents": [
        "78fb74669e80883323391090e4d26d17fe29488f"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: memory accounting\n\nAdd the accounting hooks.  The accounting is carried out for RSS and Page\nCache (unmapped) pages.  There is now a common limit and accounting for both.\nThe RSS accounting is accounted at page_add_*_rmap() and page_remove_rmap()\ntime.  Page cache is accounted at add_to_page_cache(),\n__delete_from_page_cache().  Swap cache is also accounted for.\n\nEach page\u0027s page_cgroup is protected with the last bit of the\npage_cgroup pointer, this makes handling of race conditions involving\nsimultaneous mappings of a page easier.  A reference count is kept in the\npage_cgroup to deal with cases where a page might be unmapped from the RSS\nof all tasks, but still lives in the page cache.\n\nCredits go to Vaidyanathan Srinivasan for helping with reference counting work\nof the page cgroup.  Almost all of the page cache accounting code has help\nfrom Vaidyanathan Srinivasan.\n\n[hugh@veritas.com: fix swapoff breakage]\n[akpm@linux-foundation.org: fix locking]\nSigned-off-by: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cValdis.Kletnieks@vt.edu\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": "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": "e2848a0efedef4dad52d1334d37f8719cd6268fd",
      "tree": "f5d2b600b1275793e7c490f34ae9ec902af138b5",
      "parents": [
        "e31d9eb5c17ae3b80f9e9403f8a5eaf6dba879c9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 22:29:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "radix-tree: avoid atomic allocations for preloaded insertions\n\nMost pagecache (and some other) radix tree insertions have the great\nopportunity to preallocate a few nodes with relaxed gfp flags.  But the\npreallocation is squandered when it comes time to allocate a node, we\ndefault to first attempting a GFP_ATOMIC allocation -- that doesn\u0027t\nnormally fail, but it can eat into atomic memory reserves that we don\u0027t\nneed to be using.\n\nAnother upshot of this is that it removes the sometimes highly contended\nzone-\u003elock from underneath tree_lock.  Pagecache insertions are always\nperformed with a radix tree preload, and after this change, such a\nsituation will never fall back to kmem_cache_alloc within\nradix_tree_node_alloc.\n\nDavid Miller reports seeing this allocation fail on a highly threaded\nsparc64 system:\n\n[527319.459981] dd: page allocation failure. order:0, mode:0x20\n[527319.460403] Call Trace:\n[527319.460568]  [00000000004b71e0] __slab_alloc+0x1b0/0x6a8\n[527319.460636]  [00000000004b7bbc] kmem_cache_alloc+0x4c/0xa8\n[527319.460698]  [000000000055309c] radix_tree_node_alloc+0x20/0x90\n[527319.460763]  [0000000000553238] radix_tree_insert+0x12c/0x260\n[527319.460830]  [0000000000495cd0] add_to_page_cache+0x38/0xb0\n[527319.460893]  [00000000004e4794] mpage_readpages+0x6c/0x134\n[527319.460955]  [000000000049c7fc] __do_page_cache_readahead+0x170/0x280\n[527319.461028]  [000000000049cc88] ondemand_readahead+0x208/0x214\n[527319.461094]  [0000000000496018] do_generic_mapping_read+0xe8/0x428\n[527319.461152]  [0000000000497948] generic_file_aio_read+0x108/0x170\n[527319.461217]  [00000000004badac] do_sync_read+0x88/0xd0\n[527319.461292]  [00000000004bb5cc] vfs_read+0x78/0x10c\n[527319.461361]  [00000000004bb920] sys_read+0x34/0x60\n[527319.461424]  [0000000000406294] linux_sparc_syscall32+0x3c/0x40\n\nThe calltrace is significant: __do_page_cache_readahead allocates a number\nof pages with GFP_KERNEL, and hence it should have reclaimed sufficient\nmemory to satisfy GFP_ATOMIC allocations.  However after the list of pages\ngoes to mpage_readpages, there can be significant intervals (including disk\nIO) before all the pages are inserted into the radix-tree.  So the reserves\ncan easily be depleted at that point.  The patch is confirmed to fix the\nproblem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "124d3b7041f9a0ca7c43a6293e1cae4576c32fd5",
      "tree": "9b92dd8f99c10ae0a0931ce71f3e9a20b32b167b",
      "parents": [
        "6598b60fd56ba5e915a001cc4e307880a94d19ae"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Feb 02 15:01:17 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 03 07:55:39 2008 +1100"
      },
      "message": "fix writev regression: pan hanging unkillable and un-straceable\n\nFrederik Himpe reported an unkillable and un-straceable pan process.\n\nZero length iovecs can go into an infinite loop in writev, because the\niovec iterator does not always advance over them.\n\nThe sequence required to trigger this is not trivial. I think it\nrequires that a zero-length iovec be followed by a non-zero-length iovec\nwhich causes a pagefault in the atomic usercopy. This causes the writev\ncode to drop back into single-segment copy mode, which then tries to\ncopy the 0 bytes of the zero-length iovec; a zero length copy looks like\na failure though, so it loops.\n\nPut a test into iov_iter_advance to catch zero-length iovecs. We could\njust put the test in the fallback path, but I feel it is more robust to\nskip over zero-length iovecs throughout the code (iovec iterator may be\nused in filesystems too, so it should be robust).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "3a6927906f1b2adf5a31b789322d32eb8559ada0",
      "tree": "ef5b9dce5fd1b27be027fcff0a749547e9319ff0",
      "parents": [
        "3e3b3916a9c5c28a16528585478de19fea59816b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 19 14:05:13 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 19 14:05:13 2007 -0800"
      },
      "message": "Do dirty page accounting when removing a page from the page cache\n\nKrzysztof Oledzki noticed a dirty page accounting leak on some of his\nmachines, causing the machine to eventually lock up when the kernel\ndecided that there was too much dirty data, but nobody could actually\nwrite anything out to fix it.\n\nThe culprit turns out to be filesystems (cough ext3 with data\u003djournal\ncough) that re-dirty the page when the \"-\u003einvalidatepage()\" callback is\ncalled.\n\nFix it up by doing a final dirty page accounting check when we actually\nremove the page from the page cache.\n\nThis fixes bugzilla entry 9182:\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9182\n\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nTested-by: Krzysztof Oledzki \u003colel@ans.pl\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b94e97a25d9b06ef17fca8da23169200bead1e2",
      "tree": "4f7d920d03e9532d93921831efe704a4b645a3b4",
      "parents": [
        "2687a3569e40b1302f96698bcd6329aeb0ce3dd2"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 11:19:57 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:35:48 2007 -0500"
      },
      "message": "Use lock_page_killable\n\nReplacing lock_page with lock_page_killable in do_generic_mapping_read()\nallows us to kill `cat\u0027 of a file on an NFS-mounted filesystem\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "2687a3569e40b1302f96698bcd6329aeb0ce3dd2",
      "tree": "7bb5e1ffd807ef94b145f6829bf4326a98b8fd99",
      "parents": [
        "f776d12dd16da1b0cd55a1240002c1b31f315d5d"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Thu Dec 06 11:18:49 2007 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Thu Dec 06 17:35:41 2007 -0500"
      },
      "message": "Add lock_page_killable\n\nThis routine is like lock_page, but can be interrupted by a fatal signal\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\n"
    },
    {
      "commit": "5307cc1aa53850f017c8053db034cf950b670ac9",
      "tree": "6fd2ff3fe382ba1aac5e8b6c703268200a80ed40",
      "parents": [
        "bb374b7b938f73666c403b201b3dd48ec9fe118a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 31 09:19:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 31 09:19:46 2007 -0700"
      },
      "message": "Remove broken ptrace() special-case code from file mapping\n\nThe kernel has for random historical reasons allowed ptrace() accesses\nto access (and insert) pages into the page cache above the size of the\nfile.\n\nHowever, Nick broke that by mistake when doing the new fault handling in\ncommit 54cb8821de07f2ffcd28c380ce9b93d5784b40d7 (\"mm: merge populate and\nnopage into fault (fixes nonlinear)\".  The breakage caused a hang with\ngdb when trying to access the invalid page.\n\nThe ptrace \"feature\" really isn\u0027t worth resurrecting, since it really is\nwrong both from a portability _and_ from an internal page cache validity\nstandpoint.  So this removes those old broken remnants, and fixes the\nptrace() hang in the process.\n\nNoticed and bisected by Duane Griffin, who also supplied a test-case\n(quoth Nick: \"Well that\u0027s probably the best bug report I\u0027ve ever had,\nthanks Duane!\").\n\nCc: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bdb76ef5a4bc8676a81034a443f1eda450b4babb",
      "tree": "b4ec8736e6d4bed26f96c94d5c7c8eec0896fcd0",
      "parents": [
        "e58b7dab272ecee09cd7bafb89d6b224cd17bbe3"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Oct 30 11:45:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 30 12:14:06 2007 -0700"
      },
      "message": "dio: fix cache invalidation after sync writes\n\nCommit commit 65b8291c4000e5f38fc94fb2ca0cb7e8683c8a1b (\"dio: invalidate\nclean pages before dio write\") introduced a bug which stopped dio from\never invalidating the page cache after writes.  It still invalidated it\nbefore writes so most users were fine.\n\nKarl Schendel reported ( http://lkml.org/lkml/2007/10/26/481 ) hitting\nthis bug when he had a buffered reader immediately reading file data\nafter an O_DIRECT wirter had written the data.  The kernel issued\nread-ahead beyond the position of the reader which overlapped with the\nO_DIRECT writer.  The failure to invalidate after writes caused the\nreader to see stale data from the read-ahead.\n\nThe following patch is originally from Karl.  The following commentary\nis his:\n\n\tThe below 3rd try takes on your suggestion of just invalidating\n\tno matter what the retval from the direct_IO call.  I ran it\n\tthru the test-case several times and it has worked every time.\n\tThe post-invalidate is probably still too early for async-directio,\n\tbut I don\u0027t have a testcase for that;  just sync.  And, this\n\twon\u0027t be any worse in the async case.\n\nI added a test to the aio-dio-regress repository which mimics Karl\u0027s IO\npattern.  It verifed the bad behaviour and that the patch fixed it.  I\nagree with Karl, this still doesn\u0027t help the case where a buffered\nreader follows an AIO O_DIRECT writer.  That will require a bit more\nwork.\n\nThis gives up on the idea of returning EIO to indicate to userspace that\nstale data remains if the invalidation failed.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Karl Schendel \u003ckschendel@datallegro.com\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Leonid Ananiev \u003cleonid.i.ananiev@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a424f2d56613acfb9e583ec9c85a2be3e3af028",
      "tree": "6d01585f65282ed99e422345946c2692f19d96f4",
      "parents": [
        "adb4ddbbfb90c302e78da68b3f015588ca45d7f3"
      ],
      "author": {
        "name": "Emil Medve",
        "email": "Emilian.Medve@Freescale.com",
        "time": "Wed Oct 24 14:18:32 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Oct 29 11:33:06 2007 +0100"
      },
      "message": "Fix a build error when BLOCK\u003dn\n\nmm/filemap.c: In function \u0027__filemap_fdatawrite_range\u0027:\nmm/filemap.c:200: error: implicit declaration of function\n\u0027mapping_cap_writeback_dirty\u0027\n\nThis happens when we don\u0027t use/have any block devices and a NFS root\nfilesystem is used.\n\nmapping_cap_writeback_dirty() is defined in linux/backing-dev.h which\nused to be provided in mm/filemap.c by linux/blkdev.h until commit\nf5ff8422bbdd59f8c1f699df248e1b7a11073027 (Fix warnings with\n!CONFIG_BLOCK).\n\nSigned-off-by: Emil Medve \u003cEmilian.Medve@Freescale.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "8f731f7d83d6c6a3eeb32cce79bfcddbf7fac8cc",
      "tree": "706de5d8801259311a7a3b3987bc3b6e6511637d",
      "parents": [
        "cb680c1be62e9898fc2ca2a89d9fdba7c84a5c81"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Oct 18 23:39:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "kernel-api docbook: fix content problems\n\nFix kernel-api docbook contents problems.\n\ndocproc: linux-2.6.23-git13/include/asm-x86/unaligned_32.h: No such file or directory\nWarning(linux-2.6.23-git13//include/linux/list.h:482): bad line: \t\t\tof list entry\nWarning(linux-2.6.23-git13//mm/filemap.c:864): No description found for parameter \u0027ra\u0027\nWarning(linux-2.6.23-git13//block/ll_rw_blk.c:3760): No description found for parameter \u0027req\u0027\nWarning(linux-2.6.23-git13//include/linux/input.h:1077): No description found for parameter \u0027private\u0027\nWarning(linux-2.6.23-git13//include/linux/input.h:1077): No description found for parameter \u0027cdev\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: WU Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53253383fde9e41bc07ad4d99f1c8b537fef71d6",
      "tree": "69154c2bbd3ea63ed2396b2bb2e9493b2614aa91",
      "parents": [
        "a57793651ff1a09ef18bade998632435ca2dc13f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:47:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:47:32 2007 -0700"
      },
      "message": "Include \u003clinux/backing-dev.h\u003e in mm/filemap.c\n\nIt gets it indirectly from blkdev.h when CONFIG_BLOCK is enabled, but it\nneeds it unconditionally for the definition of mapping_cap_writeback_dirty.\n\nNoticed and bisected down to 4af3c9cc4fad54c3627e9afebf905aafde5690ed\n(\"Drop some headers from mm.h\") by Avuton Olrich.\n\nCc: Avuton Olrich \u003cavuton@gmail.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b53767719b6cd8789392ea3e7e2eb7b8906898f0",
      "tree": "a0279dc93c79b94d3865b0f19f6b7b353e20608c",
      "parents": [
        "57c521ce6125e15e99e56c902cb8da96bee7b36d"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Tue Oct 16 23:31:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:07 2007 -0700"
      },
      "message": "Implement file posix capabilities\n\nImplement file posix capabilities.  This allows programs to be given a\nsubset of root\u0027s powers regardless of who runs them, without having to use\nsetuid and giving the binary all of root\u0027s powers.\n\nThis version works with Kaigai Kohei\u0027s userspace tools, found at\nhttp://www.kaigai.gr.jp/index.php.  For more information on how to use this\npatch, Chris Friedhoff has posted a nice page at\nhttp://www.friedhoff.org/fscaps.html.\n\nChangelog:\n\tNov 27:\n\tIncorporate fixes from Andrew Morton\n\t(security-introduce-file-caps-tweaks and\n\tsecurity-introduce-file-caps-warning-fix)\n\tFix Kconfig dependency.\n\tFix change signaling behavior when file caps are not compiled in.\n\n\tNov 13:\n\tIntegrate comments from Alexey: Remove CONFIG_ ifdef from\n\tcapability.h, and use %zd for printing a size_t.\n\n\tNov 13:\n\tFix endianness warnings by sparse as suggested by Alexey\n\tDobriyan.\n\n\tNov 09:\n\tAddress warnings of unused variables at cap_bprm_set_security\n\twhen file capabilities are disabled, and simultaneously clean\n\tup the code a little, by pulling the new code into a helper\n\tfunction.\n\n\tNov 08:\n\tFor pointers to required userspace tools and how to use\n\tthem, see http://www.friedhoff.org/fscaps.html.\n\n\tNov 07:\n\tFix the calculation of the highest bit checked in\n\tcheck_cap_sanity().\n\n\tNov 07:\n\tAllow file caps to be enabled without CONFIG_SECURITY, since\n\tcapabilities are the default.\n\tHook cap_task_setscheduler when !CONFIG_SECURITY.\n\tMove capable(TASK_KILL) to end of cap_task_kill to reduce\n\taudit messages.\n\n\tNov 05:\n\tAdd secondary calls in selinux/hooks.c to task_setioprio and\n\ttask_setscheduler so that selinux and capabilities with file\n\tcap support can be stacked.\n\n\tSep 05:\n\tAs Seth Arnold points out, uid checks are out of place\n\tfor capability code.\n\n\tSep 01:\n\tDefine task_setscheduler, task_setioprio, cap_task_kill, and\n\ttask_setnice to make sure a user cannot affect a process in which\n\tthey called a program with some fscaps.\n\n\tOne remaining question is the note under task_setscheduler: are we\n\tok with CAP_SYS_NICE being sufficient to confine a process to a\n\tcpuset?\n\n\tIt is a semantic change, as without fsccaps, attach_task doesn\u0027t\n\tallow CAP_SYS_NICE to override the uid equivalence check.  But since\n\tit uses security_task_setscheduler, which elsewhere is used where\n\tCAP_SYS_NICE can be used to override the uid equivalence check,\n\tfixing it might be tough.\n\n\t     task_setscheduler\n\t\t note: this also controls cpuset:attach_task.  Are we ok with\n\t\t     CAP_SYS_NICE being used to confine to a cpuset?\n\t     task_setioprio\n\t     task_setnice\n\t\t sys_setpriority uses this (through set_one_prio) for another\n\t\t process.  Need same checks as setrlimit\n\n\tAug 21:\n\tUpdated secureexec implementation to reflect the fact that\n\teuid and uid might be the same and nonzero, but the process\n\tmight still have elevated caps.\n\n\tAug 15:\n\tHandle endianness of xattrs.\n\tEnforce capability version match between kernel and disk.\n\tEnforce that no bits beyond the known max capability are\n\tset, else return -EPERM.\n\tWith this extra processing, it may be worth reconsidering\n\tdoing all the work at bprm_set_security rather than\n\td_instantiate.\n\n\tAug 10:\n\tAlways call getxattr at bprm_set_security, rather than\n\tcaching it at d_instantiate.\n\n[morgan@kernel.org: file-caps clean up for linux/capability.h]\n[bunk@kernel.org: unexport cap_inode_killpriv]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Andrew Morgan \u003cmorgan@kernel.org\u003e\nSigned-off-by: Andrew Morgan \u003cmorgan@kernel.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a4050791b23c55a451974027d41d72a9b78039b",
      "tree": "f3956a04f24a2406276804124853535a59c0cbc1",
      "parents": [
        "d773ed6b856a96bd6d18b6e04455e3ced0876da4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 23:26:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:46 2007 -0700"
      },
      "message": "mm: document tree_lock-\u003ezone.lock lockorder\n\nzone-\u003elock is quite an \"inner\" lock and mostly constrained to page alloc as\nwell, so like slab locks, it probably isn\u0027t something that is critically\nimportant to document here.  However unlike slab locks, zone lock could be\nused more widely in future, and page_alloc.c might possibly have more\nbusiness to do tricky things with pagecache than does slab.  So...  I don\u0027t\nthink it hurts to document it.\n\nSigned-off-by: 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": "55144768e100b68447f44c5e5c9deb155ad661bd",
      "tree": "9889682ee3b64627ad9eb504f30672fad844752f",
      "parents": [
        "03158cd7eb3374843de68421142ca5900df845d9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:58 2007 -0700"
      },
      "message": "fs: remove some AOP_TRUNCATED_PAGE\n\nprepare/commit_write no longer returns AOP_TRUNCATED_PAGE since OCFS2 and\nGFS2 were converted to the new aops, so we can make some simplifications\nfor that.\n\n[michal.k.k.piotrowski@gmail.com: fix warning]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Michal Piotrowski \u003cmichal.k.k.piotrowski@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": "89e107877b65bf6eff1d63a1302dee9a091586f5",
      "tree": "8a120a04c46f19229d1cf9b9c546f1818cf84c44",
      "parents": [
        "7765ec26ae1c01bb29bedf910e4efcced8cc81d2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "fs: new cont helpers\n\nRework the generic block \"cont\" routines to handle the new aops.  Supporting\ncont_prepare_write would take quite a lot of code to support, so remove it\ninstead (and we later convert all filesystems to use it).\n\nwrite_begin gets passed AOP_FLAG_CONT_EXPAND when called from\ngeneric_cont_expand, so filesystems can avoid the old hacks they used.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.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": "674b892ede247ef4fb8d00918f02e29c32b9bbaf",
      "tree": "8e170040e64073932ba559cc31f3ec9802337406",
      "parents": [
        "8268f5a7415d914fc855a86aa2284ac819dc6b2e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "mm: restore KERNEL_DS optimisations\n\nRestore the KERNEL_DS optimisation, especially helpful to the 2copy write\npath.\n\nThis may be a pretty questionable gain in most cases, especially after the\nlegacy 2copy write path is removed, but it doesn\u0027t cost much.\n\nSigned-off-by: 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": "afddba49d18f346e5cc2938b6ed7c512db18ca68",
      "tree": "4726e3d3b0e9e8e5b5d3b2b0cccb36446bbdf3ca",
      "parents": [
        "637aff46f94a754207c80c8c64bf1b74f24b967d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "fs: introduce write_begin, write_end, and perform_write aops\n\nThese are intended to replace prepare_write and commit_write with more\nflexible alternatives that are also able to avoid the buffered write\ndeadlock problems efficiently (which prepare_write is unable to do).\n\n[mark.fasheh@oracle.com: API design contributions, code review and fixes]\n[akpm@linux-foundation.org: various fixes]\n[dmonakhov@sw.ru: new aop block_write_begin fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@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": "2f718ffc16c43a435d12919c75dbfad518abd056",
      "tree": "55588cb2815d844e9d0b2404cf8ceafe98b5c55d",
      "parents": [
        "08291429cfa6258c4cd95d8833beb40f828b194e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "mm: buffered write iterator\n\nAdd an iterator data structure to operate over an iovec.  Add usercopy\noperators needed by generic_file_buffered_write, and convert that function\nover.\n\nSigned-off-by: 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": "08291429cfa6258c4cd95d8833beb40f828b194e",
      "tree": "50a206f0f0e7a5400b44073107ff00517e6f50ac",
      "parents": [
        "4a9e5ef1f4f15205e477817a5cefc34bd3f65f55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: fix pagecache write deadlocks\n\nModify the core write() code so that it won\u0027t take a pagefault while holding a\nlock on the pagecache page. There are a number of different deadlocks possible\nif we try to do such a thing:\n\n1.  generic_buffered_write\n2.   lock_page\n3.    prepare_write\n4.     unlock_page+vmtruncate\n5.     copy_from_user\n6.      mmap_sem(r)\n7.       handle_mm_fault\n8.        lock_page (filemap_nopage)\n9.    commit_write\n10.  unlock_page\n\na. sys_munmap / sys_mlock / others\nb.  mmap_sem(w)\nc.   make_pages_present\nd.    get_user_pages\ne.     handle_mm_fault\nf.      lock_page (filemap_nopage)\n\n2,8\t- recursive deadlock if page is same\n2,8;2,8\t- ABBA deadlock is page is different\n2,6;b,f\t- ABBA deadlock if page is same\n\nThe solution is as follows:\n1.  If we find the destination page is uptodate, continue as normal, but use\n    atomic usercopies which do not take pagefaults and do not zero the uncopied\n    tail of the destination. The destination is already uptodate, so we can\n    commit_write the full length even if there was a partial copy: it does not\n    matter that the tail was not modified, because if it is dirtied and written\n    back to disk it will not cause any problems (uptodate *means* that the\n    destination page is as new or newer than the copy on disk).\n\n1a. The above requires that fault_in_pages_readable correctly returns access\n    information, because atomic usercopies cannot distinguish between\n    non-present pages in a readable mapping, from lack of a readable mapping.\n\n2.  If we find the destination page is non uptodate, unlock it (this could be\n    made slightly more optimal), then allocate a temporary page to copy the\n    source data into. Relock the destination page and continue with the copy.\n    However, instead of a usercopy (which might take a fault), copy the data\n    from the pinned temporary page via the kernel address space.\n\n(also, rename maxlen to seglen, because it was confusing)\n\nThis increases the CPU/memory copy cost by almost 50% on the affected\nworkloads. That will be solved by introducing a new set of pagecache write\naops in a subsequent patch.\n\nSigned-off-by: 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": "4a9e5ef1f4f15205e477817a5cefc34bd3f65f55",
      "tree": "51f52086ecbccc3f41955d8d12293ef7a566a05b",
      "parents": [
        "eb2be189317d031895b5ca534fbf735eb546158b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: write iovec cleanup\n\nHide some of the open-coded nr_segs tests into the iovec helpers.  This is all\nto simplify generic_file_buffered_write, because that gets more complex in the\nnext patch.\n\nSigned-off-by: 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": "eb2be189317d031895b5ca534fbf735eb546158b",
      "tree": "8f1eda7af3be7285244a6f1ad77682e90d403c7b",
      "parents": [
        "64649a58919e66ec21792dbb6c48cb3da22cbd7f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: buffered write cleanup\n\nQuite a bit of code is used in maintaining these \"cached pages\" that are\nprobably pretty unlikely to get used. It would require a narrow race where\nthe page is inserted concurrently while this process is allocating a page\nin order to create the spare page. Then a multi-page write into an uncached\npart of the file, to make use of it.\n\nNext, the buffered write path (and others) uses its own LRU pagevec when it\nshould be just using the per-CPU LRU pagevec (which will cut down on both data\nand code size cacheline footprint). Also, these private LRU pagevecs are\nemptied after just a very short time, in contrast with the per-CPU pagevecs\nthat are persistent. Net result: 7.3 times fewer lru_lock acquisitions required\nto add the pages to pagecache for a bulk write (in 4K chunks).\n\n[this gets rid of some cond_resched() calls in readahead.c and mpage.c due\n to clashes in -mm. What put them there, and why? ]\n\nSigned-off-by: 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": "64649a58919e66ec21792dbb6c48cb3da22cbd7f",
      "tree": "054605b7da7bad43c299ef66de9d33fda87cd38d",
      "parents": [
        "5fe172370687e03cc6ba8dca990b75db18ff9bb3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: trim more holes\n\nIf prepare_write fails with AOP_TRUNCATED_PAGE, or if commit_write fails, then\nwe may have failed the write operation despite prepare_write having\ninstantiated blocks past i_size.  Fix this, and consolidate the trimming into\none place.\n\nSigned-off-by: 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": "5fe172370687e03cc6ba8dca990b75db18ff9bb3",
      "tree": "8ce000fee15fa9ccd4313018f7f9ab1ffbc8cdaa",
      "parents": [
        "ae37461c70bc8c8416cad1bab13a9898ed030aa1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: debug write deadlocks\n\nAllow CONFIG_DEBUG_VM to switch off the prefaulting logic, to simulate the\nMakes the race much easier to hit.\n\nThis is useful for demonstration and testing purposes, but is removed in a\nsubsequent patch.\n\nSigned-off-by: 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": "ae37461c70bc8c8416cad1bab13a9898ed030aa1",
      "tree": "7ba24faab6f89651fd2b3d33563847764744d544",
      "parents": [
        "6814d7a91289ceb143285975e244a8f00fd3a830"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Oct 16 01:24:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: clean up buffered write code\n\nRename some variables and fix some types.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: 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": "6814d7a91289ceb143285975e244a8f00fd3a830",
      "tree": "e439e5d802d6ebaa73bac8b08c311ca60d4c8ee4",
      "parents": [
        "4b49643fbb3fa8bf4910f82be02d45e94e8972a4"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Oct 16 01:24:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "Revert \"[PATCH] generic_file_buffered_write(): deadlock on vectored write\"\n\nThis reverts commit 6527c2bdf1f833cc18e8f42bd97973d583e4aa83, which\nfixed the following bug:\n\n  When prefaulting in the pages in generic_file_buffered_write(), we only\n  faulted in the pages for the firts segment of the iovec.  If the second of\n  successive segment described a mmapping of the page into which we\u0027re\n  write()ing, and that page is not up-to-date, the fault handler tries to lock\n  the already-locked page (to bring it up to date) and deadlocks.\n\n  An exploit for this bug is in writev-deadlock-demo.c, in\n  http://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz.\n\n  (These demos assume blocksize \u003c PAGE_CACHE_SIZE).\n\nThe problem with this fix is that it takes the kernel back to doing a single\nprepare_write()/commit_write() per iovec segment.  So in the worst case we\u0027ll\nrun prepare_write+commit_write 1024 times where we previously would have run\nit once. The other problem with the fix is that it fix all the locking problems.\n\n\u003cinsert numbers obtained via ext3-tools\u0027s writev-speed.c here\u003e\n\nAnd apparently this change killed NFS overwrite performance, because, I\nsuppose, it talks to the server for each prepare_write+commit_write.\n\nSo just back that patch out - we\u0027ll be fixing the deadlock by other means.\n\nNick says: also it only ever actually papered over the bug, because after\nfaulting in the pages, they might be unmapped or reclaimed.\n\nSigned-off-by: 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": "4b49643fbb3fa8bf4910f82be02d45e94e8972a4",
      "tree": "ee3bc7881a1e0b71fa093254bb725ad467d8ef72",
      "parents": [
        "41cb8ac025dbbf6782eae10d231e7e2336ad3724"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Oct 16 01:24:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "Revert \"[PATCH] generic_file_buffered_write(): handle zero-length iovec segments\"\n\nThis reverts commit 81b0c8713385ce1b1b9058e916edcf9561ad76d6, which was\na bugfix against 6527c2bdf1f833cc18e8f42bd97973d583e4aa83 (\"[PATCH]\ngeneric_file_buffered_write(): deadlock on vectored write\"), which we\nalso revert.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: 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": "41cb8ac025dbbf6782eae10d231e7e2336ad3724",
      "tree": "0070e26ee574338a4a3f56f574e1c126a4357c8e",
      "parents": [
        "902aaed0d983dfd459fcb2b678608d4584782200"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:54 2007 -0700"
      },
      "message": "mm: revert KERNEL_DS buffered write optimisation\n\nRevert the patch from Neil Brown to optimise NFSD writev handling.\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: 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": "45726cb43d11b288c58243a26010f397054222f0",
      "tree": "ae1804a34f314be18865add063d660cf783e45be",
      "parents": [
        "001281881067a5998384c6669bc8dbbbab8456c4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "mm: improve find_lock_page\n\nfind_lock_page does not need to recheck -\u003eindex because if the page is in the\nright mapping then the index must be the same.  Also, tree_lock does not need\nto be retaken after the page is locked in order to test that -\u003emapping has not\nchanged, because holding the page lock pins its mapping.\n\nSigned-off-by: 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": "57f6b96c09c30e444e0d3fc3080feba037657a7b",
      "tree": "4b62e2f63352b74d6c9dd1ed1142b971dcd207e3",
      "parents": [
        "b2c3843b1e25e2c67347c4671f33fbe6f5067e6b"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "filemap: convert some unsigned long to pgoff_t\n\nConvert some \u0027unsigned long\u0027 to pgoff_t.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2c3843b1e25e2c67347c4671f33fbe6f5067e6b",
      "tree": "e1b161e5c7169baab8f71615879eb3b46ebe9a9e",
      "parents": [
        "f2e189827a914b66e435e68b1c9e37775cb995ed"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "filemap: trivial code cleanups\n\n- remove unused local next_index in do_generic_mapping_read()\n- remove a redudant page_cache_read() declaration\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ff81078d8b9f3d05a27b7bd3786ffb1ef1b0d1f",
      "tree": "ac73cf0c8325783a28c4d16c783f6fd96d17be7c",
      "parents": [
        "6b10c6c9fbfe754e8482efb8c8b84f8e40c0f2eb"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "readahead: remove the local copy of ra in do_generic_mapping_read()\n\nThe local copy of ra in do_generic_mapping_read() can now go away.\n\nIt predates readanead(req_size).  In a time when the readahead code was called\non *every* single page.  Hence a local has to be made to reduce the chance of\nthe readahead state being overwritten by a concurrent reader.  More details\nin: Linux: Random File I/O Regressions In 2.6\n\u003chttp://kerneltrap.org/node/3039\u003e\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4e6b498d6e06742d72706ef50593a9c4dd72214",
      "tree": "74a573302b2ea086c0d21907175be604f110f5b1",
      "parents": [
        "0bb7ba6b9c358c12084a3cbc6ac08c8d1e973937"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "readahead: combine file_ra_state.prev_index/prev_offset into prev_pos\n\nCombine the file_ra_state members\n\t\t\t\tunsigned long prev_index\n\t\t\t\tunsigned int prev_offset\ninto\n\t\t\t\tloff_t prev_pos\n\nIt is more consistent and better supports huge files.\n\nThanks to Peter for the nice proposal!\n\n[akpm@linux-foundation.org: fix shift overflow]\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0bb7ba6b9c358c12084a3cbc6ac08c8d1e973937",
      "tree": "81dc745c660557af4d9ea8b9816846d0395ece20",
      "parents": [
        "937085aa35cc873d427d250a1e304d641af24628"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 01:24:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "readahead: mmap read-around simplification\n\nFold file_ra_state.mmap_hit into file_ra_state.mmap_miss and make it an int.\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "745ad48e8cac47beec0b2f72dc3c64424bce1fec",
      "tree": "a16a8eedb7d6e27eaba86fd0cca8ea7bfd0cdcd8",
      "parents": [
        "dd204d63cd11509081b41d7ab305fdc173382039"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "yanzheng@21cn.com",
        "time": "Mon Oct 08 10:08:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 08 12:58:14 2007 -0700"
      },
      "message": "fix page release issue in filemap_fault\n\nfind_lock_page increases page\u0027s usage count, we should decrease it\nbefore return VM_FAULT_SIGBUS\n\nSigned-off-by: Yan Zheng\u003cyanzheng@21cn.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc8a7b11aa68d6795a46e0a42ce92220d1a6f0cd",
      "tree": "7b353684090d23b1e2e3f85bf83df491f04dcc8a",
      "parents": [
        "d291676ce8bc1d8ef93488023d04027010596de3",
        "02a5e0acb3cb85d80d0fe834e366d38a92bbaa22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Aug 11 16:01:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Aug 11 16:01:06 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  BLOCK: Hide the contents of linux/bio.h if CONFIG_BLOCK\u003dn\n  sysace: HDIO_GETGEO has it\u0027s own method for ages\n  drivers/block/cpqarray.c: better error handling and kmalloc + memset conversion to k[cz]alloc\n  drivers/block/cciss.c: kmalloc + memset conversion to kzalloc\n  Clean up duplicate includes in drivers/block/\n  Fix remap handling by blktrace\n  [PATCH] remove mm/filemap.c:file_send_actor()\n"
    },
    {
      "commit": "f0b85c0cfdad8977d82fed88e846fc2245585d0e",
      "tree": "df85c3195dd46095a40be69647ee5c93911f2e03",
      "parents": [
        "f6901e639800e745457b1dcd99c52647981438d7"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Fri Aug 10 13:01:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Aug 11 15:47:42 2007 -0700"
      },
      "message": "readahead: docbook fix\n\nMinor docbook error since argument name in comment doesn\u0027t match function\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec05b297f91a443aa26b74059b573bfad49c9ebb",
      "tree": "4890ea53de4373e51688e72576781909588515a3",
      "parents": [
        "ac07860264bd2b18834d3fa3be47032115524cea"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Jul 30 08:24:27 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Aug 11 22:34:47 2007 +0200"
      },
      "message": "[PATCH] remove mm/filemap.c:file_send_actor()\n\nThis patch removes the no longer used file_send_actor().\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "bfe0d6867e36f46836d2c3755fa8b9ef8cf143ba",
      "tree": "0632dc1fd135324b6e9baf9568ee2cf46cb5765b",
      "parents": [
        "64d158bc3db121fd2bec29057a44843930b044fa"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Jul 31 00:37:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 31 15:39:38 2007 -0700"
      },
      "message": "fix filemap.c kernel-doc\n\nFix kernel-doc warning:\nWarning(linux-2.6.23-rc1-mm1//mm/filemap.c:864): No description found for parameter \u0027ra\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf914a7d656e62b9dd3e0dffe4f62b953ae6048d",
      "tree": "baf7e79de006ca80eac426d2d1be4c52f5f19624",
      "parents": [
        "fe3cba17c49471e99d3421e675fc8b3deaaf0b70"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jul 19 01:48:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "readahead: split ondemand readahead interface into two functions\n\nSplit ondemand readahead interface into two functions.  I think this makes it\na little clearer for non-readahead experts (like Rusty).\n\nInternally they both call ondemand_readahead(), but the page argument is\nchanged to an obvious boolean flag.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "3ea89ee86a82e9fbde37018d9b9e92a552e5fd13"
}
