)]}'
{
  "log": [
    {
      "commit": "1296cc85c26e94eb865d03f82140f27d598de467",
      "tree": "b8a2bc06ecd992a86179ebcd9c087994c676c291",
      "parents": [
        "5f634d064c709ea02c3cdaa850a08323a4a4bf28"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jan 15 01:27:59 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 15 01:27:59 2010 -0500"
      },
      "message": "ext4: Drop EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE flag\n\nWe should update reserve space if it is delalloc buffer\nand that is indicated by EXT4_GET_BLOCKS_DELALLOC_RESERVE flag.\nSo use EXT4_GET_BLOCKS_DELALLOC_RESERVE in place of\nEXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5f634d064c709ea02c3cdaa850a08323a4a4bf28",
      "tree": "3f81e9c56cd8348b7bb94f1d54efff696374c929",
      "parents": [
        "1db913823c0f8360fccbd24ca67eb073966a5ffd"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 25 04:00:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 25 04:00:31 2010 -0500"
      },
      "message": "ext4: Fix quota accounting error with fallocate\n\nWhen we fallocate a region of the file which we had recently written,\nand which is still in the page cache marked as delayed allocated blocks\nwe need to make sure we don\u0027t do the quota update on writepage path.\nThis is because the needed quota updated would have already be done\nby fallocate.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1db913823c0f8360fccbd24ca67eb073966a5ffd",
      "tree": "ec5f7be2cfa884b04ca3d26c2dee53283fe16ca7",
      "parents": [
        "74d2e4f8d79ae0c4b6ec027958d5b18058662eea"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jan 22 17:06:20 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 22 17:06:20 2010 -0500"
      },
      "message": "ext4: Handle -EDQUOT error on write\n\nWe need to release the journal before we do a write_inode.  Otherwise\nwe could deadlock.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9d0be50230b333005635967f7ecd4897dbfd181b",
      "tree": "59aefe29e33284e1d904b23eaf2cc98994431374",
      "parents": [
        "ee5f4d9cdf32fd99172d11665c592a288c2b1ff4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:41:30 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:41:30 2010 -0500"
      },
      "message": "ext4: Calculate metadata requirements more accurately\n\nIn the past, ext4_calc_metadata_amount(), and its sub-functions\next4_ext_calc_metadata_amount() and ext4_indirect_calc_metadata_amount()\nbadly over-estimated the number of metadata blocks that might be\nrequired for delayed allocation blocks.  This didn\u0027t matter as much\nwhen functions which managed the reserved metadata blocks were more\naggressive about dropping reserved metadata blocks as delayed\nallocation blocks were written, but unfortunately they were too\naggressive.  This was fixed in commit 0637c6f, but as a result the\nover-estimation by ext4_calc_metadata_amount() would lead to reserving\n2-3 times the number of pending delayed allocation blocks as\npotentially required metadata blocks.  So if there are 1 megabytes of\nblocks which have been not yet been allocation, up to 3 megabytes of\nspace would get reserved out of the user\u0027s quota and from the file\nsystem free space pool until all of the inode\u0027s data blocks have been\nallocated.\n\nThis commit addresses this problem by much more accurately estimating\nthe number of metadata blocks that will be required.  It will still\nsomewhat over-estimate the number of blocks needed, since it must make\na worst case estimate not knowing which physical blocks will be\nneeded, but it is much more accurate than before.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ee5f4d9cdf32fd99172d11665c592a288c2b1ff4",
      "tree": "a1ae2af609d49524d6b807890852bc549889821f",
      "parents": [
        "0637c6f4135f592f094207c7c21e7c0fc5557834"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:36:15 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:36:15 2010 -0500"
      },
      "message": "ext4: Fix accounting of reserved metadata blocks\n\nCommit 0637c6f had a typo which caused the reserved metadata blocks to\nnot be released correctly.   Fix this.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0637c6f4135f592f094207c7c21e7c0fc5557834",
      "tree": "ee76fc861dffa902e80d0d11c681f5dfa2fcc569",
      "parents": [
        "515f41c33a9d44a964264c9511ad2c869af1fac3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 30 14:20:45 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 30 14:20:45 2009 -0500"
      },
      "message": "ext4: Patch up how we claim metadata blocks for quota purposes\n\nAs reported in Kernel Bugzilla #14936, commit d21cd8f triggered a BUG\nin the function ext4_da_update_reserve_space() found in\nfs/ext4/inode.c.  The root cause of this BUG() was caused by the fact\nthat ext4_calc_metadata_amount() can severely over-estimate how many\nmetadata blocks will be needed, especially when using direct\nblock-mapped files.\n\nIn addition, it can also badly *under* estimate how much space is\nneeded, since ext4_calc_metadata_amount() assumes that the blocks are\ncontiguous, and this is not always true.  If the application is\nwriting blocks to a sparse file, the number of metadata blocks\nnecessary can be severly underestimated by the functions\next4_da_reserve_space(), ext4_da_update_reserve_space() and\next4_da_release_space().  This was the cause of the dq_claim_space\nreports found on kerneloops.org.\n\nUnfortunately, doing this right means that we need to massively\nover-estimate the amount of free space needed.  So in some cases we\nmay need to force the inode to be written to disk asynchronously in\nto avoid spurious quota failures.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14936\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "515f41c33a9d44a964264c9511ad2c869af1fac3",
      "tree": "bd1790a9787ec171168a87268d3218122e087f2e",
      "parents": [
        "2faf2e19dd0e060eeb32442858ef495ac3083277"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Dec 29 23:39:06 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 29 23:39:06 2009 -0500"
      },
      "message": "ext4: Ensure zeroout blocks have no dirty metadata\n\nThis fixes a bug (found by Curt Wohlgemuth) in which new blocks\nreturned from an extent created with ext4_ext_zeroout() can have dirty\nmetadata still associated with them.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2faf2e19dd0e060eeb32442858ef495ac3083277",
      "tree": "cd8c28414036f2d8ad45663371e1544d4efad5d4",
      "parents": [
        "6d3b82f2d31f22085e5711b28dddcb9fb3d97a25"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Fri Dec 25 15:46:07 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Dec 25 15:46:07 2009 -0500"
      },
      "message": "ext4: return correct wbc.nr_to_write in ext4_da_writepages\n\nWhen ext4_da_writepages increases the nr_to_write in writeback_control\nthen it must always re-base the return value.  Originally there was a\n(misguided) attempt prevent wbc.nr_to_write from going negative.  In\nfact, it\u0027s necessary to allow nr_to_write to be negative so that\nwb_writeback() can correctly calculate how many pages were actually\nwritten.  \n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c8afb44682fcef6273e8b8eb19fab13ddd05b386",
      "tree": "44c170427e54b611d7f02a31bbd5733cc9cf1dd0",
      "parents": [
        "17bd55d037a02b04d9119511cfd1a4b985d20f63"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Dec 23 07:58:12 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 07:58:12 2009 -0500"
      },
      "message": "ext4: flush delalloc blocks when space is low\n\nCreating many small files in rapid succession on a small\nfilesystem can lead to spurious ENOSPC; on a 104MB filesystem:\n\nfor i in `seq 1 22500`; do\n    echo -n \u003e $SCRATCH_MNT/$i\n    echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \u003e $SCRATCH_MNT/$i\ndone\n\nleads to ENOSPC even though after a sync, 40% of the fs is free\nagain.\n\nThis is because we reserve worst-case metadata for delalloc writes,\nand when data is allocated that worst-case reservation is not\nusually needed.\n\nWhen freespace is low, kicking off an async writeback will start\nconverting that worst-case space usage into something more realistic,\nalmost always freeing up space to continue.\n\nThis resolves the testcase for me, and survives all 4 generic\nENOSPC tests in xfstests.\n\nWe\u0027ll still need a hard synchronous sync to squeeze out the last bit,\nbut this fixes things up to a large degree.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d3533d72e7478a61a3e1936956fc825289a2acf4",
      "tree": "5932e890fa8185bd792a94730725665a26a6102a",
      "parents": [
        "a6b43e382568a49cc64291bfaddf896652d44f70"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed Dec 23 07:52:31 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 07:52:31 2009 -0500"
      },
      "message": "ext4: Eliminate potential double free on error path\n\nb_entry_name and buffer are initially NULL, are initialized within a loop\nto the result of calling kmalloc, and are freed at the bottom of this loop.\nThe loop contains gotos to cleanup, which also frees b_entry_name and\nbuffer.  Some of these gotos are before the reinitializations of\nb_entry_name and buffer.  To maintain the invariant that b_entry_name and\nbuffer are NULL at the top of the loop, and thus acceptable arguments to\nkfree, these variables are now set to NULL after the kfrees.\n\nThis seems to be the simplest solution.  A more complicated solution\nwould be to introduce more labels in the error handling code at the end of\nthe function.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r@\nidentifier E;\nexpression E1;\niterator I;\nstatement S;\n@@\n\n*kfree(E);\n... when !\u003d E \u003d E1\n    when !\u003d I(E,...) S\n    when !\u003d \u0026E\n*kfree(E);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a6b43e382568a49cc64291bfaddf896652d44f70",
      "tree": "b7ef950c5d704dc72e054ad621fa34d82ae4f9cf",
      "parents": [
        "cc3e1bea5d87635c519da657303690f5538bb4eb"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Dec 23 07:48:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 07:48:08 2009 -0500"
      },
      "message": "ext4: fix unsigned long long printk warning in super.c\n\nsparc64 allmodconfig:\n\nfs/ext4/super.c: In function `lifetime_write_kbytes_show\u0027:\nfs/ext4/super.c:2174: warning: long long unsigned int format, long unsigned int arg (arg 4)\nfs/ext4/super.c:2174: warning: long long unsigned int format, long unsigned int arg (arg 4)\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cc3e1bea5d87635c519da657303690f5538bb4eb",
      "tree": "727b348d0389a2fe6618fb224fe1d81d207668c4",
      "parents": [
        "034fb4c95fc0fed4ec4a50778127b92c6f2aec01"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 06:52:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 06:52:08 2009 -0500"
      },
      "message": "ext4, jbd2: Add barriers for file systems with exernal journals\n\nThis is a bit complicated because we are trying to optimize when we\nsend barriers to the fs data disk.  We could just throw in an extra\nbarrier to the data disk whenever we send a barrier to the journal\ndisk, but that\u0027s not always strictly necessary.\n\nWe only need to send a barrier during a commit when there are data\nblocks which are must be written out due to an inode written in\nordered mode, or if fsync() depends on the commit to force data blocks\nto disk.  Finally, before we drop transactions from the beginning of\nthe journal during a checkpoint operation, we need to guarantee that\nany blocks that were flushed out to the data disk are firmly on the\nrust platter before we drop the transaction from the journal.\n\nThanks to Oleg Drokin for pointing out this flaw in ext3/ext4.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "034fb4c95fc0fed4ec4a50778127b92c6f2aec01",
      "tree": "663bf0c4d0123f6aeeda8fd7124a5921433101ba",
      "parents": [
        "51b7e3c9fbe7d22d4e355101e9a73b44fc5c9feb"
      ],
      "author": {
        "name": "Surbhi Palande",
        "email": "surbhi.palande@canonical.com",
        "time": "Mon Dec 14 09:53:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 14 09:53:52 2009 -0500"
      },
      "message": "ext4: replace BUG() with return -EIO in ext4_ext_get_blocks\n\nThis patch fixes the Kernel BZ #14286.  When the address of an extent\ncorresponding to a valid block is corrupted, a -EIO should be reported\ninstead of a BUG().  This situation should not normally not occur\nexcept in the case of a corrupted filesystem.  If however it does,\nthen the system should not panic directly but depending on the mount\ntime options appropriate action should be taken. If the mount options\nso permit, the I/O should be gracefully aborted by returning a -EIO.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14286\n\nSigned-off-by: Surbhi Palande \u003csurbhi.palande@canonical.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "51b7e3c9fbe7d22d4e355101e9a73b44fc5c9feb",
      "tree": "490f2fd007d657a09ad33820c85ff75ee15bce96",
      "parents": [
        "84c664730374248adaf420c0846a6158d64413c7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 21 10:56:09 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 21 10:56:09 2009 -0500"
      },
      "message": "ext4: add module aliases for ext2 and ext3\n\nAdd module aliases for ext2 and ext3 when CONFIG_EXT4_USE_FOR_EXT23 is\nset.  This makes the existing user-space stuff like mkinitrd working\nas is.\n\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "84c664730374248adaf420c0846a6158d64413c7",
      "tree": "cdc27d790695d6c59c58ce9201a1232c02947ae1",
      "parents": [
        "149feb00d7c3f4f06896b245533c957b54e3e052"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Dec 21 10:54:09 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 21 10:54:09 2009 -0500"
      },
      "message": "ext4: Don\u0027t ask about supporting ext2/3 in ext4 if ext4 is not configured\n\nDon\u0027t offer to build ext2/3 support into ext4 if ext4 itself is not\nconfigured on.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "149feb00d7c3f4f06896b245533c957b54e3e052",
      "tree": "116556a8e8943d1b315235e960a1d0c806466318",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Mon Dec 14 09:24:20 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 14 09:24:20 2009 -0500"
      },
      "message": "ext4: remove unused #include \u003clinux/version.h\u003e\n\nRemove unused #include \u003clinux/version.h\u003e(\u0027s) in\n  fs/ext4/block_validity.c\n  fs/ext4/mballoc.h\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "39bc680a8160bb9d6743f7873b535d553ff61058",
      "tree": "6aac2c11b09870bffb877dcaf6ae44b34b56d4db",
      "parents": [
        "d21cd8f163ac44b15c465aab7306db931c606908"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Dec 10 16:36:27 2009 +0000"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 23 13:44:12 2009 +0100"
      },
      "message": "ext4: fix sleep inside spinlock issue with quota and dealloc (#14739)\n\nUnlock i_block_reservation_lock before vfs_dq_reserve_block().\nThis patch fixes http://bugzilla.kernel.org/show_bug.cgi?id\u003d14739\n\nCC: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d21cd8f163ac44b15c465aab7306db931c606908",
      "tree": "72cbe30f358c93ed7cdae7d4061fc4fdb317959d",
      "parents": [
        "82fdfa928cfa19d9627526b2ce164a27f8e9d34b"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Dec 10 03:31:45 2009 +0000"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 23 13:44:12 2009 +0100"
      },
      "message": "ext4: Fix potential quota deadlock\n\nWe have to delay vfs_dq_claim_space() until allocation context destruction.\nCurrently we have following call-trace:\next4_mb_new_blocks()\n  /* task is already holding ac-\u003ealloc_semp */\n -\u003eext4_mb_mark_diskspace_used\n    -\u003evfs_dq_claim_space()  /*  acquire dqptr_sem here. Possible deadlock */\n -\u003eext4_mb_release_context() /* drop ac-\u003ealloc_semp here */\n\nLet\u0027s move quota claiming to ext4_da_update_reserve_space()\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\n [ INFO: possible circular locking dependency detected ]\n 2.6.32-rc7 #18\n -------------------------------------------------------\n write-truncate-/3465 is trying to acquire lock:\n  (\u0026s-\u003es_dquot.dqptr_sem){++++..}, at: [\u003cc025e73b\u003e] dquot_claim_space+0x3b/0x1b0\n\n but task is already holding lock:\n  (\u0026meta_group_info[i]-\u003ealloc_sem){++++..}, at: [\u003cc02ce962\u003e] ext4_mb_load_buddy+0xb2/0x370\n\n which lock already depends on the new lock.\n\n the existing dependency chain (in reverse order) is:\n\n -\u003e #3 (\u0026meta_group_info[i]-\u003ealloc_sem){++++..}:\n        [\u003cc017d04b\u003e] __lock_acquire+0xd7b/0x1260\n        [\u003cc017d5ea\u003e] lock_acquire+0xba/0xd0\n        [\u003cc0527191\u003e] down_read+0x51/0x90\n        [\u003cc02ce962\u003e] ext4_mb_load_buddy+0xb2/0x370\n        [\u003cc02d0c1c\u003e] ext4_mb_free_blocks+0x46c/0x870\n        [\u003cc029c9d3\u003e] ext4_free_blocks+0x73/0x130\n        [\u003cc02c8cfc\u003e] ext4_ext_truncate+0x76c/0x8d0\n        [\u003cc02a8087\u003e] ext4_truncate+0x187/0x5e0\n        [\u003cc01e0f7b\u003e] vmtruncate+0x6b/0x70\n        [\u003cc022ec02\u003e] inode_setattr+0x62/0x190\n        [\u003cc02a2d7a\u003e] ext4_setattr+0x25a/0x370\n        [\u003cc022ee81\u003e] notify_change+0x151/0x340\n        [\u003cc021349d\u003e] do_truncate+0x6d/0xa0\n        [\u003cc0221034\u003e] may_open+0x1d4/0x200\n        [\u003cc022412b\u003e] do_filp_open+0x1eb/0x910\n        [\u003cc021244d\u003e] do_sys_open+0x6d/0x140\n        [\u003cc021258e\u003e] sys_open+0x2e/0x40\n        [\u003cc0103100\u003e] sysenter_do_call+0x12/0x32\n\n -\u003e #2 (\u0026ei-\u003ei_data_sem){++++..}:\n        [\u003cc017d04b\u003e] __lock_acquire+0xd7b/0x1260\n        [\u003cc017d5ea\u003e] lock_acquire+0xba/0xd0\n        [\u003cc0527191\u003e] down_read+0x51/0x90\n        [\u003cc02a5787\u003e] ext4_get_blocks+0x47/0x450\n        [\u003cc02a74c1\u003e] ext4_getblk+0x61/0x1d0\n        [\u003cc02a7a7f\u003e] ext4_bread+0x1f/0xa0\n        [\u003cc02bcddc\u003e] ext4_quota_write+0x12c/0x310\n        [\u003cc0262d23\u003e] qtree_write_dquot+0x93/0x120\n        [\u003cc0261708\u003e] v2_write_dquot+0x28/0x30\n        [\u003cc025d3fb\u003e] dquot_commit+0xab/0xf0\n        [\u003cc02be977\u003e] ext4_write_dquot+0x77/0x90\n        [\u003cc02be9bf\u003e] ext4_mark_dquot_dirty+0x2f/0x50\n        [\u003cc025e321\u003e] dquot_alloc_inode+0x101/0x180\n        [\u003cc029fec2\u003e] ext4_new_inode+0x602/0xf00\n        [\u003cc02ad789\u003e] ext4_create+0x89/0x150\n        [\u003cc0221ff2\u003e] vfs_create+0xa2/0xc0\n        [\u003cc02246e7\u003e] do_filp_open+0x7a7/0x910\n        [\u003cc021244d\u003e] do_sys_open+0x6d/0x140\n        [\u003cc021258e\u003e] sys_open+0x2e/0x40\n        [\u003cc0103100\u003e] sysenter_do_call+0x12/0x32\n\n -\u003e #1 (\u0026sb-\u003es_type-\u003ei_mutex_key#7/4){+.+...}:\n        [\u003cc017d04b\u003e] __lock_acquire+0xd7b/0x1260\n        [\u003cc017d5ea\u003e] lock_acquire+0xba/0xd0\n        [\u003cc0526505\u003e] mutex_lock_nested+0x65/0x2d0\n        [\u003cc0260c9d\u003e] vfs_load_quota_inode+0x4bd/0x5a0\n        [\u003cc02610af\u003e] vfs_quota_on_path+0x5f/0x70\n        [\u003cc02bc812\u003e] ext4_quota_on+0x112/0x190\n        [\u003cc026345a\u003e] sys_quotactl+0x44a/0x8a0\n        [\u003cc0103100\u003e] sysenter_do_call+0x12/0x32\n\n -\u003e #0 (\u0026s-\u003es_dquot.dqptr_sem){++++..}:\n        [\u003cc017d361\u003e] __lock_acquire+0x1091/0x1260\n        [\u003cc017d5ea\u003e] lock_acquire+0xba/0xd0\n        [\u003cc0527191\u003e] down_read+0x51/0x90\n        [\u003cc025e73b\u003e] dquot_claim_space+0x3b/0x1b0\n        [\u003cc02cb95f\u003e] ext4_mb_mark_diskspace_used+0x36f/0x380\n        [\u003cc02d210a\u003e] ext4_mb_new_blocks+0x34a/0x530\n        [\u003cc02c83fb\u003e] ext4_ext_get_blocks+0x122b/0x13c0\n        [\u003cc02a5966\u003e] ext4_get_blocks+0x226/0x450\n        [\u003cc02a5ff3\u003e] mpage_da_map_blocks+0xc3/0xaa0\n        [\u003cc02a6ed6\u003e] ext4_da_writepages+0x506/0x790\n        [\u003cc01de272\u003e] do_writepages+0x22/0x50\n        [\u003cc01d766d\u003e] __filemap_fdatawrite_range+0x6d/0x80\n        [\u003cc01d7b9b\u003e] filemap_flush+0x2b/0x30\n        [\u003cc02a40ac\u003e] ext4_alloc_da_blocks+0x5c/0x60\n        [\u003cc029e595\u003e] ext4_release_file+0x75/0xb0\n        [\u003cc0216b59\u003e] __fput+0xf9/0x210\n        [\u003cc0216c97\u003e] fput+0x27/0x30\n        [\u003cc02122dc\u003e] filp_close+0x4c/0x80\n        [\u003cc014510e\u003e] put_files_struct+0x6e/0xd0\n        [\u003cc01451b7\u003e] exit_files+0x47/0x60\n        [\u003cc0146a24\u003e] do_exit+0x144/0x710\n        [\u003cc0147028\u003e] do_group_exit+0x38/0xa0\n        [\u003cc0159abc\u003e] get_signal_to_deliver+0x2ac/0x410\n        [\u003cc0102849\u003e] do_notify_resume+0xb9/0x890\n        [\u003cc01032d2\u003e] work_notifysig+0x13/0x21\n\n other info that might help us debug this:\n\n 3 locks held by write-truncate-/3465:\n  #0:  (jbd2_handle){+.+...}, at: [\u003cc02e1f8f\u003e] start_this_handle+0x38f/0x5c0\n  #1:  (\u0026ei-\u003ei_data_sem){++++..}, at: [\u003cc02a57f6\u003e] ext4_get_blocks+0xb6/0x450\n  #2:  (\u0026meta_group_info[i]-\u003ealloc_sem){++++..}, at: [\u003cc02ce962\u003e] ext4_mb_load_buddy+0xb2/0x370\n\n stack backtrace:\n Pid: 3465, comm: write-truncate- Not tainted 2.6.32-rc7 #18\n Call Trace:\n  [\u003cc0524cb3\u003e] ? printk+0x1d/0x22\n  [\u003cc017ac9a\u003e] print_circular_bug+0xca/0xd0\n  [\u003cc017d361\u003e] __lock_acquire+0x1091/0x1260\n  [\u003cc016bca2\u003e] ? sched_clock_local+0xd2/0x170\n  [\u003cc0178fd0\u003e] ? trace_hardirqs_off_caller+0x20/0xd0\n  [\u003cc017d5ea\u003e] lock_acquire+0xba/0xd0\n  [\u003cc025e73b\u003e] ? dquot_claim_space+0x3b/0x1b0\n  [\u003cc0527191\u003e] down_read+0x51/0x90\n  [\u003cc025e73b\u003e] ? dquot_claim_space+0x3b/0x1b0\n  [\u003cc025e73b\u003e] dquot_claim_space+0x3b/0x1b0\n  [\u003cc02cb95f\u003e] ext4_mb_mark_diskspace_used+0x36f/0x380\n  [\u003cc02d210a\u003e] ext4_mb_new_blocks+0x34a/0x530\n  [\u003cc02c601d\u003e] ? ext4_ext_find_extent+0x25d/0x280\n  [\u003cc02c83fb\u003e] ext4_ext_get_blocks+0x122b/0x13c0\n  [\u003cc016bca2\u003e] ? sched_clock_local+0xd2/0x170\n  [\u003cc016be60\u003e] ? sched_clock_cpu+0x120/0x160\n  [\u003cc016beef\u003e] ? cpu_clock+0x4f/0x60\n  [\u003cc0178fd0\u003e] ? trace_hardirqs_off_caller+0x20/0xd0\n  [\u003cc052712c\u003e] ? down_write+0x8c/0xa0\n  [\u003cc02a5966\u003e] ext4_get_blocks+0x226/0x450\n  [\u003cc016be60\u003e] ? sched_clock_cpu+0x120/0x160\n  [\u003cc016beef\u003e] ? cpu_clock+0x4f/0x60\n  [\u003cc017908b\u003e] ? trace_hardirqs_off+0xb/0x10\n  [\u003cc02a5ff3\u003e] mpage_da_map_blocks+0xc3/0xaa0\n  [\u003cc01d69cc\u003e] ? find_get_pages_tag+0x16c/0x180\n  [\u003cc01d6860\u003e] ? find_get_pages_tag+0x0/0x180\n  [\u003cc02a73bd\u003e] ? __mpage_da_writepage+0x16d/0x1a0\n  [\u003cc01dfc4e\u003e] ? pagevec_lookup_tag+0x2e/0x40\n  [\u003cc01ddf1b\u003e] ? write_cache_pages+0xdb/0x3d0\n  [\u003cc02a7250\u003e] ? __mpage_da_writepage+0x0/0x1a0\n  [\u003cc02a6ed6\u003e] ext4_da_writepages+0x506/0x790\n  [\u003cc016beef\u003e] ? cpu_clock+0x4f/0x60\n  [\u003cc016bca2\u003e] ? sched_clock_local+0xd2/0x170\n  [\u003cc016be60\u003e] ? sched_clock_cpu+0x120/0x160\n  [\u003cc016be60\u003e] ? sched_clock_cpu+0x120/0x160\n  [\u003cc02a69d0\u003e] ? ext4_da_writepages+0x0/0x790\n  [\u003cc01de272\u003e] do_writepages+0x22/0x50\n  [\u003cc01d766d\u003e] __filemap_fdatawrite_range+0x6d/0x80\n  [\u003cc01d7b9b\u003e] filemap_flush+0x2b/0x30\n  [\u003cc02a40ac\u003e] ext4_alloc_da_blocks+0x5c/0x60\n  [\u003cc029e595\u003e] ext4_release_file+0x75/0xb0\n  [\u003cc0216b59\u003e] __fput+0xf9/0x210\n  [\u003cc0216c97\u003e] fput+0x27/0x30\n  [\u003cc02122dc\u003e] filp_close+0x4c/0x80\n  [\u003cc014510e\u003e] put_files_struct+0x6e/0xd0\n  [\u003cc01451b7\u003e] exit_files+0x47/0x60\n  [\u003cc0146a24\u003e] do_exit+0x144/0x710\n  [\u003cc017b163\u003e] ? lock_release_holdtime+0x33/0x210\n  [\u003cc0528137\u003e] ? _spin_unlock_irq+0x27/0x30\n  [\u003cc0147028\u003e] do_group_exit+0x38/0xa0\n  [\u003cc017babb\u003e] ? trace_hardirqs_on+0xb/0x10\n  [\u003cc0159abc\u003e] get_signal_to_deliver+0x2ac/0x410\n  [\u003cc0102849\u003e] do_notify_resume+0xb9/0x890\n  [\u003cc0178fd0\u003e] ? trace_hardirqs_off_caller+0x20/0xd0\n  [\u003cc017b163\u003e] ? lock_release_holdtime+0x33/0x210\n  [\u003cc0165b50\u003e] ? autoremove_wake_function+0x0/0x50\n  [\u003cc017ba54\u003e] ? trace_hardirqs_on_caller+0x134/0x190\n  [\u003cc017babb\u003e] ? trace_hardirqs_on+0xb/0x10\n  [\u003cc0300ba4\u003e] ? security_file_permission+0x14/0x20\n  [\u003cc0215761\u003e] ? vfs_write+0x131/0x190\n  [\u003cc0214f50\u003e] ? do_sync_write+0x0/0x120\n  [\u003cc0103115\u003e] ? sysenter_do_call+0x27/0x32\n  [\u003cc01032d2\u003e] work_notifysig+0x13/0x21\n\nCC: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "a9e7f4472075fb6937c545af3f6329e9946bbe66",
      "tree": "399e294982e1c9691332eca72942910a7f74e9f8",
      "parents": [
        "fd8fbfc1709822bd94247c5b2ab15a5f5041e103"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon Dec 14 15:21:14 2009 +0300"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 23 13:33:55 2009 +0100"
      },
      "message": "ext4: Convert to generic reserved quota\u0027s space management.\n\nThis patch also fixes write vs chown race condition.\n\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b6e3224fb20954f155e41ec5709b2ab70b50ae2d",
      "tree": "96302d1b564c879779b9cc5d7aae7c3c4471ed14",
      "parents": [
        "a2770d86b33024f71df269fde2de096df89d6a48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "message": "Revert \"task_struct: make journal_info conditional\"\n\nThis reverts commit e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319, as\nrequested by Alexey:\n\n \"I think I gave a good enough arguments to not merge it.\n  To iterate:\n   * patch makes impossible to start using ext3 on EXT3_FS\u003dn kernels\n     without reboot.\n   * this is done only for one pointer on task_struct\"\n\n  None of config options which define task_struct are tristate directly\n  or effectively.\"\n\nRequested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "431547b3c4533b8c7fd150ab36980b9a3147797b",
      "tree": "807ff2790f3c13c7c91ed2afd6d833032899482d",
      "parents": [
        "ef26ca97e83052790940cbc444b01b0d17a813c1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 13 09:52:56 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "sanitize xattr handler prototypes\n\nAdd a flags argument to struct xattr_handler and pass it to all xattr\nhandler methods.  This allows using the same methods for multiple\nhandlers, e.g. for the ACL methods which perform exactly the same action\nfor the access and default ACLs, just using a different underlying\nattribute.  With a little more groundwork it\u0027ll also allow sharing the\nmethods for the regular user/trusted/secure handlers in extN, ocfs2 and\njffs2 like it\u0027s already done for xfs in this patch.\n\nAlso change the inode argument to the handlers to a dentry to allow\nusing the handlers mechnism for filesystems that require it later,\ne.g. cifs.\n\n[with GFS2 bits updated by Steven Whitehouse \u003cswhiteho@redhat.com\u003e]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7d2860b690d4f3bed6824757c540579638e3d1e",
      "tree": "84268ee28893256fd6a6a7e1d4474f61dbee74e7",
      "parents": [
        "84c95c9acf088c99d8793d78036b67faa5d0b851"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "tree-wide: convert open calls to remove spaces to skip_spaces() lib function\n\nMakes use of skip_spaces() defined in lib/string.c for removing leading\nspaces from strings all over the tree.\n\nIt decreases lib.a code size by 47 bytes and reuses the function tree-wide:\n   text    data     bss     dec     hex filename\n  64688     584     592   65864   10148 (TOTALS-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-AFTER)\n\nAlso, while at it, if we see (*str \u0026\u0026 isspace(*str)), we can be sure to\nremove the first condition (*str) as the second one (isspace(*str)) also\nevaluates to 0 whenever *str \u003d\u003d 0, making it redundant. In other words,\n\"a char equals zero is never a space\".\n\nJulia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,\nand found occurrences of this pattern on 3 more files:\n    drivers/leds/led-class.c\n    drivers/leds/ledtrig-timer.c\n    drivers/video/output.c\n\n@@\nexpression str;\n@@\n\n( // ignore skip_spaces cases\nwhile (*str \u0026\u0026  isspace(*str)) { \\(str++;\\|++str;\\) }\n|\n- *str \u0026\u0026\nisspace(*str)\n)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Takashi Iwai \u003ctiwai@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": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319",
      "tree": "ce2be0a79fa2e8d8271426f0fc27b25e83c050b4",
      "parents": [
        "8420e7efa1cf155765c6d77c91d3e3547c7aa557"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Dec 14 18:00:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "task_struct: make journal_info conditional\n\njournal_info in task_struct is used in journaling file system only.  So\nintroduce CONFIG_FS_JOURNAL_INFO and make it conditional.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.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": "d0316554d3586cbea60592a41391b5def2553d6f",
      "tree": "5e7418f0bacbc68cec5dfd1541e03eb56870aa02",
      "parents": [
        "fb0bbb92d42d5bd0ab224605444efdfed06d6934",
        "51e99be00ce2713cbb841cedc997cafa6e26c7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "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: (34 commits)\n  m68k: rename global variable vmalloc_end to m68k_vmalloc_end\n  percpu: add missing per_cpu_ptr_to_phys() definition for UP\n  percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n  percpu: make misc percpu symbols unique\n  percpu: make percpu symbols in ia64 unique\n  percpu: make percpu symbols in powerpc unique\n  percpu: make percpu symbols in x86 unique\n  percpu: make percpu symbols in xen unique\n  percpu: make percpu symbols in cpufreq unique\n  percpu: make percpu symbols in oprofile unique\n  percpu: make percpu symbols in tracer unique\n  percpu: make percpu symbols under kernel/ and mm/ unique\n  percpu: remove some sparse warnings\n  percpu: make alloc_percpu() handle array types\n  vmalloc: fix use of non-existent percpu variable in put_cpu_var()\n  this_cpu: Use this_cpu_xx in trace_functions_graph.c\n  this_cpu: Use this_cpu_xx for ftrace\n  this_cpu: Use this_cpu_xx in nmi handling\n  this_cpu: Use this_cpu operations in RCU\n  this_cpu: Use this_cpu ops for VM statistics\n  ...\n\nFix up trivial (famous last words) global per-cpu naming conflicts in\n\tarch/x86/kvm/svm.c\n\tmm/slab.c\n"
    },
    {
      "commit": "3126c136bc30225d7a43af741778aa50e95e467a",
      "tree": "71e6f0de6e1f4cde200dd632da4d2f61180289bf",
      "parents": [
        "f4d544ee5720d336a8c64f9fd33efb888c302309",
        "8e0eb4011bd73d5f91b215b532f74eef478ef795"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 11 15:31:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 11 15:31:13 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (21 commits)\n  ext3: PTR_ERR return of wrong pointer in setup_new_group_blocks()\n  ext3: Fix data / filesystem corruption when write fails to copy data\n  ext4: Support for 64-bit quota format\n  ext3: Support for vfsv1 quota format\n  quota: Implement quota format with 64-bit space and inode limits\n  quota: Move definition of QFMT_OCFS2 to linux/quota.h\n  ext2: fix comment in ext2_find_entry about return values\n  ext3: Unify log messages in ext3\n  ext2: clear uptodate flag on super block I/O error\n  ext2: Unify log messages in ext2\n  ext3: make \"norecovery\" an alias for \"noload\"\n  ext3: Don\u0027t update the superblock in ext3_statfs()\n  ext3: journal all modifications in ext3_xattr_set_handle\n  ext2: Explicitly assign values to on-disk enum of filetypes\n  quota: Fix WARN_ON in lookup_one_len\n  const: struct quota_format_ops\n  ubifs: remove manual O_SYNC handling\n  afs: remove manual O_SYNC handling\n  kill wait_on_page_writeback_range\n  vfs: Implement proper O_SYNC semantics\n  ...\n"
    },
    {
      "commit": "4515c3069da5bfb6f08dbfca499464b4cbdfcb50",
      "tree": "0f067045a0e31f126aebcf3087028639ceb237b4",
      "parents": [
        "a5eba3f66f812cbc076a1170b3f888ad63f850b2",
        "fab3a549e204172236779f502eccb4f9bf0dc87d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:33:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:33:29 2009 -0800"
      },
      "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: (47 commits)\n  ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)\n  ext4: Do not override ext2 or ext3 if built they are built as modules\n  jbd2: Export jbd2_log_start_commit to fix ext4 build\n  ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT\n  ext4: Wait for proper transaction commit on fsync\n  ext4: fix incorrect block reservation on quota transfer.\n  ext4: quota macros cleanup\n  ext4: ext4_get_reserved_space() must return bytes instead of blocks\n  ext4: remove blocks from inode prealloc list on failure\n  ext4: wait for log to commit when umounting\n  ext4: Avoid data / filesystem corruption when write fails to copy data\n  ext4: Use ext4 file system driver for ext2/ext3 file system mounts\n  ext4: Return the PTR_ERR of the correct pointer in setup_new_group_blocks()\n  jbd2: Add ENOMEM checking in and for jbd2_journal_write_metadata_buffer()\n  ext4: remove unused parameter wbc from __ext4_journalled_writepage()\n  ext4: remove encountered_congestion trace\n  ext4: move_extent_per_page() cleanup\n  ext4: initialize moved_len before calling ext4_move_extents()\n  ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT\n  ext4: use ext4_data_block_valid() in ext4_free_blocks()\n  ...\n"
    },
    {
      "commit": "5a20bdfcdc5c5e5f0647d8d99a998066ef5496ac",
      "tree": "30f50f2655dd17681169e4cf825a1849265bf3b7",
      "parents": [
        "1aeec43432d6bfb7a300bb0363f2723b8c4c706d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Nov 30 23:58:32 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Dec 10 15:02:54 2009 +0100"
      },
      "message": "ext4: Support for 64-bit quota format\n\nAdd support for new 64-bit quota format. It is enough to add proper\nmount options handling. The rest is done by the generic code.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "fab3a549e204172236779f502eccb4f9bf0dc87d",
      "tree": "5d478a2a583459832b9c5999ccd07b3b6a5569a7",
      "parents": [
        "a214238d3bb03723f820b0a398928d8e1637c987"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:30:02 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:30:02 2009 -0500"
      },
      "message": "ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)\n\nFix the following potential circular locking dependency between\nmm-\u003emmap_sem and ei-\u003ei_data_sem:\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\n    [ INFO: possible circular locking dependency detected ]\n    2.6.32-04115-gec044c5 #37\n    -------------------------------------------------------\n    ureadahead/1855 is trying to acquire lock:\n     (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cffffffff81107224\u003e] might_fault+0x5c/0xac\n\n    but task is already holding lock:\n     (\u0026ei-\u003ei_data_sem){++++..}, at: [\u003cffffffff811be1fd\u003e] ext4_fiemap+0x11b/0x159\n\n    which lock already depends on the new lock.\n\n    the existing dependency chain (in reverse order) is:\n\n    -\u003e #1 (\u0026ei-\u003ei_data_sem){++++..}:\n           [\u003cffffffff81099bfa\u003e] __lock_acquire+0xb67/0xd0f\n           [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n           [\u003cffffffff81516633\u003e] down_read+0x51/0x84\n           [\u003cffffffff811a2414\u003e] ext4_get_blocks+0x50/0x2a5\n           [\u003cffffffff811a3453\u003e] ext4_get_block+0xab/0xef\n           [\u003cffffffff81154f39\u003e] do_mpage_readpage+0x198/0x48d\n           [\u003cffffffff81155360\u003e] mpage_readpages+0xd0/0x114\n           [\u003cffffffff811a104b\u003e] ext4_readpages+0x1d/0x1f\n           [\u003cffffffff810f8644\u003e] __do_page_cache_readahead+0x12f/0x1bc\n           [\u003cffffffff810f86f2\u003e] ra_submit+0x21/0x25\n           [\u003cffffffff810f0cfd\u003e] filemap_fault+0x19f/0x32c\n           [\u003cffffffff81107b97\u003e] __do_fault+0x55/0x3a2\n           [\u003cffffffff81109db0\u003e] handle_mm_fault+0x327/0x734\n           [\u003cffffffff8151aaa9\u003e] do_page_fault+0x292/0x2aa\n           [\u003cffffffff81518205\u003e] page_fault+0x25/0x30\n           [\u003cffffffff812a34d8\u003e] clear_user+0x38/0x3c\n           [\u003cffffffff81167e16\u003e] padzero+0x20/0x31\n           [\u003cffffffff81168b47\u003e] load_elf_binary+0x8bc/0x17ed\n           [\u003cffffffff81130e95\u003e] search_binary_handler+0xc2/0x259\n           [\u003cffffffff81166d64\u003e] load_script+0x1b8/0x1cc\n           [\u003cffffffff81130e95\u003e] search_binary_handler+0xc2/0x259\n           [\u003cffffffff8113255f\u003e] do_execve+0x1ce/0x2cf\n           [\u003cffffffff81027494\u003e] sys_execve+0x43/0x5a\n           [\u003cffffffff8102918a\u003e] stub_execve+0x6a/0xc0\n\n    -\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n           [\u003cffffffff81099aa4\u003e] __lock_acquire+0xa11/0xd0f\n           [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n           [\u003cffffffff81107251\u003e] might_fault+0x89/0xac\n           [\u003cffffffff81139382\u003e] fiemap_fill_next_extent+0x95/0xda\n           [\u003cffffffff811bcb43\u003e] ext4_ext_fiemap_cb+0x138/0x157\n           [\u003cffffffff811be069\u003e] ext4_ext_walk_space+0x178/0x1f1\n           [\u003cffffffff811be21e\u003e] ext4_fiemap+0x13c/0x159\n           [\u003cffffffff811390e6\u003e] do_vfs_ioctl+0x348/0x4d6\n           [\u003cffffffff811392ca\u003e] sys_ioctl+0x56/0x79\n           [\u003cffffffff81028cb2\u003e] system_call_fastpath+0x16/0x1b\n\n    other info that might help us debug this:\n\n    1 lock held by ureadahead/1855:\n     #0:  (\u0026ei-\u003ei_data_sem){++++..}, at: [\u003cffffffff811be1fd\u003e] ext4_fiemap+0x11b/0x159\n\n    stack backtrace:\n    Pid: 1855, comm: ureadahead Not tainted 2.6.32-04115-gec044c5 #37\n    Call Trace:\n     [\u003cffffffff81098c70\u003e] print_circular_bug+0xa8/0xb7\n     [\u003cffffffff81099aa4\u003e] __lock_acquire+0xa11/0xd0f\n     [\u003cffffffff8102f229\u003e] ? sched_clock+0x9/0xd\n     [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff81107251\u003e] might_fault+0x89/0xac\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff81124b44\u003e] ? __kmalloc+0x13b/0x18c\n     [\u003cffffffff81139382\u003e] fiemap_fill_next_extent+0x95/0xda\n     [\u003cffffffff811bcb43\u003e] ext4_ext_fiemap_cb+0x138/0x157\n     [\u003cffffffff811bca0b\u003e] ? ext4_ext_fiemap_cb+0x0/0x157\n     [\u003cffffffff811be069\u003e] ext4_ext_walk_space+0x178/0x1f1\n     [\u003cffffffff811be21e\u003e] ext4_fiemap+0x13c/0x159\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff811390e6\u003e] do_vfs_ioctl+0x348/0x4d6\n     [\u003cffffffff8129f6d0\u003e] ? __up_read+0x8d/0x95\n     [\u003cffffffff81517fb5\u003e] ? retint_swapgs+0x13/0x1b\n     [\u003cffffffff811392ca\u003e] sys_ioctl+0x56/0x79\n     [\u003cffffffff81028cb2\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a214238d3bb03723f820b0a398928d8e1637c987",
      "tree": "d4ca39dc2701279f815a7b4f4b47b1ac339ed35e",
      "parents": [
        "3b799d15f2622c44bae93961892d90ab012ea2be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:09:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:09:58 2009 -0500"
      },
      "message": "ext4: Do not override ext2 or ext3 if built they are built as modules\n\nThe CONFIG_EXT4_USE_FOR_EXT23 option must not try to take over the\next2 or ext3 file systems if the those file system drivers are\nconfigured to be built as mdoules.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d014d043869cdc591f3a33243d3481fa4479c2d0",
      "tree": "63626829498e647ba058a1ce06419fe7e4d5f97d",
      "parents": [
        "6ec22f9b037fc0c2e00ddb7023fad279c365324d",
        "6070d81eb5f2d4943223c96e7609a53cdc984364"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Dec 07 18:36:35 2009 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\n\tkernel/irq/chip.c\n"
    },
    {
      "commit": "4a58579b9e4e2a35d57e6c9c8483e52f6f1b7fd6",
      "tree": "f3a7f898a081d0917f7fe7f051aba687308cbf0a",
      "parents": [
        "b436b9bef84de6893e86346d8fbf7104bc520645"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Sun Dec 06 23:38:31 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 06 23:38:31 2009 -0500"
      },
      "message": "ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT\n\nThis patch fixes three problems in the handling of the\nEXT4_IOC_MOVE_EXT ioctl:\n\n1. In current EXT4_IOC_MOVE_EXT, there are read access mode checks for\noriginal and donor files, but they allow the illegal write access to\ndonor file, since donor file is overwritten by original file data.  To\nfix this problem, change access mode checks of original (r-\u003er/w) and\ndonor (r-\u003ew) files.\n\n2.  Disallow the use of donor files that have a setuid or setgid bits.\n\n3.  Call mnt_want_write() and mnt_drop_write() before and after\next4_move_extents() calling to get write access to a mount.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b436b9bef84de6893e86346d8fbf7104bc520645",
      "tree": "50fb9ae167bcd622e9adf47646bcf3b4c7dd111d",
      "parents": [
        "194074acacebc169ded90a4657193f5180015051"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Dec 08 23:51:10 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 23:51:10 2009 -0500"
      },
      "message": "ext4: Wait for proper transaction commit on fsync\n\nWe cannot rely on buffer dirty bits during fsync because pdflush can come\nbefore fsync is called and clear dirty bits without forcing a transaction\ncommit. What we do is that we track which transaction has last changed\nthe inode and which transaction last changed allocation and force it to\ndisk on fsync.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "194074acacebc169ded90a4657193f5180015051",
      "tree": "6661f85c6ef4548abe348c2611ad8a43b17ec320",
      "parents": [
        "5aca07eb7d8f14d90c740834d15ca15277f4820c"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Dec 08 22:42:28 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 22:42:28 2009 -0500"
      },
      "message": "ext4: fix incorrect block reservation on quota transfer.\n\nInside -\u003esetattr() call both ATTR_UID and ATTR_GID may be valid\nThis means that we may end-up with transferring all quotas. Add\nwe have to reserve QUOTA_DEL_BLOCKS for all quotas, as we do in\ncase of QUOTA_INIT_BLOCKS.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5aca07eb7d8f14d90c740834d15ca15277f4820c",
      "tree": "362ab7bb56cf0920ee27bbaf97e2657c022eb4b4",
      "parents": [
        "8aa6790f876e81f5a2211fe1711a5fe3fe2d7b20"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Dec 08 22:42:15 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 22:42:15 2009 -0500"
      },
      "message": "ext4: quota macros cleanup\n\nCurrently all quota block reservation macros contains hard-coded \"2\"\naka MAXQUOTAS value. This is no good because in some places it is not\nobvious to understand what does this digit represent. Let\u0027s introduce\nnew macro with self descriptive name.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8aa6790f876e81f5a2211fe1711a5fe3fe2d7b20",
      "tree": "d82eef7f6753858a08640b226bece35dfca3c52d",
      "parents": [
        "b844167edc7fcafda9623955c05e4c1b3c32ebc7"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Dec 08 22:41:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 22:41:52 2009 -0500"
      },
      "message": "ext4: ext4_get_reserved_space() must return bytes instead of blocks\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b844167edc7fcafda9623955c05e4c1b3c32ebc7",
      "tree": "60b204901afb6393ace94bd5c8d39246d0a87383",
      "parents": [
        "d4edac314e9ad0b21ba20ba8bc61b61f186f79e1"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Tue Dec 08 22:18:25 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 22:18:25 2009 -0500"
      },
      "message": "ext4: remove blocks from inode prealloc list on failure\n\nThis fixes a leak of blocks in an inode prealloc list if device failures\ncause ext4_mb_mark_diskspace_used() to fail.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nAcked-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d4edac314e9ad0b21ba20ba8bc61b61f186f79e1",
      "tree": "af44b291976308b9db6c215cb2dc03bbe020d6fc",
      "parents": [
        "b9a4207d5e911b938f73079a83cc2ae10524ec7f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Dec 08 21:48:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 21:48:58 2009 -0500"
      },
      "message": "ext4: wait for log to commit when umounting\n\nThere is a potential race when a transaction is committing right when\nthe file system is being umounting.  This could reduce in a race\nbecause EXT4_SB(sb)-\u003es_group_info could be freed in ext4_put_super\nbefore the commit code calls a callback so the mballoc code can\nrelease freed blocks in the transaction, resulting in a panic trying\nto access the freed s_group_info.\n\nThe fix is to wait for the transaction to finish committing before we\nshutdown the multiblock allocator.  \n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b9a4207d5e911b938f73079a83cc2ae10524ec7f",
      "tree": "6926354a2c6cc8e5f0e930845774ffe73d3766b8",
      "parents": [
        "24b584240a0006ea7436cd35f5e8983eb76f1e6f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Dec 08 21:24:33 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 21:24:33 2009 -0500"
      },
      "message": "ext4: Avoid data / filesystem corruption when write fails to copy data\n\nWhen ext4_write_begin fails after allocating some blocks or\ngeneric_perform_write fails to copy data to write, we truncate blocks\nalready instantiated beyond i_size.  Although these blocks were never\ninside i_size, we have to truncate the pagecache of these blocks so\nthat corresponding buffers get unmapped.  Otherwise subsequent\n__block_prepare_write (called because we are retrying the write) will\nfind the buffers mapped, not call -\u003eget_block, and thus the page will\nbe backed by already freed blocks leading to filesystem and data\ncorruption.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "24b584240a0006ea7436cd35f5e8983eb76f1e6f",
      "tree": "8b14be4ebcc93301bc63b061ecf89a16f114a31c",
      "parents": [
        "c09eef305dd43846360944ad072f051f964fa383"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 07 14:08:51 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 07 14:08:51 2009 -0500"
      },
      "message": "ext4: Use ext4 file system driver for ext2/ext3 file system mounts\n\nAdd a new config option, CONFIG_EXT4_USE_FOR_EXT23 which if enabled,\nwill cause ext4 to be used for either ext2 or ext3 file system mounts\nwhen ext2 or ext3 is not enabled in the configuration.\n\nThis allows minimalist kernel fanatics to drop to file system drivers\nfrom their compiled kernel with out losing functionality.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c09eef305dd43846360944ad072f051f964fa383",
      "tree": "d0ce2efcbad1dbc1fa6ebc60b13f95aace0004dc",
      "parents": [
        "e6ec116b67f46e0e7808276476554727b2e6240b"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Mon Dec 07 10:38:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 07 10:38:16 2009 -0500"
      },
      "message": "ext4: Return the PTR_ERR of the correct pointer in setup_new_group_blocks()\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "bf48aabb894fd0639ab72a26e8abbd7683ef23c2",
      "tree": "cd7ba4504558ed518126966fa79f18adf2f37fd6",
      "parents": [
        "fb3d38b9904888aa8e36d88b2388dc70934b2169"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed Oct 28 20:11:03 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:50 2009 +0100"
      },
      "message": "tree-wide: fix typos \"offest\" -\u003e \"offset\"\n\nThis patch was generated by\n\n\tgit grep -E -i -l \u0027offest\u0027 | xargs -r perl -p -i -e \u0027s/offest/offset/\u0027\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "3f0ca309858ee186435c608ee9eaafd1c8dcb53a",
      "tree": "747897214d2fda0ba36c36dc7be6352dacb3f5a0",
      "parents": [
        "b4d7241596ffb6398ac5535ae8cf80d845b0c254"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Nov 24 11:15:44 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 11:15:44 2009 -0500"
      },
      "message": "ext4: remove unused parameter wbc from __ext4_journalled_writepage()\n\nCC: Jan Kara \u003cjack@suse.cz\u003e \nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ac48b0a1d068887141581bea8285de5fcab182b0",
      "tree": "8eee9eed14c49e5fd9e29bd7f4a68e3002999234",
      "parents": [
        "446aaa6e7e993b38a6f21c6acfa68f3f1af3dbe3"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Tue Nov 24 10:31:56 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 10:31:56 2009 -0500"
      },
      "message": "ext4: move_extent_per_page() cleanup\n\nIntegrate duplicate lines (acquire/release semaphore and invalidate\nextent cache in move_extent_per_page()) into mext_replace_branches(),\nto reduce source and object code size.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "446aaa6e7e993b38a6f21c6acfa68f3f1af3dbe3",
      "tree": "dedc46c0d80a20061c0df463dcc6260aef394e2d",
      "parents": [
        "94d7c16cbbbd0e03841fcf272bcaf0620ad39618"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Tue Nov 24 10:28:48 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 10:28:48 2009 -0500"
      },
      "message": "ext4: initialize moved_len before calling ext4_move_extents()\n\nThe move_extent.moved_len is used to pass back the number of exchanged\nblocks count to user space.  Currently the caller must clear this\nfield; but we spend more code space checking for this requirement than\nsimply zeroing the field ourselves, so let\u0027s just make life easier for\neveryone all around.\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "94d7c16cbbbd0e03841fcf272bcaf0620ad39618",
      "tree": "12a4d8b28bd5bf338b9bd1874e18d4bfdc77837a",
      "parents": [
        "9084d4719784b00ff0bf9c9580007fac8277dbcb"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Tue Nov 24 10:19:57 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 10:19:57 2009 -0500"
      },
      "message": "ext4: Fix double-free of blocks with EXT4_IOC_MOVE_EXT\n\nAt the beginning of ext4_move_extent(), we call\next4_discard_preallocations() to discard inode PAs of orig and donor\ninodes.  But in the following case, blocks can be double freed, so\nmove ext4_discard_preallocations() to the end of ext4_move_extents().\n\n1. Discard inode PAs of orig and donor inodes with\n   ext4_discard_preallocations() in ext4_move_extents().\n\n   orig : [ DATA1 ]\n   donor: [ DATA2 ]\n\n2. While data blocks are exchanging between orig and donor inodes, new\n   inode PAs is created to orig by other process\u0027s block allocation.\n   (Since there are semaphore gaps in ext4_move_extents().)  And new\n   inode PAs is used partially (2-1).\n\n   2-1 Create new inode PAs to orig inode\n   orig : [ DATA1 | used PA1 | free PA1 ]\n   donor: [ DATA2 ]\n\n3. Donor inode which has old orig inode\u0027s blocks is deleted after\n   EXT4_IOC_MOVE_EXT finished (3-1, 3-2).  So the block bitmap\n   corresponds to old orig inode\u0027s blocks are freed.\n\n   3-1 After EXT4_IOC_MOVE_EXT finished\n   orig : [ DATA2 |  free PA1 ]\n   donor: [ DATA1 |  used PA1 ]\n\n   3-2 Delete donor inode\n   orig : [ DATA2 |  free PA1 ]\n   donor: [ FREE SPACE(DATA1) | FREE SPACE(used PA1) ]\n\n4. The double-free of blocks is occurred, when close() is called to\n   orig inode.  Because ext4_discard_preallocations() for orig inode\n   frees used PA1 and free PA1, though used PA1 is already freed in 3.\n\n   4-1 Double-free of blocks is occurred\n   orig : [ DATA2 |  FREE SPACE(free PA1) ]\n   donor: [ FREE SPACE(DATA1) | DOUBLE FREE(used PA1) ]\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9084d4719784b00ff0bf9c9580007fac8277dbcb",
      "tree": "b929aefb4a1a57111de33f6745db95e9c0407fff",
      "parents": [
        "1585d8d89ae1791d8f957731f5655700fbcc5664"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:48:42 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:48:42 2009 -0500"
      },
      "message": "ext4: use ext4_data_block_valid() in ext4_free_blocks()\n\nThe block validity framework does a more comprehensive set of checks,\nand it saves object code space to use the ext4_data_block_valid() than\nthe limited open-coded version that had been in ext4_free_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1585d8d89ae1791d8f957731f5655700fbcc5664",
      "tree": "9139a0e5dd10bfee5695e7cb4ca47e7677e5718c",
      "parents": [
        "6eebee625544ac4ef1d805da942f463275bd6caa"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:48:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:48:34 2009 -0500"
      },
      "message": "ext4: add check for wraparound in ext4_data_block_valid()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6362609b6c71c5b802026be9cf263bbdd67a50e",
      "tree": "be908b6b0566f70d31378bf11b548a0d59ae0218",
      "parents": [
        "4433871130f36585fde38e7dd817433296648945"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:05 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:05 2009 -0500"
      },
      "message": "ext4: call ext4_forget() from ext4_free_blocks()\n\nAdd the facility for ext4_forget() to be called from\next4_free_blocks().  This simplifies the code in a large number of\nplaces, and centralizes most of the work of calling ext4_forget() into\na single place.\n\nAlso fix a bug in the extents migration code; it wasn\u0027t calling\next4_forget() when releasing the indirect blocks during the\nconversion.  As a result, if the system cashed during or shortly after\nthe extents migration, and the released indirect blocks get reused as\ndata blocks, the journal replay would corrupt the data blocks.  With\nthis new patch, fixing this bug was as simple as adding the\nEXT4_FREE_BLOCKS_FORGET flags to the call to ext4_free_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4433871130f36585fde38e7dd817433296648945",
      "tree": "5dd91fbb345f5a4240f4d2df271da49ca1a6037b",
      "parents": [
        "b7e57e7c2a41826e51fe060fae5158bfc7a04e81"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 07:44:56 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 07:44:56 2009 -0500"
      },
      "message": "ext4: fold ext4_free_blocks() and ext4_mb_free_blocks()\n\next4_mb_free_blocks() is only called by ext4_free_blocks(), and the\nlatter function doesn\u0027t really do much.  So merge the two functions\ntogether, such that ext4_free_blocks() is now found in\nfs/ext4/mballoc.c.  This saves about 200 bytes of compiled text space.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b7e57e7c2a41826e51fe060fae5158bfc7a04e81",
      "tree": "2c7331402c731a9c6bb98827a4f6e5926fd90055",
      "parents": [
        "e4684b3fbb848446683feecb4aee133344c93933"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 21:00:13 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 21:00:13 2009 -0500"
      },
      "message": "ext4: fold ext4_journal_forget() into ext4_forget()\n\nConvert the last two callers of ext4_journal_forget() to use\next4_forget() instead, and then fold ext4_journal_forget() into\next4_forget().  This reduces are code complexity and shortens our call\nstack.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e4684b3fbb848446683feecb4aee133344c93933",
      "tree": "c3e695ff304a8114e9efad460c30e9948665da66",
      "parents": [
        "d6797d14b1640d088652c72508b529a3aea479e3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 11:05:59 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 24 11:05:59 2009 -0500"
      },
      "message": "ext4: fold ext4_journal_revoke() into ext4_forget()\n\nThe only caller of ext4_journal_revoke() is ext4_forget(), so we can\nfold ext4_journal_revoke() into ext4_forget() to simplify the code and\nshorten the call stack.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d6797d14b1640d088652c72508b529a3aea479e3",
      "tree": "2e608c3e362b94439a2e7503b7d97cb3891bb101",
      "parents": [
        "e3bb52ae2bb9573e84c17b8e3560378d13a5c798"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:52:12 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 20:52:12 2009 -0500"
      },
      "message": "ext4: move ext4_forget() to ext4_jbd2.c\n\nThe ext4_forget() function better belongs in ext4_jbd2.c.  This will\nallow us to do some cleanup of the ext4_journal_revoke() and\next4_journal_forget() functions, as well as giving us better error\nreporting since we can report the caller of ext4_forget() when things\ngo wrong.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e3bb52ae2bb9573e84c17b8e3560378d13a5c798",
      "tree": "529bbe0318f5bd6a2c76fb855c54b08bc85fd9e0",
      "parents": [
        "5328e635315734d42080de9a5a1ee87bf4cae0a4"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Nov 19 14:28:50 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 19 14:28:50 2009 -0500"
      },
      "message": "ext4: make \"norecovery\" an alias for \"noload\"\n\nUsers on the linux-ext4 list recently complained about differences\nacross filesystems w.r.t. how to mount without a journal replay.\n\nIn the discussion it was noted that xfs\u0027s \"norecovery\" option is\nperhaps more descriptively accurate than \"noload,\" so let\u0027s make\nthat an alias for ext4.\n\nAlso show this status in /proc/mounts\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5328e635315734d42080de9a5a1ee87bf4cae0a4",
      "tree": "4952c04c9b1faec9a3c82a3743805efad05ed96e",
      "parents": [
        "2bba702d4f88d7b010ec37e2527b552588404ae7"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Nov 19 14:25:42 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 19 14:25:42 2009 -0500"
      },
      "message": "ext4: make trim/discard optional (and off by default)\n\nIt is anticipated that when sb_issue_discard starts doing\nreal work on trim-capable devices, we may see issues.  Make\nthis mount-time optional, and default it to off until we know\nthat things are working out OK.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2bba702d4f88d7b010ec37e2527b552588404ae7",
      "tree": "74f46ab1e70328f23f1abbeaf3bf1a49c15a10e8",
      "parents": [
        "6b17d902fdd241adfa4ce780df20547b28bf5801"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Nov 23 07:24:48 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:48 2009 -0500"
      },
      "message": "ext4: fix error handling in ext4_ind_get_blocks()\n\nWhen an error happened in ext4_splice_branch we failed to notice that\nin ext4_ind_get_blocks and mapped the buffer anyway. Fix the problem\nby checking for error properly.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\t       \n"
    },
    {
      "commit": "6b17d902fdd241adfa4ce780df20547b28bf5801",
      "tree": "a5daca03108c565c58347d36b1dec70cf22ef1d1",
      "parents": [
        "1032988c71f3f85483b2b4319684d1205a704c02"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:57 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:57 2009 -0500"
      },
      "message": "ext4: avoid issuing unnecessary barriers\n\nWe don\u0027t to issue an I/O barrier on an error or if we force commit\nbecause we are doing data journaling.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1032988c71f3f85483b2b4319684d1205a704c02",
      "tree": "ace311067686bf5b93e10ab793ee62b593d8660f",
      "parents": [
        "8dadb198cb70ef811916668fe67eeec82e8858dd"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 15 15:29:56 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 15 15:29:56 2009 -0500"
      },
      "message": "ext4: fix block validity checks so they work correctly with meta_bg\n\nThe block validity checks used by ext4_data_block_valid() wasn\u0027t\ncorrectly written to check file systems with the meta_bg feature.  Fix\nthis.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8dadb198cb70ef811916668fe67eeec82e8858dd",
      "tree": "e42f0cc333df6807a47678e41599055b6b2c286e",
      "parents": [
        "3f8fb9490efbd300887470a2a880a64e04dcc3f5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:38 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:38 2009 -0500"
      },
      "message": "ext4: fix uninit block bitmap initialization when s_meta_first_bg is non-zero\n\nThe number of old-style block group descriptor blocks is\ns_meta_first_bg when the meta_bg feature flag is set.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "3f8fb9490efbd300887470a2a880a64e04dcc3f5",
      "tree": "0cd1fd1ab185885cf4a4dd1416015fe2784b710f",
      "parents": [
        "86ebfd08a1930ccedb8eac0aeb1ed4b8b6a41dbc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:52 2009 -0500"
      },
      "message": "ext4: don\u0027t update the superblock in ext4_statfs()\n\ncommit a71ce8c6c9bf269b192f352ea555217815cf027e updated ext4_statfs()\nto update the on-disk superblock counters, but modified this buffer\ndirectly without any journaling of the change.  This is one of the\naccesses that was causing the crc errors in journal replay as seen in\nkernel.org bugzilla #14354.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "86ebfd08a1930ccedb8eac0aeb1ed4b8b6a41dbc",
      "tree": "b74b72e956bb19df9983f83481b3bc2a633dda81",
      "parents": [
        "30c6e07a92ea4cb87160d32ffa9bce172576ae4c"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sun Nov 15 15:30:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 15 15:30:52 2009 -0500"
      },
      "message": "ext4: journal all modifications in ext4_xattr_set_handle\n\next4_xattr_set_handle() was zeroing out an inode outside\nof journaling constraints; this is one of the accesses that\nwas causing the crc errors in journal replay as seen in\nkernel.org bugzilla #14354.\n\nReviewed-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "30c6e07a92ea4cb87160d32ffa9bce172576ae4c",
      "tree": "5799d5f074bfe2dbde001f767bf675e6c11e8335",
      "parents": [
        "50689696867d95b38d9c7be640a311494a04fb86"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sun Nov 15 15:30:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 15 15:30:58 2009 -0500"
      },
      "message": "ext4: fix i_flags access in ext4_da_writepages_trans_blocks()\n\nWe need to be testing the i_flags field in the ext4 specific portion\nof the inode, instead of the (confusingly aliased) i_flags field in\nthe generic struct inode.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "50689696867d95b38d9c7be640a311494a04fb86",
      "tree": "69e582bb6c95d8d0ac59bcad97b5f7f1d79e7126",
      "parents": [
        "beac2da7565e42be59963824899825d0cc624295"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:34 2009 -0500"
      },
      "message": "ext4: make sure directory and symlink blocks are revoked\n\nWhen an inode gets unlinked, the functions ext4_clear_blocks() and\next4_remove_blocks() call ext4_forget() for all the buffer heads\ncorresponding to the deleted inode\u0027s data blocks.  If the inode is a\ndirectory or a symlink, the is_metadata parameter must be non-zero so\next4_forget() will revoke them via jbd2_journal_revoke().  Otherwise,\nif these blocks are reused for a data file, and the system crashes\nbefore a journal checkpoint, the journal replay could end up\ncorrupting these data blocks.\n\nThanks to Curt Wohlgemuth for pointing out potential problems in this\narea.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "beac2da7565e42be59963824899825d0cc624295",
      "tree": "22b38198349bd000cd146243271f604708fbc3fb",
      "parents": [
        "cf40db137cc2b2a1b3f6850247ac2b181d9d3847"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:25:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:25:08 2009 -0500"
      },
      "message": "ext4: add tracepoint for ext4_forget()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cf40db137cc2b2a1b3f6850247ac2b181d9d3847",
      "tree": "e01838790b15f43453f43cb8aca8dc8a8654a44b",
      "parents": [
        "e6a47428de84e19fda52f21ab73fde2906c40d09"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 21:00:01 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 22 21:00:01 2009 -0500"
      },
      "message": "ext4: remove failed journal checksum check\n\nNow that we are checking for failed journal checksums in the jbd2\nlayer, we don\u0027t need to check in the ext4 mount path --- since a\nchecksum fail will result in ext4_load_journal() returning an error,\ncausing the file system to refuse to be mounted until e2fsck can deal\nwith the problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "567f3e9a70d71e5c9be03701b8578be77857293b",
      "tree": "1985907b6d9deffc9d38275c000d7f82d158a93f",
      "parents": [
        "92c28159dce22913aef6aa811ce6fb0f7f3790b1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Nov 14 08:19:05 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Nov 14 08:19:05 2009 -0500"
      },
      "message": "ext4: plug a buffer_head leak in an error path of ext4_iget()\n\nOne of the invalid error paths in ext4_iget() forgot to brelse() the\ninode buffer head.  Fix it by adding a brelse() in the common error\nreturn path, which also simplifies function.\n\nThanks to Andi Kleen \u003cak@linux.intel.com\u003e reporting the problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "92c28159dce22913aef6aa811ce6fb0f7f3790b1",
      "tree": "de829c49120de032d3afaf6445906bfbef7922c0",
      "parents": [
        "49bd22bc4d603a2a4fc2a6a60e156cbea52eb494"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Mon Nov 23 07:24:50 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:50 2009 -0500"
      },
      "message": "ext4: fix spelling typos in move_extent.c\n\nFix a few spelling typos in move_extent.c\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.co.jp\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "49bd22bc4d603a2a4fc2a6a60e156cbea52eb494",
      "tree": "b1a8d6b5be2ff4a72f2274bf01c15922ad9a0e65",
      "parents": [
        "fc04cb49a898c372a22b21fffc47f299d8710801"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Mon Nov 23 07:24:41 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:41 2009 -0500"
      },
      "message": "ext4: fix possible recursive locking warning in EXT4_IOC_MOVE_EXT\n\nIf CONFIG_PROVE_LOCKING is enabled, the double_down_write_data_sem()\nwill trigger a false-positive warning of a recursive lock.  Since we\ntake i_data_sem for the two inodes ordered by their inode numbers,\nthis isn\u0027t a problem.  Use of down_write_nested() will notify the lock\ndependency checker machinery that there is no problem here.\n\nThis problem was reported by Brian Rogers:\n\n\thttp://marc.info/?l\u003dlinux-ext4\u0026m\u003d125115356928011\u0026w\u003d1\n\nReported-by: Brian Rogers \u003cbrian@xyzw.org\u003e\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fc04cb49a898c372a22b21fffc47f299d8710801",
      "tree": "668bc49ab0a89c6260d78b31eb09b7c60a27bdac",
      "parents": [
        "f868a48d06f8886cb0367568a12367fa4f21ea0d"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Mon Nov 23 07:24:43 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:43 2009 -0500"
      },
      "message": "ext4: fix lock order problem in ext4_move_extents()\n\next4_move_extents() checks the logical block contiguousness\nof original file with ext4_find_extent() and mext_next_extent().\nTherefore the extent which ext4_ext_path structure indicates\nmust not be changed between above functions.\n\nBut in current implementation, there is no i_data_sem protection\nbetween ext4_ext_find_extent() and mext_next_extent().  So the extent\nwhich ext4_ext_path structure indicates may be overwritten by\ndelalloc.  As a result, ext4_move_extents() will exchange wrong blocks\nbetween original and donor files.  I change the place where\nacquire/release i_data_sem to solve this problem.\n\nMoreover, I changed move_extent_per_page() to start transaction first,\nand then acquire i_data_sem.  Without this change, there is a\npossibility of the deadlock between mmap() and ext4_move_extents():\n\n* NOTE: \"A\", \"B\" and \"C\" mean different processes\n\nA-1: ext4_ext_move_extents() acquires i_data_sem of two inodes.\n\nB:   do_page_fault() starts the transaction (T),\n     and then tries to acquire i_data_sem.\n     But process \"A\" is already holding it, so it is kept waiting.\n\nC:   While \"A\" and \"B\" running, kjournald2 tries to commit transaction (T)\n     but it is under updating, so kjournald2 waits for it.\n\nA-2: Call ext4_journal_start with holding i_data_sem,\n     but transaction (T) is locked.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f868a48d06f8886cb0367568a12367fa4f21ea0d",
      "tree": "9b15c2fa850f6c34589f80f8e41fad095aa04c43",
      "parents": [
        "503358ae01b70ce6909d19dd01287093f6b6271c"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Mon Nov 23 07:25:48 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:25:48 2009 -0500"
      },
      "message": "ext4: fix the returned block count if EXT4_IOC_MOVE_EXT fails\n\nIf the EXT4_IOC_MOVE_EXT ioctl fails, the number of blocks that were\nexchanged before the failure should be returned to the userspace\ncaller.  Unfortunately, currently if the block size is not the same as\nthe page size, the returned block count that is returned is the\npage-aligned block count instead of the actual block count.  This\ncommit addresses this bug.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "503358ae01b70ce6909d19dd01287093f6b6271c",
      "tree": "ef81060e38e5eb0895e9455892d5f8cf186a0603",
      "parents": [
        "2de770a406b06dfc619faabbf5d85c835ed3f2e1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:46 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:24:46 2009 -0500"
      },
      "message": "ext4: avoid divide by zero when trying to mount a corrupted file system\n\nIf s_log_groups_per_flex is greater than 31, then groups_per_flex will\nwill overflow and cause a divide by zero error.  This can cause kernel\nBUG if such a file system is mounted.\n\nThanks to Nageswara R Sastry for analyzing the failure and providing\nan initial patch.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14287\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2de770a406b06dfc619faabbf5d85c835ed3f2e1",
      "tree": "4607c5bfc0f66bfc6067e673ac33e76e42aa9318",
      "parents": [
        "156171c71a0dc4bce12b4408bb1591f8fe32dc1a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:25:49 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:25:49 2009 -0500"
      },
      "message": "ext4: fix potential buffer head leak when add_dirent_to_buf() returns ENOSPC\n\nPreviously add_dirent_to_buf() did not free its passed-in buffer head\nin the case of ENOSPC, since in some cases the caller still needed it.\nHowever, this led to potential buffer head leaks since not all callers\ndealt with this correctly.  Fix this by making simplifying the freeing\nconvention; now add_dirent_to_buf() *never* frees the passed-in buffer\nhead, and leaves that to the responsibility of its caller.  This makes\nthings cleaner and easier to prove that the code is neither leaking\nbuffer heads or calling brelse() one time too many.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1e424a348303694fabdf8b1efbfcb1a892dfa63a",
      "tree": "631c7f421ea162c370c5ee09aeccb8381c7a7274",
      "parents": [
        "ba230c3f6dc88ec008806adb27b12088486d508e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 08 15:45:44 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Nov 08 15:45:44 2009 -0500"
      },
      "message": "ext4: partial revert to fix double brelse WARNING()\n\nThis is a partial revert of commit 6487a9d (only the changes made to\nfs/ext4/namei.c), since it is causing the following brelse()\ndouble-free warning when running fsstress on a file system with 1k\nblocksize and we run into a block allocation failure while converting\na single-block directory to a multi-block hash-tree indexed directory.\n\nWARNING: at fs/buffer.c:1197 __brelse+0x2e/0x33()\nHardware name: \nVFS: brelse: Trying to free free buffer\nModules linked in:\nPid: 2226, comm: jbd2/sdd-8 Not tainted 2.6.32-rc6-00577-g0003f55 #101\nCall Trace:\n [\u003cc01587fb\u003e] warn_slowpath_common+0x65/0x95\n [\u003cc0158869\u003e] warn_slowpath_fmt+0x29/0x2c\n [\u003cc021168e\u003e] __brelse+0x2e/0x33\n [\u003cc0288a9f\u003e] jbd2_journal_refile_buffer+0x67/0x6c\n [\u003cc028a9ed\u003e] jbd2_journal_commit_transaction+0x319/0x14d8\n [\u003cc0164d73\u003e] ? try_to_del_timer_sync+0x58/0x60\n [\u003cc0175bcc\u003e] ? sched_clock_cpu+0x12a/0x13e\n [\u003cc017f6b4\u003e] ? trace_hardirqs_off+0xb/0xd\n [\u003cc0175c1f\u003e] ? cpu_clock+0x3f/0x5b\n [\u003cc017f6ec\u003e] ? lock_release_holdtime+0x36/0x137\n [\u003cc0664ad0\u003e] ? _spin_unlock_irqrestore+0x44/0x51\n [\u003cc0180af3\u003e] ? trace_hardirqs_on_caller+0x103/0x124\n [\u003cc0180b1f\u003e] ? trace_hardirqs_on+0xb/0xd\n [\u003cc0164d73\u003e] ? try_to_del_timer_sync+0x58/0x60\n [\u003cc0290d1c\u003e] kjournald2+0x11a/0x310\n [\u003cc017118e\u003e] ? autoremove_wake_function+0x0/0x38\n [\u003cc0290c02\u003e] ? kjournald2+0x0/0x310\n [\u003cc0170ee6\u003e] kthread+0x66/0x6b\n [\u003cc0170e80\u003e] ? kthread+0x0/0x6b\n [\u003cc01251b3\u003e] kernel_thread_helper+0x7/0x10\n---[ end trace 5579351b86af61e3 ]---\n\nCommit 6487a9d was an attempt some buffer head leaks in an ENOSPC\nerror path, but in some cases it actually results in an excess ENOSPC,\nas shown above.  Fixing this means cleaning up who is responsible for\nreleasing the buffer heads from the callee to the caller of\nadd_dirent_to_buf().\n\nSince that\u0027s a relatively complex change, and we\u0027re late in the rcX\ndevelopment cycle, I\u0027m reverting this now, and holding back a more\ncomplete fix until after 2.6.32 ships.  We\u0027ve lived with this\nbuffer_head leak on ENOSPC in ext3 and ext4 for a very long time; a\nfew more months won\u0027t kill us.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Curt Wohlgemuth \u003ccurtw@google.com\u003e\n"
    },
    {
      "commit": "ba230c3f6dc88ec008806adb27b12088486d508e",
      "tree": "4cd81bc7425161f1103408ce210be9172a2ee6c3",
      "parents": [
        "4b70df181611012a3556f017b57dfcef7e1d279f"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Fri Nov 06 04:01:23 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 06 04:01:23 2009 -0500"
      },
      "message": "ext4: Fix return value of ext4_split_unwritten_extents() to fix direct I/O\n\nTo prepare for a direct I/O write, we need to split the unwritten\nextents before submitting the I/O.  When no extents needed to be\nsplit, ext4_split_unwritten_extents() was incorrectly returning 0\ninstead of the size of uninitialized extents. This bug caused the\nwrong return value sent back to VFS code when it gets called from\nasync IO path, leading to an unnecessary fall back to buffered IO.\n\nThis bug also hid the fact that the check to see whether or not a\nsplit would be necessary was incorrect; we can only skip splitting the\nextent if the write completely covers the uninitialized extent.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4b70df181611012a3556f017b57dfcef7e1d279f",
      "tree": "95da7ccaea96227b597078c1c5f2a7571d959e99",
      "parents": [
        "5f5249507e4b5c4fc0f9c93f33d133d8c95f47e1"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 03 14:44:54 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 03 14:44:54 2009 -0500"
      },
      "message": "ext4: code clean up for dio fallocate handling\n\nThe ext4_debug() call in ext4_end_io_dio() should be moved after the\ncheck to make sure that io_end is non-NULL.\n\nThe comment above ext4_get_block_dio_write() (\"Maximum number of\nblocks...\") is a duplicate; the original and correct comment is above\nthe #define DIO_MAX_BLOCKS up above.\n\nBased on review comments from Curt Wohlgemuth.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5f5249507e4b5c4fc0f9c93f33d133d8c95f47e1",
      "tree": "0b0a790f568c07298c3a4122572e84392c787648",
      "parents": [
        "109f55651954def97fa41ee71c464d268c512ab0"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "message": "ext4: skip conversion of uninit extents after direct IO if there isn\u0027t any\n\nAt the end of direct I/O operation, ext4_ext_direct_IO() always called\next4_convert_unwritten_extents(), regardless of whether there were any\nunwritten extents involved in the I/O or not.\n\nThis commit adds a state flag so that ext4_ext_direct_IO() only calls\next4_convert_unwritten_extents() when necessary.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "109f55651954def97fa41ee71c464d268c512ab0",
      "tree": "7c4aa2d8cb10c100bbd252e657ac410d30844bac",
      "parents": [
        "fa5d11133b07053270e18fa9c18560e66e79217e"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "message": "ext4: fix ext4_ext_direct_IO()\u0027s return value after converting uninit extents\n\nAfter a direct I/O request covering an uninitalized extent (i.e.,\ncreated using the fallocate system call) or a hole in a file, ext4\nwill convert the uninitialized extent so it is marked as initialized\nby calling ext4_convert_unwritten_extents().  This function returns\nzero on success.\n\nThis return value was getting returned by ext4_direct_IO(); however\nthe file system\u0027s direct_IO function is supposed to return the number\nof bytes read or written on a success.  By returning zero, it confused\nthe direct I/O code into falling back to buffered I/O unnecessarily.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fa5d11133b07053270e18fa9c18560e66e79217e",
      "tree": "1018ea7d0a2f511ae58934175dbc3815b7e63b5f",
      "parents": [
        "b419148e567728f6af0c3b01965c1cc141e3e13a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Nov 02 18:50:49 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 02 18:50:49 2009 -0500"
      },
      "message": "ext4: discard preallocation when restarting a transaction during truncate\n\nWhen restart a transaction during a truncate operation, we drop and\nreacquire i_data_sem.  After reacquiring i_data_sem, we need to\ndiscard any inode-based preallocation that might have been grabbed\nwhile we released i_data_sem (for example, if pdflush is allocating\nblocks and racing against the truncate).\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\n"
    },
    {
      "commit": "d4da6c9ccf648f3f1cb5bf9d981a62c253d30e28",
      "tree": "709f8bdc50a3a1d47632047eb3670b4a4a6ff045",
      "parents": [
        "c35102c3e15f90fe604523a2fbffd9dc158b455a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 10:15:27 2009 -0800"
      },
      "message": "Revert \"ext4: Remove journal_checksum mount option and enable it by default\"\n\nThis reverts commit d0646f7b636d067d715fab52a2ba9c6f0f46b0d7, as\nrequested by Eric Sandeen.\n\nIt can basically cause an ext4 filesystem to miss recovery (and thus get\nmounted with errors) if the journal checksum does not match.\n\nQuoth Eric:\n\n   \"My hand-wavy hunch about what is happening is that we\u0027re finding a\n    bad checksum on the last partially-written transaction, which is\n    not surprising, but if we have a wrapped log and we\u0027re doing the\n    initial scan for head/tail, and we abort scanning on that bad\n    checksum, then we are essentially running an unrecovered filesystem.\n\n    But that\u0027s hand-wavy and I need to go look at the code.\n\n    We lived without journal checksums on by default until now, and at\n    this point they\u0027re doing more harm than good, so we should revert\n    the default-changing commit until we can fix it and do some good\n    power-fail testing with the fixes in place.\"\n\nSee\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14354\n\nfor all the gory details.\n\nRequested-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Alexey Fisher \u003cbug-track@fisher-privat.net\u003e\nCc: Maxim Levitsky \u003cmaximlevitsky@gmail.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Mathias Burén \u003cmathias.buren@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9117703fabe4141dae566d683eeb728f638c9e49",
      "tree": "efe85f18c6fe5f7d1513d19b01183d050a6b130f",
      "parents": [
        "a037a79dceaf717409fbf42f4ad209b9c15f435c",
        "fbbf69456619de5d251cb9f1df609069178c62d5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 03 11:24:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 03 11:24:19 2009 -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:\n  [PATCH] ext4: retry failed direct IO allocations\n  ext4: Fix build warning in ext4_dirty_inode()\n  ext4: drop ext4dev compat\n  ext4: fix a BUG_ON crash by checking that page has buffers attached to it\n"
    },
    {
      "commit": "ca0c9584b1f16bd5911893647cb7f1be82e60554",
      "tree": "7dd9453ec36f56b50ce519ce964af9f35b80f381",
      "parents": [
        "4ea7334b6de818b0123fa4be32af4cb8ac65174c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Oct 03 19:48:22 2009 +0900"
      },
      "message": "this_cpu: Straight transformations\n\nUse this_cpu_ptr and __this_cpu_ptr in locations where straight\ntransformations are possible because per_cpu_ptr is used with\neither smp_processor_id() or raw_smp_processor_id().\n\ncc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\ncc: Ingo Molnar \u003cmingo@elte.hu\u003e\ncc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\ncc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "fbbf69456619de5d251cb9f1df609069178c62d5",
      "tree": "e0a5bc75a02dda7f46ba4d0e838c54f39b1fe4f6",
      "parents": [
        "74072d0a63553720dd3c70a8b8e9407eb2027dbe"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Fri Oct 02 21:20:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 02 21:20:55 2009 -0400"
      },
      "message": "[PATCH] ext4: retry failed direct IO allocations\n\nOn a 256M filesystem, doing this in a loop:\n\n        xfs_io -F -f -d -c \u0027pwrite 0 64m\u0027 test\n        rm -f test\n\neventually leads to ENOSPC.  (the xfs_io command does a\n64m direct IO write to the file \"test\")\n\nAs with other block allocation callers, it looks like we need to\npotentially retry the allocations on the initial ENOSPC.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "74072d0a63553720dd3c70a8b8e9407eb2027dbe",
      "tree": "9895fcb17d44980a82b4daa7688c17da082b4d88",
      "parents": [
        "f0e2dfa7f3e1361ca8fc91c25e67fc4e92613cc9"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 02 21:08:32 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 02 21:08:32 2009 -0400"
      },
      "message": "ext4: Fix build warning in ext4_dirty_inode()\n\nThis fixes the following warning:\n\nfs/ext4/inode.c: In function \u0027ext4_dirty_inode\u0027:\nfs/ext4/inode.c:5615: warning: unused variable \u0027current_handle\u0027\n\nWe remove the jbd_debug() statement which does use current_handle, as\nit\u0027s not terribly important in the grand scheme of things.\n\nThanks to Stephen Rothwell for pointing this out.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f0e2dfa7f3e1361ca8fc91c25e67fc4e92613cc9",
      "tree": "8fa5be2f535b00140b0c6330c92b20584e87cb9e",
      "parents": [
        "1f94533d9cd75f6d2826018d54a971b9cc085992"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Oct 01 02:21:07 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 01 02:21:07 2009 -0400"
      },
      "message": "ext4: drop ext4dev compat\n\nKconfig \u0026 super.c promised it\u0027d be gone by 2.6.31, so it\u0027s\nabout time to drop it.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f94533d9cd75f6d2826018d54a971b9cc085992",
      "tree": "16c85061eabfcdece2487909bc08c45d2c01d84f",
      "parents": [
        "c1fccc0696bcaff6008c11865091f5ec4b0937ab"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 22:57:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 22:57:41 2009 -0400"
      },
      "message": "ext4: fix a BUG_ON crash by checking that page has buffers attached to it\n\nIn ext4_num_dirty_pages() we were calling page_buffers() before\nchecking to see if the page actually had pages attached to it; this\nwould cause a BUG check crash in the inline function page_buffers().\n\nThanks to Markus Trippelsdorf for reporting this bug.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f44fdc5188bc1a0bbcc3453d57f01e49ba868d9",
      "tree": "a636c14f741e662814fe95bf35f22659411f1733",
      "parents": [
        "4c8f1cb266cba4d1052f524d04df839d8f732ace",
        "c1fccc0696bcaff6008c11865091f5ec4b0937ab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:32:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 30 09:32:30 2009 -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:\n  ext4: Fix time encoding with extra epoch bits\n  ext4: Add a stub for mpage_da_data in the trace header\n  jbd2: Use tracepoints for history file\n  ext4: Use tracepoints for mb_history trace file\n  ext4, jbd2: Drop unneeded printks at mount and unmount time\n  ext4: Handle nested ext4_journal_start/stop calls without a journal\n  ext4: Make sure ext4_dirty_inode() updates the inode in no journal mode\n  ext4: Avoid updating the inode table bh twice in no journal mode\n  ext4: EXT4_IOC_MOVE_EXT: Check for different original and donor inodes first\n  ext4: async direct IO for holes and fallocate support\n  ext4: Use end_io callback to avoid direct I/O fallback to buffered I/O\n  ext4: Split uninitialized extents for direct I/O\n  ext4: release reserved quota when block reservation for delalloc retry\n  ext4: Adjust ext4_da_writepages() to write out larger contiguous chunks\n  ext4: Fix hueristic which avoids group preallocation for closed files\n  ext4: Use ext4_msg() for ext4_da_writepage() errors\n  ext4: Update documentation about quota mount options\n"
    },
    {
      "commit": "c1fccc0696bcaff6008c11865091f5ec4b0937ab",
      "tree": "0e8269e07d40278c136b7f93aba7ab118f75f532",
      "parents": [
        "0ef122494020521309be855bfdeeb41f34bf8c94"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 01:13:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 01:13:55 2009 -0400"
      },
      "message": "ext4: Fix time encoding with extra epoch bits\n\n\"Looking at ext4.h, I think the setting of extra time fields forgets to\nmask the epoch bits so the epoch part overwrites nsec part. The second\nchange is only for coherency (2 -\u003e EXT4_EPOCH_BITS).\"\n\nThanks to Damien Guibouret for pointing out this problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "296c355cd6443d89fa251885a8d78778fe111dc4",
      "tree": "5cf7c8b115617dc3829a16a5969894d37b73173c",
      "parents": [
        "90576c0b9a0b5323fc4bd7f23f49be0d234f36d1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:42 2009 -0400"
      },
      "message": "ext4: Use tracepoints for mb_history trace file\n\nThe /proc/fs/ext4/\u003cdev\u003e/mb_history was maintained manually, and had a\nnumber of problems: it required a largish amount of memory to be\nallocated for each ext4 filesystem, and the s_mb_history_lock\nintroduced a CPU contention problem.  \n\nBy ripping out the mb_history code and replacing it with ftrace\ntracepoints, and we get more functionality: timestamps, event\nfiltering, the ability to correlate mballoc history with other ext4\ntracepoints, etc.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "90576c0b9a0b5323fc4bd7f23f49be0d234f36d1",
      "tree": "d4a1ab6f923f1c9c7c87f13a828db72c1f4412c1",
      "parents": [
        "d3d1faf6a74496ea4435fd057c6a2cad49f3e523"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 15:51:30 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 15:51:30 2009 -0400"
      },
      "message": "ext4, jbd2: Drop unneeded printks at mount and unmount time\n\nThere are a number of kernel printk\u0027s which are printed when an ext4\nfilesystem is mounted and unmounted.  Disable them to economize space\nin the system logs.  In addition, disabling the mballoc stats by\ndefault saves a number of unneeded atomic operations for every block\nallocation or deallocation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d3d1faf6a74496ea4435fd057c6a2cad49f3e523",
      "tree": "9f1cc0e2efb9a4fe42bb6b57c087d8450a854dc1",
      "parents": [
        "f3dc272fd5e2ae08244796bb39e7e1ce4b25d3b3"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Tue Sep 29 11:01:03 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 11:01:03 2009 -0400"
      },
      "message": "ext4: Handle nested ext4_journal_start/stop calls without a journal\n\nThis patch fixes a problem with handling nested calls to\next4_journal_start/ext4_journal_stop, when there is no journal present.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f3dc272fd5e2ae08244796bb39e7e1ce4b25d3b3",
      "tree": "795edae4030352dfea7cb79ed5a5b0b5ef3d3afb",
      "parents": [
        "830156c79b0a99ddf0f62496bcf4de640f9f52cd"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Tue Sep 29 16:06:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 16:06:01 2009 -0400"
      },
      "message": "ext4: Make sure ext4_dirty_inode() updates the inode in no journal mode\n\nThis patch a problem that ext4_dirty_inode() was not calling\next4_mark_inode_dirty() if the current_handle is not valid, which it\nis the case in no journal mode.\n\nIt also removes a test for non-matching transaction which can never\nhappen.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "830156c79b0a99ddf0f62496bcf4de640f9f52cd",
      "tree": "7af8e969f359afd8a4738e22b0374b567041a1fd",
      "parents": [
        "f3ce8064b388ccf420012c5a4907aae4f13fe9d0"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Tue Sep 29 10:07:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 10:07:47 2009 -0400"
      },
      "message": "ext4: Avoid updating the inode table bh twice in no journal mode\n\nThis is a cleanup of commit 91ac6f4.  Since ext4_mark_inode_dirty()\nhas already called ext4_mark_iloc_dirty(), which in turn calls\next4_do_update_inode(), it\u0027s not necessary to have ext4_write_inode()\ncall ext4_do_update_inode() in no journal mode.  Indeed, it would be\nduplicated work.\n\nReviewed-by: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f3ce8064b388ccf420012c5a4907aae4f13fe9d0",
      "tree": "3d0cbfffc75ea698726d71c06c9b0be82982d6eb",
      "parents": [
        "8d5d02e6b176565c77ff03604908b1453a22044d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:58:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:58:29 2009 -0400"
      },
      "message": "ext4: EXT4_IOC_MOVE_EXT: Check for different original and donor inodes first\n\nMove the check to make sure the original and donor inodes are\ndifferent earlier, to avoid a potential deadlock by trying to lock the\nsame inode twice.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8d5d02e6b176565c77ff03604908b1453a22044d",
      "tree": "0d29e4f28233f24960c7921c1c0a7608077bf713",
      "parents": [
        "4c0425ff68b1b87b802ffeda7b6a46ff7da7241c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "message": "ext4: async direct IO for holes and fallocate support\n\nFor async direct IO that covers holes or fallocate, the end_io\ncallback function now queued the convertion work on workqueue but\ndon\u0027t flush the work rightaway as it might take too long to afford.\n\nBut when fsync is called after all the data is completed, user expects\nthe metadata also being updated before fsync returns.\n\nThus we need to flush the conversion work when fsync() is called.\nThis patch keep track of a listed of completed async direct io that\nhas a work queued on workqueue.  When fsync() is called, it will go\nthrough the list and do the conversion.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "4c0425ff68b1b87b802ffeda7b6a46ff7da7241c",
      "tree": "a8718f5f4574af8e15fd876b24f4aec88d62451b",
      "parents": [
        "0031462b5b392f90d17f1d75abb795883c44e969"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:48:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:48:41 2009 -0400"
      },
      "message": "ext4: Use end_io callback to avoid direct I/O fallback to buffered I/O\n\nCurrently the DIO VFS code passes create \u003d 0 when writing to the\nmiddle of file.  It does this to avoid block allocation for holes, so\nas not to expose stale data out when there is a parallel buffered read\n(which does not hold the i_mutex lock).  Direct I/O writes into holes\nfalls back to buffered IO for this reason.\n\nSince preallocated extents are treated as holes when doing a\nget_block() look up (buffer is not mapped), direct IO over fallocate\nalso falls back to buffered IO.  Thus ext4 actually silently falls\nback to buffered IO in above two cases, which is undesirable.\n\nTo fix this, this patch creates unitialized extents when a direct I/O\nwrite into holes in sparse files, and registering an end_io callback which\nconverts the uninitialized extent to an initialized extent after the\nI/O is completed.\n\nSinged-Off-By: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0031462b5b392f90d17f1d75abb795883c44e969",
      "tree": "e8323861b8dede0f3ddbfc8324d650bf1f4fd74b",
      "parents": [
        "9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "message": "ext4: Split uninitialized extents for direct I/O\n\nWhen writing into an unitialized extent via direct I/O, and the direct\nI/O doesn\u0027t exactly cover the unitialized extent, split the extent\ninto uninitialized and initialized extents before submitting the I/O.\nThis avoids needing to deal with an ENOSPC error in the end_io\ncallback that gets used for direct I/O.\n\nWhen the IO is complete, the written extent will be marked as initialized.\n\nSinged-Off-By: Mingming Cao \u003ccmm@us.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8",
      "tree": "b90ea9f8dc2542d029b15d94a0588b36937dbbab",
      "parents": [
        "55138e0bc29c0751e2152df9ad35deea542f29b3"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:49:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:49:52 2009 -0400"
      },
      "message": "ext4: release reserved quota when block reservation for delalloc retry\n\next4_da_reserve_space() can reserve quota blocks multiple times if\next4_claim_free_blocks() fail and we retry the allocation. We should\nrelease the quota reservation before restarting.\n\nBug found by Jan Kara.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "55138e0bc29c0751e2152df9ad35deea542f29b3",
      "tree": "40dbc77de3e7a426030bd740ba8e2fd0d2171523",
      "parents": [
        "71780577306fd1e76c7a92e3b308db624d03adb9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 13:31:31 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 13:31:31 2009 -0400"
      },
      "message": "ext4: Adjust ext4_da_writepages() to write out larger contiguous chunks\n\nWork around problems in the writeback code to force out writebacks in\nlarger chunks than just 4mb, which is just too small.  This also works\naround limitations in the ext4 block allocator, which can\u0027t allocate\nmore than 2048 blocks at a time.  So we need to defeat the round-robin\ncharacteristics of the writeback code and try to write out as many\nblocks in one inode before allowing the writeback code to move on to\nanother inode.  We add a a new per-filesystem tunable,\nmax_writeback_mb_bump, which caps this to a default of 128mb per\ninode.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "71780577306fd1e76c7a92e3b308db624d03adb9",
      "tree": "37c6dac6475dedbef288a11765f9c6733b526fa8",
      "parents": [
        "1693918e0b6988cf5eb93b7da34f30e94360a379"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 00:06:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 00:06:20 2009 -0400"
      },
      "message": "ext4: Fix hueristic which avoids group preallocation for closed files\n\nThe hueristic was designed to avoid using locality group preallocation\nwhen writing the last segment of a closed file.  Fix it by move\nsetting size to the maximum of size and isize until after we check\nwhether size \u003d\u003d isize.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "1693918e0b6988cf5eb93b7da34f30e94360a379"
}
