)]}'
{
  "log": [
    {
      "commit": "df96e96f76571c30d903829a7b2ab2b421028790",
      "tree": "d3cc536a9aea6f99228789fe92ba81b195e8049c",
      "parents": [
        "c2c4986eddaa7dc3d036cb2bfa5c8c5f1f2492a0"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:01:54 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:01:54 2010 +0200"
      },
      "message": "writeback: fix mixed up arguments to bdi_start_writeback()\n\nThe laptop mode timer had the nr_pages and sb_locked arguments\nmixed up.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c2c4986eddaa7dc3d036cb2bfa5c8c5f1f2492a0",
      "tree": "4787499c06028f73c770daadae772c9af7c3499c",
      "parents": [
        "b403a98e260f3a8c7c33f58a07c7ae549852170f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 20 09:18:47 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:01:03 2010 +0200"
      },
      "message": "writeback: fix problem with !CONFIG_BLOCK compilation\n\nWhen CONFIG_BLOCK isn\u0027t enabled:\n\nmm/page-writeback.c: In function \u0027laptop_mode_timer_fn\u0027:\nmm/page-writeback.c:708: error: dereferencing pointer to incomplete type\nmm/page-writeback.c:709: error: dereferencing pointer to incomplete type\n\nFix this by essentially eliminating the laptop sync handlers when\nCONFIG_BLOCK isn\u0027t set, as most are only used from the block layer code.\nThe exception is laptop_sync_completion() which is used from sys_sync(),\nmake that an empty declaration in that case.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6423104b6a1e6f0c18be60e8c33f02d263331d5e",
      "tree": "e22957400e9679bf82b62e03d6bd831181053945",
      "parents": [
        "f9eadbbd424c083b8005c7b738f644611b9ef489"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:00:35 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 20:00:35 2010 +0200"
      },
      "message": "writeback: fixups for !dirty_writeback_centisecs\n\nCommit 69b62d01 fixed up most of the places where we would enter\nbusy schedule() spins when disabling the periodic background\nwriteback. This fixes up the sb timer so that it doesn\u0027t get\nhammered on with the delay disabled, and ensures that it gets\nrearmed if needed when /proc/sys/vm/dirty_writeback_centisecs\ngets modified.\n\nbdi_forker_task() also needs to check for !dirty_writeback_centisecs\nand use schedule() appropriately, fix that up too.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e913fc825dc685a444cb4c1d0f9d32f372f59861",
      "tree": "e470697e43ffe4028ac81c17d3ef90ee9f30bcfb",
      "parents": [
        "69b62d01ec44fe0d505d89917392347732135a4d"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 17 12:55:07 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon May 17 12:55:07 2010 +0200"
      },
      "message": "writeback: fix WB_SYNC_NONE writeback from umount\n\nWhen umount calls sync_filesystem(), we first do a WB_SYNC_NONE\nwriteback to kick off writeback of pending dirty inodes, then follow\nthat up with a WB_SYNC_ALL to wait for it. Since umount already holds\nthe sb s_umount mutex, WB_SYNC_NONE ends up doing nothing and all\nwriteback happens as WB_SYNC_ALL. This can greatly slow down umount,\nsince WB_SYNC_ALL writeback is a data integrity operation and thus\na bigger hammer than simple WB_SYNC_NONE. For barrier aware file systems\nit\u0027s a lot slower.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "31373d09da5b7fe21fe6f781e92bd534a3495f00",
      "tree": "38cd9896cfc6ce106a03431658a9b98a09129034",
      "parents": [
        "9195291e5f05e01d67f9a09c756b8aca8f009089"
      ],
      "author": {
        "name": "Matthew Garrett",
        "email": "mjg@redhat.com",
        "time": "Tue Apr 06 14:25:14 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 06 14:25:14 2010 +0200"
      },
      "message": "laptop-mode: Make flushes per-device\n\nOne of the features of laptop-mode is that it forces a writeout of dirty\npages if something else triggers a physical read or write from a device.\nThe current implementation flushes pages on all devices, rather than only\nthe one that triggered the flush. This patch alters the behaviour so that\nonly the recently accessed block device is flushed, preventing other\ndisks being spun up for no terribly good reason.\n\nSigned-off-by: Matthew Garrett \u003cmjg@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "0d99519efef15fd0cf84a849492c7b1deee1e4b7",
      "tree": "d0f9d922ef73f6b9c4529826878f3cc5567848fd",
      "parents": [
        "b17621fed6aa039387e35f9b4d34d98f213e5673"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@gmail.com",
        "time": "Thu Dec 03 13:54:25 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Dec 03 13:54:25 2009 +0100"
      },
      "message": "writeback: remove unused nonblocking and congestion checks\n\n- no one is calling wb_writeback and write_cache_pages with\n  wbc.nonblocking\u003d1 any more\n- lumpy pageout will want to do nonblocking writeback without the\n  congestion wait\n\nSo remove the congestion checks as suggested by Chris.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d25105e8911bff1dbd68e387f12901c5b1a15fe8",
      "tree": "bcb94e898b9f3b0322db74473e4dd319a16308e2",
      "parents": [
        "8c279598585e4992a41016bb973993ed15888cb3"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Fri Oct 09 12:40:42 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Oct 09 12:40:42 2009 +0200"
      },
      "message": "writeback: account IO throttling wait as iowait\n\nIt makes sense to do IOWAIT when someone is blocked\ndue to IO throttle, as suggested by Kame and Peter.\n\nThere is an old comment for not doing IOWAIT on throttle,\nhowever it has been mismatching the code for a long time.\n\nIf we stop accounting IOWAIT for 2.6.32, it could be an\nundesirable behavior change. So restore the io_schedule.\n\nCC: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a72bfd4dea053bb8e2233902c3f1893ef5485802",
      "tree": "1246fc000adfee6d2874b9324eaf7383ad4413bb",
      "parents": [
        "6d7f18f6ea3a13af95bdf507fc54d42b165e1712"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Sep 26 00:07:46 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sat Sep 26 00:10:40 2009 +0200"
      },
      "message": "writeback: pass in super_block to bdi_start_writeback()\n\nSometimes we only want to write pages from a specific super_block,\nso allow that to be passed in.\n\nThis fixes a problem with commit 56a131dcf7ed36c3c6e36bea448b674ea85ed5bb\ncausing writeback on all super_blocks on a bdi, where we only really\nwant to sync a specific sb from writeback_inodes_sb().\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6d7f18f6ea3a13af95bdf507fc54d42b165e1712",
      "tree": "8f6f3a6d46835aa767823fa7049609408a87afc2",
      "parents": [
        "53cddfcc0e760d2b364878b6dadbd0c6d087cfae",
        "56a131dcf7ed36c3c6e36bea448b674ea85ed5bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 25 09:27:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 25 09:27:30 2009 -0700"
      },
      "message": "Merge branch \u0027writeback\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027writeback\u0027 of git://git.kernel.dk/linux-2.6-block:\n  writeback: writeback_inodes_sb() should use bdi_start_writeback()\n  writeback: don\u0027t delay inodes redirtied by a fast dirtier\n  writeback: make the super_block pinning more efficient\n  writeback: don\u0027t resort for a single super_block in move_expired_inodes()\n  writeback: move inodes from one super_block together\n  writeback: get rid to incorrect references to pdflush in comments\n  writeback: improve readability of the wb_writeback() continue/break logic\n  writeback: cleanup writeback_single_inode()\n  writeback: kupdate writeback shall not stop when more io is possible\n  writeback: stop background writeback when below background threshold\n  writeback: balance_dirty_pages() shall write more than dirtied pages\n  fs: Fix busyloop in wb_writeback()\n"
    },
    {
      "commit": "5b0830cb9085f4b69f9d57d7f3aaff322ffbec26",
      "tree": "10040eb359269d4cd05487790b758144a69e8e39",
      "parents": [
        "71fd05a887e0f3f6bfff76ff81b33776177d0606"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 23 19:37:09 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 25 18:08:25 2009 +0200"
      },
      "message": "writeback: get rid to incorrect references to pdflush in comments\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d3ddec7635b6fb37cb49e3553bdeea59642be653",
      "tree": "662a1ea9c0eac6aa9bb07d4f67b6aad84709600c",
      "parents": [
        "3a2e9a5a2afc1a2d2c548b8987f133235cebe933"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 23 20:33:40 2009 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 25 18:08:24 2009 +0200"
      },
      "message": "writeback: stop background writeback when below background threshold\n\nTreat bdi_start_writeback(0) as a special request to do background write,\nand stop such work when we are below the background dirty threshold.\n\nAlso simplify the (nr_pages \u003c\u003d 0) checks. Since we already pass in\nnr_pages\u003dLONG_MAX for WB_SYNC_ALL and background writes, we don\u0027t\nneed to worry about it being decreased to zero.\n\nReported-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nCC: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3a2e9a5a2afc1a2d2c548b8987f133235cebe933",
      "tree": "cb05d2873b2701ded758a7087de5af2932a97736",
      "parents": [
        "a5989bdc981ec85e0734ac22519cc0b780813d7b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 23 21:56:00 2009 +0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 25 18:08:24 2009 +0200"
      },
      "message": "writeback: balance_dirty_pages() shall write more than dirtied pages\n\nSome filesystem may choose to write much more than ratelimit_pages\nbefore calling balance_dirty_pages_ratelimited_nr(). So it is safer to\ndetermine number to write based on real number of dirtied pages.\n\nOtherwise it is possible that\n  loop {\n    btrfs_file_write():     dirty 1024 pages\n    balance_dirty_pages():  write up to 48 pages (\u003d ratelimit_pages * 1.5)\n  }\nin which the writeback rate cannot keep up with dirty rate, and the\ndirty pages go all the way beyond dirty_thresh.\n\nThe increased write_chunk may make the dirtier more bumpy.\nSo filesystems shall be take care not to dirty too much at\na time (eg. \u003e 4MB) without checking the ratelimit.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38",
      "tree": "121df3bfffc7853ac6d2c514ad514d4a748a0933",
      "parents": [
        "c0d0787b6d47d9f4d5e8bd321921104e854a9135"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "sysctl: remove \"struct file *\" argument of -\u003eproc_handler\n\nIt\u0027s unused.\n\nIt isn\u0027t needed -- read or write flag is already passed and sysctl\nshouldn\u0027t care about the rest.\n\nIt _was_ used in two places at arch/frv for some reason.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "adea02a1bea71a508da32c04d715485a1fe62029",
      "tree": "c78742bbab36bf3b8d20f84b4dc6dc6585bb7cb4",
      "parents": [
        "55c37a840d9ec0ebed5c944355156d490b1ad5d1"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Sep 21 17:01:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "mm: count only reclaimable lru pages\n\nglobal_lru_pages() / zone_lru_pages() can be used in two ways:\n- to estimate max reclaimable pages in determine_dirtyable_memory()\n- to calculate the slab scan ratio\n\nWhen swap is full or not present, the anon lru lists are not reclaimable\nand also won\u0027t be scanned.  So the anon pages shall not be counted in both\nusage scenarios.  Also rename to _reclaimable_pages: now they are counting\nthe possibly reclaimable lru pages.\n\nIt can greatly (and correctly) increase the slab scan rate under high\nmemory pressure (when most file pages have been reclaimed and swap is\nfull/absent), thus reduce false OOM kills.\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Li, Ming Chun\" \u003cmacli@brc.ubc.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87c6a9b253520b66e7f5e8f67a37a701eaa51cee",
      "tree": "a3778632eabc961ce3b8c32ecfeeb48383cf78e0",
      "parents": [
        "3542a5c0de3d5b33227214a692bf9b12e249078e"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 17 19:59:14 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 21 15:40:33 2009 +0200"
      },
      "message": "writeback: make balance_dirty_pages() gradually back more off\n\nCurrently it just sleeps for a very short time, just 1 jiffy. If\nwe keep looping in there, continually delay for a little longer\nof up to 100msec in total. That was the old limit for congestion\nwait.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "3542a5c0de3d5b33227214a692bf9b12e249078e",
      "tree": "6119bd49d7bbd149b7b6c14eeb60222ff2072bf0",
      "parents": [
        "92f25053c0189f8d2887f837d3936cdca1cdf730"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Sep 17 19:56:01 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 21 15:40:33 2009 +0200"
      },
      "message": "writeback: don\u0027t use schedule_timeout() without setting runstate\n\nJust use schedule_timeout_interruptible(), saves a call to\nset_current_state().\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "b6e51316daede0633e9274e1e30391cfa4747877",
      "tree": "664476bb4e7c05dcce3ad908363b482134c68429",
      "parents": [
        "bcddc3f01c9122882c8b9f12ab94a934e55aef97"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:13:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:18:52 2009 +0200"
      },
      "message": "writeback: separate starting of sync vs opportunistic writeback\n\nbdi_start_writeback() is currently split into two paths, one for\nWB_SYNC_NONE and one for WB_SYNC_ALL. Add bdi_sync_writeback()\nfor WB_SYNC_ALL writeback and let bdi_start_writeback() handle\nonly WB_SYNC_NONE.\n\nPush down the writeback_control allocation and only accept the\nparameters that make sense for each function. This cleans up\nthe API considerably.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cfc4ba5365449cb6b5c9f68d755a142f17da1e47",
      "tree": "08770de9bb0e658f2e65abd4d10187b3e9f6bb1b",
      "parents": [
        "f11fcae8401a3175f528e2f7917362645d570111"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 13:12:40 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:18:51 2009 +0200"
      },
      "message": "writeback: use RCU to protect bdi_list\n\nNow that bdi_writeback_all() no longer handles integrity writeback,\nit doesn\u0027t have to block anymore. This means that we can switch\nbdi_list reader side protection to RCU.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1fe06ad89255c211fe100d7f690d10b161398df8",
      "tree": "826d32bf081a6729aeaa08fe42422e49a9b86f6f",
      "parents": [
        "2c96ce9f2084c1e04d02883e622f74a537a63aea"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Sep 15 15:10:20 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:16:18 2009 +0200"
      },
      "message": "writeback: get rid of wbc-\u003efor_writepages\n\nIt\u0027s only set, it\u0027s never checked. Kill it.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6746aff74da293b5fd24e5c68b870b721e86cd5f",
      "tree": "6d2b9e99d247e788c13665ce5e8a0753538ef641",
      "parents": [
        "257187362123f15d9d1e09918cf87cebbea4e786"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 16 11:50:14 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:14 2009 +0200"
      },
      "message": "HWPOISON: shmem: call set_page_dirty() with locked page\n\nThe dirtying of page and set_page_dirty() can be moved into the page lock.\n\n- In shmem_write_end(), the page was dirtied while the page lock was held,\n  but it\u0027s being marked dirty just after dropping the page lock.\n- In shmem_symlink(), both dirtying and marking can be moved into page lock.\n\nIt\u0027s valuable for the hwpoison code to know whether one bad page can be dropped\nwithout losing data. It mainly judges by testing the PG_dirty bit after taking\nthe page lock. So it becomes important that the dirtying of page and the\nmarking of dirtiness are both done inside the page lock. Which is a common\npractice, but sadly not a rule.\n\nThe noticeable exceptions are\n- mapped pages\n- pages with buffer_heads\nThe above pages could go dirty at any time. Fortunately the hwpoison will\nunmap the page and release the buffer_heads beforehand anyway.\n\nMany other types of pages (eg. metadata pages) can also be dirtied at will by\ntheir owners, the hwpoison code cannot do meaningful things to them anyway.\nOnly the dirtiness of pagecache pages owned by regular files are interested.\n\nv2: AK: Add comment about set_page_dirty rules (suggested by Peter Zijlstra)\n\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "ada3fa15057205b7d3f727bba5cd26b5912e350f",
      "tree": "60962fc9e4021b92f484d1a58e72cd3906d4f3db",
      "parents": [
        "2f82af08fcc7dc01a7e98a49a5995a77e32a2925",
        "5579fd7e6aed8860ea0c8e3f11897493153b10ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:39:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 15 09:39:44 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (46 commits)\n  powerpc64: convert to dynamic percpu allocator\n  sparc64: use embedding percpu first chunk allocator\n  percpu: kill lpage first chunk allocator\n  x86,percpu: use embedding for 64bit NUMA and page for 32bit NUMA\n  percpu: update embedding first chunk allocator to handle sparse units\n  percpu: use group information to allocate vmap areas sparsely\n  vmalloc: implement pcpu_get_vm_areas()\n  vmalloc: separate out insert_vmalloc_vm()\n  percpu: add chunk-\u003ebase_addr\n  percpu: add pcpu_unit_offsets[]\n  percpu: introduce pcpu_alloc_info and pcpu_group_info\n  percpu: move pcpu_lpage_build_unit_map() and pcpul_lpage_dump_cfg() upward\n  percpu: add @align to pcpu_fc_alloc_fn_t\n  percpu: make @dyn_size mandatory for pcpu_setup_first_chunk()\n  percpu: drop @static_size from first chunk allocators\n  percpu: generalize first chunk allocator selection\n  percpu: build first chunk allocators selectively\n  percpu: rename 4k first chunk allocator to page\n  percpu: improve boot messages\n  percpu: fix pcpu_reclaim() locking\n  ...\n\nFix trivial conflict as by Tejun Heo in kernel/sched.c\n"
    },
    {
      "commit": "03ba3782e8dcc5b0e1efe440d33084f066e38cae",
      "tree": "e5a6513b411de16a46199530ec98ef9b7f1efc50",
      "parents": [
        "66f3b8e2e103a0b93b945764d98e9ba46cb926dd"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 09 09:08:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:25 2009 +0200"
      },
      "message": "writeback: switch to per-bdi threads for flushing data\n\nThis gets rid of pdflush for bdi writeout and kupdated style cleaning.\npdflush writeout suffers from lack of locality and also requires more\nthreads to handle the same workload, since it has to work in a\nnon-blocking fashion against each queue. This also introduces lumpy\nbehaviour and potential request starvation, since pdflush can be starved\nfor queue access if others are accessing it. A sample ffsb workload that\ndoes random writes to files is about 8% faster here on a simple SATA drive\nduring the benchmark phase. File layout also seems a LOT more smooth in\nvmstat:\n\n r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa\n 0  1      0 608848   2652 375372    0    0     0 71024  604    24  1 10 48 42\n 0  1      0 549644   2712 433736    0    0     0 60692  505    27  1  8 48 44\n 1  0      0 476928   2784 505192    0    0     4 29540  553    24  0  9 53 37\n 0  1      0 457972   2808 524008    0    0     0 54876  331    16  0  4 38 58\n 0  1      0 366128   2928 614284    0    0     4 92168  710    58  0 13 53 34\n 0  1      0 295092   3000 684140    0    0     0 62924  572    23  0  9 53 37\n 0  1      0 236592   3064 741704    0    0     4 58256  523    17  0  8 48 44\n 0  1      0 165608   3132 811464    0    0     0 57460  560    21  0  8 54 38\n 0  1      0 102952   3200 873164    0    0     4 74748  540    29  1 10 48 41\n 0  1      0  48604   3252 926472    0    0     0 53248  469    29  0  7 47 45\n\nwhere vanilla tends to fluctuate a lot in the creation phase:\n\n r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa\n 1  1      0 678716   5792 303380    0    0     0 74064  565    50  1 11 52 36\n 1  0      0 662488   5864 319396    0    0     4   352  302   329  0  2 47 51\n 0  1      0 599312   5924 381468    0    0     0 78164  516    55  0  9 51 40\n 0  1      0 519952   6008 459516    0    0     4 78156  622    56  1 11 52 37\n 1  1      0 436640   6092 541632    0    0     0 82244  622    54  0 11 48 41\n 0  1      0 436640   6092 541660    0    0     0     8  152    39  0  0 51 49\n 0  1      0 332224   6200 644252    0    0     4 102800  728    46  1 13 49 36\n 1  0      0 274492   6260 701056    0    0     4 12328  459    49  0  7 50 43\n 0  1      0 211220   6324 763356    0    0     0 106940  515    37  1 10 51 39\n 1  0      0 160412   6376 813468    0    0     0  8224  415    43  0  6 49 45\n 1  1      0  85980   6452 886556    0    0     4 113516  575    39  1 11 54 34\n 0  2      0  85968   6452 886620    0    0     0  1640  158   211  0  0 46 54\n\nA 10 disk test with btrfs performs 26% faster with per-bdi flushing. A\nSSD based writeback test on XFS performs over 20% better as well, with\nthe throughput being very stable around 1GB/sec, where pdflush only\nmanages 750MB/sec and fluctuates wildly while doing so. Random buffered\nwrites to many files behave a lot better as well, as does random mmap\u0027ed\nwrites.\n\nA separate thread is added to sync the super blocks. In the long term,\nadding sync_supers_bdi() functionality could get rid of this thread again.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "66f3b8e2e103a0b93b945764d98e9ba46cb926dd",
      "tree": "442bf5664214f0a1448e4010b09868cc58fdd3d1",
      "parents": [
        "d8a8559cd7a9ccac98d5f6f13297a2ff68a43627"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 02 09:19:46 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:25 2009 +0200"
      },
      "message": "writeback: move dirty inodes from super_block to backing_dev_info\n\nThis is a first step at introducing per-bdi flusher threads. We should\nhave no change in behaviour, although sb_has_dirty_inodes() is now\nridiculously expensive, as there\u0027s no easy way to answer that question.\nNot a huge problem, since it\u0027ll be deleted in subsequent patches.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "384be2b18a5f9475eab9ca2bdfa95cc1a04ef59c",
      "tree": "04c93f391a1b65c8bf8d7ba8643c07d26c26590a",
      "parents": [
        "a76761b621bcd8336065c4fe3a74f046858bc34c",
        "142d44b0dd6741a64a7bdbe029110e7c1dcf1d23"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:41:02 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Aug 14 14:45:31 2009 +0900"
      },
      "message": "Merge branch \u0027percpu-for-linus\u0027 into percpu-for-next\n\nConflicts:\n\tarch/sparc/kernel/smp_64.c\n\tarch/x86/kernel/cpu/perf_counter.c\n\tarch/x86/kernel/setup_percpu.c\n\tdrivers/cpufreq/cpufreq_ondemand.c\n\tmm/percpu.c\n\nConflicts in core and arch percpu codes are mostly from commit\ned78e1e078dd44249f88b1dd8c76dafb39567161 which substituted many\nnum_possible_cpus() with nr_cpu_ids.  As for-next branch has moved all\nthe first chunk allocators into mm/percpu.c, the changes are moved\nfrom arch code to mm/percpu.c.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "8aa7e847d834ed937a9ad37a0f2ad5b8584c1ab0",
      "tree": "76c8b4f1362a928d426f2201790ab5d128f57724",
      "parents": [
        "c2cc49a2f8a479dde96a599646d30b6cc9dbed78"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 09 14:52:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.(none)",
        "time": "Fri Jul 10 20:31:53 2009 +0200"
      },
      "message": "Fix congestion_wait() sync/async vs read/write confusion\n\nCommit 1faa16d22877f4839bd433547d770c676d1d964c accidentally broke\nthe bdi congestion wait queue logic, causing us to wait on congestion\nfor WRITE (\u003d\u003d 1) when we really wanted BLK_RW_ASYNC (\u003d\u003d 0) instead.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c43768cbb7655ea5ff782ae250f6e2ef4297cf98",
      "tree": "3982e41dde3eecaa3739a5d1a8ed18d04bd74f01",
      "parents": [
        "1a8dd307cc0a2119be4e578c517795464e6dabba",
        "746a99a5af60ee676afa2ba469ccd1373493c7e7"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 07:13:18 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Jul 04 07:13:18 2009 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nPull linus#master to merge PER_CPU_DEF_ATTRIBUTES and alpha build fix\nchanges.  As alpha in percpu tree uses \u0027weak\u0027 attribute instead of\ninline assembly, there\u0027s no need for __used attribute.\n\nConflicts:\n\tarch/alpha/include/asm/percpu.h\n\tarch/mn10300/kernel/vmlinux.lds.S\n\tinclude/linux/percpu-defs.h\n"
    },
    {
      "commit": "d7831a0bdf06b9f722b947bb0c205ff7d77cebd8",
      "tree": "99afa4a0e30b18724eece3a819867b290728dafe",
      "parents": [
        "df279ca8966c3de83105428e3391ab17690802a9"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Tue Jun 30 11:41:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 30 18:56:01 2009 -0700"
      },
      "message": "mm: prevent balance_dirty_pages() from doing too much work\n\nbalance_dirty_pages can overreact and move all of the dirty pages to\nwriteback unnecessarily.\n\nbalance_dirty_pages makes its decision to throttle based on the number of\ndirty plus writeback pages that are over the calculated limit,so it will\ncontinue to move pages even when there are plenty of pages in writeback\nand less than the threshold still dirty.\n\nThis allows it to overshoot its limits and move all the dirty pages to\nwriteback while waiting for the drives to catch up and empty the writeback\nlist.\n\nA simple fio test easily demonstrates this problem.\n\nfio --name\u003df1 --directory\u003d/disk1 --size\u003d2G -rw\u003dwrite --name\u003df2 --directory\u003d/disk2 --size\u003d1G --rw\u003dwrite --startdelay\u003d10\n\nThis is the simplest fix I could find, but I\u0027m not entirely sure that it\nalone will be enough for all cases.  But it certainly is an improvement on\nmy desktop machine writing to 2 disks.\n\nDo we need something more for machines with large arrays where\nbdi_threshold * number_of_drives is greater than the dirty_ratio ?\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "245b2e70eabd797932adb263a65da0bab3711753",
      "tree": "30f0b790dadd2b70bf06e534abcf66a76e97b05a",
      "parents": [
        "b9bf3121af348d9255f1c917830fe8c2df52efcb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 24 15:13:48 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 24 15:13:48 2009 +0900"
      },
      "message": "percpu: clean up percpu variable definitions\n\nPercpu variable definition is about to be updated such that all percpu\nsymbols including the static ones must be unique.  Update percpu\nvariable definitions accordingly.\n\n* as,cfq: rename ioc_count uniquely\n\n* cpufreq: rename cpu_dbs_info uniquely\n\n* xen: move nesting_count out of xen_evtchn_do_upcall() and rename it\n\n* mm: move ratelimits out of balance_dirty_pages_ratelimited_nr() and\n  rename it\n\n* ipv4,6: rename cookie_scratch uniquely\n\n* x86 perf_counter: rename prev_left to pmc_prev_left, irq_entry to\n  pmc_irq_entry and nmi_entry to pmc_nmi_entry\n\n* perf_counter: rename disable_count to perf_disable_count\n\n* ftrace: rename test_event_disable to ftrace_test_event_disable\n\n* kmemleak: rename test_pointer to kmemleak_test_pointer\n\n* mce: rename next_interval to mce_next_interval\n\n[ Impact: percpu usage cleanups, no duplicate static percpu var names ]\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: linux-mm \u003clinux-mm@kvack.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "3fcfab16c5b86eaa3db3a9a31adba550c5b67141"
}
