)]}'
{
  "log": [
    {
      "commit": "dcf975d58565880a134afb13bde511d1b873ce79",
      "tree": "c10147ca16176c4a7c7ff72788170d3ac34b9c1c",
      "parents": [
        "78dc583d3ab43115579cb5f3f7bd12e3548dd5a5"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Jun 16 15:31:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:31 2009 -0700"
      },
      "message": "mm/page-writeback.c: dirty limit type should be unsigned long\n\nget_dirty_limits() calls clip_bdi_dirty_limit() and task_dirty_limit()\nwith variable pbdi_dirty as one of the arguments.  This variable is an\nunsigned long * but both functions expect it to be a long *.  This causes\nthe following sparse warnings:\n\n  warning: incorrect type in argument 3 (different signedness)\n     expected long *pbdi_dirty\n     got unsigned long *pbdi_dirty\n  warning: incorrect type in argument 2 (different signedness)\n     expected long *pdirty\n     got unsigned long *pbdi_dirty\n\nFix the warnings by changing the long * to unsigned long * in both\nfunctions.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: 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": "22ef37eed673587ac984965dc88ba94c68873291",
      "tree": "7bc26e056bcd88a0d62bdaab9f0375343844f9ff",
      "parents": [
        "cd208bcc7cb0acd851e25c951ec2a9c14b084eab"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Sat May 16 22:56:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 17 16:36:11 2009 -0700"
      },
      "message": "page-writeback: fix the calculation of the oldest_jif in wb_kupdate()\n\nwb_kupdate() function has a bug on linux-2.6.30-rc5.  This bug causes\ngeneric_sync_sb_inodes() to start to write inodes back much earlier than\nour expectations because it miscalculates oldest_jif in wb_kupdate().\n\nThis bug was introduced in 704503d836042d4a4c7685b7036e7de0418fbc0f\n(\u0027mm: fix proc_dointvec_userhz_jiffies \"breakage\"\u0027).\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "704503d836042d4a4c7685b7036e7de0418fbc0f",
      "tree": "218bea088f0b286981221e44d5247dab98020d30",
      "parents": [
        "6a11f75b6a17b5d9ac5025f8d048382fd1f47377"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:23:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:13 2009 -0700"
      },
      "message": "mm: fix proc_dointvec_userhz_jiffies \"breakage\"\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d9838\n\nOn i386, HZ\u003d1000, jiffies_to_clock_t() converts time in a somewhat strange\nway from the user\u0027s point of view:\n\n\t# echo 500 \u003e/proc/sys/vm/dirty_writeback_centisecs\n\t# cat /proc/sys/vm/dirty_writeback_centisecs\n\t499\n\nSo, we have 5000 jiffies converted to only 499 clock ticks and reported\nback.\n\nTICK_NSEC \u003d 999848\nACTHZ \u003d 256039\n\nKeeping in-kernel variable in units passed from userspace will fix issue\nof course, but this probably won\u0027t be right for every sysctl.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\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": "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5",
      "tree": "717097ec82ce0de55e44b2fe3e35fa041e5169b2",
      "parents": [
        "bd2f6199cf9af472aeefa1b642c9f504f19e6008"
      ],
      "author": {
        "name": "Edward Shishkin",
        "email": "edward.shishkin@gmail.com",
        "time": "Tue Mar 31 15:19:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "vfs: add/use account_page_dirtied()\n\nAdd a helper function account_page_dirtied().  Use that from two\ncallsites.  reiser4 adds a function which adds a third callsite.\n\nSigned-off-by: Edward Shishkin\u003cedward.shishkin@gmail.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": "1b5e62b42b55c509eea04c3c0f25e42c8b35b564",
      "tree": "be5d783ec67610445828e496706f1e02c74671c1",
      "parents": [
        "0a1c01c9477602ee8b44548a9405b2c1d587b5a2"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Mar 23 08:57:38 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 26 11:01:11 2009 -0700"
      },
      "message": "writeback: double the dirty thresholds\n\nEnlarge default dirty ratios from 5/10 to 10/20.  This fixes [Bug\n#12809] iozone regression with 2.6.29-rc6.\n\nThe iozone benchmarks are performed on a 1200M file, with 8GB ram.\n\n  iozone -i 0 -i 1 -i 2 -i 3 -i 4 -r 4k -s 64k -s 512m -s 1200m -b tmp.xls\n  iozone -B -r 4k -s 64k -s 512m -s 1200m -b tmp.xls\n\nThe performance regression is triggered by commit 1cf6e7d83bf3(mm: task\ndirty accounting fix), which makes more correct/thorough dirty\naccounting.\n\nThe default 5/10 dirty ratios were picked (a) with the old dirty logic\nand (b) largely at random and (c) designed to be aggressive.  In\nparticular, that (a) means that having fixed some of the dirty\naccounting, maybe the real bug is now that it was always too aggressive,\njust hidden by an accounting issue.\n\nThe enlarged 10/20 dirty ratios are just about enough to fix the regression.\n\n[ We will have to look at how this affects the old fsync() latency issue,\n  but that probably will need independent work.  - Linus ]\n\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReported-by: \"Lin, Ming M\" \u003cming.m.lin@intel.com\u003e\nTested-by: \"Lin, Ming M\" \u003cming.m.lin@intel.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1cf6e7d83bf334cc5916137862c920a97aabc018",
      "tree": "6bdbc4a98e9b332919beaeba0649797fff544795",
      "parents": [
        "610d18f4128ebbd88845d0fc60cce67b49af881e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Feb 18 14:48:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 18 15:37:54 2009 -0800"
      },
      "message": "mm: task dirty accounting fix\n\nYAMAMOTO-san noticed that task_dirty_inc doesn\u0027t seem to be called properly for\ncases where set_page_dirty is not used to dirty a page (eg. mark_buffer_dirty).\n\nAdditionally, there is some inconsistency about when task_dirty_inc is\ncalled.  It is used for dirty balancing, however it even gets called for\n__set_page_dirty_no_writeback.\n\nSo rather than increment it in a set_page_dirty wrapper, move it down to\nexactly where the dirty page accounting stats are incremented.\n\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a4c6800f31ea8395628af5e7e490270ee5d0585",
      "tree": "5703cf8140e5b58f5f333dbbf7b1514404584e69",
      "parents": [
        "b578f3fcca1e78624dfb5f358776e63711d7fda2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Feb 12 04:34:23 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 12 08:10:53 2009 -0800"
      },
      "message": "Fix page writeback thinko, causing Berkeley DB slowdown\n\nA bug was introduced into write_cache_pages cyclic writeout by commit\n31a12666d8f0c22235297e1c1575f82061480029 (\"mm: write_cache_pages cyclic\nfix\").  The intention (and comments) is that we should cycle back and\nlook for more dirty pages at the beginning of the file if there is no\nmore work to be done.\n\nBut the !done condition was dropped from the test.  This means that any\ntime the page writeout loop breaks (eg.  due to nr_to_write \u003d\u003d 0), we\nwill set index to 0, then goto again.  This will set done_index to\nindex, then find done is set, so will proceed to the end of the\nfunction.  When updating mapping-\u003ewriteback_index for cyclic writeout,\nwe now use done_index \u003d\u003d 0, so we\u0027re always cycling back to 0.\n\nThis seemed to be causing random mmap writes (slapadd and iozone) to\nstart writing more pages from the LRU and writeout would slowdown, and\ncaused bugzilla entry\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12604\n\nabout Berkeley DB slowing down dramatically.\n\nWith this patch, iozone random write performance is increased nearly\n5x on my system (iozone -B -r 4k -s 64k -s 512m -s 1200m on ext2).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReported-and-tested-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89e1219004b3657cc014521663eeef0744f1c99d",
      "tree": "350162d8019af504c6f0461b2f54606bd6af7142",
      "parents": [
        "6c5979631b4b03c9288776562c18036765e398c1"
      ],
      "author": {
        "name": "Federico Cuello",
        "email": "fedux@lugmen.org.ar",
        "time": "Wed Feb 11 13:04:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:37 2009 -0800"
      },
      "message": "writeback: fix break condition\n\nCommit dcf6a79dda5cc2a2bec183e50d829030c0972aaa (\"write-back: fix\nnr_to_write counter\") fixed nr_to_write counter, but didn\u0027t set the break\ncondition properly.\n\nIf nr_to_write \u003d\u003d 0 after being decremented it will loop one more time\nbefore setting done \u003d 1 and breaking the loop.\n\n[akpm@linux-foundation.org: coding-style fixes]\nCc: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.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": "fc3501d411d34823fb9be248a95a0c44f945866f",
      "tree": "9a16de761b4c7d3401149a212b8004df23fbbcca",
      "parents": [
        "35887b1cf74dc751dd0574b26515142d3cea9376"
      ],
      "author": {
        "name": "Sven Wegener",
        "email": "sven.wegener@stealer.net",
        "time": "Wed Feb 11 13:04:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "mm: fix dirty_bytes/dirty_background_bytes sysctls on 64bit arches\n\nWe need to pass an unsigned long as the minimum, because it gets casted\nto an unsigned long in the sysctl handler. If we pass an int, we\u0027ll\naccess four more bytes on 64bit arches, resulting in a random minimum\nvalue.\n\n[rientjes@google.com: fix type of `old_bytes\u0027]\nSigned-off-by: Sven Wegener \u003csven.wegener@stealer.net\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcf6a79dda5cc2a2bec183e50d829030c0972aaa",
      "tree": "557b2867e7c9df361f50b913936d60d4245cf6f8",
      "parents": [
        "5193535517825f9a07967e4868a1103013d0a99d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Feb 02 18:33:49 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 03 16:59:08 2009 -0800"
      },
      "message": "write-back: fix nr_to_write counter\n\nCommit 05fe478dd04e02fa230c305ab9b5616669821dd3 introduced some\n@wbc-\u003enr_to_write breakage.\n\nIt made the following changes:\n 1. Decrement wbc-\u003enr_to_write instead of nr_to_write\n 2. Decrement wbc-\u003enr_to_write _only_ if wbc-\u003esync_mode \u003d\u003d WB_SYNC_NONE\n 3. If synced nr_to_write pages, stop only if if wbc-\u003esync_mode \u003d\u003d\n    WB_SYNC_NONE, otherwise keep going.\n\nHowever, according to the commit message, the intention was to only make\nchange 3.  Change 1 is a bug.  Change 2 does not seem to be necessary,\nand it breaks UBIFS expectations, so if needed, it should be done\nseparately later.  And change 2 does not seem to be documented in the\ncommit message.\n\nThis patch does the following:\n 1. Undo changes 1 and 2\n 2. Add a comment explaining change 3 (it very useful to have comments\n    in _code_, not only in the commit).\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2da02997e08d3efe8174c7a47696e6f7cbe69ba9",
      "tree": "2e52d9346c52dda83dc8cc9626cbe302e026ad9a",
      "parents": [
        "364aeb2849789b51bf4b9af2ddd02fee7285c54e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: add dirty_background_bytes and dirty_bytes sysctls\n\nThis change introduces two new sysctls to /proc/sys/vm:\ndirty_background_bytes and dirty_bytes.\n\ndirty_background_bytes is the counterpart to dirty_background_ratio and\ndirty_bytes is the counterpart to dirty_ratio.\n\nWith growing memory capacities of individual machines, it\u0027s no longer\nsufficient to specify dirty thresholds as a percentage of the amount of\ndirtyable memory over the entire system.\n\ndirty_background_bytes and dirty_bytes specify quantities of memory, in\nbytes, that represent the dirty limits for the entire system.  If either\nof these values is set, its value represents the amount of dirty memory\nthat is needed to commence either background or direct writeback.\n\nWhen a `bytes\u0027 or `ratio\u0027 file is written, its counterpart becomes a\nfunction of the written value.  For example, if dirty_bytes is written to\nbe 8096, 8K of memory is required to commence direct writeback.\ndirty_ratio is then functionally equivalent to 8K / the amount of\ndirtyable memory:\n\n\tdirtyable_memory \u003d free pages + mapped pages + file cache\n\n\tdirty_background_bytes \u003d dirty_background_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_background_ratio \u003d dirty_background_bytes / dirtyable_memory\n\n\t\tAND\n\n\tdirty_bytes \u003d dirty_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_ratio \u003d dirty_bytes / dirtyable_memory\n\nOnly one of dirty_background_bytes and dirty_background_ratio may be\nspecified at a time, and only one of dirty_bytes and dirty_ratio may be\nspecified.  When one sysctl is written, the other appears as 0 when read.\n\nThe `bytes\u0027 files operate on a page size granularity since dirty limits\nare compared with ZVC values, which are in page units.\n\nPrior to this change, the minimum dirty_ratio was 5 as implemented by\nget_dirty_limits() although /proc/sys/vm/dirty_ratio would show any user\nwritten value between 0 and 100.  This restriction is maintained, but\ndirty_bytes has a lower limit of only one page.\n\nAlso prior to this change, the dirty_background_ratio could not equal or\nexceed dirty_ratio.  This restriction is maintained in addition to\nrestricting dirty_background_bytes.  If either background threshold equals\nor exceeds that of the dirty threshold, it is implicitly set to half the\ndirty threshold.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Righi \u003crighi.andrea@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": "364aeb2849789b51bf4b9af2ddd02fee7285c54e",
      "tree": "4a24ea43a2a76ae744571f3c7b5022aa1107599e",
      "parents": [
        "58a01a45721bf7bd3a41a86248c3cb02a6b0c501"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: change dirty limit type specifiers to unsigned long\n\nThe background dirty and dirty limits are better defined with type\nspecifiers of unsigned long since negative writeback thresholds are not\npossible.\n\nThese values, as returned by get_dirty_limits(), are normally compared\nwith ZVC values to determine whether writeback shall commence or be\nthrottled.  Such page counts cannot be negative, so declaring the page\nlimits as signed is unnecessary.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Righi \u003crighi.andrea@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": "82fd1a9a8ced9607312b54859572bcc6211e8919",
      "tree": "fc537a866c670a4c54895a7f75b5ccfbdeeb034c",
      "parents": [
        "d5482cdf8a0aacb1e6468a97d5544f5829c8d8c4"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Jan 06 14:39:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: write_cache_pages more terminate quickly\n\nNow that we have the early-termination logic in place, it makes sense to\nbail out early in all other cases where done is set to 1.\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": "d5482cdf8a0aacb1e6468a97d5544f5829c8d8c4",
      "tree": "3565702c805deecd51e32ed1458f567a0064815d",
      "parents": [
        "515f4a037fb9ab736f8bad733fcd2ffd350cf265"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: write_cache_pages terminate quickly\n\nTerminate the write_cache_pages loop upon encountering the first page past\nend, without locking the page.  Pages cannot have their index change when\nwe have a reference on them (truncate, eg truncate_inode_pages_range\nperforms the same check without the page lock).\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": "515f4a037fb9ab736f8bad733fcd2ffd350cf265",
      "tree": "0862eee6405297ef23a5b3d8906cfef5783c0c77",
      "parents": [
        "5a3d5c9813db56a75934eb1015367fda23a8b0b4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:10 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 optimise page cleaning\n\nIn write_cache_pages, if we get stuck behind another process that is\ncleaning pages, we will be forced to wait for them to finish, then perform\nour own writeout (if it was redirtied during the long wait), then wait for\nthat.\n\nIf a page under writeout is still clean, we can skip waiting for it (if\nwe\u0027re part of a data integrity sync, we\u0027ll be waiting for all writeout\npages afterwards, so we\u0027ll still be waiting for the other guy\u0027s write\nthat\u0027s cleaned the page).\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": "5a3d5c9813db56a75934eb1015367fda23a8b0b4",
      "tree": "656b43b3982a6513467e9a3191377429bb9f45f1",
      "parents": [
        "05fe478dd04e02fa230c305ab9b5616669821dd3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:09 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 cleanups\n\nGet rid of some complex expressions from flow control statements, add a\ncomment, remove some duplicate code.\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": "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": "00266770b8b3a6a77f896ca501a0613739086832",
      "tree": "e10b01330e928b6d3eaa1040560fe133ddba6654",
      "parents": [
        "bd19e012f6fd3b7309689165ea865cbb7bb88c1e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:06 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 writepage error fix\n\nIn write_cache_pages, if ret signals a real error, but we still have some\npages left in the pagevec, done would be set to 1, but the remaining pages\nwould continue to be processed and ret will be overwritten in the process.\n\nIt could easily be overwritten with success, and thus success will be\nreturned even if there is an error.  Thus the caller is told all writes\nsucceeded, wheras in reality some did not.\n\nFix this by bailing immediately if there is an error, and retaining the\nfirst error code.\n\nThis is a data integrity bug.\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": "bd19e012f6fd3b7309689165ea865cbb7bb88c1e",
      "tree": "66ca4f5bfc683d2935e7fc5cab2f57a7682ad65a",
      "parents": [
        "31a12666d8f0c22235297e1c1575f82061480029"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:06 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 early loop termination\n\nWe\u0027d like to break out of the loop early in many situations, however the\nexisting code has been setting mapping-\u003ewriteback_index past the final\npage in the pagevec lookup for cyclic writeback.  This is a problem if we\ndon\u0027t process all pages up to the final page.\n\nCurrently the code mostly keeps writeback_index reasonable and hacked\naround this by not breaking out of the loop or writing pages outside the\nrange in these cases.  Keep track of a real \"done index\" that enables us\nto terminate the loop in a much more flexible manner.\n\nNeeded by the subsequent patch to preserve writepage errors, and then\nfurther patches to break out of the loop early for other reasons.  However\nthere are no functional changes with this patch alone.\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": "31a12666d8f0c22235297e1c1575f82061480029",
      "tree": "89106848d2072278cc9338b091ad059db460420f",
      "parents": [
        "38c8e6180939e5619140b2e9e479cb26029ff8b1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:04 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 cyclic fix\n\nIn write_cache_pages, scanned \u003d\u003d 1 is supposed to mean that cyclic\nwriteback has circled through zero, thus we should not circle again.\nHowever it gets set to 1 after the first successful pagevec lookup.  This\nleads to cases where not enough data gets written.\n\nCounterexample: file with first 10 pages dirty, writeback_index \u003d\u003d 5,\nnr_to_write \u003d\u003d 10.  Then the 5 last pages will be found, and scanned will\nbe set to 1, after writing those out, we will not cycle back to get the\nfirst 5.\n\nRework this logic, now we\u0027ll always cycle unless we started off from index\n0.  When cycling, only write out as far as 1 page before the start page\nfrom the first cycle (so we don\u0027t write parts of the file twice).\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": "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": "17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4",
      "tree": "9fb9512764e970123c0f44573b0bfd74539744e3",
      "parents": [
        "74baaaaec8b4f22e1ae279f5ecca4ff705b28912"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Oct 16 10:09:17 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 10:09:17 2008 -0400"
      },
      "message": "vfs: Add no_nrwrite_index_update writeback control flag\n\nIf no_nrwrite_index_update is set we don\u0027t update nr_to_write and\naddress space writeback_index in write_cache_pages.  This change\nenables a file system to skip these updates in write_cache_pages and do\nthem in the writepages() callback.  This patch will be followed by an\next4 patch that make use of these new flags.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCC: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "74baaaaec8b4f22e1ae279f5ecca4ff705b28912",
      "tree": "ef224dcfcf675eb5050fd457192e740c314437c3",
      "parents": [
        "af6f029d3836eb7264cd3fbb13a6baf0e5fdb5ea"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Oct 14 09:21:02 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 14 09:21:02 2008 -0400"
      },
      "message": "vfs: Remove the range_cont writeback mode.\n\nExt4 was the only user of range_cont writeback mode and ext4 switched\nto a different method. So remove the range_cont mode which is not used\nin the kernel.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCC: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "e1f8e87449147ffe5ea3de64a46af7de450ce279",
      "tree": "304e90a6747f5a7586a67305b7225ed4b4dbb53a",
      "parents": [
        "8033fe65a6d6c0e47ba9e3cb2e4e6902f9dfb8dd"
      ],
      "author": {
        "name": "Francois Cami",
        "email": "francois.cami@free.fr",
        "time": "Wed Oct 15 22:01:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:32 2008 -0700"
      },
      "message": "Remove Andrew Morton\u0027s old email accounts\n\nPeople can use the real name an an index into MAINTAINERS to find the\ncurrent email address.\n\nSigned-off-by: Francois Cami \u003cfrancois.cami@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "8d2567a620ae8c24968a2bdc1c906c724fac1f6a",
      "tree": "8e228abbadbe760e3f015d30c2e1180a67eeb8f9",
      "parents": [
        "bcf559e385ba099996c90469c817d2eb38aba418",
        "49f1487b2e41bd8439ea39a4f15b4064e823cc54"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 08:36:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 08:36:38 2008 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (61 commits)\n  ext4: Documention update for new ordered mode and delayed allocation\n  ext4: do not set extents feature from the kernel\n  ext4: Don\u0027t allow nonextenst mount option for large filesystem\n  ext4: Enable delalloc by default.\n  ext4: delayed allocation i_blocks fix for stat\n  ext4: fix delalloc i_disksize early update issue\n  ext4: Handle page without buffers in ext4_*_writepage()\n  ext4: Add ordered mode support for delalloc\n  ext4: Invert lock ordering of page_lock and transaction start in delalloc\n  mm: Add range_cont mode for writeback\n  ext4: delayed allocation ENOSPC handling\n  percpu_counter: new function percpu_counter_sum_and_set\n  ext4: Add delayed allocation support in data\u003dwriteback mode\n  vfs: add hooks for ext4\u0027s delayed allocation support\n  jbd2: Remove data\u003dordered mode support using jbd buffer heads\n  ext4: Use new framework for data\u003dordered mode in JBD2\n  jbd2: Implement data\u003dordered mode handling via inodes\n  vfs: export filemap_fdatawrite_range()\n  ext4: Fix lock inversion in ext4_ext_truncate()\n  ext4: Invert the locking order of page_lock and transaction start\n  ...\n"
    },
    {
      "commit": "06d6cf6959d22037fcec598f4f954db5db3d7356",
      "tree": "3248c7a27114031ac3d0012080a97932a6190469",
      "parents": [
        "d2a1763791a634e315ec926b62829c1e88842c86"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "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": "mm: Add range_cont mode for writeback\n\nFilesystems like ext4 needs to start a new transaction in\nthe writepages for block allocation. This happens with delayed\nallocation and there is limit to how many credits we can request\nfrom the journal layer. So we call write_cache_pages multiple\ntimes with wbc-\u003enr_to_write set to the maximum possible value\nlimitted by the max journal credits available.\n\nAdd a new mode to writeback that enables us to handle this\nbehaviour. In the new mode we update the wbc-\u003erange_start\nto point to the new offset to be written. Next call to\ncall to write_cache_pages will start writeout from specified\nrange_start offset. In the new mode we also limit writing\nto the specified wbc-\u003erange_end.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3eefae994d9224fb7771a3ddb683868363c23510",
      "tree": "0c7fe35765b485ff2a155c4ae1189199476a34b3",
      "parents": [
        "6c6c27969a4c6024e6c8838829546c02aaddca18"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 12 21:21:04 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:05:14 2008 +0200"
      },
      "message": "ftrace: limit trace entries\n\nCurrently there is no protection from the root user to use up all of\nmemory for trace buffers. If the root user allocates too many entries,\nthe OOM killer might start kill off all tasks.\n\nThis patch adds an algorith to check the following condition:\n\n pages_requested \u003e (freeable_memory + current_trace_buffer_pages) / 4\n\nIf the above is met then the allocation fails. The above prevents more\nthan 1/4th of freeable memory from being used by trace buffers.\n\nTo determine the freeable_memory, I made determine_dirtyable_memory in\nmm/page-writeback.c global.\n\nSpecial thanks goes to Peter Zijlstra for suggesting the above calculation.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "fc3ba692a4d19019387c5acaea63131f9eab05dd",
      "tree": "c86e025cb8f79c7ffc479029989b7378bcb9f285",
      "parents": [
        "dd5656e59ca7b25fb60a22f9079905ed0da5ed0c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: Add NR_WRITEBACK_TEMP counter\n\nFuse will use temporary buffers to write back dirty data from memory mappings\n(normal writes are done synchronously).  This is needed, because there cannot\nbe any guarantee about the time in which a write will complete.\n\nBy using temporary buffers, from the MM\u0027s point if view the page is written\nback immediately.  If the writeout was due to memory pressure, this\neffectively migrates data from a full zone to a less full zone.\n\nThis patch adds a new counter (NR_WRITEBACK_TEMP) for the number of pages used\nas temporary buffers.\n\n[Lee.Schermerhorn@hp.com: add vmstat_text for NR_WRITEBACK_TEMP]\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: 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": "dd5656e59ca7b25fb60a22f9079905ed0da5ed0c",
      "tree": "47c156e6023e93f3028c63a2594bbb3e27e968a4",
      "parents": [
        "e4ad08fe64afca4ef79ecc4c624e6e871688da0d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: export bdi_writeout_inc()\n\nFuse needs this for writable mmap support.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: 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": "e4ad08fe64afca4ef79ecc4c624e6e871688da0d",
      "tree": "5b8b390b874700041dc0c095e8ba9ac3ed42ea77",
      "parents": [
        "76f1418b485da2707531178e517bbb5cf06b3c76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: add separate writeback accounting capability\n\nAdd a new BDI capability flag: BDI_CAP_NO_ACCT_WB.  If this flag is\nset, then don\u0027t update the per-bdi writeback stats from\ntest_set_page_writeback() and test_clear_page_writeback().\n\nMisc cleanups:\n\n - convert bdi_cap_writeback_dirty() and friends to static inline functions\n - create a flag that includes all three dirty/writeback related flags,\n   since almst all users will want to have them toghether\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: 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": "a42dde04152750426cc620fd277e80fffae2f65a",
      "tree": "98cdf246280c59e0bf044ae6d2c229fc27b73203",
      "parents": [
        "189d3c4a94ef19fca2a71a6a336e9fda900e25e7"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: allow setting a maximum for the bdi dirty limit\n\nAdd \"max_ratio\" to /sys/class/bdi.  This indicates the maximum percentage of\nthe global dirty threshold allocated to this bdi.\n\n[mszeredi@suse.cz]\n\n - fix parsing in max_ratio_store().\n - export bdi_set_max_ratio() to modules\n - limit bdi_dirty with bdi-\u003emax_ratio\n - document new sysfs attribute\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "189d3c4a94ef19fca2a71a6a336e9fda900e25e7",
      "tree": "75c0de871fe9922885a2fa073f15806d829342fa",
      "parents": [
        "b6f2fcbcfca9db2bd7aa24940224fcd3bbdbb8aa"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: allow setting a minimum for the bdi dirty limit\n\nUnder normal circumstances each device is given a part of the total write-back\ncache that relates to its current avg writeout speed in relation to the other\ndevices.\n\nmin_ratio - allows one to assign a minimum portion of the write-back cache to\na particular device.  This is useful in situations where you might want to\nprovide a minimum QoS.  (One request for this feature came from flash based\nstorage people who wanted to avoid writing out at all costs - they of course\nneeded some pdflush hacks as well)\n\nmax_ratio - allows one to assign a maximum portion of the dirty limit to a\nparticular device.  This is useful in situations where you want to avoid one\ndevice taking all or most of the write-back cache.  Eg.  an NFS mount that is\nprone to get stuck, or a FUSE mount which you don\u0027t trust to play fair.\n\nAdd \"min_ratio\" to /sys/class/bdi.  This indicates the minimum percentage of\nthe global dirty threshold allocated to this bdi.\n\n[mszeredi@suse.cz]\n\n - fix parsing in min_ratio_store()\n - document new sysfs attribute\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf0ca9fe5dd9e3693d935757a7b2fc50fc576554",
      "tree": "c795c5271eda9fc67579fa3176c646b892dfdb41",
      "parents": [
        "caafa4324335aeb11bc233d5f87aca8cce30beba"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:49 2008 -0700"
      },
      "message": "mm: bdi: export BDI attributes in sysfs\n\nProvide a place in sysfs (/sys/class/bdi) for the backing_dev_info object.\nThis allows us to see and set the various BDI specific variables.\n\nIn particular this properly exposes the read-ahead window for all relevant\nusers and /sys/block/\u003cblock\u003e/queue/read_ahead_kb should be deprecated.\n\nWith patient help from Kay Sievers and Greg KH\n\n[mszeredi@suse.cz]\n\n - split off NFS and FUSE changes into separate patches\n - document new sysfs attributes under Documentation/ABI\n - do bdi_class_init as a core_initcall, otherwise the \"default\" BDI\n   won\u0027t be initialized\n - remove bdi_init_fmt macro, it\u0027s not used very much\n\n[akpm@linux-foundation.org: fix ia64 warning]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bc3be2751b4f74ab90a446da1912fd8204d53f7",
      "tree": "2bc514025a906203244d98de70fb6bd87f3ac9ac",
      "parents": [
        "a322f8ab66f50b6c0dcdb59abae84fede7a5fded"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Mon Feb 04 22:29:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "writeback: speed up writeback of big dirty files\n\nAfter making dirty a 100M file, the normal behavior is to start the\nwriteback for all data after 30s delays.  But sometimes the following\nhappens instead:\n\n\t- after 30s:    ~4M\n\t- after 5s:     ~4M\n\t- after 5s:     all remaining 92M\n\nSome analyze shows that the internal io dispatch queues goes like this:\n\n\t\ts_io            s_more_io\n\t\t-------------------------\n\t1)\t100M,1K         0\n\t2)\t1K              96M\n\t3)\t0               96M\n1) initial state with a 100M file and a 1K file\n\n2) 4M written, nr_to_write \u003c\u003d 0, so write more\n\n3) 1K written, nr_to_write \u003e 0, no more writes(BUG)\n\nnr_to_write \u003e 0 in (3) fools the upper layer to think that data have all\nbeen written out.  The big dirty file is actually still sitting in\ns_more_io.  We cannot simply splice s_more_io back to s_io as soon as s_io\nbecomes empty, and let the loop in generic_sync_sb_inodes() continue: this\nmay starve newly expired inodes in s_dirty.  It is also not an option to\ndraw inodes from both s_more_io and s_dirty, an let the loop go on: this\nmight lead to live locks, and might also starve other superblocks in sync\ntime(well kupdate may still starve some superblocks, that\u0027s another bug).\n\nWe have to return when a full scan of s_io completes.  So nr_to_write \u003e 0\ndoes not necessarily mean that \"all data are written\".  This patch\nintroduces a flag writeback_control.more_io to indicate that more io should\nbe done.  With it the big dirty file no longer has to wait for the next\nkupdate invokation 5s later.\n\nIn sync_sb_inodes() we only set more_io on super_blocks we actually\nvisited.  This avoids the interaction between two pdflush deamons.\n\nAlso in __sync_single_inode() we don\u0027t blindly keep requeuing the io if the\nfilesystem cannot progress.  Failing to do so may lead to 100% iowait.\n\nTested-by: Mike Snitzer \u003csnitzer@gmail.com\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Michael Rubin \u003cmrubin@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": "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": "195cf453d2c3d789cbe80e3735755f860c2fb222",
      "tree": "fad48a8167744b6c091c8ca499bc78b859af8957",
      "parents": [
        "3dfa5721f12c3d5a441448086bee156887daa961"
      ],
      "author": {
        "name": "Bron Gondwana",
        "email": "brong@fastmail.fm",
        "time": "Mon Feb 04 22:29:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm/page-writeback: highmem_is_dirtyable option\n\nAdd vm.highmem_is_dirtyable toggle\n\nA 32 bit machine with HIGHMEM64 enabled running DCC has an MMAPed file of\napproximately 2Gb size which contains a hash format that is written\nrandomly by the dbclean process.  On 2.6.16 this process took a few\nminutes.  With lowmem only accounting of dirty ratios, this takes about 12\nhours of 100% disk IO, all random writes.\n\nInclude a toggle in /proc/sys/vm/highmem_is_dirtyable which can be set to 1 to\nadd the highmem back to the total available memory count.\n\n[akpm@linux-foundation.org: Fix the CONFIG_DETECT_SOFTLOCKUP\u003dy build]\nSigned-off-by: Bron Gondwana \u003cbrong@fastmail.fm\u003e\nCc: Ethan Solomita \u003csolo@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "f61eaf9fc58f3b2d9e3ad424496620f3381ccd1e",
      "tree": "cc81b75fbdc13589ac0defb0b6f018d066e1c21d",
      "parents": [
        "1e88328111aae3ea408f346763ba9f9bad71f876"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Feb 04 22:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "mm/page-writeback.c: make a function static\n\ntask_dirty_limit() can become static.\n\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": "c23f72cae9523d29ff94eec8f30ccbdaf234b20e",
      "tree": "1e5f46971510cd36a3deebfa8f160933212f4df0",
      "parents": [
        "031f2dcd7075e218e74dd7f942ad015cf82dffab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 21:21:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 21:21:29 2008 -0800"
      },
      "message": "Revert \"writeback: introduce writeback_control.more_io to indicate more io\"\n\nThis reverts commit 2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b, as\nrequested by Fengguang Wu.  It\u0027s not quite fully baked yet, and while\nthere are patches around to fix the problems it caused, they should get\nmore testing.  Says Fengguang: \"I\u0027ll resend them both for -mm later on,\nin a more complete patchset\".\n\nSee\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9738\n\nfor some of this discussion.\n\nRequested-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c0863403f109a43d7000b4646da4818220d501f",
      "tree": "925a87846bda5a0f427cbd19b65c9ea0375ebdd3",
      "parents": [
        "adea27f4ba29200c989194a3f6214b652d009e83"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 15 16:41:52 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Nov 15 16:41:52 2007 -0800"
      },
      "message": "dirty page balancing: Get rid of broken unmapped_ratio logic\n\nThis code harks back to the days when we didn\u0027t count dirty mapped\npages, which led us to try to balance the number of dirty unmapped pages\nby how much unmapped memory there was in the system.\n\nThat makes no sense any more, since now the dirty counts include the\nmapped pages.  Not to mention that the math doesn\u0027t work with HIGHMEM\nmachines anyway, and causes the unmapped_ratio to potentially turn\nnegative (which we do catch thanks to clamping it at a minimum value,\nbut I mention that as an indication of how broken the code is).\n\nThe code also was written at a time when the default dirty ratio was\nmuch larger, and the unmapped_ratio logic effectively capped that large\ndirty ratio a bit.  Again, we\u0027ve since lowered the dirty ratio rather\naggressively, further lessening the point of that code.\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fce25a9df4865bdd5e3dc4853b269dc1677a02a",
      "tree": "207fe2bf726bac89e402eb738b9548cfc7cae2f5",
      "parents": [
        "546040dc4872f807d40b69bed86605636082564c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Wed Nov 14 16:59:15 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:38 2007 -0800"
      },
      "message": "mm: speed up writeback ramp-up on clean systems\n\nWe allow violation of bdi limits if there is a lot of room on the system.\nOnce we hit half the total limit we start enforcing bdi limits and bdi\nramp-up should happen.  Doing it this way avoids many small writeouts on an\notherwise idle system and should also speed up the ramp-up.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-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"
    },
    {
      "commit": "183ff22bb6bd8188c904ebfb479656ae52230b72",
      "tree": "425207fc9cdca03df64ee8241ba764c75db4d8d1",
      "parents": [
        "676b1855de0a18100b3c340084eb8ef72bde4fb1"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@fire.lp0.eux",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 20 01:27:18 2007 +0200"
      },
      "message": "spelling fixes: mm/\n\nSpelling fixes in mm/.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "369f2389e7d03022abdd25e298bffb9613cd0e54",
      "tree": "1071020428c8e3eaa88642682e234de95e7a77bc",
      "parents": [
        "1c0eeaf5698597146ed9b873e2f9e0961edcf0f9"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 23:30:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: remove unnecessary wait in throttle_vm_writeout()\n\nWe don\u0027t want to introduce pointless delays in throttle_vm_writeout() when\nthe writeback limits are not yet exceeded, do we?\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\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"
    },
    {
      "commit": "1c0eeaf5698597146ed9b873e2f9e0961edcf0f9",
      "tree": "5265eac8437e8ce517a62db8fe2bd99db5b7019b",
      "parents": [
        "2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b"
      ],
      "author": {
        "name": "Joern Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Tue Oct 16 23:30:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "introduce I_SYNC\n\nI_LOCK was used for several unrelated purposes, which caused deadlock\nsituations in certain filesystems as a side effect.  One of the purposes\nnow uses the new I_SYNC bit.\n\nAlso document the various bits and change their order from historical to\nlogical.\n\n[bunk@stusta.de: make fs/inode.c:wake_up_inode() static]\nSigned-off-by: Joern Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cam.ac.uk\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b",
      "tree": "aec0418150413c7e9f43fb2ec68bfd24738b0623",
      "parents": [
        "1f7decf6d9f06dac008b8d66935c0c3b18e564f9"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 23:30:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: introduce writeback_control.more_io to indicate more io\n\nAfter making dirty a 100M file, the normal behavior is to start the writeback\nfor all data after 30s delays.  But sometimes the following happens instead:\n\n\t- after 30s:    ~4M\n\t- after 5s:     ~4M\n\t- after 5s:     all remaining 92M\n\nSome analyze shows that the internal io dispatch queues goes like this:\n\n\t\ts_io            s_more_io\n\t\t-------------------------\n\t1)\t100M,1K         0\n\t2)\t1K              96M\n\t3)\t0               96M\n\n1) initial state with a 100M file and a 1K file\n2) 4M written, nr_to_write \u003c\u003d 0, so write more\n3) 1K written, nr_to_write \u003e 0, no more writes(BUG)\n\nnr_to_write \u003e 0 in (3) fools the upper layer to think that data have all been\nwritten out.  The big dirty file is actually still sitting in s_more_io.  We\ncannot simply splice s_more_io back to s_io as soon as s_io becomes empty, and\nlet the loop in generic_sync_sb_inodes() continue: this may starve newly\nexpired inodes in s_dirty.  It is also not an option to draw inodes from both\ns_more_io and s_dirty, an let the loop go on: this might lead to live locks,\nand might also starve other superblocks in sync time(well kupdate may still\nstarve some superblocks, that\u0027s another bug).\n\nWe have to return when a full scan of s_io completes.  So nr_to_write \u003e 0 does\nnot necessarily mean that \"all data are written\".  This patch introduces a\nflag writeback_control.more_io to indicate this situation.  With it the big\ndirty file no longer has to wait for the next kupdate invocation 5s later.\n\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\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"
    },
    {
      "commit": "e423003028183df54f039dfda8b58c49e78c89d7",
      "tree": "56df3ebc51ff86d58b054d9833770e78fb484973",
      "parents": [
        "7a4050791b23c55a451974027d41d72a9b78039b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "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": "writeback: don\u0027t propagate AOP_WRITEPAGE_ACTIVATE\n\nThis is a writeback-internal marker but we\u0027re propagating it all the way back\nto userspace!.\n\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": "3e26c149c358529b1605f8959341d34bc4b880a3",
      "tree": "9d173b1753b86bcf03a8591e2509e3162234447c",
      "parents": [
        "04fbfdc14e5f48463820d6b9807daa5e9c92c51f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: dirty balancing for tasks\n\nBased on ideas of Andrew:\n  http://marc.info/?l\u003dlinux-kernel\u0026m\u003d102912915020543\u0026w\u003d2\n\nScale the bdi dirty limit inversly with the tasks dirty rate.\nThis makes heavy writers have a lower dirty limit than the occasional writer.\n\nAndrea proposed something similar:\n  http://lwn.net/Articles/152277/\n\nThe main disadvantage to his patch is that he uses an unrelated quantity to\nmeasure time, which leaves him with a workload dependant tunable. Other than\nthat the two approaches appear quite similar.\n\n[akpm@linux-foundation.org: fix warning]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04fbfdc14e5f48463820d6b9807daa5e9c92c51f",
      "tree": "c62905212c8c6373b2258c7f528398d3c831b075",
      "parents": [
        "145ca25eb2fbd20d4faf1bad4628c7650332058f"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: per device dirty threshold\n\nScale writeback cache per backing device, proportional to its writeout speed.\n\nBy decoupling the BDI dirty thresholds a number of problems we currently have\nwill go away, namely:\n\n - mutual interference starvation (for any number of BDIs);\n - deadlocks with stacked BDIs (loop, FUSE and local NFS mounts).\n\nIt might be that all dirty pages are for a single BDI while other BDIs are\nidling. By giving each BDI a \u0027fair\u0027 share of the dirty limit, each one can have\ndirty pages outstanding and make progress.\n\nA global threshold also creates a deadlock for stacked BDIs; when A writes to\nB, and A generates enough dirty pages to get throttled, B will never start\nwriteback until the dirty pages go away. Again, by giving each BDI its own\n\u0027independent\u0027 dirty limit, this problem is avoided.\n\nSo the problem is to determine how to distribute the total dirty limit across\nthe BDIs fairly and efficiently. A DBI that has a large dirty limit but does\nnot have any dirty pages outstanding is a waste.\n\nWhat is done is to keep a floating proportion between the DBIs based on\nwriteback completions. This way faster/more active devices get a larger share\nthan slower/idle devices.\n\n[akpm@linux-foundation.org: fix warnings]\n[hugh@veritas.com: Fix occasional hang when a task couldn\u0027t get out of balance_dirty_pages]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "69cb51d18c1ed593009d9a620cac49d0dcf15dc8",
      "tree": "f26a1245b638e7421a0afd93305fd1c556867d49",
      "parents": [
        "c9e51e4180696aa67915ec5665e4ec74125565de"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: count writeback pages per BDI\n\nCount per BDI writeback pages.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9e51e4180696aa67915ec5665e4ec74125565de",
      "tree": "d66e1427b16e56bc7da0dfb583a6d8edb55a2c3e",
      "parents": [
        "b2e8fb6efa209c82203c79b491b5bc952d44aa57"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: count reclaimable pages per BDI\n\nCount per BDI reclaimable pages; nr_reclaimable \u003d nr_dirty + nr_unstable.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37b07e4163f7306aa735a6e250e8d22293e5b8de",
      "tree": "5c9c1935253a39aa840a9923bf1c86620cb6f733",
      "parents": [
        "0e1e7c7a739562a321fda07c7cd2a97a7114f8f8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Tue Oct 16 01:25:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "memoryless nodes: fixup uses of node_online_map in generic code\n\nHere\u0027s a cut at fixing up uses of the online node map in generic code.\n\nmm/shmem.c:shmem_parse_mpol()\n\n\tEnsure nodelist is subset of nodes with memory.\n\tUse node_states[N_HIGH_MEMORY] as default for missing\n\tnodelist for interleave policy.\n\nmm/shmem.c:shmem_fill_super()\n\n\tinitialize policy_nodes to node_states[N_HIGH_MEMORY]\n\nmm/page-writeback.c:highmem_dirtyable_memory()\n\n\tsum over nodes with memory\n\nmm/page_alloc.c:zlc_setup()\n\n\tallowednodes - use nodes with memory.\n\nmm/page_alloc.c:default_zonelist_order()\n\n\taverage over nodes with memory.\n\nmm/page_alloc.c:find_next_best_node()\n\n\tskip nodes w/o memory.\n\tN_HIGH_MEMORY state mask may not be initialized at this time,\n\tunless we want to depend on early_calculate_totalpages() [see\n\tbelow].  Will ZONE_MOVABLE ever be configurable?\n\nmm/page_alloc.c:find_zone_movable_pfns_for_nodes()\n\n\tspread kernelcore over nodes with memory.\n\n\tThis required calling early_calculate_totalpages()\n\tunconditionally, and populating N_HIGH_MEMORY node\n\tstate therein from nodes in the early_node_map[].\n\tIf we can depend on this, we can eliminate the\n\tpopulation of N_HIGH_MEMORY mask from __build_all_zonelists()\n\tand use the N_HIGH_MEMORY mask in find_next_best_node().\n\nmm/mempolicy.c:mpol_check_policy()\n\n\tEnsure nodes specified for policy are subset of\n\tnodes with memory.\n\n[akpm@linux-foundation.org: fix warnings]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Shaohua Li \u003cshaohua.li@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": "001281881067a5998384c6669bc8dbbbab8456c4",
      "tree": "6229d16c737782a36795354b218c74d4d2749752",
      "parents": [
        "557ed1fa2620dc119adb86b34c614e152a629a80"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "mm: use lockless radix-tree probe\n\nProbing pages and radix_tree_tagged are lockless operations with the lockless\nradix-tree.  Convert these users to RCU locking rather than using tree_lock.\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": "a200ee182a016752464a12cb2e8762e48254bb09",
      "tree": "7b273f002625a4c368f7b20b144990f7f4f81df9",
      "parents": [
        "3eb215de26e6e94bf5fed9cb77230c383b30e53b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Mon Oct 08 18:54:37 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 08 12:58:14 2007 -0700"
      },
      "message": "mm: set_page_dirty_balance() vs -\u003epage_mkwrite()\n\nAll the current page_mkwrite() implementations also set the page dirty. Which\nresults in the set_page_dirty_balance() call to _not_ call balance, because the\npage is already found dirty.\n\nThis allows us to dirty a _lot_ of pages without ever hitting\nbalance_dirty_pages().  Not good (tm).\n\nForce a balance call if -\u003epage_mkwrite() was successful.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d688abf50bd5a30d2c44dea2a72dd59052cd3cce",
      "tree": "2f572d18af05969b2c882970cda4860be345bdfc",
      "parents": [
        "6819457d2cb7fe4fdb0fc3655b6b6dc71a86bee9"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Jul 19 01:49:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:52 2007 -0700"
      },
      "message": "move page writeback acounting out of macros\n\npage-writeback accounting is presently performed in the page-flags macros.\nThis is inconsistent and a bit ugly and makes it awkward to implement\nper-backing_dev under-writeback page accounting.\n\nSo move this accounting down to the callsite(s).\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe3cba17c49471e99d3421e675fc8b3deaaf0b70",
      "tree": "df696c4584c6db2e439f068d2474fcb946ca587d",
      "parents": [
        "d8983910a4045fa21022cfccf76ed13eb40fd7f5"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Thu Jul 19 01:48:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:44 2007 -0700"
      },
      "message": "mm: share PG_readahead and PG_reclaim\n\nShare the same page flag bit for PG_readahead and PG_reclaim.\n\nOne is used only on file reads, another is only for emergency writes.  One\nis used mostly for fresh/young pages, another is for old pages.\n\nCombinations of possible interactions are:\n\na) clear PG_reclaim \u003d\u003e implicit clear of PG_readahead\n\tit will delay an asynchronous readahead into a synchronous one\n\tit actually does _good_ for readahead:\n\t\tthe pages will be reclaimed soon, it\u0027s readahead thrashing!\n\t\tin this case, synchronous readahead makes more sense.\n\nb) clear PG_readahead \u003d\u003e implicit clear of PG_reclaim\n\tone(and only one) page will not be reclaimed in time\n\tit can be avoided by checking PageWriteback(page) in readahead first\n\nc) set PG_reclaim \u003d\u003e implicit set of PG_readahead\n\twill confuse readahead and make it restart the size rampup process\n\tit\u0027s a trivial problem, and can mostly be avoided by checking\n\tPageWriteback(page) first in readahead\n\nd) set PG_readahead \u003d\u003e implicit set of PG_reclaim\n\tPG_readahead will never be set on already cached pages.\n\tPG_reclaim will always be cleared on dirtying a page.\n\tso not a problem.\n\nIn summary,\n\ta)   we get better behavior\n\tb,d) possible interactions can be avoided\n\tc)   racy condition exists that might affect readahead, but the chance\n\t     is _really_ low, and the hurt on readahead is trivial.\n\nCompound pages also use PG_reclaim, but for now they do not interact with\nreclaim/readahead code.\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": "79352894b28550ee0eee919149f57626ec1b3572",
      "tree": "849e6aa148c69b9df3920199255ca14792eeffa2",
      "parents": [
        "83c54070ee1a2d05c89793884bea1a03f2851ed4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:47:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fix clear_page_dirty_for_io vs fault race\n\nFix msync data loss and (less importantly) dirty page accounting\ninaccuracies due to the race remaining in clear_page_dirty_for_io().\n\nThe deleted comment explains what the race was, and the added comments\nexplain how it is fixed.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "787d2214c19bcc9b6ac48af0ce098277a801eded",
      "tree": "a040604fdf9620a66dc83a0cde4f2140e2ec25b3",
      "parents": [
        "a1ed3dda0ad181532f1e0f0d548067fb9fdddac4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jul 17 04:03:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "fs: introduce some page/buffer invariants\n\nIt is a bug to set a page dirty if it is not uptodate unless it has\nbuffers.  If the page has buffers, then the page may be dirty (some buffers\ndirty) but not uptodate (some buffers not uptodate).  The exception to this\nrule is if the set_page_dirty caller is racing with truncate or invalidate.\n\nA buffer can not be set dirty if it is not uptodate.\n\nIf either of these situations occurs, it indicates there could be some data\nloss problem.  Some of these warnings could be a harmless one where the\npage or buffer is set uptodate immediately after it is dirtied, however we\nshould fix those up, and enforce this ordering.\n\nBring the order of operations for truncate into line with those of\ninvalidate.  This will prevent a page from being able to go !uptodate while\nwe\u0027re holding the tree_lock, which is probably a good thing anyway.\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": "3e733f071e16bdad13a75eedb102e8941b09927e",
      "tree": "4c3be61c45b6b7a5943b4680a27b42aacf951b00",
      "parents": [
        "97842216b8400fe9d1a20468959e2989180f8f79"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun Jul 15 23:41:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:47 2007 -0700"
      },
      "message": "dirty_writeback_centisecs_handler() cleanup\n\nRepair indenting bustage.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ea971801625184a91a6d80ea85e53875caa0bf5",
      "tree": "6f4144b7ba809fccfe6d75314df8c348596c9a01",
      "parents": [
        "e10cc1df1d2014f68a4bdcf73f6dd122c4561f94"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu May 10 22:22:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 11 08:29:35 2007 -0700"
      },
      "message": "consolidate generic_writepages and mpage_writepages\n\nClean up massive code duplication between mpage_writepages() and\ngeneric_writepages().\n\nThe new generic function, write_cache_pages() takes a function pointer\nargument, which will be called for each page to be written.\n\nMaybe cifs_writepages() too can use this infrastructure, but I\u0027m not\ntouching that with a ten-foot pole.\n\nThe upcoming page writeback support in fuse will also want this.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e9f45bd18191bbd05468b19b7064b8da8262aba",
      "tree": "06c790a9cb1afc83d170447a277e51f5a1a5f303",
      "parents": [
        "c83e44842074a87614c78eca70fa6467b0bc3c4a"
      ],
      "author": {
        "name": "Guillaume Chazarain",
        "email": "guichaz@yahoo.fr",
        "time": "Tue May 08 00:23:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "Factor outstanding I/O error handling\n\nCleanup: setting an outstanding error on a mapping was open coded too many\ntimes.  Factor it out in mapping_set_error().\n\nSigned-off-by: Guillaume Chazarain \u003cguichaz@yahoo.fr\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b4244647ceaad42ea6eb12899d58753d82b7727",
      "tree": "fabdd30f1484d7ccda1374fffb9231c39450efb0",
      "parents": [
        "476f35348eb8d2a827765992899fea78b7dcc46f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:48:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "Use ZVC counters to establish exact size of dirtyable pages\n\nWe can use the global ZVC counters to establish the exact size of the LRU\nand the free pages.  This allows a more accurate determination of the dirty\nratio.\n\nThis patch will fix the broken ratio calculations if large amounts of\nmemory are allocated to huge pags or other consumers that do not put the\npages on to the LRU.\n\nNotes:\n- I did not add NR_SLAB_RECLAIMABLE to the calculation of the\n  dirtyable pages. Those may be reclaimable but they are at this\n  point not dirtyable. If NR_SLAB_RECLAIMABLE would be considered\n  then a huge number of reclaimable pages would stop writeback\n  from occurring.\n\n- This patch used to be in mm as the last one in a series of patches.\n  It was removed when Linus updated the treatment of highmem because\n  there was a conflict. I updated the patch to follow Linus\u0027 approach.\n  This patch is neede to fulfill the claims made in the beginning of the\n  patchset that is now in Linus\u0027 tree.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07db59bd6b0f279c31044cba6787344f63be87ea",
      "tree": "692c90c6cc45de055bc59b12c2c953d462319831",
      "parents": [
        "de46c33745f5e2ad594c72f2cf5f490861b16ce1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 27 09:10:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Apr 27 09:10:47 2007 -0700"
      },
      "message": "Change default dirty-writeback limits\n\nDo this really early in the 2.6.22-rc series, so that we\u0027ll get\nfeedback.  And don\u0027t change by half measures.  Just cut the default\ndirty limit to a quarter of what it was, and see if anybody even\nnotices.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "232ea4d69d81169453344b7d05203425c88d973b",
      "tree": "00799a50022f97a93c0e7524752b817399955851",
      "parents": [
        "b1a316f6f9c54d668df4304ddf935595501ccb25"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Feb 28 20:13:21 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:38 2007 -0800"
      },
      "message": "[PATCH] throttle_vm_writeout(): don\u0027t loop on GFP_NOFS and GFP_NOIO allocations\n\nthrottle_vm_writeout() is designed to wait for the dirty levels to subside.\nBut if the caller holds IO or FS locks, we might be holding up that writeout.\n\nSo change it to take a single nap to give other devices a chance to clean some\nmemory, then return.\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Pete Zaitcev \u003czaitcev@redhat.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": "aa0f030374228407bc4e3f5482eeab787ba53c8a",
      "tree": "8a4274e38b710caf8dd9f4beff24a2ac2722b116",
      "parents": [
        "656dad312fb41ed95ef08325e9df9bece3aacbbb"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Feb 10 01:46:37 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 11:18:07 2007 -0800"
      },
      "message": "[PATCH] Change constant zero to NOTIFY_DONE in ratelimit_handler()\n\nChange a hard-coded constant 0 to the symbolic equivalent NOTIFY_DONE in\nthe ratelimit_handler() CPU notifier handler function.\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@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": "72fd4a35a824331d7a0f4168d7576502d95d34b3",
      "tree": "be27880bc36b7f62e8044a88b8744a35c5317714",
      "parents": [
        "262086cf5b5343c2b81c97b1c606058e921859df"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Sat Feb 10 01:45:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:32 2007 -0800"
      },
      "message": "[PATCH] Numerous fixes to kernel-doc info in source files.\n\nA variety of (mostly) innocuous fixes to the embedded kernel-doc content in\nsource files, including:\n\n  * make multi-line initial descriptions single line\n  * denote some function names, constants and structs as such\n  * change erroneous opening \u0027/*\u0027 to \u0027/**\u0027 in a few places\n  * reword some text for clarity\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "767193253bbac889e176f90b6f17b7015f986551",
      "tree": "a81c5c90d14c7892e6d7adb0432f4dff4ca3f906",
      "parents": [
        "bd8029b66069d29fd02c304599411ca9bb7fa38c"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Sat Feb 10 01:43:15 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:19 2007 -0800"
      },
      "message": "[PATCH] simplify shmem_aops.set_page_dirty() method\n\nshmem backed file does not have page writeback, nor it participates in\nbacking device\u0027s dirty or writeback accounting.  So using generic\n__set_page_dirty_nobuffers() for its .set_page_dirty aops method is a bit\noverkill.  It unnecessarily prolongs shm unmap latency.\n\nFor example, on a densely populated large shm segment (sevearl GBs), the\nunmapping operation becomes painfully long.  Because at unmap, kernel\ntransfers dirty bit in PTE into page struct and to the radix tree tag.  The\noperation of tagging the radix tree is particularly expensive because it\nhas to traverse the tree from the root to the leaf node on every dirty\npage.  What\u0027s bothering is that radix tree tag is used for page write back.\n However, shmem is memory backed and there is no page write back for such\nfile system.  And in the end, we spend all that time tagging radix tree and\nnone of that fancy tagging will be used.  So let\u0027s simplify it by introduce\na new aops __set_page_dirty_no_writeback and this will speed up shm unmap.\n\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc6e29da9162fa8fa2a9e798569c0f6e87975614",
      "tree": "9d1e9c8095ea4fbc7d528a63d4b21e32e44a70a9",
      "parents": [
        "5263bf65d6342e12ab716db8e529501670979321"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 29 16:37:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 29 16:37:38 2007 -0800"
      },
      "message": "Fix balance_dirty_page() calculations with CONFIG_HIGHMEM\n\nThis makes balance_dirty_page() always base its calculations on the\namount of non-highmem memory in the machine, rather than try to base it\non total memory and then falling back on non-highmem memory if the\nmapping it was writing wasn\u0027t highmem capable.\n\nThis not only fixes a situation where two different writers can have\nwildly different notions about what is a \"balanced\" dirty state, but it\nalso means that people with highmem machines don\u0027t run into an OOM\nsituation when regular memory fills up with dirty pages.\n\nWe used to try to handle the latter case by scaling down the dirty_ratio\nif the machine had a lot of highmem pages in page_writeback_init(), but\nit wasn\u0027t aggressive enough for some situations, and since basing the\ndirty ratio on highmem memory was broken in the first place, let\u0027s just\nstop doing so.\n\n(A variation of this theme fixed Justin Piszcz\u0027s OOM problem when\ncopying an 18GB file on a RAID setup).\n\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Justin Piszcz \u003cjpiszcz@lucidpixels.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7658cc289288b8ae7dd2c2224549a048431222b3",
      "tree": "bbd697764987e6eaf9cb8c49af3524d6a579dfdc",
      "parents": [
        "3bf8ba38f38d3647368e4edcf7d019f9f8d9184a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Fri Dec 29 10:00:58 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@macmini.osdl.org",
        "time": "Fri Dec 29 10:00:58 2006 -0800"
      },
      "message": "VM: Fix nasty and subtle race in shared mmap\u0027ed page writeback\n\nThe VM layer (on the face of it, fairly reasonably) expected that when\nit does a -\u003ewritepage() call to the filesystem, it would write out the\nfull page at that point in time.  Especially since it had earlier marked\nthe whole page dirty with \"set_page_dirty()\".\n\nBut that isn\u0027t actually the case: -\u003ewritepage() does not actually write\na page, it writes the parts of the page that have been explicitly marked\ndirty before, *and* that had not got written out for other reasons since\nthe last time we told it they were dirty.\n\nThat last caveat is the important one.\n\nWhich _most_ of the time ends up being the whole page (since we had\ncalled \"set_page_dirty()\" on the page earlier), but if the filesystem\nhad done any dirty flushing of its own (for example, to honor some\ninternal write ordering guarantees), it might end up doing only a\npartial page IO (or none at all) when -\u003ewritepage() is actually called.\n\nThat is the correct thing in general (since we actually often _want_\nonly the known-dirty parts of the page to be written out), but the\nshared dirty page handling had implicitly forgotten about these details,\nand had a number of cases where it was doing just the \"-\u003ewritepage()\"\npart, without telling the low-level filesystem that the whole page might\nhave been re-dirtied as part of being mapped writably into user space.\n\nSince most of the time the FS did actually write out the full page, we\ndidn\u0027t notice this for a loong time, and this needed some really odd\npatterns to trigger.  But it caused occasional corruption with rtorrent\nand with the Debian \"apt\" database, because both use shared mmaps to\nupdate the end result.\n\nThis fixes it. Finally. After way too much hair-pulling.\n\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Martin J. Bligh \u003cmbligh@google.com\u003e\nAcked-by: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nAcked-by: Martin Johansson \u003cmartin@fatbob.nu\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Andrei Popa \u003candrei.popa@i-neo.ro\u003e\nCc: High Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e,\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Segher Boessenkool \u003csegher@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Gordon Farquharson \u003cgordonfarquharson@gmail.com\u003e\nCc: Guillaume Chazarain \u003cguichaz@yahoo.fr\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Kenneth Cheng \u003ckenneth.w.chen@intel.com\u003e\nCc: Tobias Diedrich \u003cranma@tdiedrich.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fba2591bf4e418b6c3f9f8794c9dd8fe40ae7bd9",
      "tree": "d6909973e402b3171ee409f660b33df2fad029ba",
      "parents": [
        "46d2277c796f9f4937bfa668c40b2e3f43e93dd0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 20 13:46:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 09:19:57 2006 -0800"
      },
      "message": "VM: Remove \"clear_page_dirty()\" and \"test_clear_page_dirty()\" functions\n\nThey were horribly easy to mis-use because of their tempting naming, and\nthey also did way more than any users of them generally wanted them to\ndo.\n\nA dirty page can become clean under two circumstances:\n\n (a) when we write it out.  We have \"clear_page_dirty_for_io()\" for\n     this, and that function remains unchanged.\n\n     In the \"for IO\" case it is not sufficient to just clear the dirty\n     bit, you also have to mark the page as being under writeback etc.\n\n (b) when we actually remove a page due to it becoming inaccessible to\n     users, notably because it was truncate()\u0027d away or the file (or\n     metadata) no longer exists, and we thus want to cancel any\n     outstanding dirty state.\n\nFor the (b) case, we now introduce \"cancel_dirty_page()\", which only\ntouches the page state itself, and verifies that the page is not mapped\n(since cancelling writes on a mapped page would be actively wrong as it\nis still accessible to users).\n\nSome filesystems need to be fixed up for this: CIFS, FUSE, JFS,\nReiserFS, XFS all use the old confusing functions, and will be fixed\nseparately in subsequent commits (with some of them just removing the\noffending logic, and others using clear_page_dirty_for_io()).\n\nThis was confirmed by Martin Michlmayr to fix the apt database\ncorruption on ARM.\n\nCc: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Andrei Popa \u003candrei.popa@i-neo.ro\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Gordon Farquharson \u003cgordonfarquharson@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55e829af06681e5d731c03ba04febbd1c76ca293",
      "tree": "4304030be250d913f56696ffda8ae660fb17b110",
      "parents": [
        "8c08540f8755c451d8b96ea14cfe796bc3cd712d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting: write accounting\n\nAccounting writes is fairly simple: whenever a process flips a page from clean\nto dirty, we accuse it of having caused a write to underlying storage of\nPAGE_CACHE_SIZE bytes.\n\nThis may overestimate the amount of writing: the page-dirtying may cause only\none buffer_head\u0027s worth of writeout.  Fixing that is possible, but probably a\nbit messy and isn\u0027t obviously important.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8c08540f8755c451d8b96ea14cfe796bc3cd712d",
      "tree": "ca2ba9673ce1c2733c538012105681b238265e48",
      "parents": [
        "7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] clean up __set_page_dirty_nobuffers()\n\nSave a tabstop in __set_page_dirty_nobuffers() and __set_page_dirty_buffers()\nand a few other places.  No functional changes.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3fcfab16c5b86eaa3db3a9a31adba550c5b67141",
      "tree": "bd348fa081b8fbec2c79fbf8f173a306d70b2b2c",
      "parents": [
        "79e2de4bc53d7ca2a8eedee49e4a92479b4b530e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Oct 19 23:28:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:35 2006 -0700"
      },
      "message": "[PATCH] separate bdi congestion functions from queue congestion functions\n\nSeparate out the concept of \"queue congestion\" from \"backing-dev congestion\".\nCongestion is a backing-dev concept, not a queue concept.\n\nThe blk_* congestion functions are retained, as wrappers around the core\nbacking-dev congestion functions.\n\nThis proper layering is needed so that NFS can cleanly use the congestion\nfunctions, and so that CONFIG_BLOCK\u003dn actually links.\n\nCc: \"Thomas Maier\" \u003cbalagi@justmail.de\u003e\nCc: \"Jens Axboe\" \u003cjens.axboe@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f30c2269544bffc7bf1b0d7c0abe5be1be83b8cb",
      "tree": "2f6140d8a555af6a133690ed6b42599e78a43c54",
      "parents": [
        "670e9f34ee3c7e052514c85014d2fdd99b672cdc"
      ],
      "author": {
        "name": "Uwe Zeisberger",
        "email": "Uwe_Zeisberger@digi.com",
        "time": "Tue Oct 03 23:01:26 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 03 23:01:26 2006 +0200"
      },
      "message": "fix file specification in comments\n\nMany files include the filename at the beginning, serveral used a wrong one.\n\nSigned-off-by: Uwe Zeisberger \u003cUwe_Zeisberger@digi.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "9361401eb7619c033e2394e4f9f6d410d6719ac7",
      "tree": "04b94a71f2366988c17740d1c16cfbdec41d5d2e",
      "parents": [
        "d366e40a1cabd453be6e2609caa7e12f9ca17b1f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:45:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:31 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Make it possible to disable the block layer [try #6]\n\nMake it possible to disable the block layer.  Not all embedded devices require\nit, some can make do with just JFFS2, NFS, ramfs, etc - none of which require\nthe block layer to be present.\n\nThis patch does the following:\n\n (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev\n     support.\n\n (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls\n     an item that uses the block layer.  This includes:\n\n     (*) Block I/O tracing.\n\n     (*) Disk partition code.\n\n     (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.\n\n     (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the\n     \t block layer to do scheduling.  Some drivers that use SCSI facilities -\n     \t such as USB storage - end up disabled indirectly from this.\n\n     (*) Various block-based device drivers, such as IDE and the old CDROM\n     \t drivers.\n\n     (*) MTD blockdev handling and FTL.\n\n     (*) JFFS - which uses set_bdev_super(), something it could avoid doing by\n     \t taking a leaf out of JFFS2\u0027s book.\n\n (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and\n     linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,\n     however, still used in places, and so is still available.\n\n (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and\n     parts of linux/fs.h.\n\n (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.\n\n (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.\n\n (*) set_page_dirty() doesn\u0027t call __set_page_dirty_buffers() if CONFIG_BLOCK\n     is not enabled.\n\n (*) fs/no-block.c is created to hold out-of-line stubs and things that are\n     required when CONFIG_BLOCK is not set:\n\n     (*) Default blockdev file operations (to give error ENODEV on opening).\n\n (*) Makes some /proc changes:\n\n     (*) /proc/devices does not list any blockdevs.\n\n     (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.\n\n (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.\n\n (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if\n     given command other than Q_SYNC or if a special device is specified.\n\n (*) In init/do_mounts.c, no reference is made to the blockdev routines if\n     CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.\n\n (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return\n     error ENOSYS by way of cond_syscall if so).\n\n (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if\n     CONFIG_BLOCK is not set, since they can\u0027t then happen.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "811d736f9e8013966e1a5a930c0db09508bdbb15",
      "tree": "566225f7991f987007ccc2e8d99255f21041b6cb",
      "parents": [
        "7b0de42d7c5a471741ede4e71727d88000e6ea59"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:06:09 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:26 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Dissociate generic_writepages() from mpage stuff [try #6]\n\nDissociate the generic_writepages() function from the mpage stuff, moving its\ndeclaration to linux/mm.h and actually emitting a full implementation into\nmm/page-writeback.c.\n\nThe implementation is a partial duplicate of mpage_writepages() with all BIO\nreferences removed.\n\nIt is used by NFS to do writeback.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cf9a2ae8d49948f861b56e5333530e491a9da190",
      "tree": "21f0b0d781b3e60cc60464d39b6d95681201b37e",
      "parents": [
        "4090959aee403817ff386415f9bc602c1a0882ef"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:05:54 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:31:19 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move functions out of buffer code [try #6]\n\nMove some functions out of the buffering code that aren\u0027t strictly buffering\nspecific.  This is a precursor to being able to disable the block layer.\n\n (*) Moved some stuff out of fs/buffer.c:\n\n     (*) The file sync and general sync stuff moved to fs/sync.c.\n\n     (*) The superblock sync stuff moved to fs/super.c.\n\n     (*) do_invalidatepage() moved to mm/truncate.c.\n\n     (*) try_to_release_page() moved to mm/filemap.c.\n\n (*) Moved some related declarations between header files:\n\n     (*) declarations for do_invalidatepage() and try_to_release_page() moved\n     \t to linux/mm.h.\n\n     (*) __set_page_dirty_buffers() moved to linux/buffer_head.h.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "2d1d43f6a43b703587e759145f69467e7c6553a7",
      "tree": "8ceb1c78a54c6f44f177779b2b7bdbbc9e03048a",
      "parents": [
        "40c99aae23529f3d069ae08836ae46fadb3fd2bd"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Fri Sep 29 02:01:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:22 2006 -0700"
      },
      "message": "[PATCH] call mm/page-writeback.c:set_ratelimit() when new pages are hot-added\n\nratelimit_pages in page-writeback.c is recalculated (in set_ratelimit())\nevery time a CPU is hot-added/removed.  But this value is not recalculated\nwhen new pages are hot-added.\n\nThis patch fixes that problem by calling set_ratelimit() when new pages\nare hot-added.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "40c99aae23529f3d069ae08836ae46fadb3fd2bd",
      "tree": "5172ca1dca669de3ddc2a6aacc79e41667204aea",
      "parents": [
        "153dcc54df826d2f8413c026313cba673c6bcc5b"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Fri Sep 29 02:01:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:22 2006 -0700"
      },
      "message": "[PATCH] remove static variable mm/page-writeback.c:total_pages\n\npage-writeback.c has a static local variable \"total_pages\", which is the\ntotal number of pages in the system.\n\nThere is a global variable \"vm_total_pages\", which is the total number of\npages the VM controls.\n\nBoth are assigned from the return value of nr_free_pagecache_pages().\n\nThis patch removes the local variable and uses the global variable in that\nplace.\n\nOne more issue with the local static variable \"total_pages\" is that it is\nnot updated when new pages are hot-added.  Since vm_total_pages is updated\nwhen new pages are hot-added, this patch fixes that problem too.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "db37648cd6ce9b828abd6d49aa3d269926ee7b7d",
      "tree": "a0155c7897f4706386d10c8718f98687bc357c82",
      "parents": [
        "28e4d965e6131ace1e813e93aebca89ac6b82dc1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Sep 25 23:31:24 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:48 2006 -0700"
      },
      "message": "[PATCH] mm: non syncing lock_page()\n\nlock_page needs the caller to have a reference on the page-\u003emapping inode\ndue to sync_page, ergo set_page_dirty_lock is obviously buggy according to\nits comments.\n\nSolve it by introducing a new lock_page_nosync which does not do a sync_page.\n\nakpm: unpleasant solution to an unpleasant problem.  If it goes wrong it could\ncause great slowdowns while the lock_page() caller waits for kblockd to\nperform the unplug.  And if a filesystem has special sync_page() requirements\n(none presently do), permanent hangs are possible.\n\notoh, set_page_dirty_lock() is usually (always?) called against userspace\npages.  They are always up-to-date, so there shouldn\u0027t be any pending read I/O\nagainst these pages.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "edc79b2a46ed854595e40edcf3f8b37f9f14aa3f",
      "tree": "c1120bebede9660ab00f9439aa7a84ab9434ac38",
      "parents": [
        "d08b3851da41d0ee60851f2c75b118e1f7a5fc89"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: balance dirty pages\n\nNow that we can detect writers of shared mappings, throttle them.  Avoids OOM\nby surprise.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d08b3851da41d0ee60851f2c75b118e1f7a5fc89",
      "tree": "a01f6930a1387e8f66607e2fe16c62bb7044353b",
      "parents": [
        "725d704ecaca4a43f067092c140d4f3271cf2856"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Sep 25 23:30:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] mm: tracking shared dirty pages\n\nTracking of dirty pages in shared writeable mmap()s.\n\nThe idea is simple: write protect clean shared writeable pages, catch the\nwrite-fault, make writeable and set dirty.  On page write-back clean all the\nPTE dirty bits and write protect them once again.\n\nThe implementation is a tad harder, mainly because the default\nbacking_dev_info capabilities were too loosely maintained.  Hence it is not\nenough to test the backing_dev_info for cap_account_dirty.\n\nThe current heuristic is as follows, a VMA is eligible when:\n - its shared writeable\n    (vm_flags \u0026 (VM_WRITE|VM_SHARED)) \u003d\u003d (VM_WRITE|VM_SHARED)\n - it is not a \u0027special\u0027 mapping\n    (vm_flags \u0026 (VM_PFNMAP|VM_INSERTPAGE)) \u003d\u003d 0\n - the backing_dev_info is cap_account_dirty\n    mapping_cap_account_dirty(vma-\u003evm_file-\u003ef_mapping)\n - f_op-\u003emmap() didn\u0027t change the default page protection\n\nPage from remap_pfn_range() are explicitly excluded because their COW\nsemantics are already horrid enough (see vm_normal_page() in do_wp_page()) and\nbecause they don\u0027t have a backing store anyway.\n\nmprotect() is taught about the new behaviour as well.  However it overrides\nthe last condition.\n\nCleaning the pages on write-back is done with page_mkclean() a new rmap call.\nIt can be called on any page, but is currently only implemented for mapped\npages, if the page is found the be of a VMA that accounts dirty pages it will\nalso wrprotect the PTE.\n\nFinally, in fs/buffers.c:try_to_free_buffers(); remove clear_page_dirty() from\nunder -\u003eprivate_lock.  This seems to be safe, since -\u003eprivate_lock is used to\nserialize access to the buffers, not the page itself.  This is needed because\nclear_page_dirty() will call into page_mkclean() and would thereby violate\nlocking order.\n\n[dhowells@redhat.com: Provide a page_mkclean() implementation for NOMMU]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "275a082fe9308e710324e26ccb5363c53d8fd45f",
      "tree": "e97df6e45f98ea2827f71dc749f8cd47f3f353cc",
      "parents": [
        "94a6d75320b3681e6e728b70e18bd186cb55e682"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Aug 22 20:06:24 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:54 2006 -0400"
      },
      "message": "Add a real API for dealing with blk_congestion_wait()\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c24f21bda88df4574de0a32a2a1558a23adae1b8",
      "tree": "1cf2f0b69cc691c2e1a9ed569a7a98179cc9683e",
      "parents": [
        "d2c5e30c9a1420902262aa923794d2ae4e0bc391"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: remove useless struct wbs\n\nRemove writeback state\n\nWe can remove some functions now that were needed to calculate the page state\nfor writeback control since these statistics are now directly available.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd39fc8561be33065306bdac0e30414e1e8ac8e1",
      "tree": "ae0740716eed3f850a8f7232c61caebe360bb5ae",
      "parents": [
        "ce866b34ae1b7f1ce60234cf65855886ac7e7d30"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_unstable to per zone counter\n\nConversion of nr_unstable to a per zone counter\n\nWe need to do some special modifications to the nfs code since there are\nmultiple cases of disposition and we need to have a page ref for proper\naccounting.\n\nThis converts the last critical page state of the VM and therefore we need to\nremove several functions that were depending on GET_PAGE_STATE_LAST in order\nto make the kernel compile again.  We are only left with event type counters\nin page state.\n\n[akpm@osdl.org: bugfixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ce866b34ae1b7f1ce60234cf65855886ac7e7d30",
      "tree": "e9a2664f0abc5221b9a92e1417d8e02b94a634c4",
      "parents": [
        "b1e7a8fd854d2f895730e82137400012b509650e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_writeback to per zone counter\n\nConversion of nr_writeback to per zone counter.\n\nThis removes the last page_state counter from arch/i386/mm/pgtable.c so we\ndrop the page_state from there.\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b1e7a8fd854d2f895730e82137400012b509650e",
      "tree": "9fba87ff6b0146ebd4ee5bc7d5f0c8b037dbb3ad",
      "parents": [
        "df849a1529c106f7460e51479ca78fe07b07dc8c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_dirty to per zone counter\n\nThis makes nr_dirty a per zone counter.  Looping over all processors is\navoided during writeback state determination.\n\nThe counter aggregation for nr_dirty had to be undone in the NFS layer since\nwe summed up the page counts from multiple zones.  Someone more familiar with\nNFS should probably review what I have done.\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f3dbd34460ff54962d3e3244b6bcb7f5295356e6",
      "tree": "91caae2b90d684a7640b5da451a9a2ff8a5c8fb8",
      "parents": [
        "bf02cf4b6cf931d060ad5c6ce9b960af6faefd2d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: split NR_ANON_PAGES off from NR_FILE_MAPPED\n\nThe current NR_FILE_MAPPED is used by zone reclaim and the dirty load\ncalculation as the number of mapped pagecache pages.  However, that is not\ntrue.  NR_FILE_MAPPED includes the mapped anonymous pages.  This patch\nseparates those and therefore allows an accurate tracking of the anonymous\npages per zone.\n\nIt then becomes possible to determine the number of unmapped pages per zone\nand we can avoid scanning for unmapped pages if there are none.\n\nAlso it may now be possible to determine the mapped/unmapped ratio in\nget_dirty_limit.  Isnt the number of anonymous pages irrelevant in that\ncalculation?\n\nNote that this will change the meaning of the number of mapped pages reported\nin /proc/vmstat /proc/meminfo and in the per node statistics.  This may affect\nuser space tools that monitor these counters!  NR_FILE_MAPPED works like\nNR_FILE_DIRTY.  It is only valid for pagecache pages.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "65ba55f500a37272985d071c9bbb35256a2f7c14",
      "tree": "e7735326ef2d2dca9d00a6c5ae47e9eb03c7834f",
      "parents": [
        "2244b95a7bcf8d24196f8a3a44187ba5dfff754c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:34 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: convert nr_mapped to per zone counter\n\nnr_mapped is important because it allows a determination of how many pages of\na zone are not mapped, which would allow a more efficient means of determining\nwhen we need to reclaim memory in a zone.\n\nWe take the nr_mapped field out of the page state structure and define a new\nper zone counter named NR_FILE_MAPPED (the anonymous pages will be split off\nfrom NR_MAPPED in the next patch).\n\nWe replace the use of nr_mapped in various kernel locations.  This avoids the\nlooping over all processors in try_to_free_pages(), writeback, reclaim (swap +\nzone reclaim).\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "26c2143b63b8078d08d562733716de142927e17a",
      "tree": "6a2add2bca5bffbd33a0465fd934fffa34a695e9",
      "parents": [
        "74b85f3790aa2550c617fe14439482e13e615fa0"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Jun 27 02:54:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:41 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: make cpu_notifier related notifier calls __cpuinit only\n\nMake notifier_calls associated with cpu_notifier as __cpuinit.\n\n__cpuinit makes sure that the function is init time only unless\nCONFIG_HOTPLUG_CPU is defined.\n\n[akpm@osdl.org: section fix]\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74b85f3790aa2550c617fe14439482e13e615fa0",
      "tree": "125e9c503d483c304e111ca825358bd81e0610cd",
      "parents": [
        "65edc68c345cbe21d0b0375c3452a3ed5e322868"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Tue Jun 27 02:54:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jun 27 17:32:41 2006 -0700"
      },
      "message": "[PATCH] cpu hotplug: make cpu_notifier related notifier blocks __cpuinit only\n\nMake notifier_blocks associated with cpu_notifier as __cpuinitdata.\n\n__cpuinitdata makes sure that the data is init time only unless\nCONFIG_HOTPLUG_CPU is defined.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nCc: Ashok Raj \u003cashok.raj@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "111ebb6e6f7bd7de6d722c5848e95621f43700d9",
      "tree": "bb00b13001db9be201e9b6d31468a79f4d1240bf",
      "parents": [
        "4c91c3648c620003cb7b21b8858f36cd6132e168"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Jun 23 02:03:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:49 2006 -0700"
      },
      "message": "[PATCH] writeback: fix range handling\n\nWhen a writeback_control\u0027s `start\u0027 and `end\u0027 fields are used to\nindicate a one-byte-range starting at file offset zero, the required\nvalues of .start\u003d0,.end\u003d0 mean that the -\u003ewritepages() implementation\nhas no way of telling that it is being asked to perform a range\nrequest.  Because we\u0027re currently overloading (start \u003d\u003d 0 \u0026\u0026 end \u003d\u003d 0)\nto mean \"this is not a write-a-range request\".\n\nTo make all this sane, the patch changes range of writeback_control.\n\nSo caller does: If it is calling -\u003ewritepages() to write pages, it\nsets range (range_start/end or range_cyclic) always.\n\nAnd if range_cyclic is true, -\u003ewritepages() thinks the range is\ncyclic, otherwise it just uses range_start and range_end.\n\nThis patch does,\n\n    - Add LLONG_MAX, LLONG_MIN, ULLONG_MAX to include/linux/kernel.h\n      -1 is usually ok for range_end (type is long long). But, if someone did,\n\n\t\trange_end +\u003d val;\t\trange_end is \"val - 1\"\n\t\tu64val \u003d range_end \u003e\u003e bits;\tu64val is \"~(0ULL)\"\n\n      or something, they are wrong. So, this adds LLONG_MAX to avoid nasty\n      things, and uses LLONG_MAX for range_end.\n\n    - All callers of -\u003ewritepages() sets range_start/end or range_cyclic.\n\n    - Fix updates of -\u003ewriteback_index. It seems already bit strange.\n      If it starts at 0 and ended by check of nr_to_write, this last\n      index may reduce chance to scan end of file.  So, this updates\n      -\u003ewriteback_index only if range_cyclic is true or whole-file is\n      scanned.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fd5403c79bc21819f6e0c40ba098cea8b6a418bd",
      "tree": "d63e61d010e79c82042defef4ba983b759240d2d",
      "parents": [
        "7551d9a20b3cfbac9f8a28b7d909c4b15a94924f"
      ],
      "author": {
        "name": "Coywolf Qi Hunt",
        "email": "coywolf@gmail.com",
        "time": "Mon Apr 10 22:54:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Apr 11 06:18:46 2006 -0700"
      },
      "message": "[PATCH] page-writeback comment fixes\n\nSigned-off-by: Coywolf Qi Hunt \u003cqiyong@fc-cn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a580290c3e64bb695158a090d02d1232d9609311",
      "tree": "70f29239b9a206a9afb77ddff35fc47b5b248866",
      "parents": [
        "5d9428de1a9785f10a4339f80b717be665ba51c7"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun Apr 02 13:59:55 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Apr 02 13:59:55 2006 +0200"
      },
      "message": "Documentation: fix minor kernel-doc warnings\n\nThis patch updates the comments to match the actual code.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "4741c9fd36b3bcadd37238321c469049da94a4b9",
      "tree": "4b3031b04cdbf2d3c5a4fcc1965ed857f1cf0ce4",
      "parents": [
        "fa5a734e406b53761fcc5ee22366006f71112c2d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Mar 24 03:18:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:26 2006 -0800"
      },
      "message": "[PATCH] set_page_dirty() return value fixes\n\nWe need set_page_dirty() to return true if it actually transitioned the page\nfrom a clean to dirty state.  This wasn\u0027t right in a couple of places.  Do a\nkernel-wide audit, fix things up.\n\nThis leaves open the possibility of returning a negative errno from\nset_page_dirty() sometime in the future.  But we don\u0027t do that at present.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa5a734e406b53761fcc5ee22366006f71112c2d",
      "tree": "003a238b9207e38f747bfb119a30fb52f1cd5ae9",
      "parents": [
        "8a14342683b1e3adcf5f78660a42fcbd95b44a35"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Mar 24 03:18:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:26 2006 -0800"
      },
      "message": "[PATCH] balance_dirty_pages_ratelimited: take nr_pages arg\n\nModify balance_dirty_pages_ratelimited() so that it can take a\nnumber-of-pages-which-I-just-dirtied argument.  For msync().\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ed5b43f15a8e86e3ae939b98bc161ee973ecedf2",
      "tree": "dcd5bc0b5817d6452b0897a08293317f470f4db9",
      "parents": [
        "f6ef943813ac3085ece7252ea101d663581219f6"
      ],
      "author": {
        "name": "Bart Samwel",
        "email": "bart@samwel.tk",
        "time": "Fri Mar 24 03:15:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:20 2006 -0800"
      },
      "message": "[PATCH] Represent laptop_mode as jiffies internally\n\nMake that the internal value for /proc/sys/vm/laptop_mode is stored as\njiffies instead of seconds.  Let the sysctl interface do the conversions,\ninstead of doing on-the-fly conversions every time the value is used.\n\nAdd a description of the fact that laptop_mode doubles as a flag and a\ntimeout to the comment above the laptop_mode variable.\n\nSigned-off-by: Bart Samwel \u003cbart@samwel.tk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f6ef943813ac3085ece7252ea101d663581219f6",
      "tree": "e32d3e57ba6ae235ec1f510b16d77fe9bfa8f96e",
      "parents": [
        "36f574135e36b86bb6ae794bf1d0fce3efa5601f"
      ],
      "author": {
        "name": "Bart Samwel",
        "email": "bart@samwel.tk",
        "time": "Fri Mar 24 03:15:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:20 2006 -0800"
      },
      "message": "[PATCH] Represent dirty_*_centisecs as jiffies internally\n\nMake that the internal values for:\n\n/proc/sys/vm/dirty_writeback_centisecs\n/proc/sys/vm/dirty_expire_centisecs\n\nare stored as jiffies instead of centiseconds.  Let the sysctl interface do\nthe conversions with full precision using clock_t_to_jiffies, instead of\ndoing overflow-sensitive on-the-fly conversions every time the values are\nused.\n\nCons: apparent precision loss if HZ is not a multiple of 100, because of\nconversion back and forth.  This is a common problem for all sysctl values\nthat use proc_dointvec_userhz_jiffies.  (There is only one other in-tree\nuse, in net/core/neighbour.c.)\n\nSigned-off-by: Bart Samwel \u003cbart@samwel.tk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e236a166b2bc437769a9b8b5d19186a3761bde48",
      "tree": "326c45b5592650dc28f0ece22e8d9b5cd810a09d",
      "parents": [
        "c2aeacd48ca2418fbac985a58d2200c263444d65"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Jan 18 17:42:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:17 2006 -0800"
      },
      "message": "[PATCH] mm: dirty_exceeded speedup\n\nRavikiran reports that this variable is bouncing all around nodes on NUMA\nmachines, causing measurable performance problems.  Fix that up by only\nwriting to it when it actually changed.\n\nAnd put it in a new cacheline to prevent it sharing with other things (this\nhappened).\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22905f775dd6a8b73be99826dcad07ceec00244b",
      "tree": "960c0ad3d10fa208a31b78256788f332e5ebdd48",
      "parents": [
        "d99cf9d679a520d67f81d805b7cb91c68e1847f0"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Nov 16 15:07:01 2005 -0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 06 14:58:38 2006 -0500"
      },
      "message": "identify multipage -\u003ewritepages() calls\n\n NFS needs to be able to distinguish between single-page -\u003ewritepage() calls and\n multipage -\u003ewritepages() calls.\n\n For the single-page writepage calls NFS can kick off the I/O within the\n context of -\u003ewritepage().\n\n For multipage -\u003ewritepages calls, nfs_writepage() will leave the I/O pending\n and nfs_writepages() will kick off the I/O when it all has been queued up\n within NFS.\n\n Cc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\n Signed-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n Signed-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "58bb01a9cd72eebf60d00c57b948a76aa7b85727",
      "tree": "556a2185831feae57684f9c92f011a559420dab7",
      "parents": [
        "996417d2c4eb583e94553e4ede58974e0da1c38e"
      ],
      "author": {
        "name": "Hans Reiser",
        "email": "reiser@namesys.com",
        "time": "Fri Nov 18 01:10:53 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Nov 18 07:49:45 2005 -0800"
      },
      "message": "[PATCH] re-export clear_page_dirty_for_io()\n\n2.6.14 has this exported, and reiser4 (at least) uses it.  Put things back\nthe way they were.\n\nSigned-off-by: Vladimir V. Saveliev \u003cvs@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "e6a7e0e7cee3d4bc9a9d2f82ef2f9de4687a5656"
}
