)]}'
{
  "log": [
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "cf15b07cf448e19dcb31a19f0cbaf898b08ce975",
      "tree": "78c377875ae4ee60181a205b6f01c4b52c49e03d",
      "parents": [
        "24b8ff7c27d9e975540656e377de44a2a181a01f"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Tue Mar 22 16:33:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:09 2011 -0700"
      },
      "message": "writeback: make mapping-\u003ewriteback_index to point to the last written page\n\nFor range-cyclic writeback (e.g.  kupdate), the writeback code sets a\ncontinuation point of the next writeback to mapping-\u003ewriteback_index which\nis set the page after the last written page.  This happens so that we\nevenly write the whole file even if pages in it get continuously\nredirtied.\n\nHowever, in some cases, sequential writer is writing in the middle of the\npage and it just redirties the last written page by continuing from that.\nFor example with an application which uses a file as a big ring buffer we\nsee:\n\n[1st writeback session]\n       ...\n       flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898514 + 8\n       flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898522 + 8\n       flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898530 + 8\n       flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898538 + 8\n       flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898546 + 8\n     kworker/0:1-11    4571: block_rq_issue: 8,0 W 0 () 94898514 + 40\n\u003e\u003e     flush-8:0-2743  4571: block_bio_queue: 8,0 W 94898554 + 8\n\u003e\u003e     flush-8:0-2743  4571: block_rq_issue: 8,0 W 0 () 94898554 + 8\n\n[2nd writeback session after 35sec]\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94898562 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94898570 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94898578 + 8\n       ...\n     kworker/0:1-11    4606: block_rq_issue: 8,0 W 0 () 94898562 + 640\n     kworker/0:1-11    4606: block_rq_issue: 8,0 W 0 () 94899202 + 72\n       ...\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94899962 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94899970 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94899978 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94899986 + 8\n       flush-8:0-2743  4606: block_bio_queue: 8,0 W 94899994 + 8\n     kworker/0:1-11    4606: block_rq_issue: 8,0 W 0 () 94899962 + 40\n\u003e\u003e     flush-8:0-2743  4606: block_bio_queue: 8,0 W 94898554 + 8\n\u003e\u003e     flush-8:0-2743  4606: block_rq_issue: 8,0 W 0 () 94898554 + 8\n\nSo we seeked back to 94898554 after we wrote all the pages at the end of\nthe file.\n\nThis extra seek seems unnecessary.  If we continue writeback from the last\nwritten page, we can avoid it and do not cause harm to other cases.  The\noriginal intent of even writeout over the whole file is preserved and if\nthe page does not get redirtied pagevec_lookup_tag() just skips it.\n\nAs an exceptional case, when I/O error happens, set done_index to the next\npage as the comment in the code suggests.\n\nTested-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "278df9f451dc71dcd002246be48358a473504ad0",
      "tree": "3b79e956f2f0b9381f62518ff2fcf94df4ff9c3f",
      "parents": [
        "3f58a82943337fb6e79acfa5346719a97d3c0b98"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Mar 22 16:32:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:04 2011 -0700"
      },
      "message": "mm: reclaim invalidated page ASAP\n\ninvalidate_mapping_pages is very big hint to reclaimer.  It means user\ndoesn\u0027t want to use the page any more.  So in order to prevent working set\npage eviction, this patch move the page into tail of inactive list by\nPG_reclaim.\n\nPlease, remember that pages in inactive list are working set as well as\nactive list.  If we don\u0027t move pages into inactive list\u0027s tail, pages near\nby tail of inactive list can be evicted although we have a big clue about\nuseless pages.  It\u0027s totally bad.\n\nNow PG_readahead/PG_reclaim is shared.  fe3cba17 added ClearPageReclaim\ninto clear_page_dirty_for_io for preventing fast reclaiming readahead\nmarker page.\n\nIn this series, PG_reclaim is used by invalidated page, too.  If VM find\nthe page is invalidated and it\u0027s dirty, it sets PG_reclaim to reclaim\nasap.  Then, when the dirty page will be writeback,\nclear_page_dirty_for_io will clear PG_reclaim unconditionally.  It\ndisturbs this serie\u0027s goal.\n\nI think it\u0027s okay to clear PG_readahead when the page is dirty, not\nwriteback time.  So this patch moves ClearPageReadahead.  In v4,\nClearPageReadahead in set_page_dirty has a problem which is reported by\nSteven Barrett.  It\u0027s due to compound page.  Some driver(ex, audio) calls\nset_page_dirty with compound page which isn\u0027t on LRU.  but my patch does\nClearPageRelcaim on compound page.  In non-CONFIG_PAGEFLAGS_EXTENDED, it\nbreaks PageTail flag.\n\nI think it doesn\u0027t affect THP and pass my test with THP enabling but Cced\nAndrea for double check.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReported-by: Steven Barrett \u003cdamentz@liquorix.net\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Andrea Arcangeli \u003caarcange@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": "9b6096a65f99a89dfd8328c4e469e7b53b3ae04a",
      "tree": "8853a3c389d40bda6fd5e109179be29695d536af",
      "parents": [
        "167400d34070ebbc408dc0f447c4ddb4bf837360"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Mar 17 10:47:06 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 17 10:47:06 2011 +0100"
      },
      "message": "mm: make generic_writepages() use plugging\n\nThis recovers a performance regression caused by the removal\nof the per-device plugging.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "240c879f20a605346705be24253bc9fc6fa8a106",
      "tree": "85c38509483aa5f69d3dea5daa21412dd2e6aced",
      "parents": [
        "ecb256f815232b35ae8382cff36ca8ce0bbd077e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Thu Jan 13 15:46:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "writeback: avoid unnecessary determine_dirtyable_memory call\n\nI think determine_dirtyable_memory() is a rather costly function since it\nneed many atomic reads for gathering zone/global page state.  But when we\nuse vm_dirty_bytes \u0026\u0026 dirty_background_bytes, we don\u0027t need that costly\ncalculation.\n\nThis patch eliminates such unnecessary overhead.\n\nNOTE : newly added if condition might add overhead in normal path.\n       But it should be _really_ small because anyway we need the\n       access both vm_dirty_bytes and dirty_background_bytes so it is\n       likely to hit the cache.\n\n[akpm@linux-foundation.org: fix used-uninitialised warning]\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\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": "c3f0da631539b3b8e17f6dda567af9958d49d14f",
      "tree": "b9bc0060ac0fa99d0dc9e6caadb0abf0172249ef",
      "parents": [
        "c691b9d983d7015d54057034f4cd9b6d8affd976"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Thu Jan 13 15:45:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "mm/page-writeback.c: fix __set_page_dirty_no_writeback() return value\n\n__set_page_dirty_no_writeback() should return true if it actually\ntransitioned the page from a clean to dirty state although it seems nobody\nuses its return value at present.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "ebd1373d40be1f295e48877c7582fe9028164e6e",
      "tree": "3a42dac97f902cd90f0949e7f8e7d86d01684e76",
      "parents": [
        "8dd11f80ab73fa6d47f4a9aabb5cee7bc69e7f7a"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Jan 04 01:36:48 2011 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Jan 04 11:09:29 2011 +0100"
      },
      "message": "writeback: fix global_dirty_limits comment runtime -\u003e real-time\n\nChange runtime with real-time\n\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "d153ba64450b9371158c6516d6cac120faace44c",
      "tree": "78bb90ade76b84312e1e332a02021eb8eb1cda42",
      "parents": [
        "f06328d7721ad3852c45eb2a10a0c8f9439b5f33"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Dec 21 17:24:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "writeback: do uninterruptible sleep in balance_dirty_pages()\n\nUsing TASK_INTERRUPTIBLE in balance_dirty_pages() seems wrong.  If it\u0027s\ngoing to do that then it must break out if signal_pending(), otherwise\nit\u0027s pretty much guaranteed to degenerate into a busywait loop.  Plus we\n*do* want these processes to appear in D state and to contribute to load\naverage.\n\nSo it should be TASK_UNINTERRUPTIBLE.                 -- Andrew Morton\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4cbec4c8b9fda9ec784086fe7f74cd32a8adda95",
      "tree": "669c3df27982345b52d0bfca8026e3f275e64a03",
      "parents": [
        "0e093d99763eb4cea09f8ca4f1d01f34e121d10b"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:08 2010 -0700"
      },
      "message": "writeback: remove the internal 5% low bound on dirty_ratio\n\nThe dirty_ratio was silently limited in global_dirty_limits() to \u003e\u003d 5%.\nThis is not a user expected behavior.  And it\u0027s inconsistent with\ncalc_period_shift(), which uses the plain vm_dirty_ratio value.\n\nLet\u0027s remove the internal bound.\n\nAt the same time, fix balance_dirty_pages() to work with the\ndirty_thresh\u003d0 case.  This allows applications to proceed when\ndirty+writeback pages are all cleaned.\n\nAnd \"\u003e\" fits with the name \"exceeded\" better than \"\u003e\u003d\" does.  Neil thinks\nit is an aesthetic improvement as well as a functional one :)\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nProposed-by: Con Kolivas \u003ckernel@kolivas.org\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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": "ea941f0e2a8c02ae876cd73deb4e1557248f258c",
      "tree": "d2006c10cce4f134dc83f7f5aaa1d0096902cc1a",
      "parents": [
        "f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "writeback: add nr_dirtied and nr_written to /proc/vmstat\n\nTo help developers and applications gain visibility into writeback\nbehaviour adding two entries to vm_stat_items and /proc/vmstat.  This will\nallow us to track the \"written\" and \"dirtied\" counts.\n\n   # grep nr_dirtied /proc/vmstat\n   nr_dirtied 3747\n   # grep nr_written /proc/vmstat\n   nr_written 3618\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "f629d1c9bd0dbc44a6c4f9a4a67d1646c42bfc6f",
      "tree": "22ac36b494b40e17bfa68e85a094b9cc4b2f6093",
      "parents": [
        "0def08e3acc2c9c934e4671487029aed52202d42"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Tue Oct 26 14:21:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:06 2010 -0700"
      },
      "message": "mm: add account_page_writeback()\n\nTo help developers and applications gain visibility into writeback\nbehaviour this patch adds two counters to /proc/vmstat.\n\n  # grep nr_dirtied /proc/vmstat\n  nr_dirtied 3747\n  # grep nr_written /proc/vmstat\n  nr_written 3618\n\nThese entries allow user apps to understand writeback behaviour over time\nand learn how it is impacting their performance.  Currently there is no\nway to inspect dirty and writeback speed over time.  It\u0027s not possible for\nnr_dirty/nr_writeback.\n\nThese entries are necessary to give visibility into writeback behaviour.\nWe have /proc/diskstats which lets us understand the io in the block\nlayer.  We have blktrace for more in depth understanding.  We have\ne2fsprogs and debugsfs to give insight into the file systems behaviour,\nbut we don\u0027t offer our users the ability understand what writeback is\ndoing.  There is no way to know how active it is over the whole system, if\nit\u0027s falling behind or to quantify it\u0027s efforts.  With these values\nexported users can easily see how much data applications are sending\nthrough writeback and also at what rates writeback is processing this\ndata.  Comparing the rates of change between the two allow developers to\nsee when writeback is not able to keep up with incoming traffic and the\nrate of dirty memory being sent to the IO back end.  This allows folks to\nunderstand their io workloads and track kernel issues.  Non kernel\nengineers at Google often use these counters to solve puzzling performance\nproblems.\n\nPatch #4 adds a pernode vmstat file with nr_dirtied and nr_written\n\nPatch #5 add writeback thresholds to /proc/vmstat\n\nCurrently these values are in debugfs. But they should be promoted to\n/proc since they are useful for developers who are writing databases\nand file servers and are not debugging the kernel.\n\nThe output is as below:\n\n # grep threshold /proc/vmstat\n nr_pages_dirty_threshold 409111\n nr_pages_dirty_background_threshold 818223\n\nThis patch:\n\nThis allows code outside of the mm core to safely manipulate page\nwriteback state and not worry about the other accounting.  Not using these\nroutines means that some code will lose track of the accounting and we get\nbugs.\n\nModify nilfs2 to use interface.\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Jiro SEKIBA \u003cjir@unicus.jp\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "997396a73a94de7d92d82e30d7bb1d931e38cb16",
      "tree": "2190a66e085f16a1985e008be167d6fc4ea6734d",
      "parents": [
        "6f4dbeca1a5bac4552d49d9e7b774da9f6625e74",
        "b545787dbb00a041c541a4759d938ddb0108295a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 28 14:07:20 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 28 14:07:20 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: fix get_ticket_handler() error handling\n  ceph: don\u0027t BUG on ENOMEM during mds reconnect\n  ceph: ceph_mdsc_build_path() returns an ERR_PTR\n  ceph: Fix warnings\n  ceph: ceph_get_inode() returns an ERR_PTR\n  ceph: initialize fields on new dentry_infos\n  ceph: maintain i_head_snapc when any caps are dirty, not just for data\n  ceph: fix osd request lru adjustment when sending request\n  ceph: don\u0027t improperly set dir complete when holding EXCL cap\n  mm: exporting account_page_dirty\n  ceph: direct requests in snapped namespace based on nonsnap parent\n  ceph: queue cap snap writeback for realm children on snap update\n  ceph: include dirty xattrs state in snapped caps\n  ceph: fix xattr cap writeback\n  ceph: fix multiple mds session shutdown\n"
    },
    {
      "commit": "546a1924224078c6f582e68f890b05b387b42653",
      "tree": "f863df4fd74f85c8177d9eb1467a351cd6d0acfc",
      "parents": [
        "4536f2ad8b330453d7ebec0746c4374eadd649b1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Aug 24 11:44:34 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Tue Aug 24 11:44:34 2010 +1000"
      },
      "message": "writeback: write_cache_pages doesn\u0027t terminate at nr_to_write \u003c\u003d 0\n\nI noticed XFS writeback in 2.6.36-rc1 was much slower than it should have\nbeen. Enabling writeback tracing showed:\n\n    flush-253:16-8516  [007] 1342952.351608: wbc_writepage: bdi 253:16: towrt\u003d1024 skip\u003d0 mode\u003d0 kupd\u003d0 bgrd\u003d1 reclm\u003d0 cyclic\u003d1 more\u003d0 older\u003d0x0 start\u003d0x0 end\u003d0x0\n    flush-253:16-8516  [007] 1342952.351654: wbc_writepage: bdi 253:16: towrt\u003d1023 skip\u003d0 mode\u003d0 kupd\u003d0 bgrd\u003d1 reclm\u003d0 cyclic\u003d1 more\u003d0 older\u003d0x0 start\u003d0x0 end\u003d0x0\n    flush-253:16-8516  [000] 1342952.369520: wbc_writepage: bdi 253:16: towrt\u003d0 skip\u003d0 mode\u003d0 kupd\u003d0 bgrd\u003d1 reclm\u003d0 cyclic\u003d1 more\u003d0 older\u003d0x0 start\u003d0x0 end\u003d0x0\n    flush-253:16-8516  [000] 1342952.369542: wbc_writepage: bdi 253:16: towrt\u003d-1 skip\u003d0 mode\u003d0 kupd\u003d0 bgrd\u003d1 reclm\u003d0 cyclic\u003d1 more\u003d0 older\u003d0x0 start\u003d0x0 end\u003d0x0\n    flush-253:16-8516  [000] 1342952.369549: wbc_writepage: bdi 253:16: towrt\u003d-2 skip\u003d0 mode\u003d0 kupd\u003d0 bgrd\u003d1 reclm\u003d0 cyclic\u003d1 more\u003d0 older\u003d0x0 start\u003d0x0 end\u003d0x0\n\nWriteback is not terminating in background writeback if -\u003ewritepage is\nreturning with wbc-\u003enr_to_write \u003d\u003d 0, resulting in sub-optimal single page\nwriteback on XFS.\n\nFix the write_cache_pages loop to terminate correctly when this situation\noccurs and so prevent this sub-optimal background writeback pattern. This\nimproves sustained sequential buffered write performance from around\n250MB/s to 750MB/s for a 100GB file on an XFS filesystem on my 8p test VM.\n\nCc:\u003cstable@kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "679ceace848e9fd570678396ffe1ef034e00e82d",
      "tree": "670768527852f134cfe3e20d425534a16edd968a",
      "parents": [
        "eb6bb1c5bdc6e455a9d16cb845cc65afc9b0a617"
      ],
      "author": {
        "name": "Michael Rubin",
        "email": "mrubin@google.com",
        "time": "Fri Aug 20 02:31:26 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sun Aug 22 15:16:51 2010 -0700"
      },
      "message": "mm: exporting account_page_dirty\n\nThis allows code outside of the mm core to safely manipulate page state\nand not worry about the other accounting. Not using these routines means\nthat some code will lose track of the accounting and we get bugs. This\nhas happened once already.\n\nSigned-off-by: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d5ed3a4af77b851b6271ad3d9abc4c57fa3ce0f5",
      "tree": "f06894404e4af25051e8918bfd3fdac95974fc97",
      "parents": [
        "f2e41e910320197d55b52e28d99a07130f2ae738"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 19 14:13:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 20 09:34:55 2010 -0700"
      },
      "message": "lib/radix-tree.c: fix overflow in radix_tree_range_tag_if_tagged()\n\nWhen radix_tree_maxindex() is ~0UL, it can happen that scanning overflows\nindex and tree traversal code goes astray reading memory until it hits\nunreadable memory.  Check for overflow and exit in that case.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Christoph Hellwig \u003chch@lst.de\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": "03ab450f030b08d786c7a262b67816396f09c7ab",
      "tree": "1c6e245f823bd3c2c3f5b584f6f25cf83d1c2447",
      "parents": [
        "163475fb111cb2f85aef2428a6c1f9eefba8be23"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Aug 14 13:05:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 14 16:20:59 2010 -0700"
      },
      "message": "mm/page-writeback: fix non-kernel-doc function comments\n\nRemove leading /** from non-kernel-doc function comments to prevent\nkernel-doc warnings.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1babe18385d3976043c04237ce837f3736197eb4",
      "tree": "c766bb0022ec5188cd7e991fc1f9ad51687e8aca",
      "parents": [
        "16c4042f08919f447d6b2a55679546c9b97c7264"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:30 2010 -0700"
      },
      "message": "writeback: add comment to the dirty limit functions\n\nDocument global_dirty_limits() and bdi_dirty_limit().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\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": "16c4042f08919f447d6b2a55679546c9b97c7264",
      "tree": "0248b64d46237854ebe67efe8c742cb5878d8611",
      "parents": [
        "e50e37201ae2e7d6a52e87815759e6481f0bcfb9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "writeback: avoid unnecessary calculation of bdi dirty thresholds\n\nSplit get_dirty_limits() into global_dirty_limits()+bdi_dirty_limit(), so\nthat the latter can be avoided when under global dirty background\nthreshold (which is the normal state for most systems).\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e50e37201ae2e7d6a52e87815759e6481f0bcfb9",
      "tree": "efb500382d5e9628351cb16286f579ad9bd455db",
      "parents": [
        "a292dfa01794477126d3f022559eb235edde00b0"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "writeback: balance_dirty_pages(): reduce calls to global_page_state\n\nReducing the number of times balance_dirty_pages calls global_page_state\nreduces the cache references and so improves write performance on a\nvariety of workloads.\n\n\u0027perf stats\u0027 of simple fio write tests shows the reduction in cache\naccess.  Where the test is fio \u0027write,mmap,600Mb,pre_read\u0027 on AMD AthlonX2\nwith 3Gb memory (dirty_threshold approx 600 Mb) running each test 10\ntimes, dropping the fasted \u0026 slowest values then taking the average \u0026\nstandard deviation\n\n\t\taverage (s.d.) in millions (10^6)\n2.6.31-rc8\t648.6 (14.6)\n+patch\t\t620.1 (16.5)\n\nAchieving this reduction is by dropping clip_bdi_dirty_limit as it rereads\nthe counters to apply the dirty_threshold and moving this check up into\nbalance_dirty_pages where it has already read the counters.\n\nAlso by rearrange the for loop to only contain one copy of the limit tests\nallows the pdflush test after the loop to use the local copies of the\ncounters rather than rereading them.\n\nIn the common case with no throttling it now calls global_page_state 5\nfewer times and bdi_stat 2 fewer.\n\nFengguang:\n\nThis patch slightly changes behavior by replacing clip_bdi_dirty_limit()\nwith the explicit check (nr_reclaimable + nr_writeback \u003e\u003d dirty_thresh) to\navoid exceeding the dirty limit.  Since the bdi dirty limit is mostly\naccurate we don\u0027t need to do routinely clip.  A simple dirty limit check\nwould be enough.\n\nThe check is necessary because, in principle we should throttle everything\ncalling balance_dirty_pages() when we\u0027re over the total limit, as said by\nPeter.\n\nWe now set and clear dirty_exceeded not only based on bdi dirty limits,\nbut also on the global dirty limit.  The global limit check is added in\nplace of clip_bdi_dirty_limit() for safety and not intended as a behavior\nchange.  The bdi limits should be tight enough to keep all dirty pages\nunder the global limit at most time; occasional small exceeding should be\nOK though.  The change makes the logic more obvious: the global limit is\nthe ultimate goal and shall be always imposed.\n\nWe may now start background writeback work based on outdated conditions.\nThat\u0027s safe because the bdi flush thread will (and have to) double check\nthe states.  It reduces overall overheads because the test based on old\nstates still have good chance to be right.\n\n[akpm@linux-foundation.org] fix uninitialized dirty_exceeded\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c111a071da260aa1e9cae3e882e2109c4e9bdfc",
      "tree": "27a830f9981dc1a9734a190d9890d4eddf0e6357",
      "parents": [
        "0a7992c90828a65281c3c9cf180be3b432d277b2"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Aug 11 14:17:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "mm: fix fatal kernel-doc error\n\nFix a fatal kernel-doc error due to a #define coming between a function\u0027s\nkernel-doc notation and the function signature.  (kernel-doc cannot handle\nthis)\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f9e825d3e0e2b407ae8f082de5c00afcf7378fb",
      "tree": "f8b3ee40674ce4acd5508a0a0bf52a30904caf6c",
      "parents": [
        "7ae0dea900b027cd90e8a3e14deca9a19e17638b",
        "de75d60d5ea235e6e09f4962ab22541ce0fe176a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block: (149 commits)\n  block: make sure that REQ_* types are seen even with CONFIG_BLOCK\u003dn\n  xen-blkfront: fix missing out label\n  blkdev: fix blkdev_issue_zeroout return value\n  block: update request stacking methods to support discards\n  block: fix missing export of blk_types.h\n  writeback: fix bad _bh spinlock nesting\n  drbd: revert \"delay probes\", feature is being re-implemented differently\n  drbd: Initialize all members of sync_conf to their defaults [Bugz 315]\n  drbd: Disable delay probes for the upcomming release\n  writeback: cleanup bdi_register\n  writeback: add new tracepoints\n  writeback: remove unnecessary init_timer call\n  writeback: optimize periodic bdi thread wakeups\n  writeback: prevent unnecessary bdi threads wakeups\n  writeback: move bdi threads exiting logic to the forker thread\n  writeback: restructure bdi forker loop a little\n  writeback: move last_active to bdi\n  writeback: do not remove bdi from bdi_list\n  writeback: simplify bdi code a little\n  writeback: do not lose wake-ups in bdi threads\n  ...\n\nFixed up pretty trivial conflicts in drivers/block/virtio_blk.c and\ndrivers/scsi/scsi_error.c as per Jens.\n"
    },
    {
      "commit": "f446daaea9d4a420d16c606f755f3689dcb2d0ce",
      "tree": "be2afc18f79aa4ff9be245b0a036aa06185b5dc4",
      "parents": [
        "ebf8aa44beed48cd17893a83d92a4403e5f9d9e2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 09 17:19:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "mm: implement writeback livelock avoidance using page tagging\n\nWe try to avoid livelocks of writeback when some steadily creates dirty\npages in a mapping we are writing out.  For memory-cleaning writeback,\nusing nr_to_write works reasonably well but we cannot really use it for\ndata integrity writeback.  This patch tries to solve the problem.\n\nThe idea is simple: Tag all pages that should be written back with a\nspecial tag (TOWRITE) in the radix tree.  This can be done rather quickly\nand thus livelocks should not happen in practice.  Then we start doing the\nhard work of locking pages and sending them to disk only for those pages\nthat have TOWRITE tag set.\n\nNote: Adding new radix tree tag grows radix tree node from 288 to 296\nbytes for 32-bit archs and from 552 to 560 bytes for 64-bit archs.\nHowever, the number of slab/slub items per page remains the same (13 and 7\nrespectively).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e094383b60066996fbc3b53891324e5d2ec858d",
      "tree": "a3f4af7e60781f62b52dcfddd2032c3bbf933644",
      "parents": [
        "028c2dd184c097809986684f2f0627eea5529fea"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jul 07 13:24:08 2010 +1000"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:26 2010 +0200"
      },
      "message": "writeback: Add tracing to write_cache_pages\n\nAdd a trace event to the -\u003ewritepage loop in write_cache_pages to give\nvisibility into how the -\u003ewritepage call is changing variables within the\nwriteback control structure. Of most interest is how wbc-\u003enr_to_write changes\nfrom call to call, especially with filesystems that write multiple pages\nin -\u003ewritepage.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "028c2dd184c097809986684f2f0627eea5529fea",
      "tree": "f6eb9e30a24d73597e5ce2a65b4638e9d1947504",
      "parents": [
        "455b2864686d3591b3b2f39eb46290c95f76471f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jul 07 13:24:07 2010 +1000"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:24:25 2010 +0200"
      },
      "message": "writeback: Add tracing to balance_dirty_pages\n\nTracing high level background writeback events is good, but it doesn\u0027t\ngive the entire picture. Add visibility into write throttling to catch IO\ndispatched by foreground throttling of processing dirtying lots of pages.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9c3a8ee8a1d72c5c0d7fbdf426d80e270ddfa54c",
      "tree": "fa131760a61f66afeede852622ede0d716965489",
      "parents": [
        "06d738fa9155ff16dba3d7e501ba4581d01a98cb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 10 12:07:27 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 06 08:54:03 2010 +0200"
      },
      "message": "writeback: remove writeback_inodes_wbc\n\nThis was just an odd wrapper around writeback_inodes_wb.  Removing this\nalso allows to get rid of the bdi member of struct writeback_control\nwhich was rather out of place there.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c5444198ca210498e8ac0ba121b4cd3537aa12f7",
      "tree": "c423d38fe1ac7f51a48e455a19ecbe2354811fca",
      "parents": [
        "b8c2f3474f1077599ec6e90c2f263f17055cc3d8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Jun 08 18:15:15 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jun 11 12:58:08 2010 +0200"
      },
      "message": "writeback: simplify and split bdi_start_writeback\n\nbdi_start_writeback now never gets a superblock passed, so we can just remove\nthat case.  And to further untangle the code and flatten the call stack\nsplit it into two trivial helpers for it\u0027s two callers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "d87815cb2090e07b0b0b2d73dc9740706e92c80c",
      "tree": "0e23b40fce5b09c94dab2bf773601b310d8d9b09",
      "parents": [
        "254c8c2dbf0e06a560a5814eb90cb628adb2de66"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 09 10:37:20 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 08 18:12:44 2010 -0700"
      },
      "message": "writeback: limit write_cache_pages integrity scanning to current EOF\n\nsync can currently take a really long time if a concurrent writer is\nextending a file. The problem is that the dirty pages on the address\nspace grow in the same direction as write_cache_pages scans, so if\nthe writer keeps ahead of writeback, the writeback will not\nterminate until the writer stops adding dirty pages.\n\nFor a data integrity sync, we only need to write the pages dirty at\nthe time we start the writeback, so we can stop scanning once we get\nto the page that was at the end of the file at the time the scan\nstarted.\n\nThis will prevent operations like copying a large file preventing\nsync from completing as it will not write back pages that were\ndirtied after the sync was started. This does not impact the\nexisting integrity guarantees, as any dirty page (old or new)\nwithin the EOF range at the start of the scan will still be\ncaptured.\n\nThis patch will not prevent sync from blocking on large writes into\nholes. That requires more complex intervention while this patch only\naddresses the common append-case of this sync holdoff.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b5649278e39a068aaf91399941bab1b4a4a3cc2",
      "tree": "3fd2c782385137f5b135c07149de772e207fdaf8",
      "parents": [
        "8d7458daea2a6809d32418bf489b949d23de99ea"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 09 10:37:18 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 08 18:12:44 2010 -0700"
      },
      "message": "writeback: pay attention to wbc-\u003enr_to_write in write_cache_pages\n\nIf a filesystem writes more than one page in -\u003ewritepage, write_cache_pages\nfails to notice this and continues to attempt writeback when wbc-\u003enr_to_write\nhas gone negative - this trace was captured from XFS:\n\n    wbc_writeback_start: towrt\u003d1024\n    wbc_writepage: towrt\u003d1024\n    wbc_writepage: towrt\u003d0\n    wbc_writepage: towrt\u003d-1\n    wbc_writepage: towrt\u003d-5\n    wbc_writepage: towrt\u003d-21\n    wbc_writepage: towrt\u003d-85\n\nThis has adverse effects on filesystem writeback behaviour. write_cache_pages()\nneeds to terminate after a certain number of pages are written, not after a\ncertain number of calls to -\u003ewritepage are made.  This is a regression\nintroduced by 17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4 (\"vfs: Add\nno_nrwrite_index_update writeback control flag\"), but cannot be reverted\ndirectly due to subsequent bug fixes that have gone in on top of it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e3c9a2284f5417f196e327c254d0b84c9ee8929",
      "tree": "e3fb40ebe7d042b4b3c1042bc7f2edaf7fb6eee0",
      "parents": [
        "f17625b318d9b151e7bd41e31223e9d89b2aaa77"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 11:08:43 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jun 01 11:08:43 2010 +0200"
      },
      "message": "Revert \"writeback: fix WB_SYNC_NONE writeback from umount\"\n\nThis reverts commit e913fc825dc685a444cb4c1d0f9d32f372f59861.\n\nWe are investigating a hang associated with the WB_SYNC_NONE changes,\nso revert them for now.\n\nConflicts:\n\n\tfs/fs-writeback.c\n\tmm/page-writeback.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "5fce25a9df4865bdd5e3dc4853b269dc1677a02a"
}
