)]}'
{
  "log": [
    {
      "commit": "84a892456046921a40646114deed65e2df93a1bc",
      "tree": "2639b6031e55988b8780960c023618c381d61c55",
      "parents": [
        "81236810226f71bd9ff77321c8e8276dae7efc61"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jun 16 15:33:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:45 2009 -0700"
      },
      "message": "writeback: skip new or to-be-freed inodes\n\n1) I_FREEING tests should be coupled with I_CLEAR\n\nThe two I_FREEING tests are racy because clear_inode() can set i_state to\nI_CLEAR between the clear of I_SYNC and the test of I_FREEING.\n\n2) skip I_WILL_FREE inodes in generic_sync_sb_inodes() to avoid possible\n   races with generic_forget_inode()\n\ngeneric_forget_inode() sets I_WILL_FREE call writeback on its own, so\ngeneric_sync_sb_inodes() shall not try to step in and create possible races:\n\n  generic_forget_inode\n    inode-\u003ei_state |\u003d I_WILL_FREE;\n    spin_unlock(\u0026inode_lock);\n                                       generic_sync_sb_inodes()\n                                         spin_lock(\u0026inode_lock);\n                                         __iget(inode);\n                                         __writeback_single_inode\n                                           // see non zero i_count\n may WARN here \u003d\u003d\u003e                         WARN_ON(inode-\u003ei_state \u0026 I_WILL_FREE);\n                                         spin_unlock(\u0026inode_lock);\n may call generic_forget_inode again \u003d\u003d\u003e iput(inode);\n\nThe above race and warning didn\u0027t turn up because writeback_inodes() holds\nthe s_umount lock, so generic_forget_inode() finds MS_ACTIVE and returns\nearly.  But we are not sure the UBIFS calls and future callers will\nguarantee that.  So skip I_WILL_FREE inodes for the sake of safety.\n\nCc: Eric Sandeen \u003csandeen@sandeen.net\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Masayoshi MIZUMA \u003cm.mizuma@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\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": "4195f73d1329e49727bcceb028e58cb38376c2b0",
      "tree": "b4c729c164d6907e4186f6dc51e319a604dee416",
      "parents": [
        "545b9fd3d737afc0bb5203b1e79194a471605acd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu May 28 09:01:15 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:10 2009 -0400"
      },
      "message": "fs: block_dump missing dentry locking\n\nI think the block_dump output in __mark_inode_dirty is missing dentry locking.\nSurely the i_dentry list can change any time, so we may not even *get* a\ndentry there. If we do get one by chance, then it would appear to be able to\ngo away or get renamed at any time...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "545b9fd3d737afc0bb5203b1e79194a471605acd",
      "tree": "9b9a39b55c3145a225c5256ff2be3b07a1ee43bb",
      "parents": [
        "8688b8635266cf98f00c6b0350ea2dbe7c42c321"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jun 02 12:07:47 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:10 2009 -0400"
      },
      "message": "fs: remove incorrect I_NEW warnings\n\nSome filesystems can call in to sync an inode that is still in the\nI_NEW state (eg. ext family, when mounted with -osync). This is OK\nbecause the filesystem has sole access to the new inode, so it can\nmodify i_state without races (because no other thread should be\nmodifying it, by definition of I_NEW). Ie. a false positive, so\nremove the warnings.\n\nThe races are described here 7ef0d7377cb287e08f3ae94cebc919448e1f5dff,\nwhich is also where the warnings were introduced.\n\nReported-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5cee5815d1564bbbd505fea86f4550f1efdb5cd0",
      "tree": "ba99c38932dc534bf56f0d7dcfeeca153f50b007",
      "parents": [
        "429479f031322a0cc5c921ffb2321a51718dc875"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 27 16:43:51 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:03 2009 -0400"
      },
      "message": "vfs: Make sys_sync() use fsync_super() (version 4)\n\nIt is unnecessarily fragile to have two places (fsync_super() and do_sync())\ndoing data integrity sync of the filesystem. Alter __fsync_super() to\naccommodate needs of both callers and use it. So after this patch\n__fsync_super() is the only place where we gather all the calls needed to\nproperly send all data on a filesystem to disk.\n\nNice bonus is that we get a complete livelock avoidance and write_supers()\nis now only used for periodic writeback of superblocks.\n\nsync_blockdevs() introduced a couple of patches ago is gone now.\n\n[build fixes folded]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "811158b147a503fbdf9773224004ffd32002d1fe",
      "tree": "0a11dcfefe721bfc38ea9f1f4a238822dbae0dda",
      "parents": [
        "4e76c5ccd5ac9bd003467d3bb0f49b18572dd4cd",
        "b26e0ed4936b743b693a4cc1413561fa3e4eaf65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (28 commits)\n  trivial: Update my email address\n  trivial: NULL noise: drivers/mtd/tests/mtd_*test.c\n  trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h\n  trivial: Fix misspelling of \"Celsius\".\n  trivial: remove unused variable \u0027path\u0027 in alloc_file()\n  trivial: fix a pdlfush -\u003e pdflush typo in comment\n  trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL\n  trivial: wusb: Storage class should be before const qualifier\n  trivial: drivers/char/bsr.c: Storage class should be before const qualifier\n  trivial: h8300: Storage class should be before const qualifier\n  trivial: fix where cgroup documentation is not correctly referred to\n  trivial: Give the right path in Documentation example\n  trivial: MTD: remove EOL from MODULE_DESCRIPTION\n  trivial: Fix typo in bio_split()\u0027s documentation\n  trivial: PWM: fix of #endif comment\n  trivial: fix typos/grammar errors in Kconfig texts\n  trivial: Fix misspelling of firmware\n  trivial: cgroups: documentation typo and spelling corrections\n  trivial: Update contact info for Jochen Hein\n  trivial: fix typo \"resgister\" -\u003e \"register\"\n  ...\n"
    },
    {
      "commit": "d2caa3c549c74d6476e2c29e13bd4d0e7d21c7fe",
      "tree": "8bdaf6ababcd789ced0f441fd9503ee8e033d242",
      "parents": [
        "846c151a4de188bb8f7043097518dab2ff5b5c2c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Apr 02 16:56:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "writeback: guard against jiffies wraparound on inode-\u003edirtied_when checks (try #3)\n\nThe dirtied_when value on an inode is supposed to represent the first time\nthat an inode has one of its pages dirtied.  This value is in units of\njiffies.  It\u0027s used in several places in the writeback code to determine\nwhen to write out an inode.\n\nThe problem is that these checks assume that dirtied_when is updated\nperiodically.  If an inode is continuously being used for I/O it can be\npersistently marked as dirty and will continue to age.  Once the time\ncompared to is greater than or equal to half the maximum of the jiffies\ntype, the logic of the time_*() macros inverts and the opposite of what is\nneeded is returned.  On 32-bit architectures that\u0027s just under 25 days\n(assuming HZ \u003d\u003d 1000).\n\nAs the least-recently dirtied inode, it\u0027ll end up being the first one that\npdflush will try to write out.  sync_sb_inodes does this check:\n\n\t/* Was this inode dirtied after sync_sb_inodes was called? */\n \tif (time_after(inode-\u003edirtied_when, start))\n \t\tbreak;\n\n...but now dirtied_when appears to be in the future.  sync_sb_inodes bails\nout without attempting to write any dirty inodes.  When this occurs,\npdflush will stop writing out inodes for this superblock.  Nothing can\nunwedge it until jiffies moves out of the problematic window.\n\nThis patch fixes this problem by changing the checks against dirtied_when\nto also check whether it appears to be in the future.  If it does, then we\nconsider the value to be far in the past.\n\nThis should shrink the problematic window of time to such a small period\n(30s) as not to matter.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\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": "b6fac63cc1f52ec27f29fe6c6c8494a2ffac33fd",
      "tree": "78b4da8231fb80ea05fffc65c4647957b5a858fb",
      "parents": [
        "33e5d76979cf01e3834814fe0aea569d1d602c1a"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Apr 02 16:56:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "vfs: skip I_CLEAR state inodes\n\nclear_inode() will switch inode state from I_FREEING to I_CLEAR, and do so\n_outside_ of inode_lock.  So any I_FREEING testing is incomplete without a\ncoupled testing of I_CLEAR.\n\nSo add I_CLEAR tests to drop_pagecache_sb(), generic_sync_sb_inodes() and\nadd_dquot_ref().\n\nMasayoshi MIZUMA discovered the bug in drop_pagecache_sb() and Jan Kara\nreminds fixing the other two cases.\n\nMasayoshi MIZUMA has a nice panic flow:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            [process A]               |        [process B]\n |                                    |\n |    prune_icache()                  | drop_pagecache()\n |      spin_lock(\u0026inode_lock)        |   drop_pagecache_sb()\n |      inode-\u003ei_state |\u003d I_FREEING;  |       |\n |      spin_unlock(\u0026inode_lock)      |       V\n |          |                         |     spin_lock(\u0026inode_lock)\n |          V                         |         |\n |      dispose_list()                |         |\n |        list_del()                  |         |\n |        clear_inode()               |         |\n |          inode-\u003ei_state \u003d I_CLEAR  |         |\n |            |                       |         V\n |            |                       |      if (inode-\u003ei_state \u0026 (I_FREEING|I_WILL_FREE))\n |            |                       |              continue;           \u003c\u003d\u003d\u003d\u003d NOT MATCH\n |            |                       |\n |            |                       | (DANGER from here on! Accessing disposing inode!)\n |            |                       |\n |            |                       |      __iget()\n |            |                       |        list_move() \u003c\u003d\u003d\u003d\u003d\u003d PANIC on poisoned list !!\n V            V                       |\n(time)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nReported-by: Masayoshi MIZUMA \u003cm.mizuma@jp.fujitsu.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e3cb64f6c306079dd8fa888c6c0a63e7e13f966",
      "tree": "2360e49a2fcadb919cdc8c9cb9fc1ace83ebcc8b",
      "parents": [
        "0cbfdc8648115b2e8451ae9122311d01d2722005"
      ],
      "author": {
        "name": "Masatake YAMATO",
        "email": "yamato@redhat.com",
        "time": "Wed Feb 25 22:51:57 2009 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 30 15:22:03 2009 +0200"
      },
      "message": "trivial: fix a pdlfush -\u003e pdflush typo in comment\n\nSigned-off-by: Masatake YAMATO \u003cyamato@redhat.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7ef0d7377cb287e08f3ae94cebc919448e1f5dff",
      "tree": "3ab288db22eb17e76b5db1d9b8c6f7517570632f",
      "parents": [
        "f272b7bc447553410dde691aa31fc531adf9c175"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Mar 12 14:31:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "fs: new inode i_state corruption fix\n\nThere was a report of a data corruption\nhttp://lkml.org/lkml/2008/11/14/121.  There is a script included to\nreproduce the problem.\n\nDuring testing, I encountered a number of strange things with ext3, so I\ntried ext2 to attempt to reduce complexity of the problem.  I found that\nfsstress would quickly hang in wait_on_inode, waiting for I_LOCK to be\ncleared, even though instrumentation showed that unlock_new_inode had\nalready been called for that inode.  This points to memory scribble, or\nsynchronisation problme.\n\ni_state of I_NEW inodes is not protected by inode_lock because other\nprocesses are not supposed to touch them until I_LOCK (and I_NEW) is\ncleared.  Adding WARN_ON(inode-\u003ei_state \u0026 I_NEW) to sites where we modify\ni_state revealed that generic_sync_sb_inodes is picking up new inodes from\nthe inode lists and passing them to __writeback_single_inode without\nwaiting for I_NEW.  Subsequently modifying i_state causes corruption.  In\nmy case it would look like this:\n\nCPU0                            CPU1\nunlock_new_inode()              __sync_single_inode()\n reg \u003c- inode-\u003ei_state\n reg -\u003e reg \u0026 ~(I_LOCK|I_NEW)   reg \u003c- inode-\u003ei_state\n reg -\u003e inode-\u003ei_state          reg -\u003e reg | I_SYNC\n                                reg -\u003e inode-\u003ei_state\n\nNon-atomic RMW on CPU1 overwrites CPU0 store and sets I_LOCK|I_NEW again.\n\nFix for this is rather than wait for I_NEW inodes, just skip over them:\ninodes concurrently being created are not subject to data integrity\noperations, and should not significantly contribute to dirty memory\neither.\n\nAfter this change, I\u0027m unable to reproduce any of the added warnings or\nhangs after ~1hour of running.  Previously, the new warnings would start\nimmediately and hang would happen in under 5 minutes.\n\nI\u0027m also testing on ext3 now, and so far no problems there either.  I\ndon\u0027t know whether this fixes the problem reported above, but it fixes a\nreal problem for me.\n\nCc: \"Jorge Boncompte [DTI2]\" \u003cjorge@dti2.net\u003e\nReported-by: Adrian Hunter \u003cext-adrian.hunter@nokia.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "856bf4d717feb8c55d4e2f817b71ebb70cfbc67b",
      "tree": "f44790d9b8f42223955d1866645103ac5f9c68a3",
      "parents": [
        "38f21977663126fef53f5585e7f1653d8ebe55c4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: sys_sync fix\n\ns_syncing livelock avoidance was breaking data integrity guarantee of\nsys_sync, by allowing sys_sync to skip writing or waiting for superblocks\nif there is a concurrent sys_sync happening.\n\nThis livelock avoidance is much less important now that we don\u0027t have the\nget_super_to_sync() call after every sb that we sync.  This was replaced\nby __put_super_and_need_restart.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38f21977663126fef53f5585e7f1653d8ebe55c4",
      "tree": "be5ee7a264fea0d9f4b2d109b7e08b7a1ec794c9",
      "parents": [
        "4f5a99d64c17470a784a6c68064207d82e3e74a5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: sync_sb_inodes fix\n\nFix data integrity semantics required by sys_sync, by iterating over all\ninodes and waiting for any writeback pages after the initial writeout.\nComments explain the exact problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f5a99d64c17470a784a6c68064207d82e3e74a5",
      "tree": "2a3e0f0c3990bb8dbda2cdaa506a64180e5cbff2",
      "parents": [
        "e8ea1759138d4279869f52bfb7dca8f02f8ccfe5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: remove WB_SYNC_HOLD\n\nRemove WB_SYNC_HOLD.  The primary motiviation is the design of my\nanti-starvation code for fsync.  It requires taking an inode lock over the\nsync operation, so we could run into lock ordering problems with multiple\ninodes.  It is possible to take a single global lock to solve the ordering\nproblem, but then that would prevent a future nice implementation of \"sync\nmultiple inodes\" based on lock order via inode address.\n\nSeems like a backward step to remove this, but actually it is busted\nanyway: we can\u0027t use the inode lists for data integrity wait: an inode can\nbe taken off the dirty lists but still be under writeback.  In order to\nsatisfy data integrity semantics, we should wait for it to finish\nwriteback, but if we only search the dirty lists, we\u0027ll miss it.\n\nIt would be possible to have a \"writeback\" list, for sys_sync, I suppose.\nBut why complicate things by prematurely optimise?  For unmounting, we\ncould avoid the \"livelock avoidance\" code, which would be easier, but\nagain premature IMO.\n\nFixing the existing data integrity problem will come next.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "4ee6afd34409d296782a5b667d7991b1050e910a",
      "tree": "2a9aa6e7361d923afc60a2a5ee8cb76542152ca8",
      "parents": [
        "ae8547b0a9e5d718ce272ddc48f91703a0f52a0b"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed May 07 21:01:30 2008 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jul 14 19:10:52 2008 +0300"
      },
      "message": "VFS: export sync_sb_inodes\n\nThis patch exports the \u0027sync_sb_inodes()\u0027 which is needed for\nUBIFS because it has to force write-back from time to time.\nNamely, the UBIFS budgeting subsystem forces write-back when\nits pessimistic callculations show that there is no free\nspace on the media.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ae8547b0a9e5d718ce272ddc48f91703a0f52a0b",
      "tree": "e7caceb5171ae64c71b575d7fc38bdc319379791",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Hans Reiser",
        "email": "reiser@namesys.com",
        "time": "Wed May 07 15:48:57 2008 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jul 14 19:10:52 2008 +0300"
      },
      "message": "VFS: move inode_lock into sync_sb_inodes\n\nThis patch makes \u0027sync_sb_inodes()\u0027 lock \u0027inode_lock\u0027, rather\nthan expect that the caller will do this.\n\nThis change was previously done by Hans Reiser \u003creiser@namesys.com\u003e\nand sat in the -mm tree.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f11b00f3bd89c91c684d56b2082d1b0241ff20ae",
      "tree": "59f9be385f05d12d88d0ce70306687b64cbab3b8",
      "parents": [
        "67cde595374dd0e4e4a537dbf9dff70fd3d7bd7b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Apr 29 00:58:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:00 2008 -0700"
      },
      "message": "fs/fs-writeback.c: make 2 functions static\n\nMake the following needlessly global functions static:\n\n- writeback_acquire()\n- writeback_release()\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": "a6b91919e0881a0d0a4ae5211d5c879a8c7ca92b",
      "tree": "148aabc0a92a297f9220174435e822f30c951215",
      "parents": [
        "5366dc9fd1cb74023790a8edf29e4fe42c886dcf"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:01:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:36 2008 -0700"
      },
      "message": "fs: fix kernel-doc notation warnings\n\nFix kernel-doc notation warnings in fs/.\n\nWarning(mmotm-2008-0314-1449//fs/super.c:560): missing initial short description on line:\n *\tmark_files_ro\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/namei.c:1368): missing initial short description on line:\n * lookup_one_len:  filesystem helper to lookup single pathname component\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3221): missing initial short description on line:\n * bh_uptodate_or_lock: Test whether the buffer is uptodate\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3240): missing initial short description on line:\n * bh_submit_read: Submit a locked buffer for reading\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:30): missing initial short description on line:\n * writeback_acquire: attempt to get exclusive writeback access to a device\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:47): missing initial short description on line:\n * writeback_in_progress: determine whether there is writeback in progress\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:58): missing initial short description on line:\n * writeback_release: relinquish exclusive writeback access against a device.\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:351): contents before sections\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:561): contents before sections\nWarning(mmotm-2008-0314-1449//fs/jbd/transaction.c:1935): missing initial short description on line:\n * void journal_invalidatepage()\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": "18914b1884ebdbcd4d4454100502a23d1d2dba43",
      "tree": "e52412029b3c0d977e12454feb2a13f8415df6d9",
      "parents": [
        "abe8be3abe4c2043bd766f32d7eba62c12dbb0b3"
      ],
      "author": {
        "name": "Mike Galbraith",
        "email": "efault@gmx.de",
        "time": "Fri Feb 08 04:20:23 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:34 2008 -0800"
      },
      "message": "write_inode_now(): avoid unnecessary synchronous write\n\nWe shouldn\u0027t use WB_SYNC_ALL if the caller is asking for asynchronous\ntreatment.\n\nSigned-off-by: Mike Galbraith \u003cefault@gmx.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "797074e44d78835adbde2ca527718b0e50226b95",
      "tree": "7a54757b7201f4e0085ad1a654fa319eb7e07816",
      "parents": [
        "e8462caa915d4d12846db7aae2557b6db7c054d5"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Feb 06 01:37:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:05 2008 -0800"
      },
      "message": "fs: use list_for_each_entry_reverse and kill sb_entry\n\nUse list_for_each_entry_reverse for super_blocks list and remove\nunused sb_entry macro.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "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": "2d544564f9954860235db97df2e549a66c61f557",
      "tree": "b539ab01562ae5b92ce365afd32e8fbab74a7e11",
      "parents": [
        "5a9bbdcd29adbb786c53eba1dfc3c2d256020d6b"
      ],
      "author": {
        "name": "Qi Yong",
        "email": "qiyong@fc-cn.com",
        "time": "Mon Feb 04 22:29:23 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "skip writing data pages when inode is under I_SYNC\n\nSince I_SYNC was split out from I_LOCK, the concern in commit\n4b89eed93e0fa40a63e3d7b1796ec1337ea7a3aa (\"Write back inode data pages\neven when the inode itself is locked\") is not longer valid.\n\nWe should revert to the original behavior: in __writeback_single_inode(),\nwhen we find an I_SYNC-ed inode and we\u0027re not doing a data-integrity sync,\nskip writing entirely.  Otherwise, we are double calling do_writepages()\n\nSigned-off-by: Qi Yong \u003cqiyong@fc-cn.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Joern Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nCc: WU Fengguang \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": "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": "ba25f9dcc4ea6e30839fcab5a5516f2176d5bfed",
      "tree": "3123c03b25dd5c0cd24b6ab4fc16731217838157",
      "parents": [
        "9a2e70572e94e21e7ec4186702d045415422bda0"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Thu Oct 18 23:40:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:43 2007 -0700"
      },
      "message": "Use helpers to obtain task pid in printks\n\nThe task_struct-\u003epid member is going to be deprecated, so start\nusing the helpers (task_pid_nr/task_pid_vnr/task_pid_nr_ns) in\nthe kernel.\n\nThe first thing to start with is the pid, printed to dmesg - in\nthis case we may safely use task_pid_nr(). Besides, printks produce\nmore (much more) than a half of all the explicit pid usage.\n\n[akpm@linux-foundation.org: git-drm went and changed lots of stuff]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c0eeaf5698597146ed9b873e2f9e0961edcf0f9",
      "tree": "5265eac8437e8ce517a62db8fe2bd99db5b7019b",
      "parents": [
        "2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b"
      ],
      "author": {
        "name": "Joern Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Tue Oct 16 23:30:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "introduce I_SYNC\n\nI_LOCK was used for several unrelated purposes, which caused deadlock\nsituations in certain filesystems as a side effect.  One of the purposes\nnow uses the new I_SYNC bit.\n\nAlso document the various bits and change their order from historical to\nlogical.\n\n[bunk@stusta.de: make fs/inode.c:wake_up_inode() static]\nSigned-off-by: Joern Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cam.ac.uk\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b",
      "tree": "aec0418150413c7e9f43fb2ec68bfd24738b0623",
      "parents": [
        "1f7decf6d9f06dac008b8d66935c0c3b18e564f9"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 23:30:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: introduce writeback_control.more_io to indicate more io\n\nAfter making dirty a 100M file, the normal behavior is to start the writeback\nfor all data after 30s delays.  But sometimes the following happens instead:\n\n\t- after 30s:    ~4M\n\t- after 5s:     ~4M\n\t- after 5s:     all remaining 92M\n\nSome analyze shows that the internal io dispatch queues goes like this:\n\n\t\ts_io            s_more_io\n\t\t-------------------------\n\t1)\t100M,1K         0\n\t2)\t1K              96M\n\t3)\t0               96M\n\n1) initial state with a 100M file and a 1K file\n2) 4M written, nr_to_write \u003c\u003d 0, so write more\n3) 1K written, nr_to_write \u003e 0, no more writes(BUG)\n\nnr_to_write \u003e 0 in (3) fools the upper layer to think that data have all been\nwritten out.  The big dirty file is actually still sitting in s_more_io.  We\ncannot simply splice s_more_io back to s_io as soon as s_io becomes empty, and\nlet the loop in generic_sync_sb_inodes() continue: this may starve newly\nexpired inodes in s_dirty.  It is also not an option to draw inodes from both\ns_more_io and s_dirty, an let the loop go on: this might lead to live locks,\nand might also starve other superblocks in sync time(well kupdate may still\nstarve some superblocks, that\u0027s another bug).\n\nWe have to return when a full scan of s_io completes.  So nr_to_write \u003e 0 does\nnot necessarily mean that \"all data are written\".  This patch introduces a\nflag writeback_control.more_io to indicate this situation.  With it the big\ndirty file no longer has to wait for the next kupdate invocation 5s later.\n\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08d8e9749e7f0435ba4683b620e8d30d59276b4c",
      "tree": "a973ab68d1f10f02e13f8d536ba0bf2cb8f2ffba",
      "parents": [
        "2c1365791048e8aff42138ed5f6040b3c7824a69"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 23:30:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix ntfs with sb_has_dirty_inodes()\n\nNTFS\u0027s if-condition on dirty inodes is not complete.  Fix it with\nsb_has_dirty_inodes().\n\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c1365791048e8aff42138ed5f6040b3c7824a69",
      "tree": "3c8de64f6b4995125f3f6171fdf175232a412783",
      "parents": [
        "0e0f4fc22ece8e593167eccbb1a4154565c11faa"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Tue Oct 16 23:30:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock inode lists 8\n\nStreamline the management of dirty inode lists and fix time ordering bugs.\n\nThe writeback logic used to move not-yet-expired dirty inodes from s_dirty to\ns_io, *only to* move them back.  The move-inodes-back-and-forth thing is a\nmess, which is eliminated by this patch.\n\nThe new scheme is:\n- s_dirty acts as a time ordered io delaying queue;\n- s_io/s_more_io together acts as an io dispatching queue.\n\nOn kupdate writeback, we pull some inodes from s_dirty to s_io at the start of\nevery full scan of s_io.  Otherwise  (i.e. for sync/throttle/background\nwriteback), we always pull from s_dirty on each run (a partial scan).\n\nNote that the line\n\tlist_splice_init(\u0026sb-\u003es_more_io, \u0026sb-\u003es_io);\nis moved to queue_io() to leave s_io empty. Otherwise a big dirtied file will\nsit in s_io for a long time, preventing new expired inodes to get in.\n\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e0f4fc22ece8e593167eccbb1a4154565c11faa",
      "tree": "564ab2eabb31ab945c334706662854bb227f45e9",
      "parents": [
        "670e4def6ef5f44315d62748134e535b479c784f"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Tue Oct 16 23:30:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix periodic superblock dirty inode flushing\n\nCurrent -mm tree has bucketful of bug fixes in periodic writeback path.\nHowever, we still hit a glitch where dirty pages on a given inode aren\u0027t\ncompletely flushed to the disk, and system will accumulate large amount of\ndirty pages beyond what dirty_expire_interval is designed for.\n\nThe problem is __sync_single_inode() will move an inode to sb-\u003es_dirty list\neven when there are more pending dirty pages on that inode.  If there is\nanother inode with a small number of dirty pages, we hit a case where the loop\niteration in wb_kupdate() terminates prematurely because wbc.nr_to_write \u003e 0.\nThus leaving the inode that has large amount of dirty pages behind and it has\nto wait for another dirty_writeback_interval before we flush it again.  We\neffectively only write out MAX_WRITEBACK_PAGES every dirty_writeback_interval.\nIf the rate of dirtying is sufficiently high, the system will start\naccumulate a large number of dirty pages.\n\nSo fix it by having another sb-\u003es_more_io list on which to park the inode\nwhile we iterate through sb-\u003es_io and to allow each dirty inode which resides\non that sb to have an equal chance of flushing some amount of dirty pages.\n\nSigned-off-by: Ken Chen \u003ckenchen@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": "670e4def6ef5f44315d62748134e535b479c784f",
      "tree": "808b850c2f08c3d546f6ca06850815324cb770a3",
      "parents": [
        "65cb9b47e0ea568a7a38cce7773052a6ea093629"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists 7\n\nThis one fixes four bugs.\n\nThere are a few situation in there where writeback decides it is going to skip\nover a blockdev inode on the kernel-internal blockdev superblock.  It\npresently does this by moving the blockdev inode onto the tail of the blockdev\nsuperblock\u0027s s_dirty.  But\n\na) this screws up s_dirty\u0027s reverse-time-orderedness and\n\nb) refiling the blockdev for writeback in another 30 second is rude.  We\n   should try again sooner than that.\n\nFix all this up by using redirty_head(): move the blockdev inode onto the head\nof the blockdev superblock\u0027s s_dirty list for prompt writeback.\n\nCc: Mike Waychison \u003cmikew@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": "65cb9b47e0ea568a7a38cce7773052a6ea093629",
      "tree": "9a53747f37c772cb882a7cbcd65879c36c5297fd",
      "parents": [
        "c6945e77e477103057b4a639b4b01596f5257861"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists 6\n\nRecycling the previous changelog:\n\n  When the writeback function is operating in writeback-for-flushing mode\n  (as opposed to writeback-for-integrity) and it encounters an I_LOCKed inode,\n  it will skip writing that inode.  This is done for throughput and latency:\n  move on to another inode rather than blocking for this one.\n\n  Writeback skips this inode by moving it off s_io and onto s_dirty, so that\n  writeback can proceed with the other inodes on s_io.\n\n  However that inode movement can corrupt s_dirty\u0027s\n  reverse-time-orderedness.  Fix that by using the new redirty_tail(), which\n  will update the refiled inode\u0027s dirtied_when field.\n\n  Note: the behaviour in here is a bit rude: if kupdate happens to come\n  across a locked inode then it will defer writeback of that inode for another\n  30 seconds.  We\u0027ll address that in the next patch.\n\nAddress that here.  What we do is to move the skipped inode to the _head_ of\ns_dirty, immediately eligible for writeout again.  Instead of deferring that\nwriteout for another 30 seconds.\n\nOne would think that this might cause a livelock: we keep on trying to write\nthe same locked inode.  But it won\u0027t because:\n\na) if that was the case, it would _already_ be happening on the\n   balance_dirty_pages codepath.  Because balance_dirty_pages() doesn\u0027t care\n   about inode timestamps.\n\nb) if we skipped this inode then we won\u0027t have done any writeback.  The\n   higher-level writeback paths will see that wbc.nr_to_write didn\u0027t change\n   and they\u0027ll then back off and take a nap.\n\nCc: Mike Waychison \u003cmikew@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": "c6945e77e477103057b4a639b4b01596f5257861",
      "tree": "02e6b473143060cdec08f3d8447512d56ea699bd",
      "parents": [
        "1b43ef91d40190b16ba10218e66d5c2c4ba11de3"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists 5\n\nWhen the writeback function is operating in writeback-for-flushing mode (as\nopposed to writeback-for-integrity) and it encounters an I_LOCKed inode, it\nwill skip writing that inode.  This is done for throughput and latency: move\non to another inode rather than blocking for this one.\n\nWriteback skips this inode by moving it off s_io and onto s_dirty, so that\nwriteback can proceed with the other inodes on s_io.\n\nHowever that inode movement can corrupt s_dirty\u0027s reverse-time-orderedness.\nFix that by using the new redirty_tail(), which will update the refiled\ninode\u0027s dirtied_when field.\n\nNote: the behaviour in here is a bit rude: if kupdate happens to come across a\nlocked inode then it will defer writeback of that inode for another 30\nseconds.  We\u0027ll address that in the next patch.\n\nCc: Mike Waychison \u003cmikew@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": "1b43ef91d40190b16ba10218e66d5c2c4ba11de3",
      "tree": "21d46e09ae07ae8a7ea0b0d9927b1dafb8787155",
      "parents": [
        "c986d1e2a460cbce79d631c51519ae82c778c6c5"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix comment, use helper function\n\nThere\u0027s a comment in there which claims that the inode is left on s_io\nif nfs chickened out of writing some data.\n\nBut that\u0027s not been true for three years.\n9290280ced13c85689adeffa587e9a53bd3a5873 fixed a livelock by moving these\ninodes back onto s_dirty.  Fix the comment.\n\nIn the second leg of the `if\u0027, use redirty_tail() rather than open-coding it.\n\nAdd weaselly comment indicating lack of confidence in the code and lack of the\nfortitude which would be needed to fiddle with it.\n\nCc: Mike Waychison \u003cmikew@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": "c986d1e2a460cbce79d631c51519ae82c778c6c5",
      "tree": "d7303b22dfea805dba8db7d147294d1aa53ba7ce",
      "parents": [
        "f57b9b7b4f68e1723ca99381dc10c8bc07d6df14"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists 4\n\nWhen the kupdate function has tried to write back an expired inode it will\nthen check to see whether some of the inode\u0027s pages are still dirty.\n\nThis can happen when the filesystem decided to not write a page for some\nreason.  But it does _not_ occur due to redirtyings: a redirtying will set\nI_DIRTY_PAGES.\n\nWhat we need to do here is to set I_DIRTY_PAGES to reflect reality and to then\nput the inode onto the _head_ of s_dirty for consideration on the next kupdate\npass, in five seconds time.\n\nProblem is, the code failed to modify the inode\u0027s timestamp when pushing the\ninode onto thehead of s_dirty.\n\nThe patch:\n\nIf there are no other inodes on s_dirty then we leave the inode\u0027s timestamp\nalone: it is already expired.\n\nIf there _are_ other inodes on s_dirty then we arrange for this inode to get\nthe same timestamp as the inode which is at the head of s_dirty, thus\npreserving the s_dirty ordering.  But we only need to do this if this inode\npurports to have been dirtied before the one at head-of-list.\n\nCc: Mike Waychison \u003cmikew@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": "f57b9b7b4f68e1723ca99381dc10c8bc07d6df14",
      "tree": "2d622e2878b86d74a9c2d0cff3d1261c55864abf",
      "parents": [
        "9852a0e76cd9c89e71f84e784212fdd7a97ae93a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists 3\n\nWhile writeback is working against a dirty inode it does a check after trying\nto write some of the inode\u0027s pages:\n\n\"did the lower layers skip some of the inode\u0027s dirty pages because they were\nlocked (or under writeback, or whatever)\"\n\nIf this turns out to be true, we must move the inode back onto s_dirty and\nredirty it.  The reason for doing this is that fsync() and friends only check\nthe s_dirty list, and those functions want to know about those pages which\nwere locked, so they can be waited upon and, if necessary, rewritten.\n\nProblem is, that redirtying was putting the inode onto the tail of s_dirty\nwithout updating its timestamp.  This causes a violation of s_dirty ordering.\n\nFix this by updating inode-\u003edirtied_when when moving the inode onto s_dirty.\n\nBut the code is still a bit buggy?  If the inode was _already_ dirty then we\ndon\u0027t need to move it at all.  Oh well, hopefully it doesn\u0027t matter too much,\nas that was a redirtying, which was very recent anwyay.\n\nCc: Mike Waychison \u003cmikew@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": "9852a0e76cd9c89e71f84e784212fdd7a97ae93a",
      "tree": "e655477605be55176a99a01e14e3b60454bd2012",
      "parents": [
        "6610a0bc8dcc120daa1d93807d470d5cbf777c39"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "writeback: fix time ordering of the per superblock dirty inode lists: memory-backed inodes\n\nFor reasons which escape me, inodes which are dirty against a ram-backed\nfilesystem are managed in the same way as inodes which are backed by real\ndevices.\n\nProbably we could optimise things here.  But given that we skip the entire\nsupeblock as son as we hit the first dirty inode, there\u0027s not a lot to be\ngained.\n\nAnd the code does need to handle one particular non-backed superblock: the\nkernel\u0027s fake internal superblock which holds all the blockdevs.\n\nStill.  At present when the code encounters an inode which is dirty against a\nmemory-backed filesystem it will skip that inode by refiling it back onto\ns_dirty.  But it fails to update the inode\u0027s timestamp when doing so which at\nleast makes the debugging code upset.\n\nFix.\n\nCc: Mike Waychison \u003cmikew@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": "6610a0bc8dcc120daa1d93807d470d5cbf777c39",
      "tree": "e98afd34fa859877286c9f67d2b99fc7022c94af",
      "parents": [
        "2b0172e1c6e6aea0a4efcfaaab38d4a02046f45a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Oct 16 23:30:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:01 2007 -0700"
      },
      "message": "writeback: fix time-ordering of the per-superblock dirty-inode lists\n\nWhen writeback has finished writing back an inode it looks to see if that\ninode is still dirty.  If it is, that means that a process redirtied the inode\nwhile its writeback was in progress.\n\nWhat we need to do here is to refile the redirtied inode onto the s_dirty\nlist.\n\nBut we\u0027re doing that wrongly: it could be that this inode was redirtied\n_before_ the last inode on s_dirty.  We\u0027re blindly appending this inode to the\nlist, after an inode which might be less-recently-dirtied, thus violating the\nlist\u0027s ordering.\n\nSo we must either insertion-sort this inode into the correct place, or we must\nupdate this inode\u0027s dirtied_when field when appending it to the reverse-sorted\ns_dirty list, to preserve the reverse-time-ordering.\n\nThis patch does the latter: if this inode was dirtied less recently than the\ntail inode then copy the tail inode\u0027s timestamp into this inode.\n\nThis means that in rare circumstances, some inodes will be writen back later\nthan they should have been.  But the time slip will be small.\n\nCc: Mike Waychison \u003cmikew@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": "f5ff8422bbdd59f8c1f699df248e1b7a11073027",
      "tree": "cdd0777acc58c0badd2d0ae66f3efc2f7318e776",
      "parents": [
        "3317fedba9446465082bcc6ce1232451ad1d51ce"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 21 09:19:54 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Wed Oct 10 09:25:57 2007 +0200"
      },
      "message": "Fix warnings with !CONFIG_BLOCK\n\nHide everything in blkdev.h with CONFIG_BLOCK isn\u0027t set, and fixup\nthe (few) files that fail to build because they were relying on blkdev.h\npulling in extra includes for them.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4b89eed93e0fa40a63e3d7b1796ec1337ea7a3aa",
      "tree": "7c3ad379a17df033501cb2c20921da65d0029002",
      "parents": [
        "ecdfc9787fe527491baefc22dce8b2dbd5b2908d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 12:53:20 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 12:53:20 2007 -0800"
      },
      "message": "Write back inode data pages even when the inode itself is locked\n\nIn __writeback_single_inode(), when we find a locked inode and we\u0027re not\ndoing a data-integrity sync, we used to just skip writing entirely,\nsince we didn\u0027t want to wait for the inode to unlock.\n\nHowever, there\u0027s really no reason to skip writing the data pages, which\nare likely to be the the bulk of the dirty state anyway (and the main\nreason why writeback was started for the non-data-integrity case, of\ncourse!)\n\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e,\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b0de42d7c5a471741ede4e71727d88000e6ea59",
      "tree": "808b27ad3b2f4a83a97bcc4c001970fab96ff7b6",
      "parents": [
        "07f3f05c1e3052b8656129b2a5aca9f888241a34"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:06:07 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:26 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Remove dependence on existence of blockdev_superblock [try #6]\n\nMove blockdev_superblock extern declaration from fs/fs-writeback.c to a\nheaderfile and remove the dependence on it by wrapping it in a macro.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "07f3f05c1e3052b8656129b2a5aca9f888241a34",
      "tree": "3338b004d518a0d2189efdc3fb88e94e1c02c0ce",
      "parents": [
        "65e6f5bc8149165efb9d7bdbd142bb837d5edfeb"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move extern declarations out of fs/*.c into header files [try #6]\n\nCreate a new header file, fs/internal.h, for common definitions local to the\nsources in the fs/ directory.\n\nMove extern definitions that should be in header files from fs/*.c to\nfs/internal.h or other main header files where they span directories.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "fd39fc8561be33065306bdac0e30414e1e8ac8e1",
      "tree": "ae0740716eed3f850a8f7232c61caebe360bb5ae",
      "parents": [
        "ce866b34ae1b7f1ce60234cf65855886ac7e7d30"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_unstable to per zone counter\n\nConversion of nr_unstable to a per zone counter\n\nWe need to do some special modifications to the nfs code since there are\nmultiple cases of disposition and we need to have a page ref for proper\naccounting.\n\nThis converts the last critical page state of the VM and therefore we need to\nremove several functions that were depending on GET_PAGE_STATE_LAST in order\nto make the kernel compile again.  We are only left with event type counters\nin page state.\n\n[akpm@osdl.org: bugfixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b1e7a8fd854d2f895730e82137400012b509650e",
      "tree": "9fba87ff6b0146ebd4ee5bc7d5f0c8b037dbb3ad",
      "parents": [
        "df849a1529c106f7460e51479ca78fe07b07dc8c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:35 2006 -0700"
      },
      "message": "[PATCH] zoned vm counters: conversion of nr_dirty to per zone counter\n\nThis makes nr_dirty a per zone counter.  Looping over all processors is\navoided during writeback state determination.\n\nThe counter aggregation for nr_dirty had to be undone in the NFS layer since\nwe summed up the page counts from multiple zones.  Someone more familiar with\nNFS should probably review what I have done.\n\n[akpm@osdl.org: bugfix]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b31dc66a54ad986b6b73bdc49c8efc17cbad1833",
      "tree": "5591383c1cbffe11512da889c971f899333f1a44",
      "parents": [
        "271f18f102c789f59644bb6c53a69da1df72b2f4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 13 08:26:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] Kill PF_SYNCWRITE flag\n\nA process flag to indicate whether we are doing sync io is incredibly\nugly. It also causes performance problems when one does a lot of async\nio and then proceeds to sync it. Part of the io will go out as async,\nand the other part as sync. This causes a disconnect between the\npreviously submitted io and the synced io. For io schedulers such as CFQ,\nthis will cause us lost merges and suboptimal behaviour in scheduling.\n\nRemove PF_SYNCWRITE completely from the fsync/msync paths, and let\nthe O_DIRECT path just directly indicate that the writes are sync\nby using WRITE_SYNC instead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "111ebb6e6f7bd7de6d722c5848e95621f43700d9",
      "tree": "bb00b13001db9be201e9b6d31468a79f4d1240bf",
      "parents": [
        "4c91c3648c620003cb7b21b8858f36cd6132e168"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Jun 23 02:03:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:49 2006 -0700"
      },
      "message": "[PATCH] writeback: fix range handling\n\nWhen a writeback_control\u0027s `start\u0027 and `end\u0027 fields are used to\nindicate a one-byte-range starting at file offset zero, the required\nvalues of .start\u003d0,.end\u003d0 mean that the -\u003ewritepages() implementation\nhas no way of telling that it is being asked to perform a range\nrequest.  Because we\u0027re currently overloading (start \u003d\u003d 0 \u0026\u0026 end \u003d\u003d 0)\nto mean \"this is not a write-a-range request\".\n\nTo make all this sane, the patch changes range of writeback_control.\n\nSo caller does: If it is calling -\u003ewritepages() to write pages, it\nsets range (range_start/end or range_cyclic) always.\n\nAnd if range_cyclic is true, -\u003ewritepages() thinks the range is\ncyclic, otherwise it just uses range_start and range_end.\n\nThis patch does,\n\n    - Add LLONG_MAX, LLONG_MIN, ULLONG_MAX to include/linux/kernel.h\n      -1 is usually ok for range_end (type is long long). But, if someone did,\n\n\t\trange_end +\u003d val;\t\trange_end is \"val - 1\"\n\t\tu64val \u003d range_end \u003e\u003e bits;\tu64val is \"~(0ULL)\"\n\n      or something, they are wrong. So, this adds LLONG_MAX to avoid nasty\n      things, and uses LLONG_MAX for range_end.\n\n    - All callers of -\u003ewritepages() sets range_start/end or range_cyclic.\n\n    - Fix updates of -\u003ewriteback_index. It seems already bit strange.\n      If it starts at 0 and ended by check of nr_to_write, this last\n      index may reduce chance to scan end of file.  So, this updates\n      -\u003ewriteback_index only if range_cyclic is true or whole-file is\n      scanned.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4ffc84442572669727dc4fcd976582508eaf23e7",
      "tree": "ace5723edaefabf517683e44381d19d9fb141ae0",
      "parents": [
        "d25b9a1ff0741e71a46f37f45263b5ddcbc948c4"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Sat Mar 25 03:07:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:56 2006 -0800"
      },
      "message": "[PATCH] Move cond_resched() after iput() in sync_sb_inodes()\n\nIn here, I think the following order is more cache-friendly.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b8887e6e8c04bcefb512cdb08fc7e9c310ac847e",
      "tree": "f8dcfee2314ad0c1998e70449fdd814e675cf90a",
      "parents": [
        "1e5d533142c1c178a31d4cc81837eb078f9269bc"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Mon Nov 07 01:01:07 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:55 2005 -0800"
      },
      "message": "[PATCH] kernel-docs: fix kernel-doc format problems\n\nConvert to proper kernel-doc format.\n\nSome have extra blank lines (not allowed immed.  after the function name)\nor need blank lines (after all parameters).  Function summary must be only\none line.\n\nColon (\":\") in a function description does weird things (causes kernel-doc\nto think that it\u0027s a new section head sadly).\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "49364ce2534418462d681ad99e52e79a00b0f40b",
      "tree": "0eacbe38add427ee9fd1e67f465510c8c2ceb638",
      "parents": [
        "cd6b0762a04978baf48412456a687842de97e381"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Mon Nov 07 00:59:15 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:35 2005 -0800"
      },
      "message": "[PATCH] write_inode_now(): write inode if not BDI_CAP_NO_WRITEBACK\n\nIf the backing_dev_info doesn\u0027t have BDI_CAP_NO_WRITEBACK we\u0027re not supposed\nto write back an inode\u0027s pages.  But in this situation write_inode_now()\nrefuses to write the inode itself as well.  Fix.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "659603ef692d3f6c7c216e80310990253864bf2e",
      "tree": "f1e8fe6176fdf4d34ef7f62fa2f1f9f619e9d26f",
      "parents": [
        "a717f77362d4fe044721c126c89e2a38e731a576"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Mon Oct 31 14:08:54 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 31 14:22:04 2005 -0800"
      },
      "message": "[PATCH] fix __writeback_single_inode WARN_ON\n\nWhen the inode count is zero in inode writeback, the\n\n\tWARN_ON(!(inode-\u003ei_state \u0026 I_WILL_FREE));\n\nis broken, and needs to test for either I_WILL_FREE|I_FREEING.\n\nWhen the inode is in I_FREEING state, it\u0027s already out of the visibility\nof the vm so it can\u0027t be freed so it doesn\u0027t require the __iget and the\ngeneric_delete_inode path can call the sync internally to the lowlevel\nfs callback during the last iput. So the inode being in I_FREEING is\nalso a valid condition for calling the sync with i_count \u003d\u003d 0.\n\nThe specific stack trace is this:\n\n  0xc00000007b8fb6e0  0xc00000000010118c  .__writeback_single_inode +0x5c\n  0xc00000007b8fb6e0  0xc0000000001014dc (lr) .sync_inode +0x3c\n  0xc00000007b8fb790  0xc0000000001014dc  .sync_inode +0x3c\n  0xc00000007b8fb820  0xc0000000001a5020  .ext2_sync_inode +0x64\n  0xc00000007b8fb8f0  0xc0000000001a65b4  .ext2_truncate +0x3f8\n  0xc00000007b8fba40  0xc0000000001a6940  .ext2_delete_inode +0xdc\n  0xc00000007b8fbac0  0xc0000000000f7a5c  .generic_delete_inode +0x124\n  0xc00000007b8fbb50  0xc0000000000f5fe0  .iput +0xb8\n  0xc00000007b8fbbe0  0xc0000000000e9fd4  .sys_unlink +0x2a8\n  0xc00000007b8fbd10  0xc00000000001048c  .ret_from_syscall_1 +0x0\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f04c26d715a2467a49a2384268de8f70f787b51",
      "tree": "8507e9f705f063d996857789261b762b24fad94f",
      "parents": [
        "52303e8b5f8aa234865d40d76ea16b0ff4b27022"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Sun Oct 30 15:03:05 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:26 2005 -0800"
      },
      "message": "[PATCH] fix nr_unused accounting, and avoid recursing in iput with I_WILL_FREE set\n\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_in_use);\n \t\t} else {\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_unused);\n+\t\t\tinodes_stat.nr_unused++;\n \t\t}\n \t}\n \twake_up_inode(inode);\n\nAre you sure the above diff is correct? It was added somewhere between\n2.6.5 and 2.6.8. I think it\u0027s wrong.\n\nThe only way I can imagine the i_count to be zero in the above path, is\nthat I_WILL_FREE is set.  And if I_WILL_FREE is set, then we must not\nincrease nr_unused.  So I believe the above change is buggy and it will\ndefinitely overstate the number of unused inodes and it should be backed\nout.\n\nNote that __writeback_single_inode before calling __sync_single_inode, can\ndrop the spinlock and we can have both the dirty and locked bitflags clear\nhere:\n\n\t\tspin_unlock(\u0026inode_lock);\n\t\t__wait_on_inode(inode);\n\t\tiput(inode);\nXXXXXXX\n\t\tspin_lock(\u0026inode_lock);\n\t}\n\tuse inode again here\n\na construct like the above makes zero sense from a reference counting\nstandpoint.\n\nEither we don\u0027t ever use the inode again after the iput, or the\ninode_lock should be taken _before_ executing the iput (i.e. a __iput\nwould be required). Taking the inode_lock after iput means the iget was\nuseless if we keep using the inode after the iput.\n\nSo the only chance the 2.6 was safe to call __writeback_single_inode\nwith the i_count \u003d\u003d 0, is that I_WILL_FREE is set (I_WILL_FREE will\nprevent the VM to free the inode in XXXXX).\n\nPotentially calling the above iput with I_WILL_FREE was also wrong\nbecause it would recurse in iput_final (the second mainline bug).\n\nThe below (untested) patch fixes the nr_unused accounting, avoids recursing\nin iput when I_WILL_FREE is set and makes sure (with the BUG_ON) that we\ndon\u0027t corrupt memory and that all holders that don\u0027t set I_WILL_FREE, keeps\na reference on the inode!\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "618f06362ae3f60f95d7b0e666de25ee6ae35679",
      "tree": "4415b4e590913e16535704168ea74c6af5a93c48",
      "parents": [
        "4fea2838aa00b9e59efde974dcdb455608192811"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@sw.ru",
        "time": "Thu Jun 23 00:09:54 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:27 2005 -0700"
      },
      "message": "[PATCH] O(1) sb list traversing on syncs\n\nThis patch removes O(n^2) super block loops in sync_inodes(),\nsync_filesystems() etc.  in favour of using __put_super_and_need_restart()\nwhich I introduced earlier.  We faced a noticably long freezes on sb\nsyncing when there are thousands of super blocks in the system.\n\nSigned-Off-By: Kirill Korotaev \u003cdev@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67be2dd1bace0ec7ce2dbc1bba3f8df3d7be597e",
      "tree": "317d114a0288d3b19ef9902f94b536a5a8731dbd",
      "parents": [
        "6013d5445f9a6d0b28090027868f455c5012d1cc"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "message": "[PATCH] DocBook: fix some descriptions\n\nSome KernelDoc descriptions are updated to match the current code.\nNo code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
