)]}'
{
  "log": [
    {
      "commit": "ff9cb1c4eead5e4c292e75cd3170a82d66944101",
      "tree": "cdb132a39e550a9b7b28ea67544cb86cd6ebdb6e",
      "parents": [
        "e4e11180dfa545233e5145919b75b7fac88638df",
        "d50f2ab6f050311dbf7b8f5501b25f0bf64a439b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "message": "Merge branch \u0027for_linus\u0027 into for_linus_merged\n\nConflicts:\n\tfs/ext4/ioctl.c\n"
    },
    {
      "commit": "ac69e0928054ff29a5049902fb477f9c7605c773",
      "tree": "05be6b9285186823452e0adeffe40e1dfee6e354",
      "parents": [
        "9e203936eac786f9268d6a13e6442d2accef1829",
        "302bf2f3259948c93361d501b04a5ed69c3bd4f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:51:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 09 12:51:21 2012 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:\n  ext2/3/4: delete unneeded includes of module.h\n  ext{3,4}: Fix potential race when setversion ioctl updates inode\n  udf: Mark LVID buffer as uptodate before marking it dirty\n  ext3: Don\u0027t warn from writepage when readonly inode is spotted after error\n  jbd: Remove j_barrier mutex\n  reiserfs: Force inode evictions before umount to avoid crash\n  reiserfs: Fix quota mount option parsing\n  udf: Treat symlink component of type 2 as /\n  udf: Fix deadlock when converting file from in-ICB one to normal one\n  udf: Cleanup calling convention of inode_getblk()\n  ext2: Fix error handling on inode bitmap corruption\n  ext3: Fix error handling on inode bitmap corruption\n  ext3: replace ll_rw_block with other functions\n  ext3: NULL dereference in ext3_evict_inode()\n  jbd: clear revoked flag on buffers before a new transaction started\n  ext3: call ext3_mark_recovery_complete() when recovery is really needed\n"
    },
    {
      "commit": "302bf2f3259948c93361d501b04a5ed69c3bd4f8",
      "tree": "22ccdf5774a28476745a94532b5ce2c2cc454d98",
      "parents": [
        "6c2155b9cc5a193e85194bbeaae2e2e4512dd597"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Jan 04 15:59:47 2012 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 09 13:52:10 2012 +0100"
      },
      "message": "ext2/3/4: delete unneeded includes of module.h\n\nDelete any instances of include module.h that were not strictly\nrequired.  In the case of ext2, the declaration of MODULE_LICENSE\netc. were in inode.c but the module_init/exit were in super.c, so\nrelocate the MODULE_LICENCE/AUTHOR block to super.c which makes it\nconsistent with ext3 and ext4 at the same time.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "98793265b429a3f0b3f1750e74d67cd4d740d162",
      "tree": "b0bd717673f0c21845cf053f3fb6b75d42530af5",
      "parents": [
        "b4a133da2eaccb844a7beaef16ffd9c76a0d21d3",
        "bd1b2a555952d959f47169056fca05acf7eff81f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)\n  Kconfig: acpi: Fix typo in comment.\n  misc latin1 to utf8 conversions\n  devres: Fix a typo in devm_kfree comment\n  btrfs: free-space-cache.c: remove extra semicolon.\n  fat: Spelling s/obsolate/obsolete/g\n  SCSI, pmcraid: Fix spelling error in a pmcraid_err() call\n  tools/power turbostat: update fields in manpage\n  mac80211: drop spelling fix\n  types.h: fix comment spelling for \u0027architectures\u0027\n  typo fixes: aera -\u003e area, exntension -\u003e extension\n  devices.txt: Fix typo of \u0027VMware\u0027.\n  sis900: Fix enum typo \u0027sis900_rx_bufer_status\u0027\n  decompress_bunzip2: remove invalid vi modeline\n  treewide: Fix comment and string typo \u0027bufer\u0027\n  hyper-v: Update MAINTAINERS\n  treewide: Fix typos in various parts of the kernel, and fix some comments.\n  clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR\n  gpio: Kconfig: drop unknown symbol \u0027CS5535_GPIO\u0027\n  leds: Kconfig: Fix typo \u0027D2NET_V2\u0027\n  sound: Kconfig: drop unknown symbol ARCH_CLPS7500\n  ...\n\nFix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new\nkconfig additions, close to removed commented-out old ones)\n"
    },
    {
      "commit": "5f163cc759a9fa8844a4efcf1f579dc5b2ca2491",
      "tree": "2a8e127fbe2e807113699de992cd1d248b1f9e3e",
      "parents": [
        "176576dbc8141528557eeeb007af2d5a2a4891ef"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jan 04 22:33:28 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 22:33:28 2012 -0500"
      },
      "message": "ext4: make more symbols static\n\nA couple more functions can reasonably be made static if desired.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ccb4d7af914e0fe9b2f1022f8ea6c300463fd5e6",
      "tree": "1e8f739dfdd2aadf667d608800b8cad551f13bd3",
      "parents": [
        "14c83c9fddf2e75bdd0c20f1072f35260e356484"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "wenqing.lz@taobao.com",
        "time": "Wed Dec 28 20:25:40 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 20:25:40 2011 -0500"
      },
      "message": "ext4: remove no longer used functions in inode.c\n\nThe functions ext4_block_truncate_page() and ext4_block_zero_page_range()\nare no longer used, so remove them.\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "88635ca277adb67db34e88281817d1ce10713553",
      "tree": "ebe43739198d84190d4138ae4083404609ae7f09",
      "parents": [
        "1ba37268cd19e5a2a80924bfe8618bf1ba3e8249"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Wed Dec 28 19:00:25 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 19:00:25 2011 -0500"
      },
      "message": "ext4: add missing spaces to debugging printk\u0027s\n\nFix ext4_debug format in ext4_ext_handle_uninitialized_extents() and\next4_end_io_dio().\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5872ddaaf05bf25e3ab90580295ebc946405928c",
      "tree": "6dacee8fbc61ae67e9853edfdcddc8b9bc788b00",
      "parents": [
        "2aff57b0c052344e8401a8b4a33c2a1ecb0f627c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Dec 28 13:55:51 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 13:55:51 2011 -0500"
      },
      "message": "ext4: flush journal when switching from data\u003djournal mode\n\nIt\u0027s necessary to flush the journal when switching away from\ndata\u003djournal mode.  This is because there are no revoke records when\ndata blocks are journalled, but revoke records are required in the\nother journal modes.\n\nHowever, it is not necessary to flush the journal when switching into\ndata\u003djournal mode, and flushing the journal is expensive.  So let\u0027s\navoid it in that case.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2aff57b0c052344e8401a8b4a33c2a1ecb0f627c",
      "tree": "48713b187d571baab9951dace5b8ace86289a654",
      "parents": [
        "22cdfca5641817060dd724a9c30442f5c0675fcd"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Dec 28 12:02:13 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 12:02:13 2011 -0500"
      },
      "message": "ext4: allocate delalloc blocks before changing journal mode\n\ndelalloc blocks should be allocated before changing journal mode,\notherwise they can not be allocated and even more truncate on\ndelalloc blocks could triggre BUG by flushing delalloc buffers.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "093e6e3666f47d29763a235b404c84ee47ba8bb0",
      "tree": "a337f1415bf1c98b63fa5536c42b97059309b8d1",
      "parents": [
        "13a79a4741d37fda2fbafb953f0f301dc007928f"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Dec 13 22:05:05 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 13 22:05:05 2011 -0500"
      },
      "message": "ext4: correctly handle pages w/o buffers in ext4_discard_partial_buffers()\n\nIf a page has been read into memory and never been written, it has no\nbuffers, but we should handle the page in truncate or punch hole.\n\nVFS code of writing operations has handled holes correctly, so this\npatch removes the code handling holes in writing operations.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "13a79a4741d37fda2fbafb953f0f301dc007928f",
      "tree": "b88b5b99690738c278c48b180cbd1ab2821522f6",
      "parents": [
        "ea51d132dbf9b00063169c1159bee253d9649224"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Dec 13 21:51:55 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 13 21:51:55 2011 -0500"
      },
      "message": "ext4: avoid potential hang in mpage_submit_io() when blocksize \u003c pagesize\n\nIf there is an unwritten but clean buffer in a page and there is a\ndirty buffer after the buffer, then mpage_submit_io does not write the\ndirty buffer out.  As a result, da_writepages loops forever.\n\nThis patch fixes the problem by checking dirty flag.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ea51d132dbf9b00063169c1159bee253d9649224",
      "tree": "c1c9f028e2efdb278e26d662fec2bc2ba2605f5d",
      "parents": [
        "fc6cb1cda5db7b2d24bf32890826214b857c728e"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Tue Dec 13 21:41:15 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 13 21:41:15 2011 -0500"
      },
      "message": "ext4: avoid hangs in ext4_da_should_update_i_disksize()\n\nIf the pte mapping in generic_perform_write() is unmapped between\niov_iter_fault_in_readable() and iov_iter_copy_from_user_atomic(), the\n\"copied\" parameter to -\u003eend_write can be zero. ext4 couldn\u0027t cope with\nit with delayed allocations enabled. This skips the i_disksize\nenlargement logic if copied is zero and no new data was appeneded to\nthe inode.\n\n gdb\u003e bt\n #0  0xffffffff811afe80 in ext4_da_should_update_i_disksize (file\u003d0xffff88003f606a80, mapping\u003d0xffff88001d3824e0, pos\u003d0x1\\\n 08000, len\u003d0x1000, copied\u003d0x0, page\u003d0xffffea0000d792e8, fsdata\u003d0x0) at fs/ext4/inode.c:2467\n #1  ext4_da_write_end (file\u003d0xffff88003f606a80, mapping\u003d0xffff88001d3824e0, pos\u003d0x108000, len\u003d0x1000, copied\u003d0x0, page\u003d0\\\n xffffea0000d792e8, fsdata\u003d0x0) at fs/ext4/inode.c:2512\n #2  0xffffffff810d97f1 in generic_perform_write (iocb\u003d\u003cvalue optimized out\u003e, iov\u003d\u003cvalue optimized out\u003e, nr_segs\u003d\u003cvalue o\\\n ptimized out\u003e, pos\u003d0x108000, ppos\u003d0xffff88001e26be40, count\u003d\u003cvalue optimized out\u003e, written\u003d0x0) at mm/filemap.c:2440\n #3  generic_file_buffered_write (iocb\u003d\u003cvalue optimized out\u003e, iov\u003d\u003cvalue optimized out\u003e, nr_segs\u003d\u003cvalue optimized out\u003e, p\\\n os\u003d0x108000, ppos\u003d0xffff88001e26be40, count\u003d\u003cvalue optimized out\u003e, written\u003d0x0) at mm/filemap.c:2482\n #4  0xffffffff810db5d1 in __generic_file_aio_write (iocb\u003d0xffff88001e26bde8, iov\u003d0xffff88001e26bec8, nr_segs\u003d0x1, ppos\u003d0\\\n xffff88001e26be40) at mm/filemap.c:2600\n #5  0xffffffff810db853 in generic_file_aio_write (iocb\u003d0xffff88001e26bde8, iov\u003d0xffff88001e26bec8, nr_segs\u003d\u003cvalue optimi\\\n zed out\u003e, pos\u003d\u003cvalue optimized out\u003e) at mm/filemap.c:2632\n #6  0xffffffff811a71aa in ext4_file_write (iocb\u003d0xffff88001e26bde8, iov\u003d0xffff88001e26bec8, nr_segs\u003d0x1, pos\u003d0x108000) a\\\n t fs/ext4/file.c:136\n #7  0xffffffff811375aa in do_sync_write (filp\u003d0xffff88003f606a80, buf\u003d\u003cvalue optimized out\u003e, len\u003d\u003cvalue optimized out\u003e, \\\n ppos\u003d0xffff88001e26bf48) at fs/read_write.c:406\n #8  0xffffffff81137e56 in vfs_write (file\u003d0xffff88003f606a80, buf\u003d0x1ec2960 \u003cAddress 0x1ec2960 out of bounds\u003e, count\u003d0x4\\\n 000, pos\u003d0xffff88001e26bf48) at fs/read_write.c:435\n #9  0xffffffff8113816c in sys_write (fd\u003d\u003cvalue optimized out\u003e, buf\u003d0x1ec2960 \u003cAddress 0x1ec2960 out of bounds\u003e, count\u003d0x\\\n 4000) at fs/read_write.c:487\n #10 \u003csignal handler called\u003e\n #11 0x00007f120077a390 in __brk_reservation_fn_dmi_alloc__ ()\n #12 0x0000000000000000 in ?? ()\n gdb\u003e print offset\n $22 \u003d 0xffffffffffffffff\n gdb\u003e print idx\n $23 \u003d 0xffffffff\n gdb\u003e print inode-\u003ei_blkbits\n $24 \u003d 0xc\n gdb\u003e up\n #1  ext4_da_write_end (file\u003d0xffff88003f606a80, mapping\u003d0xffff88001d3824e0, pos\u003d0x108000, len\u003d0x1000, copied\u003d0x0, page\u003d0\\\n xffffea0000d792e8, fsdata\u003d0x0) at fs/ext4/inode.c:2512\n 2512                    if (ext4_da_should_update_i_disksize(page, end)) {\n gdb\u003e print start\n $25 \u003d 0x0\n gdb\u003e print end\n $26 \u003d 0xffffffffffffffff\n gdb\u003e print pos\n $27 \u003d 0x108000\n gdb\u003e print new_i_size\n $28 \u003d 0x108000\n gdb\u003e print ((struct ext4_inode_info *)((char *)inode-((int)(\u0026((struct ext4_inode_info *)0)-\u003evfs_inode))))-\u003ei_disksize\n $29 \u003d 0xd9000\n gdb\u003e down\n 2467            for (i \u003d 0; i \u003c idx; i++)\n gdb\u003e print i\n $30 \u003d 0xd44acbee\n\nThis is 100% reproducible with some autonuma development code tuned in\na very aggressive manner (not normal way even for knumad) which does\n\"exotic\" changes to the ptes. It wouldn\u0027t normally trigger but I don\u0027t\nsee why it can\u0027t happen normally if the page is added to swap cache in\nbetween the two faults leading to \"copied\" being zero (which then\nhangs in ext4). So it should be fixed. Especially possible with lumpy\nreclaim (albeit disabled if compaction is enabled) as that would\nignore the young bits in the ptes.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b5a7e97039a80fae673ccc115ce595d5b88fb4ee",
      "tree": "b8533e2cb3fc30da051487257cd24af6edeea83e",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 12 10:53:02 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 12 10:53:02 2011 -0500"
      },
      "message": "ext4: fix ext4_end_io_dio() racing against fsync()\n\nWe need to make sure iocb-\u003eprivate is cleared *before* we put the\nio_end structure on i_completed_io_list.  Otherwise fsync() could\npotentially run on another CPU and free the iocb structure out from\nunder us.\n\nReported-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "90802ed9c3dbab2e067bd9fc67a30e66e6774e8f",
      "tree": "ac379380a669ad3c2a7ab0c3d923f1e9644ae885",
      "parents": [
        "05183189ee5df8799b22c56d93f0f69b8490e33f"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Mon Dec 05 13:00:34 2011 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Dec 06 09:53:40 2011 +0100"
      },
      "message": "treewide: Fix comment and string typo \u0027bufer\u0027\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "42b2aa86c6670347a2a07e6d7af0e0ecc8fdbff9",
      "tree": "6f8fb2a1efb3e84bf281658befe06dc6a7fb026b",
      "parents": [
        "a13b032776379fa6e2bfccf798969ca51e5fb052"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Mon Nov 28 20:31:00 2011 -0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 02 14:57:31 2011 +0100"
      },
      "message": "treewide: Fix typos in various parts of the kernel, and fix some comments.\n\nThe below patch fixes some typos in various parts of the kernel, as well as fixes some comments.\nPlease let me know if I missed anything, and I will try to get it changed and resent.\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "4c81f045c0bd2cbb78cc6446a4cd98038fe11a2e",
      "tree": "d294fc2e46351d7ceb7b8d8b343cb5e6aabbcc18",
      "parents": [
        "caca6a03d365883564885f2c1da3e88dcf65d139"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Nov 24 19:22:24 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 24 19:22:24 2011 -0500"
      },
      "message": "ext4: fix racy use-after-free in ext4_end_io_dio()\n\next4_end_io_dio() queues io_end-\u003ework and then clears iocb-\u003eprivate;\nhowever, io_end-\u003ework calls aio_complete() which frees the iocb\nobject.  If that slab object gets reallocated, then ext4_end_io_dio()\ncan end up clearing someone else\u0027s iocb-\u003eprivate, this use-after-free\ncan cause a leak of a struct ext4_io_end_t structure.\n\nDetected and tested with slab poisoning.\n\n[ Note: Can also reproduce using 12 fio\u0027s against 12 file systems with the\n  following configuration file:\n\n  [global]\n  direct\u003d1\n  ioengine\u003dlibaio\n  iodepth\u003d1\n  bs\u003d4k\n  ba\u003d4k\n  size\u003d128m\n\n  [create]\n  filename\u003d${TESTDIR}\n  rw\u003dwrite\n\n  -- tytso ]\n\nGoogle-Bug-Id: 5354697\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReported-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nTested-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f8f5ed7c996ad9426847ce09b828d415cb19bc06",
      "tree": "ef5826a0b818ef6130c67da63a8bb8aa81b19dde",
      "parents": [
        "c292fe4aae5aa5c089633bc40342d27c8275306a",
        "6e58ad69efe9f4c91eb15f6bc365293414c397ce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 21 12:11:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 21 12:11:37 2011 -0800"
      },
      "message": "Merge branch \u0027dev\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027dev\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: fix up a undefined error in ext4_free_blocks in debugging code\n  ext4: add blk_finish_plug in error case of writepages.\n  ext4: Remove kernel_lock annotations\n  ext4: ignore journalled data options on remount if fs has no journal\n"
    },
    {
      "commit": "3c1fcb2c24519febd7ca9cf292fa5bdf513b601f",
      "tree": "9be412cacdd7778fc5826efdda0d135570929991",
      "parents": [
        "2397256d6218e7bf5147a3b01dcc6aec20fd3916"
      ],
      "author": {
        "name": "Namjae Jeon",
        "email": "linkinjeon@gmail.com",
        "time": "Mon Nov 07 11:01:13 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 07 11:01:13 2011 -0500"
      },
      "message": "ext4: add blk_finish_plug in error case of writepages.\n\nblk_finish_plug is needed in error case of writepages.\n\nSigned-off-by: Namjae Jeon \u003clinkinjeon@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "208bca0860406d16398145ddd950036a737c3c9d",
      "tree": "7797a16c17d8bd155120126fa7976727fc6de013",
      "parents": [
        "6aad3738f6a79fd0ca480eaceefe064cc471f6eb",
        "0e175a1835ffc979e55787774e58ec79e41957d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "message": "Merge branch \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\n* \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Add a \u0027reason\u0027 to wb_writeback_work\n  writeback: send work item to queue_io, move_expired_inodes\n  writeback: trace event balance_dirty_pages\n  writeback: trace event bdi_dirty_ratelimit\n  writeback: fix ppc compile warnings on do_div(long long, unsigned long)\n  writeback: per-bdi background threshold\n  writeback: dirty position control - bdi reserve area\n  writeback: control dirty pause time\n  writeback: limit max dirty pause time\n  writeback: IO-less balance_dirty_pages()\n  writeback: per task dirty rate limit\n  writeback: stabilize bdi-\u003edirty_ratelimit\n  writeback: dirty rate control\n  writeback: add bg_threshold parameter to __bdi_update_bandwidth()\n  writeback: dirty position control\n  writeback: account per-bdi accumulated dirtied pages\n"
    },
    {
      "commit": "d211858837ff8d8e31942ca7d27e6e08b3b46f5e",
      "tree": "a8ec83a791066e64ad02052498dbe39ebefacab9",
      "parents": [
        "f1f8935a5c38a2c61e86a42bc971a2539eef2211",
        "f0023bc617ba600956b9226f1806033d7486c8ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 11:41:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 11:41:01 2011 -0700"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/vfs-queue:\n  vfs: add d_prune dentry operation\n  vfs: protect i_nlink\n  filesystems: add set_nlink()\n  filesystems: add missing nlink wrappers\n  logfs: remove unnecessary nlink setting\n  ocfs2: remove unnecessary nlink setting\n  jfs: remove unnecessary nlink setting\n  hypfs: remove unnecessary nlink setting\n  vfs: ignore error on forced remount\n  readlinkat: ensure we return ENOENT for the empty pathname for normal lookups\n  vfs: fix dentry leak in simple_fill_super()\n"
    },
    {
      "commit": "f1f8935a5c38a2c61e86a42bc971a2539eef2211",
      "tree": "694950045f2f5d89507d7206cf6595e09cdfbd2c",
      "parents": [
        "34116645d912f65d7eb4508a1db3c9d0e45facb1",
        "f2a44523b20f323e4aef7c16261d34d6f0a4bf06"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 10:06:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 10:06:20 2011 -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: (97 commits)\n  jbd2: Unify log messages in jbd2 code\n  jbd/jbd2: validate sb-\u003es_first in journal_get_superblock()\n  ext4: let ext4_ext_rm_leaf work with EXT_DEBUG defined\n  ext4: fix a syntax error in ext4_ext_insert_extent when debugging enabled\n  ext4: fix a typo in struct ext4_allocation_context\n  ext4: Don\u0027t normalize an falloc request if it can fit in 1 extent.\n  ext4: remove comments about extent mount option in ext4_new_inode()\n  ext4: let ext4_discard_partial_buffers handle unaligned range correctly\n  ext4: return ENOMEM if find_or_create_pages fails\n  ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock()\n  ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten\n  ext4: optimize locking for end_io extent conversion\n  ext4: remove unnecessary call to waitqueue_active()\n  ext4: Use correct locking for ext4_end_io_nolock()\n  ext4: fix race in xattr block allocation path\n  ext4: trace punch_hole correctly in ext4_ext_map_blocks\n  ext4: clean up AGGRESSIVE_TEST code\n  ext4: move variables to their scope\n  ext4: fix quota accounting during migration\n  ext4: migrate cleanup\n  ...\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "966dbde2c208e07bab7a45a7855e1e693eabe661",
      "tree": "4d1687ad52be80141d90a5bc3c5c6de64d9bad24",
      "parents": [
        "94054fa3fca1fd78db02cb3d68d5627120f0a1d4"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Mon Oct 31 17:07:48 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:46 2011 -0700"
      },
      "message": "ext4: warn if direct reclaim tries to writeback pages\n\nDirect reclaim should never writeback pages.  Warn if an attempt is made.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edb5ac8993e25143f6af1ab143843a65c52e2a15",
      "tree": "d7ddf9603bcb2c540d5c240102a0dafc10f42eef",
      "parents": [
        "5129d05fda57be13f434dbe8536de39a6c25496d"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Oct 31 18:04:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Oct 31 18:04:38 2011 -0400"
      },
      "message": "ext4: let ext4_discard_partial_buffers handle unaligned range correctly\n\nAs comment says, we should handle unaligned range rather than aligned\none.  This fixes a bug found by running xfstests #91.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\n"
    },
    {
      "commit": "5129d05fda57be13f434dbe8536de39a6c25496d",
      "tree": "e02d95dc0bba3fb12c69489c30b43fecca9fb115",
      "parents": [
        "e260daf27902b2189a9198f5b64fa4567939bb5b"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Oct 31 17:56:10 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Oct 31 17:56:10 2011 -0400"
      },
      "message": "ext4: return ENOMEM if find_or_create_pages fails\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e260daf27902b2189a9198f5b64fa4567939bb5b",
      "tree": "a14c395dc6d305b39ee595df66dd343000daf213",
      "parents": [
        "0edeb71dc9133bfb505d3bf59642e07cd936613e"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Oct 31 17:54:36 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Oct 31 17:54:36 2011 -0400"
      },
      "message": "ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock()\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0edeb71dc9133bfb505d3bf59642e07cd936613e",
      "tree": "bcb68e2676d9bba1e4e4e28fb1ba8d382caf26eb",
      "parents": [
        "b82e384c7bb9a19036b4daf58fa216df7cd48aa0"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 31 17:30:44 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Oct 31 17:30:44 2011 -0400"
      },
      "message": "ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten\n\nEXT4_IO_END_UNWRITTEN flag set and the increase of i_aiodio_unwritten\nshould be done simultaneously since ext4_end_io_nolock always clear\nthe flag and decrease the counter in the same time.\n\nWe have found some bugs that the flag is set while leaving\ni_aiodio_unwritten unchanged(commit 32c80b32c053d). So this patch just tries\nto create a helper function to wrap them to avoid any future bug.\nThe idea is inspired by Eric.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0e175a1835ffc979e55787774e58ec79e41957d7",
      "tree": "6ec4b65a8de4e9d1c12d26a1079079ed81d79450",
      "parents": [
        "ad4e38dd6a33bb3a4882c487d7abe621e583b982"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 07 21:54:10 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Oct 31 00:33:36 2011 +0800"
      },
      "message": "writeback: Add a \u0027reason\u0027 to wb_writeback_work\n\nThis creates a new \u0027reason\u0027 field in a wb_writeback_work\nstructure, which unambiguously identifies who initiates\nwriteback activity.  A \u0027wb_reason\u0027 enumeration has been\nadded to writeback.h, to enumerate the possible reasons.\n\nThe \u0027writeback_work_class\u0027 and tracepoint event class and\n\u0027writeback_queue_io\u0027 tracepoints are updated to include the\nsymbolic \u0027reason\u0027 in all trace events.\n\nAnd the \u0027writeback_inodes_sbXXX\u0027 family of routines has had\na wb_stats parameter added to them, so callers can specify\nwhy writeback is being started.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "fcbb5515825f1bb20b7a6f75ec48bee61416f879",
      "tree": "1fbb172370314beb24129edb3d5e481d22bf7c76",
      "parents": [
        "6f8ff537266ee5396c920fb0c842a21df3055ff3"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Oct 26 05:00:19 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 26 05:00:19 2011 -0400"
      },
      "message": "ext4: let ext4_page_mkwrite stop started handle in failure\n\nThe started journal handle should be stopped in failure case.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a4e5d88b1b24827f4f6a3cba43228936a67d81ba",
      "tree": "0f5b0309f290f5fc23478794c6f4adcd7c18896a",
      "parents": [
        "750c9c47a5f9daa88333ac435a1afe4d4b428230"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Oct 25 08:15:12 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 25 08:15:12 2011 -0400"
      },
      "message": "ext4: update EOFBLOCKS flag on fallocate properly\n\nEOFBLOCK_FL should be updated if called w/o FALLOCATE_FL_KEEP_SIZE\nCurrently it happens only if new extent was allocated.\n\nTESTCASE:\nfallocate test_file -n -l4096\nfallocate test_file -l4096\nLast fallocate cmd has updated size, but keept EOFBLOCK_FL set. And\nfsck will complain about that.\n\nAlso remove ping pong in ext4_fallocate() in case of new extents,\nwhere ext4_ext_map_blocks() clear EOFBLOCKS bit, and later\next4_falloc_update_inode() restore it again.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8de49e674a1133ab8998914a6e933ceb4b5f4b07",
      "tree": "19d7d5de54b166f0d4e0ea9f57d6bcf0b451e52b",
      "parents": [
        "09e0834fb0ce1ea2a63885177015bd5d7d2bc22d"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Thu Oct 20 19:23:08 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 20 19:23:08 2011 -0400"
      },
      "message": "ext4: fix the deadlock in mpage_da_map_and_submit()\n\nIf ext4_jbd2_file_inode() in mpage_da_map_and_submit() fails due to\njournal abort, this function returns to caller without unlocking the\npage.  It leads to the deadlock, and the patch fixes this issue by\ncalling mpage_da_submit_io().\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "09e0834fb0ce1ea2a63885177015bd5d7d2bc22d",
      "tree": "52f8efc4bd21cc93d27cfb9071decc6996065071",
      "parents": [
        "ee90d57e20bd4749dda3b14397392b18b89dc3ef"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Thu Oct 20 18:56:10 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 20 18:56:10 2011 -0400"
      },
      "message": "ext4: fix deadlock in ext4_ordered_write_end()\n\nIf ext4_jbd2_file_inode() in ext4_ordered_write_end() fails for some\nreasons, this function returns to caller without unlocking the page.\nIt leads to the deadlock, and the patch fixes this issue.\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": "1bce63d1a2a2c8929442b79acd4eab2e3db10a0b",
      "tree": "2dfdd7f28440bca2ba5932c708f541c8a6a21d06",
      "parents": [
        "f6f96fdb8c2779f9bd8ed7b0b08405b4439c982b"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Oct 18 10:55:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 18 10:55:51 2011 -0400"
      },
      "message": "ext4: add block plug for .writepages\n\nAdd block plug for ext4 .writepages. Though ext4 .writepages\nalready handles request merge very well, block plug is still\nhelpful to reduce block lock contention.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "df3ab17072c31fbd394614711772682f0a956a2c",
      "tree": "bb9aa8d05dcbb6de15b79c0afd8c79a854a3d345",
      "parents": [
        "4113c4caa4f355b8ff8b7ff0510c29c9d00d30b3"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Oct 08 15:53:49 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 08 15:53:49 2011 -0400"
      },
      "message": "ext4: fix the comment describing ext4_ext_search_right()\n\nThe comment describing what ext4_ext_search_right() does is incorrect.\nWe return 0 in *phys when *logical is the \u0027largest\u0027 allocated block,\nnot smallest.  \n\nFix a few other typos while we\u0027re at it.\n\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\n"
    },
    {
      "commit": "fed678dc8a8b839c8189b5d889a94e865cd327dd",
      "tree": "d2bf10d2a4e4ca0a27ccd6f7ae40e8e259acfcfc",
      "parents": [
        "808bf29b9195c52239b9aaeda7c6082a0ddf07c6",
        "6c4867f6469964e34c5f4ee229a2a7f71a34c7ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 21 13:20:21 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  floppy: use del_timer_sync() in init cleanup\n  blk-cgroup: be able to remove the record of unplugged device\n  block: Don\u0027t check QUEUE_FLAG_SAME_COMP in __blk_complete_request\n  mm: Add comment explaining task state setting in bdi_forker_thread()\n  mm: Cleanup clearing of BDI_pending bit in bdi_forker_thread()\n  block: simplify force plug flush code a little bit\n  block: change force plug flush call order\n  block: Fix queue_flag update when rq_affinity goes from 2 to 1\n  block: separate priority boosting from REQ_META\n  block: remove READ_META and WRITE_META\n  xen-blkback: fixed indentation and comments\n  xen-blkback: Don\u0027t disconnect backend until state switched to XenbusStateClosed.\n"
    },
    {
      "commit": "5356f2615cd558c57a1f7d7528d1ad4de3640d96",
      "tree": "e3590bf14d9a21c4eb365105886382bfb1131b95",
      "parents": [
        "d8990240d8c911064447f8aa5a440f9345a6d692"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:20:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:20:51 2011 -0400"
      },
      "message": "ext4: attempt to fix race in bigalloc code path\n\nCurrently, there exists a race between delayed allocated writes and\nthe writeback when bigalloc feature is in use. The race was because we\nwanted to determine what blocks in a cluster are under delayed\nallocation and we were using buffer_delayed(bh) check for it. But, the\nwriteback codepath clears this bit without any synchronization which\nresulted in a race and an ext4 warning similar to:\n\nEXT4-fs (ram1): ext4_da_update_reserve_space: ino 13, used 1 with only 0\n\t\treserved data blocks\n\nThe race existed in two places.\n(1) between ext4_find_delalloc_range() and ext4_map_blocks() when called from\n    writeback code path.\n(2) between ext4_find_delalloc_range() and ext4_da_get_block_prep() (where\n    buffer_delayed(bh) is set.\n\nTo fix (1), this patch introduces a new buffer_head state bit -\nBH_Da_Mapped.  This bit is set under the protection of\nEXT4_I(inode)-\u003ei_data_sem when we have actually mapped the delayed\nallocated blocks during the writeout time. We can now reliably check\nfor this bit inside ext4_find_delalloc_range() to determine whether\nthe reservation for the blocks have already been claimed or not.\n\nTo fix (2), it was necessary to set buffer_delay(bh) under the\nprotection of i_data_sem.  So, I extracted the very beginning of\next4_map_blocks into a new function - ext4_da_map_blocks() - and\nperformed the required setting of bh_delay bit and the quota\nreservation under the protection of i_data_sem.  These two fixes makes\nthe checking of buffer_delay(bh) and buffer_da_mapped(bh) consistent,\nthus removing the race.\n\nTested: I was able to reproduce the problem by running \u0027dd\u0027 and\n\u0027fsync\u0027 in parallel. Also, xfstests sometimes used to reproduce this\nrace. After the fix both my test and xfstests were successful and no\nrace (warning message) was observed.\n\nGoogle-Bug-Id: 4997027\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d8990240d8c911064447f8aa5a440f9345a6d692",
      "tree": "c12cda27583eb9616d91ec38fdfd79c6eb490bd5",
      "parents": [
        "df55c99dc8ee4c3c886a5edc8a4aa6b131c95afc"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:18:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:18:51 2011 -0400"
      },
      "message": "ext4: add some tracepoints in ext4/extents.c\n\nThis patch adds some tracepoints in ext4/extents.c and updates a tracepoint in\next4/inode.c.\n\nTested: Built and ran the kernel and verified that these tracepoints work.\nAlso ran xfstests.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n    \n\n"
    },
    {
      "commit": "df55c99dc8ee4c3c886a5edc8a4aa6b131c95afc",
      "tree": "6e5ea5a435659fa2dee7410f0b0196bdaf3a2054",
      "parents": [
        "e7d5f3156e6827970f75ab27ad7eb0155826eb0b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:16:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:16:51 2011 -0400"
      },
      "message": "ext4: rename ext4_has_free_blocks() to ext4_has_free_clusters()\n\nRename the function so it is more clear what is going on.  Also rename\nthe various variables so it\u0027s clearer what\u0027s happening.\n\nAlso fix a missing blocks to cluster conversion when reading the\nnumber of reserved blocks for root.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e7d5f3156e6827970f75ab27ad7eb0155826eb0b",
      "tree": "7eab0a0660052e4a3fe1bba57a869138fb29e7f4",
      "parents": [
        "cff1dfd767d1ee3c773fd8b57fe310957e5f8abb"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:14:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:14:51 2011 -0400"
      },
      "message": "ext4: rename ext4_claim_free_blocks() to ext4_claim_free_clusters()\n\nThis function really claims a number of free clusters, not blocks, so\nrename it so it\u0027s clearer what\u0027s going on.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5dee54372c1ea15ab482b959634cda8c01b042bd",
      "tree": "512da0144f6a9f86b5817569d0521b60cddee4c9",
      "parents": [
        "021b65bb1e4e4b625c80bbb82651e5e155721ef3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "message": "ext4: rename ext4_count_free_blocks() to ext4_count_free_clusters()\n\nThis function really counts the free clusters reported in the block\ngroup descriptors, so rename it to reduce confusion.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7b415bf60f6afb0499fd3dc0ee33444f54e28567",
      "tree": "9c64fef2b8d60ce64865af6e4c2cc6008026e28c",
      "parents": [
        "27baebb849d46d901e756e6502b0a65a62e43771"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "message": "ext4: Fix bigalloc quota accounting and i_blocks value\n\nWith bigalloc changes, the i_blocks value was not correctly set (it was still\nset to number of blocks being used, but in case of bigalloc, we want i_blocks\nto represent the number of clusters being used). Since the quota subsystem sets\nthe i_blocks value, this patch fixes the quota accounting and makes sure that\nthe i_blocks value is set correctly.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5704265188ffe4290ed73b3cb685206c3ed8209d",
      "tree": "6bc51bea59625b2a7c8e4b74bbb66884371f74dd",
      "parents": [
        "0aa060000e83ca3d09ddc446a7174fb0820d99bc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "message": "ext4: convert s_{dirty,free}blocks_counter to s_{dirty,free}clusters_counter\n\nConvert the percpu counters s_dirtyblocks_counter and\ns_freeblocks_counter in struct ext4_super_info to be\ns_dirtyclusters_counter and s_freeclusters_counter.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bab08ab9646288f1b0b72a7aaeecdff94bd62c18",
      "tree": "e301377f1ce9093a44b2cfb331439e15d79789ed",
      "parents": [
        "281b59959707dfae03ce038cdf231bf4904e170c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:36:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:36:51 2011 -0400"
      },
      "message": "ext4: enforce bigalloc restrictions (e.g., no online resizing, etc.)\n\nAt least initially if the bigalloc feature is enabled, we will not\nsupport non-extent mapped inodes, online resizing, online defrag, or\nthe FITRIM ioctl.  This simplifies the initial implementation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "02fac1297eb3f471a27368271aadd285548297b0",
      "tree": "d0008f0aa889dba759cb780e8e805b30953083cf",
      "parents": [
        "189e868fa8fdca702eb9db9d8afc46b5cb9144c9"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Tue Sep 06 21:53:01 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 06 21:53:01 2011 -0400"
      },
      "message": "ext4: fix partial page writes\n\nWhile running extended fsx tests to verify the preceeding patches,\na similar bug was also found in the write operation\n\nWhen ever a write operation begins or ends in a hole,\nor extends EOF, the partial page contained in the hole\nor beyond EOF needs to be zeroed out.\n\nTo correct this the new ext4_discard_partial_page_buffers_no_lock\nroutine is used to zero out the partial page, but only for buffer\nheads that are already unmapped.\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "decbd919f4bb9cb698486880c026c4104b13d3c3",
      "tree": "0181b9bcb627531ddd0601b751f6b968e28cdc9a",
      "parents": [
        "d2159fb7b8bac12684aabdf41d84b56da9f5c062"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 06 02:37:06 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 06 02:37:06 2011 -0400"
      },
      "message": "ext4: only call ext4_jbd2_file_inode when an inode has been extended\n\nIn delayed allocation mode, it\u0027s important to only call\next4_jbd2_file_inode when the file has been extended.  This is\nnecessary to avoid a race which first got introduced in commit\n678aaf481, but which was made much more common with the introduction\nof the \"punch hole\" functionality.  (Especially when dioread_nolock\nwas enabled; when I could reliably reproduce this problem with\nxfstests #74.)\n\nThe race is this: If while trying to writeback a delayed allocation\ninode, there is a need to map delalloc blocks, and we run out of space\nin the journal, *and* at the same time the inode is already on the\ncommitting transaction\u0027s t_inode_list (because for example while doing\nthe punch hole operation, ext4_jbd2_file_inode() is called), then the\ncommit operation will wait for the inode to finish all of its pending\nwritebacks by calling filemap_fdatawait(), but since that inode has\none or more pages with the PageWriteback flag set, the commit\noperation will wait forever, and the so the writeback of the inode can\nnever take place, and the kjournald thread and the writeback thread\nend up waiting for each other --- forever.\n\nIt\u0027s important at this point to recall why an inode is placed on the\nt_inode_list; it is to provide the data\u003dordered guarantees that we\ndon\u0027t end up exposing stale data.  In the case where we are truncating\nor punching a hole in the inode, there is no possibility that stale\ndata could be exposed in the first place, so we don\u0027t need to put the\ninode on the t_inode_list!\n\nThe right long-term fix is to get rid of data\u003dordered mode altogether,\nand only update the extent tree or indirect blocks after the data has\nbeen written.  Until then, this change will also avoid some\nunnecessary waiting in the commit operation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4e96b2dbbf1d7e81f22047a50f862555a6cb87cb",
      "tree": "1f9c1d6712d1d16d3c6d04635019d2d1774c54d4",
      "parents": [
        "5930ea643805feb50a2f8383ae12eb6f10935e49"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Sat Sep 03 11:51:09 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 11:51:09 2011 -0400"
      },
      "message": "ext4: Add new ext4_discard_partial_page_buffers routines\n\nThis patch adds two new routines: ext4_discard_partial_page_buffers\nand ext4_discard_partial_page_buffers_no_lock.\n\nThe ext4_discard_partial_page_buffers routine is a wrapper\nfunction to ext4_discard_partial_page_buffers_no_lock.\nThe wrapper function locks the page and passes it to\next4_discard_partial_page_buffers_no_lock.\nCalling functions that already have the page locked can call\next4_discard_partial_page_buffers_no_lock directly.\n\nThe ext4_discard_partial_page_buffers_no_lock function\nzeros a specified range in a page, and unmaps the\ncorresponding buffer heads.  Only block aligned regions of the\npage will have their buffer heads unmapped.  Unblock aligned regions\nwill be mapped if needed so that they can be updated with the\npartial zero out.  This function is meant to\nbe used to update a page and its buffer heads to be zeroed\nand unmapped when the corresponding blocks have been released\nor will be released.\n\nThis routine is used in the following scenarios:\n* A hole is punched and the non page aligned regions\n  of the head and tail of the hole need to be discarded\n\n* The file is truncated and the partial page beyond EOF needs\n  to be discarded\n\n* The end of a hole is in the same page as EOF.  After the\n  page is flushed, the partial page beyond EOF needs to be\n  discarded.\n\n* A write operation begins or ends inside a hole and the partial\n  page appearing before or after the write needs to be discarded\n\n* A write operation extends EOF and the partial page beyond EOF\n  needs to be discarded\n\nThis function takes a flag EXT4_DISCARD_PARTIAL_PG_ZERO_UNMAPPED\nwhich is used when a write operation begins or ends in a hole.\nWhen the EXT4_DISCARD_PARTIAL_PG_ZERO_UNMAPPED flag is used, only\nbuffer heads that are already unmapped will have the corresponding\nregions of the page zeroed.\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "84ebd795613488992b273220c2937d575d27d2a9",
      "tree": "102201c078c73d911f0a1eb656ee057fe2806489",
      "parents": [
        "1cd9f0976aa4606db8d6e3dc3edd0aca8019372a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:56:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:56:51 2011 -0400"
      },
      "message": "ext4: fake direct I/O mode for data\u003djournal\n\nCurrently attempts to open a file with O_DIRECT in data\u003djournal mode\ncauses the open to fail with -EINVAL.  This makes it very hard to test\ndata\u003djournal mode.  So we will let the open succeed, but then always\nfall back to O_DSYNC buffered writes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8c0bec2151a47906bf779c6715a10ce04453ab77",
      "tree": "0165e80ba408b5db1e9e2adf9264bf4186b06768",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "message": "ext4: remove i_mutex lock in ext4_evict_inode to fix lockdep complaining\n\nThe i_mutex lock and flush_completed_IO() added by commit 2581fdc810\nin ext4_evict_inode() causes lockdep complaining about potential\ndeadlock in several places.  In most/all of these LOCKDEP complaints\nit looks like it\u0027s a false positive, since many of the potential\ncircular locking cases can\u0027t take place by the time the\next4_evict_inode() is called; but since at the very least it may mask\nreal problems, we need to address this.\n\nThis change removes the flush_completed_IO() and i_mutex lock in\next4_evict_inode().  Instead, we take a different approach to resolve\nthe software lockup that commit 2581fdc810 intends to fix.  Rather\nthan having ext4-dio-unwritten thread wait for grabing the i_mutex\nlock of an inode, we use mutex_trylock() instead, and simply requeue\nthe work item if we fail to grab the inode\u0027s i_mutex lock.\n\nThis should speed up work queue processing in general and also\nprevents the following deadlock scenario: During page fault,\nshrink_icache_memory is called that in turn evicts another inode B.\nInode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero.  However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue.  As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock.  Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "65299a3b788bd274bed92f9fa3232082c9f3ea70",
      "tree": "191c0afe31c15ac4c1bab96e0a07fddb097d0de8",
      "parents": [
        "5dc06c5a70b79a323152bec7e55783e705767e63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:50:29 2011 +0200"
      },
      "message": "block: separate priority boosting from REQ_META\n\nAdd a new REQ_PRIO to let requests preempt others in the cfq I/O schedule,\nand lave REQ_META purely for marking requests as metadata in blktrace.\n\nAll existing callers of REQ_META except for XFS are updated to also\nset REQ_PRIO for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5dc06c5a70b79a323152bec7e55783e705767e63",
      "tree": "8f008edc8574ecda04ee6deb13d69b489e8250b6",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 23 14:49:55 2011 +0200"
      },
      "message": "block: remove READ_META and WRITE_META\n\nReplace all occurnanced of the undocumented READ_META with READ | REQ_META\nand remove the unused WRITE_META define.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "9dd75f1f1a02d656a11a7b9b9e6c2759b9c1e946",
      "tree": "0e3dc45c410c31fb9ee24e9722a17d0de259b537",
      "parents": [
        "32c80b32c053dc52712dedac5e4d0aa7c93fc353"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:58:21 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:58:21 2011 -0400"
      },
      "message": "ext4: fix nomblk_io_submit option so it correctly converts uninit blocks\n\nBug discovered by Jan Kara:\n\nFinally, commit 1449032be17abb69116dbc393f67ceb8bd034f92 returned back\nthe old IO submission code but apparently it forgot to return the old\nhandling of uninitialized buffers so we unconditionnaly call\nblock_write_full_page() without specifying end_io function. So AFAICS\nwe never convert unwritten extents to written in some cases. For\nexample when I mount the fs as: mount -t ext4 -o\nnomblk_io_submit,dioread_nolock /dev/ubdb /mnt and do\n        int fd \u003d open(argv[1], O_RDWR | O_CREAT | O_TRUNC, 0600);\n        char buf[1024];\n        memset(buf, \u0027a\u0027, sizeof(buf));\n        fallocate(fd, 0, 0, 16384);\n        write(fd, buf, sizeof(buf));\n\nI get a file full of zeros (after remounting the filesystem so that\npagecache is dropped) instead of seeing the first KB contain \u0027a\u0027s.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "32c80b32c053dc52712dedac5e4d0aa7c93fc353",
      "tree": "857375faae2d6c562741d14ed13a1411b197baf5",
      "parents": [
        "2581fdc810889fdea97689cb62481201d579c796"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Aug 13 12:30:59 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:30:59 2011 -0400"
      },
      "message": "ext4: Resolve the hang of direct i/o read in handling EXT4_IO_END_UNWRITTEN.\n\nEXT4_IO_END_UNWRITTEN flag set and the increase of i_aiodio_unwritten\nshould be done simultaneously since ext4_end_io_nolock always clear\nthe flag and decrease the counter in the same time.\n\nWe don\u0027t increase i_aiodio_unwritten when setting\nEXT4_IO_END_UNWRITTEN so it will go nagative and causes some process\nto wait forever.\n\nPart of the patch came from Eric in his e-mail, but it doesn\u0027t fix the\nproblem met by Michael actually.\n\nhttp://marc.info/?l\u003dlinux-ext4\u0026m\u003d131316851417460\u0026w\u003d2\n\nReported-and-Tested-by: Michael Tokarev\u003cmjt@tls.msk.ru\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2581fdc810889fdea97689cb62481201d579c796",
      "tree": "55d7a2244a5efa184e290446c0ee3f61b71bf264",
      "parents": [
        "441c850857148935babe000fc2ba1455fe54a6a9"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "message": "ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode\n\nFlush inode\u0027s i_completed_io_list before calling ext4_io_wait to\nprevent the following deadlock scenario: A page fault happens while\nsome process is writing inode A. During page fault,\nshrink_icache_memory is called that in turn evicts another inode\nB. Inode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero. However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue. As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock. Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nAlso moves ext4_flush_completed_IO and ext4_ioend_wait from\next4_destroy_inode() to ext4_evict_inode(). During inode deleteion,\next4_evict_inode() is called before ext4_destroy_inode() and in\next4_evict_inode(), we may call ext4_truncate() without holding\ni_mutex lock. As a result, there is a race between flush_completed_IO\nthat is called from ext4_ext_truncate() and ext4_end_io_work, which\nmay cause corruption on an io_end structure. This change moves\next4_flush_completed_IO and ext4_ioend_wait from ext4_destroy_inode()\nto ext4_evict_inode() to resolve the race between ext4_truncate() and\next4_end_io_work during inode deletion.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "441c850857148935babe000fc2ba1455fe54a6a9",
      "tree": "aa0ef8ca32a49b2daf072f851938af3f2db35a90",
      "parents": [
        "322a8b034003c0d46d39af85bf24fee27b902f48"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sat Aug 13 11:25:18 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 11:25:18 2011 -0400"
      },
      "message": "ext4: Fix ext4_should_writeback_data() for no-journal mode\n\next4_should_writeback_data() had an incorrect sequence of\ntests to determine if it should return 0 or 1: in\nparticular, even in no-journal mode, 0 was being returned\nfor a non-regular-file inode.\n\nThis meant that, in non-journal mode, we would use\next4_journalled_aops for directories, symlinks, and other\nnon-regular files.  However, calling journalled aop\ncallbacks when there is no valid handle, can cause problems.\n\nThis would cause a kernel crash with Jan Kara\u0027s commit\n2d859db3e4 (\"ext4: fix data corruption in inodes with\njournalled data\"), because we now dereference \u0027handle\u0027 in\next4_journalled_write_end().\n\nI also added BUG_ONs to check for a valid handle in the\nobviously journal-only aops callbacks.\n\nI tested this running xfstests with a scratch device in\nthese modes:\n\n   - no-journal\n   - data\u003dordered\n   - data\u003dwriteback\n   - data\u003djournal\n\nAll work fine; the data\u003djournal run has many failures and a\ncrash in xfstests 074, but this is no different from a\nvanilla kernel.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "60ad4466821a96913a9b567115e194ed1087c2d7",
      "tree": "cd488ba72a60f856b85a467763fb633cbe7ef2d9",
      "parents": [
        "1b8e94993c4752d98c33903aa836acc15f7e6d5c",
        "79a77c5ac34cc27ccbfbdf7113b41cdd93534eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "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: (60 commits)\n  ext4: prevent memory leaks from ext4_mb_init_backend() on error path\n  ext4: use EXT4_BAD_INO for buddy cache to avoid colliding with valid inode #\n  ext4: use ext4_msg() instead of printk in mballoc\n  ext4: use ext4_kvzalloc()/ext4_kvmalloc() for s_group_desc and s_group_info\n  ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n  ext4: use the correct error exit path in ext4_init_inode_table()\n  ext4: add missing kfree() on error return path in add_new_gdb()\n  ext4: change umode_t in tracepoint headers to be an explicit __u16\n  ext4: fix races in ext4_sync_parent()\n  ext4: Fix overflow caused by missing cast in ext4_fallocate()\n  ext4: add action of moving index in ext4_ext_rm_idx for Punch Hole\n  ext4: simplify parameters of reserve_backup_gdb()\n  ext4: simplify parameters of add_new_gdb()\n  ext4: remove lock_buffer in bclean() and setup_new_group_blocks()\n  ext4: simplify journal handling in setup_new_group_blocks()\n  ext4: let setup_new_group_blocks() set multiple bits at a time\n  ext4: fix a typo in ext4_group_extend()\n  ext4: let ext4_group_add_blocks() handle 0 blocks quickly\n  ext4: let ext4_group_add_blocks() return an error code\n  ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks()\n  ...\n\nFix up conflict in fs/ext4/inode.c: commit aacfc19c626e (\"fs: simplify\nthe blockdev_direct_IO prototype\") had changed the ext4_ind_direct_IO()\nfunction for the new simplified calling convention, while commit\ndae1e52cb126 (\"ext4: move ext4_ind_* functions from inode.c to\nindirect.c\") moved the function to another file.\n"
    },
    {
      "commit": "f01ef569cddb1a8627b1c6b3a134998ad1cf4b22",
      "tree": "29ea1a0942c8549c24411e976cd6891c7e995e89",
      "parents": [
        "a93a1329271038f0e8337061d3b41b3b212a851e",
        "bcff25fc8aa47a13faff8b4b992589813f7b450a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback: (27 commits)\n  mm: properly reflect task dirty limits in dirty_exceeded logic\n  writeback: don\u0027t busy retry writeback on new/freeing inodes\n  writeback: scale IO chunk size up to half device bandwidth\n  writeback: trace global_dirty_state\n  writeback: introduce max-pause and pass-good dirty limits\n  writeback: introduce smoothed global dirty limit\n  writeback: consolidate variable names in balance_dirty_pages()\n  writeback: show bdi write bandwidth in debugfs\n  writeback: bdi write bandwidth estimation\n  writeback: account per-bdi accumulated written pages\n  writeback: make writeback_control.nr_to_write straight\n  writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()\n  writeback: trace event writeback_queue_io\n  writeback: trace event writeback_single_inode\n  writeback: remove .nonblocking and .encountered_congestion\n  writeback: remove writeback_control.more_io\n  writeback: skip balance_dirty_pages() for in-memory fs\n  writeback: add bdi_dirty_limit() kernel-doc\n  writeback: avoid extra sync work at enqueue time\n  writeback: elevate queue_io() into wb_writeback()\n  ...\n\nFix up trivial conflicts in fs/fs-writeback.c and mm/filemap.c\n"
    },
    {
      "commit": "2d859db3e4a82a365572592d57624a5f996ed0ec",
      "tree": "d725aca3ab9555b8ee92f753a797034ff79f580c",
      "parents": [
        "b7ca1e8ec53259359db5313f923a0a20fa04bdb6"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 26 09:07:11 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 09:07:11 2011 -0400"
      },
      "message": "ext4: fix data corruption in inodes with journalled data\n\nWhen journalling data for an inode (either because it is a symlink or\nbecause the filesystem is mounted in data\u003djournal mode), ext4_evict_inode()\ncan discard unwritten data by calling truncate_inode_pages(). This is\nbecause we don\u0027t mark the buffer / page dirty when journalling data but only\nadd the buffer to the running transaction and thus mm does not know there\nare still unwritten data.\n\nFix the problem by carefully tracking transaction containing inode\u0027s data,\ncommitting this transaction, and writing uncheckpointed buffers when inode\nshould be reaped.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "72c5052ddc3956d847f21c2b8d55c93664a51b2c",
      "tree": "47b381f3f746cdc1612f432bd902278f8901f84a",
      "parents": [
        "aacfc19c626ebd3daa675652457d71019a1f583f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:48 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:50 2011 -0400"
      },
      "message": "fs: move inode_dio_done to the end_io handler\n\nFor filesystems that delay their end_io processing we should keep our\ni_dio_count until the the processing is done.  Enable this by moving\nthe inode_dio_done call to the end_io handler if one exist.  Note that\nthe actual move to the workqueue for ext4 and XFS is not done in\nthis patch yet, but left to the filesystem maintainers.  At least\nfor XFS it\u0027s not needed yet either as XFS has an internal equivalent\nto i_dio_count.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aacfc19c626ebd3daa675652457d71019a1f583f",
      "tree": "9c1cfb5945e939f1ba56b4c0101c211e84e544c0",
      "parents": [
        "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:49 2011 -0400"
      },
      "message": "fs: simplify the blockdev_direct_IO prototype\n\nSimple filesystems always pass inode-\u003ei_sb_bdev as the block device\nargument, and never need a end_io handler.  Let\u0027s simply things for\nthem and for my grepping activity by dropping these arguments.  The\nonly thing not falling into that scheme is ext4, which passes and\nend_io handler without needing special flags (yet), but given how\nmessy the direct I/O code there is use of __blockdev_direct_IO\nin one instead of two out of three cases isn\u0027t going to make a large\ndifference anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "562c72aa57c36b178eacc3500a0215651eca9429",
      "tree": "2c522c53ab26fc72e85e08747a08e3dca1207c87",
      "parents": [
        "11b80f459adaf91a712f95e7734a17655a36bf30"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:47 2011 -0400"
      },
      "message": "fs: move inode_dio_wait calls into -\u003esetattr\n\nLet filesystems handle waiting for direct I/O requests themselves instead\nof doing it beforehand.  This means filesystem-specific locks to prevent\nnew dio referenes from appearing can be held.  This is important to allow\ngeneralizing i_dio_count to non-DIO_LOCKING filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9ea7df534ed2a18157434a496a12cf073ca00c52",
      "tree": "f8fa09102093cbc60249f96ec4fb91985ae8659b",
      "parents": [
        "582686915803e34adc8fdcd90bff7ca7f6a42221"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 24 14:29:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "ext4: Rewrite ext4_page_mkwrite() to use generic helpers\n\nRewrite ext4_page_mkwrite() to use __block_page_mkwrite() helper. This\nremoves the need of using i_alloc_sem to avoid races with truncate which\nseems to be the wrong locking order according to lock ordering documented in\nmm/rmap.c. Also calling ext4_da_write_begin() as used by the old code seems to\nbe problematic because we can decide to flush delay-allocated blocks which\nwill acquire s_umount semaphore - again creating unpleasant lock dependency\nif not directly a deadlock.\n\nAlso add a check for frozen filesystem so that we don\u0027t busyloop in page fault\nwhen the filesystem is frozen.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dae1e52cb1267bf8f52e5e47a80fab566d7e8aa4",
      "tree": "2537e9f8f138e4935f88e605244174c9b2400bf4",
      "parents": [
        "9f125d641beb898f5bf2fe69583192c18043517a"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "message": "ext4: move ext4_ind_* functions from inode.c to indirect.c\n\nThis patch moves functions from inode.c to indirect.c.\nThe moved functions are ext4_ind_* functions and their helpers.\nFunctions called from inode.c are declared extern.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f125d641beb898f5bf2fe69583192c18043517a",
      "tree": "02259a4f538fbca0cbd6a9f0c4a9f96c82d738d6",
      "parents": [
        "1f7d1e77419050831a905353683807fa69a26625"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:04 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:04 2011 -0400"
      },
      "message": "ext4: move common truncate functions to header file\n\nMove two functions that will be needed by the indirect functions to be\nmoved to indirect.c as well as inode.c to truncate.h as inline\nfunctions, so that we can avoid having duplicate copies of the\nfunction (which can be a maintenance problem) without having to expose\nthem as globally functions.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f7d1e77419050831a905353683807fa69a26625",
      "tree": "0f32626160b1ecab1e6067ff0e94746c3da068c4",
      "parents": [
        "8bb2b247124ba6093455d4aef26743b1bef27bc5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "message": "ext4: move __ext4_check_blockref to block_validity.c\n\nIn preparation for moving the indirect functions to a separate file,\nmove __ext4_check_blockref() to block_validity.c and rename it to\next4_check_blockref() which is exported as globally visible function.\n\nAlso, rename the cpp macro ext4_check_inode_blockref() to\next4_ind_check_inode(), to make it clear that it is only valid for use\nwith non-extent mapped inodes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8bb2b247124ba6093455d4aef26743b1bef27bc5",
      "tree": "cb9dd91f6616b61bd71286e2f674eda8cad0f476",
      "parents": [
        "ff9893dc8aa622a4f122293a6861566a284edea5"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 17:10:28 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 17:10:28 2011 -0400"
      },
      "message": "ext4: rename ext4_indirect_* funcs to ext4_ind_*\n\nWe are going to move all ext4_ind_* functions to indirect.c.\nBefore we do that, let\u0027s rename 2 functions called ext4_indirect_*\nto ext4_ind_*, to keep to the naming convention.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ff9893dc8aa622a4f122293a6861566a284edea5",
      "tree": "ca7d798360c32379fb4d3d0913d349ac79f55c6d",
      "parents": [
        "ed7a7e16724a4123fce1fc0ff1f5131a0596f189"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "message": "ext4: split ext4_ind_truncate from ext4_truncate\n\nWe are about to move all indirect inode functions to a new file.\nBefore we do that, let\u0027s split ext4_ind_truncate() out of ext4_truncate()\nleaving only generic code in the latter, so we will be able to move\next4_ind_truncate() to the new file.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6e6938b6d3130305a5960c86b1a9b21e58cf6144",
      "tree": "de5546e8390ce31cd31412d2ef78ce732a42191c",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sun Jun 06 10:38:15 2010 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jun 08 08:25:20 2011 +0800"
      },
      "message": "writeback: introduce .tagged_writepages for the WB_SYNC_NONE sync stage\n\nsync(2) is performed in two stages: the WB_SYNC_NONE sync and the\nWB_SYNC_ALL sync. Identify the first stage with .tagged_writepages and\ndo livelock prevention for it, too.\n\nJan\u0027s commit f446daaea9 (\"mm: implement writeback livelock avoidance\nusing page tagging\") is a partial fix in that it only fixed the\nWB_SYNC_ALL phase livelock.\n\nAlthough ext4 is tested to no longer livelock with commit f446daaea9,\nit may due to some \"redirty_tail() after pages_skipped\" effect which\nis by no means a guarantee for _all_ the file systems.\n\nNote that writeback_inodes_sb() is called by not only sync(), they are\ntreated the same because the other callers also need livelock prevention.\n\nImpact:  It changes the order in which pages/inodes are synced to disk.\nNow in the WB_SYNC_NONE stage, it won\u0027t proceed to write the next inode\nuntil finished with the current inode.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCC: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "a9c667f8f0656631ee5438baaf21bf30d5f67375",
      "tree": "eb92465fcb50126802b66fb509ed51a1fe966ad5",
      "parents": [
        "c03f8aa9abdd517477c2021ea1251939b4da49e6"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jun 06 09:51:52 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 06 09:51:52 2011 -0400"
      },
      "message": "ext4: fixed tracepoints cleanup\n\nWhile creating fixed tracepoints for ext3, basically by porting them\nfrom ext4, I found a lot of useless retyping, wrong type usage, useless\nvariable passing and other inconsistencies in the ext4 fixed tracepoint\ncode.\n\nThis patch cleans the fixed tracepoint code for ext4 and also simplify\nsome of them.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ae24f28d39610a4810c78185cf599a771cf6ee1f",
      "tree": "a4969875b6345f6ee3eb8bdf3a0af823cab33e3f",
      "parents": [
        "556b27abf73833923d5cd4be80006292e1b31662"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed May 25 17:39:48 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 17:39:48 2011 -0400"
      },
      "message": "ext4: Convert ext4 to new truncate calling convention\n\n\nTrivial conversion.  Fixup one error handling case calling vmtruncate()\nand remove -\u003etruncate callback. We also fix a bug that IS_IMMUTABLE and\nIS_APPEND files could not be truncated during failed writes. In fact, the\ntest can be completely removed as upper layers do necessary permission\nchecks for truncate in do_sys_[f]truncate() and may_open() anyway.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4bb6b64e39abc0e41ca077725f2a72c868e7622",
      "tree": "0d911caa13d445d64cce5ea37f424bf066731ea6",
      "parents": [
        "e861304b8ed83fe43e36d46794d72641c82d4636"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:50 2011 -0400"
      },
      "message": "ext4: enable \"punch hole\" functionality\n\nThis patch adds new routines: \"ext4_punch_hole\" \"ext4_ext_punch_hole\"\nand \"ext4_ext_check_cache\"\n\nfallocate has been modified to call ext4_punch_hole when the punch hole\nflag is passed.  At the moment, we only support punching holes in\nextents, so this routine is pretty much a wrapper for the ext4_ext_punch_hole\nroutine.\n\nThe ext4_ext_punch_hole routine first completes all outstanding writes\nwith the associated pages, and then releases them.  The unblock\naligned data is zeroed, and all blocks in between are punched out.\n\nThe ext4_ext_check_cache routine is very similar to ext4_ext_in_cache\nexcept it accepts a ext4_ext_cache parameter instead of a ext4_extent\nparameter.  This routine is used by ext4_ext_punch_hole to check and\nsee if a block in a hole that has been cached.  The ext4_ext_cache\nparameter is necessary because the members ext4_extent structure are\nnot large enough to hold a 32 bit value.  The existing\next4_ext_in_cache routine has become a wrapper to this new function.\n\n[ext4 punch hole patch series 5/5 v7] \n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "308488518dfcbe3be250085cd582f5b0c1ce72a9",
      "tree": "4696b50debf9794f2cbb966cccbedadb93dc996a",
      "parents": [
        "55f020db66ce187fb8c8e4002a94b0eb714da450"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:32 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:32 2011 -0400"
      },
      "message": "ext4: add new function ext4_block_zero_page_range()\n\nThis patch modifies the existing ext4_block_truncate_page() function\nwhich was used by the truncate code path, and which zeroes out block\nunaligned data, by adding a new length parameter, and renames it to\next4_block_zero_page_rage().  This function can now be used to zero out the\nhead of a block, the tail of a block, or the middle\nof a block.\n\nThe ext4_block_truncate_page() function is now a wrapper to\next4_block_zero_page_range().\n\n[ext4 punch hole patch series 2/5 v7] \n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "55f020db66ce187fb8c8e4002a94b0eb714da450",
      "tree": "e98214511542f57fa93074be12e27c4819520333",
      "parents": [
        "ae81230686282af745ebb7a74c0332349cb9131a"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:26 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:26 2011 -0400"
      },
      "message": "ext4: add flag to ext4_has_free_blocks\n\nThis patch adds an allocation request flag to the ext4_has_free_blocks\nfunction which enables the use of reserved blocks.  This will allow a\npunch hole to proceed even if the disk is full.  Punching a hole may\nrequire additional blocks to first split the extents.\n\nBecause ext4_has_free_blocks is a low level function, the flag needs\nto be passed down through several functions listed below:\n\next4_ext_insert_extent\next4_ext_create_new_leaf\next4_ext_grow_indepth\next4_ext_split\next4_ext_new_meta_block\next4_mb_new_blocks\next4_claim_free_blocks\next4_has_free_blocks\n\n[ext4 punch hole patch series 1/5 v7]\n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "072bd7ea74d4b60149a33967d29666bbd84e7709",
      "tree": "1d09215dcc30192254e62b84a8515220413cfa40",
      "parents": [
        "28e35e42fb255cbaeee8b9f89643f26fe376374d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 23 15:13:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 23 15:13:02 2011 -0400"
      },
      "message": "ext4: use truncate_setsize() unconditionally\n\nIn commit c8d46e41 (ext4: Add flag to files with blocks intentionally\npast EOF), if the EOFBLOCKS_FL flag is set, we call ext4_truncate()\nbefore calling vmtruncate().  This caused any allocated but unwritten\nblocks created by calling fallocate() with the FALLOC_FL_KEEP_SIZE\nflag to be dropped.  This was done to make to make sure that\nEOFBLOCKS_FL would not be cleared while still leaving blocks past\ni_size allocated.  This was not necessary, since ext4_truncate()\nguarantees that blocks past i_size will be dropped, even in the case\nwhere truncate() has increased i_size before calling ext4_truncate().\n\nSo fix this by removing the EOFBLOCKS_FL special case treatment in\next4_setattr().  In addition, use truncate_setsize() followed by a\ncall to ext4_truncate() instead of using vmtruncate().  This is more\nefficient since it skips the call to inode_newsize_ok(), which has\nbeen checked already by inode_change_ok().  This is also in a win in\nthe case where EOFBLOCKS_FL is set since it avoids calling\next4_truncate() twice.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0e499890c1fd9e0a1bed02002161c4c7873d7489",
      "tree": "9d45cdd242f399837fd208c39e964ef022703e54",
      "parents": [
        "7cb1a5351da8ac499d965a78e94c79ad27891f43"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Wed May 18 13:55:20 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 18 13:55:20 2011 -0400"
      },
      "message": "ext4: wait for writeback to complete while making pages writable\n\nIn order to stabilize pages during disk writes, ext4_page_mkwrite must\nwait for writeback operations to complete before making a page\nwritable.  Furthermore, the function must return locked pages, and\nrecheck the writeback status if the page lock is ever dropped.  The\n\"someone could wander in\" part of this patch was suggested by Chris\nMason.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7cb1a5351da8ac499d965a78e94c79ad27891f43",
      "tree": "b78e2ff5d432f14e2840e8911654789b656b26db",
      "parents": [
        "ed3ce80a52c4658f48ef8fc825bdedf8b3fcaa89"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Wed May 18 13:53:20 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 18 13:53:20 2011 -0400"
      },
      "message": "ext4: clean up some wait_on_page_writeback calls\n\nwait_on_page_writeback already checks the writeback bit, so callers of it\nneedn\u0027t do that test.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "00d098822fe215a2f4fd32f244a9055b0b043bfe",
      "tree": "e111dd4a9eb65cfc862186315e89220b692ddf83",
      "parents": [
        "e8bbe8c401c61408ea226b33b824f231c8f9ccae"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon May 09 10:26:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 09 10:26:41 2011 -0400"
      },
      "message": "ext4: use s_inodes_per_block directly in __ext4_get_inode_loc\n\nIn __ext4_get_inode_loc, we calculate inodes_per_block every time by\nEXT4_BLOCK_SIZE(sb) / EXT4_INODE_SIZE(sb).  AFAICS, this function is a\nhot path for ext4, so we\u0027d better use s_inodes_per_block directly\ninstead of calculating every time.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a97b52022a73ec12e43f0b2c7d4bd1f40f89c81d",
      "tree": "1a35544915a5704fa59c63b43e9f46e20be1e296",
      "parents": [
        "18770c7c3a0ccd60017ac76b5d2e7d1f71376b94",
        "c8205636029fc869278c55b7336053b3e7ae3ef4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 2011 -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 data corruption regression by reverting commit 6de9843dab3f\n  ext4: Allow indirect-block file to grow the file size to max file size\n  ext4: allow an active handle to be started when freezing\n  ext4: sync the directory inode in ext4_sync_parent()\n  ext4: init timer earlier to avoid a kernel panic in __save_error_info\n  jbd2: fix potential memory leak on transaction commit\n  ext4: fix a double free in ext4_register_li_request\n  ext4: fix credits computing for indirect mapped files\n  ext4: remove unnecessary [cm]time update of quota file\n  jbd2: move bdget out of critical section\n"
    },
    {
      "commit": "c8205636029fc869278c55b7336053b3e7ae3ef4",
      "tree": "c22b4f2fab37d14d4b81ad5683110075afdc35ea",
      "parents": [
        "f80da1e70f1ffec3825aa0a1d0801f4896e002b6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:30:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:30:07 2011 -0400"
      },
      "message": "ext4: fix data corruption regression by reverting commit 6de9843dab3f\n\nRevert commit 6de9843dab3f2a1d4d66d80aa9e5782f80977d20, since it\ncaused a data corruption regression with BitTorrent downloads.  Thanks\nto Damien for discovering and bisecting to find the problem commit.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d32972\n\nReported-by: Damien Grassart \u003cdamien@grassart.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f80da1e70f1ffec3825aa0a1d0801f4896e002b6",
      "tree": "42976f4e0fc07da78ffce618b7e98b87d82a2bff",
      "parents": [
        "be4f27d324e8ddd57cc0d4d604fe85ee0425cba9"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Sun Apr 10 22:06:36 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:06:36 2011 -0400"
      },
      "message": "ext4: Allow indirect-block file to grow the file size to max file size\n\nWe can create 4402345721856 byte file with indirect block mapping.\nHowever, if we grow an indirect-block file to the size with ftruncate(),\nwe can see an ext4 warning. The following patch fixes this problem.\n\nHow to reproduce:\n# dd if\u003d/dev/zero of\u003d/mnt/mp1/hoge bs\u003d1 count\u003d0 seek\u003d4402345721856\n0+0 records in\n0+0 records out\n0 bytes (0 B) copied, 0.000221428 s, 0.0 kB/s\n# tail -n 1 /var/log/messages\nNov 25 15:10:27 test kernel: EXT4-fs warning (device sda8): ext4_block_to_path:345: block 1074791436 \u003e max in inode 12\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5b41395fcc0265fc9f193aef9df39ce49d64677c",
      "tree": "3e9ce0bc590399f78808fce8279d04c61301beb8",
      "parents": [
        "21f976975cbecbdaf23ceeacc1cab2b1c05a028e"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Apr 04 15:40:24 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 15:40:24 2011 -0400"
      },
      "message": "ext4: fix credits computing for indirect mapped files\n\nWhen writing a contiguous set of blocks, two indirect blocks could be\nneeded depending on how the blocks are aligned, so we need to increase\nthe number of credits needed by one.\n\n[ Also fixed a another bug which could further underestimate the\n  number of journal credits needed by 1; the code was using integer\n  division instead of DIV_ROUND_UP() -- tytso]\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "ae005cbed12d0b340b04b59d6f5c56e710b3895d",
      "tree": "d464865bcc97bea05eab4eba0d10bcad4ec89b93",
      "parents": [
        "3961cdf85b749f6bab50ad31ee97e9277e7a3b70",
        "0ba0851714beebb800992e5105a79dc3a4c504b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:41 2011 -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: (43 commits)\n  ext4: fix a BUG in mb_mark_used during trim.\n  ext4: unused variables cleanup in fs/ext4/extents.c\n  ext4: remove redundant set_buffer_mapped() in ext4_da_get_block_prep()\n  ext4: add more tracepoints and use dev_t in the trace buffer\n  ext4: don\u0027t kfree uninitialized s_group_info members\n  ext4: add missing space in printk\u0027s in __ext4_grp_locked_error()\n  ext4: add FITRIM to compat_ioctl.\n  ext4: handle errors in ext4_clear_blocks()\n  ext4: unify the ext4_handle_release_buffer() api\n  ext4: handle errors in ext4_rename\n  jbd2: add COW fields to struct jbd2_journal_handle\n  jbd2: add the b_cow_tid field to journal_head struct\n  ext4: Initialize fsync transaction ids in ext4_new_inode()\n  ext4: Use single thread to perform DIO unwritten convertion\n  ext4: optimize ext4_bio_write_page() when no extent conversion is needed\n  ext4: skip orphan cleanup if fs has unknown ROCOMPAT features\n  ext4: use the nblocks arg to ext4_truncate_restart_trans()\n  ext4: fix missing iput of root inode for some mount error paths\n  ext4: make FIEMAP and delayed allocation play well together\n  ext4: suppress verbose debugging information if malloc-debug is off\n  ...\n\nFi up conflicts in fs/ext4/super.c due to workqueue changes\n"
    },
    {
      "commit": "6de9843dab3f2a1d4d66d80aa9e5782f80977d20",
      "tree": "9c78e8d386e117cb890e9823b113dfdc290be580",
      "parents": [
        "0562e0bad483d10e9651fbb8f21dc3d0bad57374"
      ],
      "author": {
        "name": "Feng Tang",
        "email": "feng.tang@intel.com",
        "time": "Wed Mar 23 14:05:03 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 23 14:05:03 2011 -0400"
      },
      "message": "ext4: remove redundant set_buffer_mapped() in ext4_da_get_block_prep()\n\nThe map_bh() call will have already set the buffer_head to mapped.\n\nSigned-off-by: Feng Tang \u003cfeng.tang@intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0562e0bad483d10e9651fbb8f21dc3d0bad57374",
      "tree": "19f6597f92c028badcb6df360ccac22240378e25",
      "parents": [
        "4596fe07679ff0fae904515691ea747467614871"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Mon Mar 21 21:38:05 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 21 21:38:05 2011 -0400"
      },
      "message": "ext4: add more tracepoints and use dev_t in the trace buffer\n\n- Add more ext4 tracepoints.\n- Change ext4 tracepoints to use dev_t field with MAJOR/MINOR macros\nso that we can save 4 bytes in the ring buffer on some platforms.\n- Add sync_mode to ext4_da_writepages, ext4_da_write_pages, and\next4_da_writepages_result tracepoints. Also remove for_reclaim\nfield from ext4_da_writepages since it is usually not very useful.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d67d1218344009970ba0deb7eb15a3984518ddd0",
      "tree": "323e3fb76bdff2481fa35ce3aa82699434dae743",
      "parents": [
        "537a03103c67c4688b1e8e6671ad119aec5e2efb"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@gmail.com",
        "time": "Sun Mar 20 22:59:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 20 22:59:02 2011 -0400"
      },
      "message": "ext4: handle errors in ext4_clear_blocks()\n\nChecking return code from ext4_journal_get_write_access() is important\nwith snapshots, because this function invokes COW, so may return new\nerrors, such as ENOSPC.\n\next4_clear_blocks() now returns \u003c 0 for fatal errors, in which case,\next4_free_data() is aborted.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8e8eaabefee3ff645b9551ee32c6c54c7d80ad19",
      "tree": "101f4a24a8f57f798a74eb097c424b882f872bf8",
      "parents": [
        "32a9bb57d7c1fd04ae0f72b8f671501f000a0e9f"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@gmail.com",
        "time": "Sun Feb 27 23:32:12 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 27 23:32:12 2011 -0500"
      },
      "message": "ext4: use the nblocks arg to ext4_truncate_restart_trans()\n\nnblocks is passed into ext4_truncate_restart_trans() from\next4_ext_truncate_extend_restart() with a value different from the default\nblocks_for_truncate(), but is being ignored.\n\nThe two other calls to ext4_truncate_restart_trans() already pass the\ndefault value, which is then being recalculated inside the function.\n\nFix the problem by using the passed argument.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\n"
    },
    {
      "commit": "168fc0223c0e944957b1f31d88c2334fc904baf1",
      "tree": "1768f86cca5cef5ae1ba2275fca7ea9f0c0630d5",
      "parents": [
        "78aaced3408141bb7c836f2db0ca435790399da5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:09:20 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:09:20 2011 -0500"
      },
      "message": "ext4: move setup of the mpd structure to write_cache_pages_da()\n\nMove the initialization of all of the fields of the mpd structure to\nwrite_cache_pages_da().  This simplifies the code considerably.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "78aaced3408141bb7c836f2db0ca435790399da5",
      "tree": "c761d397605095d4d895ede9fc5e6a6548723cad",
      "parents": [
        "ee6ecbcc5d73672217fdea420d182ecb0cdf310c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:09:14 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:09:14 2011 -0500"
      },
      "message": "ext4: don\u0027t lock the next page in write_cache_pages if not needed\n\nIf we have accumulated a contiguous region of memory to be written\nout, and the next page can added to this region, don\u0027t bother locking\n(and then unlocking the page) before writing out the memory.  In the\nunlikely event that the next page was being written back by some other\nCPU, we can also skip waiting that page to finish writeback.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ee6ecbcc5d73672217fdea420d182ecb0cdf310c",
      "tree": "4d5b960a2feb20ce1b5866739b39c89dec1c49d8",
      "parents": [
        "9749895644a817cfd28a535bc3ae60e4267bdc50"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:08:11 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:08:11 2011 -0500"
      },
      "message": "ext4: remove page_skipped hackery in ext4_da_writepages()\n\nBecause the ext4 page writeback codepath had been prematurely calling\nclear_page_dirty_for_io(), if it turned out that a particular page\ncouldn\u0027t be written out during a particular pass of\nwrite_cache_pages_da(), the page would have to get redirtied by\ncalling redirty_pages_for_writeback().  Not only was this wasted work,\nbut redirty_page_for_writeback() would increment wbc-\u003epages_skipped to\nsignal to writeback_sb_inodes() that buffers were locked, and that it\nshould skip this inode until later.\n\nSince this signal was incorrect in ext4\u0027s case --- which was caused by\next4\u0027s historically incorrect use of write_cache_pages() ---\next4_da_writepages() saved and restored wbc-\u003eskipped_pages to avoid\nconfusing writeback_sb_inodes().\n\nNow that we\u0027ve fixed ext4 to call clear_page_dirty_for_io() right\nbefore initiating the page I/O, we can nuke the page_skipped\nsave/restore hackery, and breathe a sigh of relief.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "9749895644a817cfd28a535bc3ae60e4267bdc50",
      "tree": "a0958777287906320aba461690125d8786ceb565",
      "parents": [
        "4f01b02c8c4e4111bd1adbcafb5741e8e991f5fd"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:08:01 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:08:01 2011 -0500"
      },
      "message": "ext4: clear the dirty bit for a page in writeback at the last minute\n\nMove when we call clear_page_dirty_for_io() to just before we actually\nwrite the page.  This simplifies the code somewhat, and avoids marking\npages as clean and then needing to remark them as dirty later.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4f01b02c8c4e4111bd1adbcafb5741e8e991f5fd",
      "tree": "4b4793878e26779bf3bfe74028bd8b87de72609e",
      "parents": [
        "8eb9e5ce211de1b98bc84e93258b7db0860a103c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:07:37 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:07:37 2011 -0500"
      },
      "message": "ext4: simple cleanups to write_cache_pages_da()\n\nEliminate duplicate code, unneeded variables, etc., to make it easier\nto understand the code.  No behavioral changes were made in this patch.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8eb9e5ce211de1b98bc84e93258b7db0860a103c",
      "tree": "80c5cba007b3f4612524474f1ec1cdbc4a7b5181",
      "parents": [
        "6fd7a46781999c32f423025767e43b349b967d57"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:07:31 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 14:07:31 2011 -0500"
      },
      "message": "ext4: fold __mpage_da_writepage() into write_cache_pages_da()\n\nFold the __mpage_da_writepage() function into write_cache_pages_da().\nThis will give us opportunities to clean up and simplify the resulting\ncode.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c7f5938adce6727b9d17785f289c1146bd88d678",
      "tree": "000d17633b6b3b28dd644704afb501b366ad1bbb",
      "parents": [
        "e0fd9b90765f604374c42de8ac59d6584afce264"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sat Feb 26 12:27:52 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 12:27:52 2011 -0500"
      },
      "message": "ext4: fix ext4_da_block_invalidatepages() to handle page range properly\n\nIf ext4_da_block_invalidatepages() is called because of a\nfailure from ext4_map_blocks() in mpage_da_map_and_submit(),\nit\u0027s supposed to clean up -- including unlock -- all the\npages in the mpd structure.  But these values may not match\nup, even on a system in which block size \u003d\u003d page size:\n\n   mpd-\u003eb_blocknr !\u003d mpd-\u003efirst_page\n   mpd-\u003eb_size !\u003d (mpd-\u003enext_page - mpd-\u003efirst_page)\n\next4_da_block_invalidatepages() has been using b_blocknr and\nb_size; this patch changes it to use first_page and\nnext_page.\n\nTested:  I injected a small number (5%) of failures in\next4_map_blocks() in the case that the flags contain\nEXT4_GET_BLOCKS_DELALLOC_RESERVE, and ran fsstress on this\nkernel.  Without this patch, I got hung tasks every time.\nWith this patch, I see no hangs in many runs of fsstress.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e0fd9b90765f604374c42de8ac59d6584afce264",
      "tree": "04a44bed155b4d99e81d366145934d801036f5e8",
      "parents": [
        "5a54b2f199fdf19533f96c3e285b70c6729e1e4a"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sat Feb 26 12:25:52 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 12:25:52 2011 -0500"
      },
      "message": "ext4: mark multi-page IO complete on mapping failure\n\nIn mpage_da_map_and_submit(), if we have a delayed block\nallocation failure from ext4_map_blocks(), we need to mark\nthe IO as complete, by setting\n\n      mpd-\u003eio_done \u003d 1;\n\nOtherwise, we could end up submitting the pages in an outer\nloop; since they are unlocked on mapping failure in\next4_da_block_invalidatepages(), this will cause a bug check\nin mpage_da_submit_io().\n\nI tested this by injected failures into ext4_map_blocks().\nWithout this patch, a simple fsstress run will bug check;\nwith the patch, it works fine.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7dc576158d7e5cdff3349f78598fdb4080536342",
      "tree": "e7be15a8ee8add729915c81e9cb39cd55d6b572d",
      "parents": [
        "da488945f4bf4096f4ab6091938469bd8822cfec"
      ],
      "author": {
        "name": "Peter Huewe",
        "email": "peterhuewe@gmx.de",
        "time": "Mon Feb 21 21:01:42 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 21 21:01:42 2011 -0500"
      },
      "message": "ext4: Fix sparse warning: Using plain integer as NULL pointer\n\nThis patch fixes the warning \"Using plain integer as NULL pointer\",\ngenerated by sparse, by replacing the offending 0s with NULL.\n\nSigned-off-by: Peter Huewe \u003cpeterhuewe@gmx.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "6db26ffc917b609402619e03df5af8d1cd371ce7",
      "tree": "95d58dec4f8a69c57fd632ca61e362654bc351d0",
      "parents": [
        "f878133bf022717b880d0e0995b8f91436fd605c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Jan 12 16:59:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:05 2011 -0800"
      },
      "message": "fs/ext4/inode.c: use pr_warn_ratelimited()\n\npr_warning_ratelimited() doesn\u0027t exist.\n\nAlso include printk.h, which defines these things.\n\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c5b9e9065567876c2d4a7a16d78f0fed154a5bf",
      "tree": "67b74f12c7336a972de54d004455369eec38bc28",
      "parents": [
        "a5196f8cdfbf6ccb20f093aaf48852d6d23b4e0b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:51:28 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:51:28 2011 -0500"
      },
      "message": "ext4: fix memory leak in ext4_free_branches\n\nCommit 40389687 moved a call to ext4_forget() out of\next4_free_branches and let ext4_free_blocks() handle calling\nbforget().  But that change unfortunately did not replace the call to\next4_forget() with brelse(), which was needed to drop the in-use count\nof the indirect block\u0027s buffer head, which lead to a memory leak when\ndeleting files that used indirect blocks.  Fix this.\n\nThanks to Hugh Dickins for pointing this out.\n\nCc: stable@kernel.org\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "b40971426a837e9dc9c66e1b6bbcb3874eafe4e0"
}
