)]}'
{
  "log": [
    {
      "commit": "60e6679e28518ccd67169c4a539d8cc7490eb8a6",
      "tree": "65f39d1e9da3006df5bc5532d0c8a7ec365599f0",
      "parents": [
        "4d92dc0f00a775dc2e1267b0e00befb783902fe7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 17 07:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 17 07:00:00 2010 -0400"
      },
      "message": "ext4: Drop whitespace at end of lines\n\nThis patch was generated using:\n\n#!/usr/bin/perl -i\nwhile (\u003c\u003e) {\n    s/[ \t]+$//;\n    print;\n}\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0617b83fa239db9743a18ce6cc0e556f4d0fd567",
      "tree": "46d646c2d1af9d706848520a4657877d4cff768f",
      "parents": [
        "786ec7915e530936b9eb2e3d12274145cab7aa7d"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon May 17 01:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 17 01:00:00 2010 -0400"
      },
      "message": "ext4: restart ext4_ext_remove_space() after transaction restart\n\nIf i_data_sem was internally dropped due to transaction restart, it is\nnecessary to restart path look-up because extents tree was possibly\nmodified by ext4_get_block().\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d15827\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "786ec7915e530936b9eb2e3d12274145cab7aa7d",
      "tree": "bbdfd4189ef769196808698e68862d4a192595e6",
      "parents": [
        "f70f362b4a6fe47c239dbfb3efc0cc2c10e4f09c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 17 00:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 17 00:00:00 2010 -0400"
      },
      "message": "ext4: Clear the EXT4_EOFBLOCKS_FL flag only when warranted\n\nDimitry Monakhov discovered an edge case where it was possible for the\nEXT4_EOFBLOCKS_FL flag could get cleared unnecessarily.  This is true;\nI have a test case that can be exercised via downloading and\ndecompressing the file:\n\nwget ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/ext4-testcases/eofblocks-fl-test-case.img.bz2\nbunzip2 eofblocks-fl-test-case.img\ndd if\u003d/dev/zero of\u003deofblocks-fl-test-case.img bs\u003d1k seek\u003d17925 bs\u003d1k count\u003d1 conv\u003dnotrunc\n\nHowever, triggering it in real life is highly unlikely since it\nrequires an extremely fragmented sparse file with a hole in exactly\nthe right place in the extent tree.  (It actually took quite a bit of\nwork to generate this test case.)  Still, it\u0027s nice to get even\nextreme corner cases to be correct, so this patch makes sure that we\ndon\u0027t clear the EXT4_EOFBLOCKS_FL incorrectly even in this corner\ncase.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n\n"
    },
    {
      "commit": "f70f362b4a6fe47c239dbfb3efc0cc2c10e4f09c",
      "tree": "b9db08f3675d1cc0ed7d1af08418f5f5ba554ca6",
      "parents": [
        "12e9b892002d9af057655d35b44db8ee9243b0dc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 23:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 23:00:00 2010 -0400"
      },
      "message": "ext4: Avoid crashing on NULL ptr dereference on a filesystem error\n\nIf the EOFBLOCK_FL flag is set when it should not be and the inode is\nzero length, then eh_entries is zero, and ex is NULL, so dereferencing\nex to print ex-\u003eee_block causes a kernel OOPS in\next4_ext_map_blocks().\n\nOn top of that, the error message which is printed isn\u0027t very helpful.\nSo we fix this by printing something more explanatory which doesn\u0027t\ninvolve trying to print ex-\u003eee_block.\n\nAddresses-Google-Bug: #2655740\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12e9b892002d9af057655d35b44db8ee9243b0dc",
      "tree": "c5831b4bcf98eebdd39158d08dab97c198f5c683",
      "parents": [
        "24676da469f50f433baa347845639662c561d1f6"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sun May 16 22:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 22:00:00 2010 -0400"
      },
      "message": "ext4: Use bitops to read/modify i_flags in struct ext4_inode_info\n\nAt several places we modify EXT4_I(inode)-\u003ei_flags without holding\ni_mutex (ext4_do_update_inode, ...). These modifications are racy and\nwe can lose updates to i_flags. So convert handling of i_flags to use\nbitops which are atomic.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d15792\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "24676da469f50f433baa347845639662c561d1f6",
      "tree": "b4b8205f8b50376af286193d0dcbe76f2bc2d1e1",
      "parents": [
        "2ed886852adfcb070bf350e66a0da0d98b2f3ab5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 21:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 21:00:00 2010 -0400"
      },
      "message": "ext4: Convert calls of ext4_error() to EXT4_ERROR_INODE()\n\nEXT4_ERROR_INODE() tends to provide better error information and in a\nmore consistent format.  Some errors were not even identifying the inode\nor directory which was corrupted, which made them not very useful.\n\nAddresses-Google-Bug: #2507977\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2ed886852adfcb070bf350e66a0da0d98b2f3ab5",
      "tree": "bcec0a1004f413b70087e2c43097892f87f21cc3",
      "parents": [
        "e35fd6609b2fee54484d520deccb8f18bf7d38f3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 20:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 20:00:00 2010 -0400"
      },
      "message": "ext4: Convert callers of ext4_get_blocks() to use ext4_map_blocks()\n\nThis saves a huge amount of stack space by avoiding unnecesary struct\nbuffer_head\u0027s from being allocated on the stack.\n\nIn addition, to make the code easier to understand, collapse and\nrefactor ext4_get_block(), ext4_get_block_write(),\nnoalloc_get_block_write(), into a single function.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "e35fd6609b2fee54484d520deccb8f18bf7d38f3",
      "tree": "9b786445602819074f599c282b31bead166e8c03",
      "parents": [
        "8e48dcfbd7c0892b4cfd064d682cc4c95a29df32"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 19:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 19:00:00 2010 -0400"
      },
      "message": "ext4: Add new abstraction ext4_map_blocks() underneath ext4_get_blocks()\n\nJack up ext4_get_blocks() and add a new function, ext4_map_blocks()\nwhich uses a much smaller structure, struct ext4_map_blocks which is\n20 bytes, as opposed to a struct buffer_head, which nearly 5 times\nbigger on an x86_64 machine.  By switching things to use\next4_map_blocks(), we can save stack space by using ext4_map_blocks()\nsince we can avoid allocating a struct buffer_head on the stack.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6d19c42b7cf81c39632b6d4dbc514e8449bcd346",
      "tree": "f390fca28758e63c8be0530a2c8656ff27f5320b",
      "parents": [
        "fbe845ddf368f77f86aa7500f8fd2690f54c66a8"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Sun May 16 14:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 14:00:00 2010 -0400"
      },
      "message": "ext4: Prevent creation of files larger than RLIMIT_FSIZE using fallocate\n\nCurrently using posix_fallocate one can bypass an RLIMIT_FSIZE limit\nand create a file larger than the limit. Add a check for that.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Amit Arora \u003caarora@in.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "21ca087a3891efab4d45488db8febee474d26c68",
      "tree": "343af5d07c11d614835eac004be36382cec27dc0",
      "parents": [
        "c35a56a090eacefca07afeb994029b57d8dd8025"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sun May 16 06:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 06:00:00 2010 -0400"
      },
      "message": "ext4: Do not zero out uninitialized extents beyond i_size\n\nThe extents code will sometimes zero out blocks and mark them as\ninitialized instead of splitting an extent into several smaller ones.\nThis optimization however, causes problems if the extent is beyond\ni_size because fsck will complain if there are uninitialized blocks\nafter i_size as this can not be distinguished from an inode that has\nan incorrect i_size field.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d15742\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b720303df7352d4a7a1f61e467e0a124913c0d41",
      "tree": "d0c102111ed28ced2d3a0dbfed987f9b8ed5db37",
      "parents": [
        "c26d0bad3d0e951487e5dee36632dd3817f42b10"
      ],
      "author": {
        "name": "Jing Zhang",
        "email": "zj.barak@gmail.com",
        "time": "Wed May 12 00:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 12 00:00:00 2010 -0400"
      },
      "message": "ext4: fix memory leaks in error path handling of ext4_ext_zeroout()\n\nWhen EIO occurs after bio is submitted, there is no memory free\noperation for bio, which results in memory leakage. And there is also\nno check against bio_alloc() for bio.\n\nAcked-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: Jing Zhang \u003czj.barak@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fd2dd9fbaf9e498ec63eef298921e36556f7214c",
      "tree": "fddd099cf65844f2d7d3498e25f83ec4c55fac52",
      "parents": [
        "8b472d739b2ddd8ab7fb278874f696cd95b25a5e"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sat Apr 03 17:44:16 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 03 17:44:16 2010 -0400"
      },
      "message": "ext4: Fix buffer head leaks after calls to ext4_get_inode_loc()\n\nCalls to ext4_get_inode_loc() returns with a reference to a buffer\nhead in iloc-\u003ebh.  The callers of this function in ext4_write_inode()\nwhen in no journal mode and in ext4_xattr_fiemap() don\u0027t release the\nbuffer head after using it.\n\nAddresses-Google-Bug: #2548165\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "731eb1a03a8445cde2cb23ecfb3580c6fa7bb690",
      "tree": "9978388978604207cc78da1c81b97625857256cb",
      "parents": [
        "bda00de7e8569b1fcde27b68fa59e74e14c5f93a"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 03 23:55:01 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 03 23:55:01 2010 -0500"
      },
      "message": "ext4: consolidate in_range() definitions\n\nThere are duplicate macro definitions of in_range() in mballoc.h and\nballoc.c.  This consolidates these two definitions into ext4.h, and\nchanges extents.c to use in_range() as well.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\n"
    },
    {
      "commit": "5661bd6861b7490394e29aaf74dca812188272e4",
      "tree": "34d4e626b9c4abaf98e79fb705ba1e4a21f9e7f9",
      "parents": [
        "9b1d0998d24f9c207d5fbdd0b8bac07284e0eda7"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 03 23:53:39 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 03 23:53:39 2010 -0500"
      },
      "message": "ext4: cleanup to use ext4_group_first_block_no()\n\nThis is a cleanup and simplification patch which takes some open-coded\ncalculations to calculate the first block number of a group and\nconverts them to use the (already defined) ext4_group_first_block_no()\nfunction.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\n"
    },
    {
      "commit": "273df556b6ee2065bfe96edab5888d3dc9b108d8",
      "tree": "19c73685fce581e4ed85ff845e0b2fc485cedf9c",
      "parents": [
        "b7adc1f363e72e9131a582cc2cb00eaf83f51a39"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Tue Mar 02 11:46:09 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 02 11:46:09 2010 -0500"
      },
      "message": "ext4: Convert BUG_ON checks to use ext4_error() instead\n\nConvert a bunch of BUG_ONs to emit a ext4_error() message and return\nEIO.  This is a first pass and most notably does _not_ cover\nmballoc.c, which is a morass of void functions.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "744692dc059845b2a3022119871846e74d4f6e11",
      "tree": "ed246651aebcb8dae57de8c58dc20983064ee017",
      "parents": [
        "c7064ef13b2181a489836349f9baf87df0dab28f"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Thu Mar 04 16:14:02 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 04 16:14:02 2010 -0500"
      },
      "message": "ext4: use ext4_get_block_write in buffer write\n\nAllocate uninitialized extent before ext4 buffer write and\nconvert the extent to initialized after io completes.\nThe purpose is to make sure an extent can only be marked\ninitialized after it has been written with new data so\nwe can safely drop the i_mutex lock in ext4 DIO read without\nexposing stale data. This helps to improve multi-thread DIO\nread performance on high-speed disks.\n\nSkip the nobh and data\u003djournal mount cases to make things simple for now.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c7064ef13b2181a489836349f9baf87df0dab28f",
      "tree": "433d86d9ed4285e5c5e7f24fbbaa7f48fad09381",
      "parents": [
        "b8b8afe236e97b6359d46d3a3f8c46455e192271"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Tue Mar 02 13:28:44 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 02 13:28:44 2010 -0500"
      },
      "message": "ext4: mechanical rename some of the direct I/O get_block\u0027s identifiers\n\nThis commit renames some of the direct I/O\u0027s block allocation flags,\nvariables, and functions introduced in Mingming\u0027s \"Direct IO for holes\nand fallocate\" patches so that they can be used by ext4\u0027s buffered\nwrite path as well.  Also changed the related function comments\naccordingly to cover both direct write and buffered write cases.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c8d46e41bc744c8fa0092112af3942fcd46c8b18",
      "tree": "fd8bad55c3c9903b6c798b838396bc832bbf7f4b",
      "parents": [
        "73b50c1c92666d326b5fa2c945d46509f2f6d91f"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Wed Feb 24 09:52:53 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Feb 24 09:52:53 2010 -0500"
      },
      "message": "ext4: Add flag to files with blocks intentionally past EOF\n\nfallocate() may potentially instantiate blocks past EOF, depending\non the flags used when it is called.\n\ne2fsck currently has a test for blocks past i_size, and it\nsometimes trips up - noticeably on xfstests 013 which runs fsstress.\n\nThis patch from Jiayang does fix it up - it (along with\ne2fsprogs updates and other patches recently from Aneesh) has\nsurvived many fsstress runs in a row.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "aca92ff6f57c000d1b4523e383c8bd6b8269b8b1",
      "tree": "c810b72c091b8bf596a21ee4d56c830b9d0c4c50",
      "parents": [
        "9aaab0589baa61d637a52badddbff2d74f35a955"
      ],
      "author": {
        "name": "Leonard Michlmayr",
        "email": "leonard.michlmayr@gmail.com",
        "time": "Thu Mar 04 17:07:28 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 04 17:07:28 2010 -0500"
      },
      "message": "ext4: correctly calculate number of blocks for fiemap\n\next4_fiemap() rounds the length of the requested range down to\nblocksize, which is is not the true number of blocks that cover the\nrequested region.  This problem is especially impressive if the user\nrequests only the first byte of a file: not a single extent will be\nreported.\n\nWe fix this by calculating the last block of the region and then\nsubtract to find the number of blocks in the extents.\n\nSigned-off-by: Leonard Michlmayr \u003cleonard.michlmayr@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12062dddda450976b129dcb1bacd91acaf4d8030",
      "tree": "e64590b1147639cd3629f8a977b269410cd6bd13",
      "parents": [
        "f710b4b96ba292dfed2153afc47e9063b0abfd89"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Feb 15 14:19:27 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 15 14:19:27 2010 -0500"
      },
      "message": "ext4: move __func__ into a macro for ext4_warning, ext4_error\n\nJust a pet peeve of mine; we had a mishash of calls with either __func__\nor \"function_name\" and the latter tends to get out of sync.\n\nI think it\u0027s easier to just hide the __func__ in a macro, and it\u0027ll\nbe consistent from then on.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "19f5fb7ad679bb361222c7916086435020c37cce",
      "tree": "9e301163075c4faaf340cf50afd51855c76acd8c",
      "parents": [
        "d2eecb03936878ec574ade5532fa83df7d75dde7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jan 24 14:34:07 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jan 24 14:34:07 2010 -0500"
      },
      "message": "ext4: Use bitops to read/modify EXT4_I(inode)-\u003ei_state\n\nAt several places we modify EXT4_I(inode)-\u003ei_state without holding\ni_mutex (ext4_release_file, ext4_bmap, ext4_journalled_writepage,\next4_do_update_inode, ...). These modifications are racy and we can\nlose updates to i_state. So convert handling of i_state to use bitops\nwhich are atomic.\n\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a1de02dccf906faba2ee2d99cac56799bda3b96a",
      "tree": "9871a11252e9a7d39882206c2057ec3080517365",
      "parents": [
        "724e6d3fe8003c3f60bf404bf22e4e331327c596"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Feb 04 23:58:38 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 04 23:58:38 2010 -0500"
      },
      "message": "ext4: fix async i/o writes beyond 4GB to a sparse file\n\nThe \"offset\" member in ext4_io_end holds bytes, not blocks, so\next4_lblk_t is wrong - and too small (u32).\n\nThis caused the async i/o writes to sparse files beyond 4GB to fail\nwhen they wrapped around to 0.\n\nAlso fix up the type of arguments to ext4_convert_unwritten_extents(),\nit gets ssize_t from ext4_end_aio_dio_nolock() and\next4_ext_direct_IO().\n\nReported-by: Giel de Nijs \u003cgiel@vectorwise.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "1296cc85c26e94eb865d03f82140f27d598de467",
      "tree": "b8a2bc06ecd992a86179ebcd9c087994c676c291",
      "parents": [
        "5f634d064c709ea02c3cdaa850a08323a4a4bf28"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jan 15 01:27:59 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 15 01:27:59 2010 -0500"
      },
      "message": "ext4: Drop EXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE flag\n\nWe should update reserve space if it is delalloc buffer\nand that is indicated by EXT4_GET_BLOCKS_DELALLOC_RESERVE flag.\nSo use EXT4_GET_BLOCKS_DELALLOC_RESERVE in place of\nEXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5f634d064c709ea02c3cdaa850a08323a4a4bf28",
      "tree": "3f81e9c56cd8348b7bb94f1d54efff696374c929",
      "parents": [
        "1db913823c0f8360fccbd24ca67eb073966a5ffd"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 25 04:00:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 25 04:00:31 2010 -0500"
      },
      "message": "ext4: Fix quota accounting error with fallocate\n\nWhen we fallocate a region of the file which we had recently written,\nand which is still in the page cache marked as delayed allocated blocks\nwe need to make sure we don\u0027t do the quota update on writepage path.\nThis is because the needed quota updated would have already be done\nby fallocate.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9d0be50230b333005635967f7ecd4897dbfd181b",
      "tree": "59aefe29e33284e1d904b23eaf2cc98994431374",
      "parents": [
        "ee5f4d9cdf32fd99172d11665c592a288c2b1ff4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:41:30 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 01 02:41:30 2010 -0500"
      },
      "message": "ext4: Calculate metadata requirements more accurately\n\nIn the past, ext4_calc_metadata_amount(), and its sub-functions\next4_ext_calc_metadata_amount() and ext4_indirect_calc_metadata_amount()\nbadly over-estimated the number of metadata blocks that might be\nrequired for delayed allocation blocks.  This didn\u0027t matter as much\nwhen functions which managed the reserved metadata blocks were more\naggressive about dropping reserved metadata blocks as delayed\nallocation blocks were written, but unfortunately they were too\naggressive.  This was fixed in commit 0637c6f, but as a result the\nover-estimation by ext4_calc_metadata_amount() would lead to reserving\n2-3 times the number of pending delayed allocation blocks as\npotentially required metadata blocks.  So if there are 1 megabytes of\nblocks which have been not yet been allocation, up to 3 megabytes of\nspace would get reserved out of the user\u0027s quota and from the file\nsystem free space pool until all of the inode\u0027s data blocks have been\nallocated.\n\nThis commit addresses this problem by much more accurately estimating\nthe number of metadata blocks that will be required.  It will still\nsomewhat over-estimate the number of blocks needed, since it must make\na worst case estimate not knowing which physical blocks will be\nneeded, but it is much more accurate than before.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "515f41c33a9d44a964264c9511ad2c869af1fac3",
      "tree": "bd1790a9787ec171168a87268d3218122e087f2e",
      "parents": [
        "2faf2e19dd0e060eeb32442858ef495ac3083277"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Dec 29 23:39:06 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 29 23:39:06 2009 -0500"
      },
      "message": "ext4: Ensure zeroout blocks have no dirty metadata\n\nThis fixes a bug (found by Curt Wohlgemuth) in which new blocks\nreturned from an extent created with ext4_ext_zeroout() can have dirty\nmetadata still associated with them.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "034fb4c95fc0fed4ec4a50778127b92c6f2aec01",
      "tree": "663bf0c4d0123f6aeeda8fd7124a5921433101ba",
      "parents": [
        "51b7e3c9fbe7d22d4e355101e9a73b44fc5c9feb"
      ],
      "author": {
        "name": "Surbhi Palande",
        "email": "surbhi.palande@canonical.com",
        "time": "Mon Dec 14 09:53:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 14 09:53:52 2009 -0500"
      },
      "message": "ext4: replace BUG() with return -EIO in ext4_ext_get_blocks\n\nThis patch fixes the Kernel BZ #14286.  When the address of an extent\ncorresponding to a valid block is corrupted, a -EIO should be reported\ninstead of a BUG().  This situation should not normally not occur\nexcept in the case of a corrupted filesystem.  If however it does,\nthen the system should not panic directly but depending on the mount\ntime options appropriate action should be taken. If the mount options\nso permit, the I/O should be gracefully aborted by returning a -EIO.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14286\n\nSigned-off-by: Surbhi Palande \u003csurbhi.palande@canonical.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fab3a549e204172236779f502eccb4f9bf0dc87d",
      "tree": "5d478a2a583459832b9c5999ccd07b3b6a5569a7",
      "parents": [
        "a214238d3bb03723f820b0a398928d8e1637c987"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:30:02 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 09 21:30:02 2009 -0500"
      },
      "message": "ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)\n\nFix the following potential circular locking dependency between\nmm-\u003emmap_sem and ei-\u003ei_data_sem:\n\n    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    [ INFO: possible circular locking dependency detected ]\n    2.6.32-04115-gec044c5 #37\n    -------------------------------------------------------\n    ureadahead/1855 is trying to acquire lock:\n     (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cffffffff81107224\u003e] might_fault+0x5c/0xac\n\n    but task is already holding lock:\n     (\u0026ei-\u003ei_data_sem){++++..}, at: [\u003cffffffff811be1fd\u003e] ext4_fiemap+0x11b/0x159\n\n    which lock already depends on the new lock.\n\n    the existing dependency chain (in reverse order) is:\n\n    -\u003e #1 (\u0026ei-\u003ei_data_sem){++++..}:\n           [\u003cffffffff81099bfa\u003e] __lock_acquire+0xb67/0xd0f\n           [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n           [\u003cffffffff81516633\u003e] down_read+0x51/0x84\n           [\u003cffffffff811a2414\u003e] ext4_get_blocks+0x50/0x2a5\n           [\u003cffffffff811a3453\u003e] ext4_get_block+0xab/0xef\n           [\u003cffffffff81154f39\u003e] do_mpage_readpage+0x198/0x48d\n           [\u003cffffffff81155360\u003e] mpage_readpages+0xd0/0x114\n           [\u003cffffffff811a104b\u003e] ext4_readpages+0x1d/0x1f\n           [\u003cffffffff810f8644\u003e] __do_page_cache_readahead+0x12f/0x1bc\n           [\u003cffffffff810f86f2\u003e] ra_submit+0x21/0x25\n           [\u003cffffffff810f0cfd\u003e] filemap_fault+0x19f/0x32c\n           [\u003cffffffff81107b97\u003e] __do_fault+0x55/0x3a2\n           [\u003cffffffff81109db0\u003e] handle_mm_fault+0x327/0x734\n           [\u003cffffffff8151aaa9\u003e] do_page_fault+0x292/0x2aa\n           [\u003cffffffff81518205\u003e] page_fault+0x25/0x30\n           [\u003cffffffff812a34d8\u003e] clear_user+0x38/0x3c\n           [\u003cffffffff81167e16\u003e] padzero+0x20/0x31\n           [\u003cffffffff81168b47\u003e] load_elf_binary+0x8bc/0x17ed\n           [\u003cffffffff81130e95\u003e] search_binary_handler+0xc2/0x259\n           [\u003cffffffff81166d64\u003e] load_script+0x1b8/0x1cc\n           [\u003cffffffff81130e95\u003e] search_binary_handler+0xc2/0x259\n           [\u003cffffffff8113255f\u003e] do_execve+0x1ce/0x2cf\n           [\u003cffffffff81027494\u003e] sys_execve+0x43/0x5a\n           [\u003cffffffff8102918a\u003e] stub_execve+0x6a/0xc0\n\n    -\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n           [\u003cffffffff81099aa4\u003e] __lock_acquire+0xa11/0xd0f\n           [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n           [\u003cffffffff81107251\u003e] might_fault+0x89/0xac\n           [\u003cffffffff81139382\u003e] fiemap_fill_next_extent+0x95/0xda\n           [\u003cffffffff811bcb43\u003e] ext4_ext_fiemap_cb+0x138/0x157\n           [\u003cffffffff811be069\u003e] ext4_ext_walk_space+0x178/0x1f1\n           [\u003cffffffff811be21e\u003e] ext4_fiemap+0x13c/0x159\n           [\u003cffffffff811390e6\u003e] do_vfs_ioctl+0x348/0x4d6\n           [\u003cffffffff811392ca\u003e] sys_ioctl+0x56/0x79\n           [\u003cffffffff81028cb2\u003e] system_call_fastpath+0x16/0x1b\n\n    other info that might help us debug this:\n\n    1 lock held by ureadahead/1855:\n     #0:  (\u0026ei-\u003ei_data_sem){++++..}, at: [\u003cffffffff811be1fd\u003e] ext4_fiemap+0x11b/0x159\n\n    stack backtrace:\n    Pid: 1855, comm: ureadahead Not tainted 2.6.32-04115-gec044c5 #37\n    Call Trace:\n     [\u003cffffffff81098c70\u003e] print_circular_bug+0xa8/0xb7\n     [\u003cffffffff81099aa4\u003e] __lock_acquire+0xa11/0xd0f\n     [\u003cffffffff8102f229\u003e] ? sched_clock+0x9/0xd\n     [\u003cffffffff81099e7e\u003e] lock_acquire+0xdc/0x102\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff81107251\u003e] might_fault+0x89/0xac\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff81124b44\u003e] ? __kmalloc+0x13b/0x18c\n     [\u003cffffffff81139382\u003e] fiemap_fill_next_extent+0x95/0xda\n     [\u003cffffffff811bcb43\u003e] ext4_ext_fiemap_cb+0x138/0x157\n     [\u003cffffffff811bca0b\u003e] ? ext4_ext_fiemap_cb+0x0/0x157\n     [\u003cffffffff811be069\u003e] ext4_ext_walk_space+0x178/0x1f1\n     [\u003cffffffff811be21e\u003e] ext4_fiemap+0x13c/0x159\n     [\u003cffffffff81107224\u003e] ? might_fault+0x5c/0xac\n     [\u003cffffffff811390e6\u003e] do_vfs_ioctl+0x348/0x4d6\n     [\u003cffffffff8129f6d0\u003e] ? __up_read+0x8d/0x95\n     [\u003cffffffff81517fb5\u003e] ? retint_swapgs+0x13/0x1b\n     [\u003cffffffff811392ca\u003e] sys_ioctl+0x56/0x79\n     [\u003cffffffff81028cb2\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b436b9bef84de6893e86346d8fbf7104bc520645",
      "tree": "50fb9ae167bcd622e9adf47646bcf3b4c7dd111d",
      "parents": [
        "194074acacebc169ded90a4657193f5180015051"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Dec 08 23:51:10 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 23:51:10 2009 -0500"
      },
      "message": "ext4: Wait for proper transaction commit on fsync\n\nWe cannot rely on buffer dirty bits during fsync because pdflush can come\nbefore fsync is called and clear dirty bits without forcing a transaction\ncommit. What we do is that we track which transaction has last changed\nthe inode and which transaction last changed allocation and force it to\ndisk on fsync.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5aca07eb7d8f14d90c740834d15ca15277f4820c",
      "tree": "362ab7bb56cf0920ee27bbaf97e2657c022eb4b4",
      "parents": [
        "8aa6790f876e81f5a2211fe1711a5fe3fe2d7b20"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Dec 08 22:42:15 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 08 22:42:15 2009 -0500"
      },
      "message": "ext4: quota macros cleanup\n\nCurrently all quota block reservation macros contains hard-coded \"2\"\naka MAXQUOTAS value. This is no good because in some places it is not\nobvious to understand what does this digit represent. Let\u0027s introduce\nnew macro with self descriptive name.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6362609b6c71c5b802026be9cf263bbdd67a50e",
      "tree": "be908b6b0566f70d31378bf11b548a0d59ae0218",
      "parents": [
        "4433871130f36585fde38e7dd817433296648945"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:05 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:05 2009 -0500"
      },
      "message": "ext4: call ext4_forget() from ext4_free_blocks()\n\nAdd the facility for ext4_forget() to be called from\next4_free_blocks().  This simplifies the code in a large number of\nplaces, and centralizes most of the work of calling ext4_forget() into\na single place.\n\nAlso fix a bug in the extents migration code; it wasn\u0027t calling\next4_forget() when releasing the indirect blocks during the\nconversion.  As a result, if the system cashed during or shortly after\nthe extents migration, and the released indirect blocks get reused as\ndata blocks, the journal replay would corrupt the data blocks.  With\nthis new patch, fixing this bug was as simple as adding the\nEXT4_FREE_BLOCKS_FORGET flags to the call to ext4_free_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "50689696867d95b38d9c7be640a311494a04fb86",
      "tree": "69e582bb6c95d8d0ac59bcad97b5f7f1d79e7126",
      "parents": [
        "beac2da7565e42be59963824899825d0cc624295"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 23 07:17:34 2009 -0500"
      },
      "message": "ext4: make sure directory and symlink blocks are revoked\n\nWhen an inode gets unlinked, the functions ext4_clear_blocks() and\next4_remove_blocks() call ext4_forget() for all the buffer heads\ncorresponding to the deleted inode\u0027s data blocks.  If the inode is a\ndirectory or a symlink, the is_metadata parameter must be non-zero so\next4_forget() will revoke them via jbd2_journal_revoke().  Otherwise,\nif these blocks are reused for a data file, and the system crashes\nbefore a journal checkpoint, the journal replay could end up\ncorrupting these data blocks.\n\nThanks to Curt Wohlgemuth for pointing out potential problems in this\narea.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ba230c3f6dc88ec008806adb27b12088486d508e",
      "tree": "4cd81bc7425161f1103408ce210be9172a2ee6c3",
      "parents": [
        "4b70df181611012a3556f017b57dfcef7e1d279f"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Fri Nov 06 04:01:23 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 06 04:01:23 2009 -0500"
      },
      "message": "ext4: Fix return value of ext4_split_unwritten_extents() to fix direct I/O\n\nTo prepare for a direct I/O write, we need to split the unwritten\nextents before submitting the I/O.  When no extents needed to be\nsplit, ext4_split_unwritten_extents() was incorrectly returning 0\ninstead of the size of uninitialized extents. This bug caused the\nwrong return value sent back to VFS code when it gets called from\nasync IO path, leading to an unnecessary fall back to buffered IO.\n\nThis bug also hid the fact that the check to see whether or not a\nsplit would be necessary was incorrect; we can only skip splitting the\nextent if the write completely covers the uninitialized extent.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5f5249507e4b5c4fc0f9c93f33d133d8c95f47e1",
      "tree": "0b0a790f568c07298c3a4122572e84392c787648",
      "parents": [
        "109f55651954def97fa41ee71c464d268c512ab0"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:04 2009 -0500"
      },
      "message": "ext4: skip conversion of uninit extents after direct IO if there isn\u0027t any\n\nAt the end of direct I/O operation, ext4_ext_direct_IO() always called\next4_convert_unwritten_extents(), regardless of whether there were any\nunwritten extents involved in the I/O or not.\n\nThis commit adds a state flag so that ext4_ext_direct_IO() only calls\next4_convert_unwritten_extents() when necessary.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "109f55651954def97fa41ee71c464d268c512ab0",
      "tree": "7c4aa2d8cb10c100bbd252e657ac410d30844bac",
      "parents": [
        "fa5d11133b07053270e18fa9c18560e66e79217e"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 10 10:48:08 2009 -0500"
      },
      "message": "ext4: fix ext4_ext_direct_IO()\u0027s return value after converting uninit extents\n\nAfter a direct I/O request covering an uninitalized extent (i.e.,\ncreated using the fallocate system call) or a hole in a file, ext4\nwill convert the uninitialized extent so it is marked as initialized\nby calling ext4_convert_unwritten_extents().  This function returns\nzero on success.\n\nThis return value was getting returned by ext4_direct_IO(); however\nthe file system\u0027s direct_IO function is supposed to return the number\nof bytes read or written on a success.  By returning zero, it confused\nthe direct I/O code into falling back to buffered I/O unnecessarily.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "90576c0b9a0b5323fc4bd7f23f49be0d234f36d1",
      "tree": "d4a1ab6f923f1c9c7c87f13a828db72c1f4412c1",
      "parents": [
        "d3d1faf6a74496ea4435fd057c6a2cad49f3e523"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 15:51:30 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 29 15:51:30 2009 -0400"
      },
      "message": "ext4, jbd2: Drop unneeded printks at mount and unmount time\n\nThere are a number of kernel printk\u0027s which are printed when an ext4\nfilesystem is mounted and unmounted.  Disable them to economize space\nin the system logs.  In addition, disabling the mballoc stats by\ndefault saves a number of unneeded atomic operations for every block\nallocation or deallocation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8d5d02e6b176565c77ff03604908b1453a22044d",
      "tree": "0d29e4f28233f24960c7921c1c0a7608077bf713",
      "parents": [
        "4c0425ff68b1b87b802ffeda7b6a46ff7da7241c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:48:29 2009 -0400"
      },
      "message": "ext4: async direct IO for holes and fallocate support\n\nFor async direct IO that covers holes or fallocate, the end_io\ncallback function now queued the convertion work on workqueue but\ndon\u0027t flush the work rightaway as it might take too long to afford.\n\nBut when fsync is called after all the data is completed, user expects\nthe metadata also being updated before fsync returns.\n\nThus we need to flush the conversion work when fsync() is called.\nThis patch keep track of a listed of completed async direct io that\nhas a work queued on workqueue.  When fsync() is called, it will go\nthrough the list and do the conversion.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "0031462b5b392f90d17f1d75abb795883c44e969",
      "tree": "e8323861b8dede0f3ddbfc8324d650bf1f4fd74b",
      "parents": [
        "9f0ccfd8e07d61b413e6536ffa02fbf60d2e20d8"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 28 15:49:08 2009 -0400"
      },
      "message": "ext4: Split uninitialized extents for direct I/O\n\nWhen writing into an unitialized extent via direct I/O, and the direct\nI/O doesn\u0027t exactly cover the unitialized extent, split the extent\ninto uninitialized and initialized extents before submitting the I/O.\nThis avoids needing to deal with an ENOSPC error in the end_io\ncallback that gets used for direct I/O.\n\nWhen the IO is complete, the written extent will be marked as initialized.\n\nSinged-Off-By: Mingming Cao \u003ccmm@us.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "55ad63bf3a30936aced50f13452735c2f58b234c",
      "tree": "13733cfa690c83a0a75d8d38489e3cace096f9f9",
      "parents": [
        "a36b44988cef1fc007535107013571fa691a2d7f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 28 10:40:33 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 28 10:40:33 2009 -0400"
      },
      "message": "ext4: fix extent sanity checking code with AGGRESSIVE_TEST\n\nThe extents sanity-checking code depends on the ext4_ext_space_*()\nfunctions returning the maximum alloable size for eh_max; however,\nwhen the debugging #ifdef AGGRESSIVE_TEST is enabled to test the\nextent tree handling code, this prevents a normally created ext4\nfilesystem from being mounted with the errors:\n\nAug 26 15:43:50 bsd086 kernel: [   96.070277] EXT4-fs error (device sda8): ext4_ext_check_inode: bad header/extent in inode #8: too large eh_max - magic f30a, entries 1, max 4(3), depth 0(0)\nAug 26 15:43:50 bsd086 kernel: [   96.070526] EXT4-fs (sda8): no journal found\n\nBug reported by Akira Fujita.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "487caeef9fc08c0565e082c40a8aaf58dad92bbb",
      "tree": "69920293cfe3a50bdbbf845be785350e7c203a2b",
      "parents": [
        "9599b0e597d810be9b8f759ea6e9619c4f983c5e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 22:17:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 17 22:17:20 2009 -0400"
      },
      "message": "ext4: Fix possible deadlock between ext4_truncate() and ext4_get_blocks()\n\nDuring truncate we are sometimes forced to start a new transaction as\nthe amount of blocks to be journaled is both quite large and hard to\npredict. So far we restarted a transaction while holding i_data_sem\nand that violates lock ordering because i_data_sem ranks below a\ntransaction start (and it can lead to a real deadlock with\next4_get_blocks() mapping blocks in some page while having a\ntransaction open).\n\nWe fix the problem by dropping the i_data_sem before restarting the\ntransaction and acquire it afterwards. It\u0027s slightly subtle that this\nworks:\n\n1) By the time ext4_truncate() is called, all the page cache for the\ntruncated part of the file is dropped so get_block() should not be\ncalled on it (we only have to invalidate extent cache after we\nreacquire i_data_sem because some extent from not-truncated part could\nextend also into the part we are going to truncate).\n\n2) Writes, migrate or defrag hold i_mutex so they are stopped for all\nthe time of the truncate.\n\nThis bug has been found and analyzed by Theodore Tso \u003ctytso@mit.edu\u003e.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "553f9008939638335836eec834f4dea310c17eae",
      "tree": "1d1ea9defa550d522b68bb12dab7f0e139aa205a",
      "parents": [
        "84fe3bef59dc45a1cb0d2f9b0aefa8f1fbfbdf98"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Fri Sep 18 13:34:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 18 13:34:55 2009 -0400"
      },
      "message": "ext4: Show unwritten extent flag in ext4_ext_show_leaf()\n\next4_ext_show_leaf() will display the leaf extents when extent\ndebugging is enabled.\n\nPrinting out the unwritten bit is useful for debugging unwritten\nextent, allow us to see the unwritten extents vs written extents,\nafter the unwritten extents are splitted or converted.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n\n"
    },
    {
      "commit": "84fe3bef59dc45a1cb0d2f9b0aefa8f1fbfbdf98",
      "tree": "2e6821186ace260d61d32774c5976e233e660a88",
      "parents": [
        "50797481a7bdee548589506d7d7b48b08bc14dcd"
      ],
      "author": {
        "name": "Mingming",
        "email": "cmm@us.ibm.com",
        "time": "Tue Sep 01 08:44:37 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 01 08:44:37 2009 -0400"
      },
      "message": "ext4: Compile warning fix when EXT_DEBUG enabled\n\nWhen EXT_DEBUG is enabled I received the following compile warning on\nPPC64:\n\n  CC [M]  fs/ext4/inode.o\n  CC [M]  fs/ext4/extents.o\nfs/ext4/extents.c: In function ‘ext4_ext_rm_leaf’:\nfs/ext4/extents.c:2097: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 2 has type ‘ext4_lblk_t’\nfs/ext4/extents.c: In function ‘ext4_ext_get_blocks’:\nfs/ext4/extents.c:2789: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘long unsigned int’\nfs/ext4/extents.c:2852: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 3 has type ‘ext4_lblk_t’\nfs/ext4/extents.c:2953: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 4 has type ‘unsigned int’\n  CC [M]  fs/ext4/migrate.o\n\nThe patch fixes compile warning.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\nIndex: linux-2.6.31-rc4/fs/ext4/extents.c\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n"
    },
    {
      "commit": "5887e98b609e96ce61ee0528cf94a2bfdc809dd7",
      "tree": "41cc58790c649da6d4e1d0afa440bda994420ddd",
      "parents": [
        "ffacfa7a79d6c00624196b2d13b0a7f72f2b8227"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jul 05 23:12:04 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 23:12:04 2009 -0400"
      },
      "message": "ext4: Calculate required journal credits for inserting an extent properly\n\nWhen we have space in the extent tree leaf node we should be able to\ninsert the extent with much less journal credits. The code was doing\nproper calculation but missed a return statement.\n\nReported-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "748de6736c1e482e111f9d1b5a5d5b1787600cad",
      "tree": "9e5bd6085cd0eea0453c2a8bbce1422f291f059f",
      "parents": [
        "8b0f9e8f78bd0a65fa001bf18f2c47eef2893a10"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "message": "ext4: online defrag -- Add EXT4_IOC_MOVE_EXT ioctl\n\nThe EXT4_IOC_MOVE_EXT exchanges the blocks between orig_fd and donor_fd,\nand then write the file data of orig_fd to donor_fd.\next4_mext_move_extent() is the main fucntion of ext4 online defrag,\nand this patch includes all functions related to ext4 online defrag.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a41f20716975910d9beb90b7efc61107901492b8",
      "tree": "99d3987296660884b998be4d2308d38ca84670a6",
      "parents": [
        "0eab928221bac8895a0b494a16a8810002bd8645"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Jun 10 14:22:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 10 14:22:55 2009 -0400"
      },
      "message": "ext4: Avoid corrupting the uninitialized bit in the extent during truncate\n\nThe unitialized bit was not properly getting preserved in in an extent\nwhich is partially truncated because the it was geting set to the\nvalue of the first extent to be removed or truncated as part of the\ntruncate operation, and if there are multiple extents are getting\nremoved or modified as part of the truncate operation, it is only the\nlast extent which will might be partially truncated, and its\nuninitalized bit is not necessarily the same as the first extent to be\ntruncated.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "03f5d8bcf094a5e3b501bd2ae1553656efa8d1be",
      "tree": "04644e9008e7357fd87f14fee6404b7c306bc3e9",
      "parents": [
        "0b8e58a140cae2ba1c4a21ccae7c6c3c939c51f9"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "message": "ext4: Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle()\n\nGet rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle(). This\nseems to be a relict from some old days and setting disksize in this\nfunction does not make much sense.  Currently it was set only by\next4_getblk().  Since the parameter has some effect only if create \u003d\u003d\n1, it is easy to check by grepping through the sources that the three\ncallers which end up calling ext4_getblk() with create \u003d\u003d 1\n(ext4_append, ext4_quota_write, ext4_mkdir) do the right thing and set\ndisksize themselves.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0568c518937ee3a9b6a94d18bae9c150fe5d6832",
      "tree": "b6392f24142e9199a7a0b34e29ac2f6c82a221d7",
      "parents": [
        "6fd058f7791087648c683eb8572edf3be3c4c23c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 23:31:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 23:31:23 2009 -0400"
      },
      "message": "ext4: down i_data_sem only for read when walking tree for fiemap\n\nNot sure why I put this in as down_write originally; all we are\ndoing is walking the tree, nothing will change under us and\nconcurrent reads should be no problem.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6fd058f7791087648c683eb8572edf3be3c4c23c",
      "tree": "0d80791532d2d022c91f20013003716eaf0afb40",
      "parents": [
        "2ac3b6e00acb46406c993d57921f86a594aafe08"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "message": "ext4: Add a comprehensive block validity check to ext4_get_blocks()\n\nTo catch filesystem bugs or corruption which could lead to the\nfilesystem getting severly damaged, this patch adds a facility for\ntracking all of the filesystem metadata blocks by contiguous regions\nin a red-black tree.  This allows quick searching of the tree to\nlocate extents which might overlap with filesystem metadata blocks.\n\nThis facility is also used by the multi-block allocator to assure that\nit is not allocating blocks out of the system zone, as well as by the\nroutines used when reading indirect blocks and extents information\nfrom disk to make sure their contents are valid.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c21770573319922e3f3fcb331cfaa290c49f1c81",
      "tree": "ee21ebb2d73d4d3b19d7e391e7accf00704371d9",
      "parents": [
        "12b7ac176831df1aa58a787e67c3e5d698b30163"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "message": "ext4: Define a new set of flags for ext4_get_blocks()\n\nThe functions ext4_get_blocks(), ext4_ext_get_blocks(), and\next4_ind_get_blocks() used an ad-hoc set of integer variables used as\nboolean flags passed in as arguments.  Use a single flags parameter\nand a setandard set of bitfield flags instead.  This saves space on\nthe call stack, and it also makes the code a bit more understandable.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12b7ac176831df1aa58a787e67c3e5d698b30163",
      "tree": "d8d3ab93fd28d5b84efff0b5c247da74c84788e0",
      "parents": [
        "e4d996ca806e93dddb5d76c0d3d859b494c559f6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "message": "ext4: Rename ext4_get_blocks_wrap() to be ext4_get_blocks()\n\nAnother function rename for clarity\u0027s sake.  The _wrap prefix simply\nconfuses people, and didn\u0027t add much people trying to follow the code\npaths.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "eefd7f03b86b8a319890e7fac5a6fcc7f8694b76",
      "tree": "d8dd02626d522926b828042f87c0850d42f86d2e",
      "parents": [
        "c9877b205f6ce7943bb95281342f4001cc1c00ec"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 19:05:37 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 19:05:37 2009 -0400"
      },
      "message": "ext4: fix the length returned by fiemap for an unallocated extent\n\nIf the file\u0027s blocks have not yet been allocated because of delayed\nallocation, the length of the extent returned by fiemap is incorrect.\nThis commit fixes this bug.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c9877b205f6ce7943bb95281342f4001cc1c00ec",
      "tree": "2556179d7591d8fa7e770e3f2be15a467fe59a6e",
      "parents": [
        "19ba0559f9ce104171ab16706893ce01f03ef116"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Fri May 01 23:32:06 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 23:32:06 2009 -0400"
      },
      "message": "ext4: fix for fiemap last-block test\n\nCarl Henrik Lunde reported and debugged this; the test for the\nlast allocated block was comparing bytes to blocks in this test:\n\n\tif (logical + length - 1 \u003d\u003d EXT_MAX_BLOCK ||\n\t    ext4_ext_next_allocated_block(path) \u003d\u003d EXT_MAX_BLOCK)\n\t\tflags |\u003d FIEMAP_EXTENT_LAST;\n\nso any extent which ended right at 4G was stopping the extent\nwalk.  Just replacing these values with the extent block \u0026\nlength should fix it.\n\nAlso give blksize_bits a saner type, and reverse the order \nof the tests to make the more likely case tested first.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReported-by: Carl Henrik Lunde \u003cchlunde@ping.uio.no\u003e\nTested-by: Carl Henrik Lunde \u003cchlunde@ping.uio.no\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "29fa89d088941d79765d60f22d5ccdd6b8696e11",
      "tree": "3fbe031eec140c03dafa11f2416c4f6e3826f21d",
      "parents": [
        "8fb0e342481c4d80040670fec915f0b9c7c6499a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "message": "ext4: Mark the unwritten buffer_head as mapped during write_begin\n\nSetting BH_Unwritten buffer_heads as BH_Mapped avoids multiple\n(unnecessary) calls to get_block() during the call to the write(2)\nsystem call.  Setting BH_Unwritten buffer heads as BH_Mapped requires\nthat the writepages() functions can handle BH_Unwritten buffer_heads.\n\nAfter this commit, things work as follows:\n\next4_ext_get_block() returns unmapped, unwritten, buffer head when\ncalled with create \u003d 0 for prealloc space. This makes sure we handle\nthe read path and non-delayed allocation case correctly.  Even though\nthe buffer head is marked unmapped we have valid b_blocknr and b_bdev\nvalues in the buffer_head.\n\next4_da_get_block_prep() called for block resrevation will now return\nmapped, unwritten, new buffer_head for prealloc space. This avoids\nmultiple calls to get_block() for write to same offset. By making such\nbuffers as BH_New, we also assure that sub-block zeroing of buffered\nwrites happens correctly.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "79ffab34391933ee3b95dac7f25c0478fa2f8f1e",
      "tree": "8bc139928e172ef2ebd38e01f97dc01f886d8526",
      "parents": [
        "9fa7eb283c5cdc2b0f4a8cfe6387ed82e5e9a3d3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "message": "ext4: Properly initialize the buffer_head state\n\nThese struct buffer_heads are allocated on the stack (and hence are\ninitialized with stack garbage).  They are only used to call a\nget_blocks() function, so that\u0027s mostly OK, but b_state must be\ninitialized to be 0 so we don\u0027t have any unexpected BH_* flags set by\naccident, such as BH_Unwritten or BH_Delay.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2ec0ae3acec47f628179ee95fe2c4da01b5e9fc4",
      "tree": "f8cf43b7d3840c405dac1db3974466a2d755919a",
      "parents": [
        "2a8964d63d50dd2d65d71d342bc7fb6ef4117614"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 09:07:28 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 09:07:28 2009 -0400"
      },
      "message": "ext4: Fix race in ext4_inode_info.i_cached_extent\n\nIf two CPU\u0027s simultaneously call ext4_ext_get_blocks() at the same\ntime, there is nothing protecting the i_cached_extent structure from\nbeing used and updated at the same time.  This could potentially cause\nthe wrong location on disk to be read or written to, including\npotentially causing the corruption of the block group descriptors\nand/or inode table.\n\nThis bug has been in the ext4 code since almost the very beginning of\next4\u0027s development.  Fortunately once the data is stored in the page\ncache cache, ext4_get_blocks() doesn\u0027t need to be called, so trying to\nreplicate this problem to the point where we could identify its root\ncause was *extremely* difficult.  Many thanks to Kevin Shanahan for\nworking over several months to be able to reproduce this easily so we\ncould finally nail down the cause of the corruption.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "9c1ee184a30394e54165fa4c15923cabd952c106",
      "tree": "77fee66ccc5e4aec3aeff7c7d641691b116be091",
      "parents": [
        "091bf7624d1c90cec9e578a18529f615213ff847"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "message": "ext4: Fix sub-block zeroing for writes into preallocated extents\n\nWe need to mark the buffer_head mapping preallocated space as new\nduring write_begin. Otherwise we don\u0027t zero out the page cache content\nproperly for a partial write. This will cause file corruption with\npreallocation.\n\nNow that we mark the buffer_head new we also need to have a valid\nbuffer_head blocknr so that unmap_underlying_metadata() unmaps the\ncorrect block.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4277bf122e907e4fec509fc0bd9bf5fde30b14e",
      "tree": "b359e8b0f7895acda1d6331332e69ea5b14d5f0d",
      "parents": [
        "6ae85d6db4871d8dbcb5cc0e9056f97f1ca07061",
        "b5451f7b2694b04d9f912f6cf09db1729f291996"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: Fix potential inode allocation soft lockup in Orlov allocator\n  ext4: Make the extent validity check more paranoid\n  jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  ext4: really print the find_group_flex fallback warning only once\n"
    },
    {
      "commit": "e84a26ce178345498a7eca0590852bcc36f1092f",
      "tree": "dcd2f95c9f73ffb8d2020fe89bb1c30785e0fa78",
      "parents": [
        "38d726d153cfe5efe5fe22d28d36ab382dda3a5c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "message": "ext4: Make the extent validity check more paranoid\n\nInstead of just checking that the extent block number is greater or\nequal than s_first_data_block, make sure it it is not pointing into\nthe block group descriptors, since that is clearly wrong.  This helps\nprevent filesystem from getting very badly corrupted in case an extent\nblock is corrupted.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "226e7dabf5534722944adefbad01970bd38bb7ae",
      "tree": "569375339adae68e4773406de0640522158ff12e",
      "parents": [
        "4d1f9fdb6177a9bdecf26976337dd39abcc8edbc"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 15 10:36:16 2009 +0530"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:13 2009 +0200"
      },
      "message": "ext4: Remove code handling bio_alloc failure with __GFP_WAIT\n\nRemove code handling bio_alloc failure with __GFP_WAIT.\nGFP_NOIO implies __GFP_WAIT.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e44543b83bf4ab84dc6bd5b88158c78b1ed1c208",
      "tree": "c55b92d612db9175125ca0edc33af3ff6dcc16d3",
      "parents": [
        "f73953c0656f2db9073c585c4df2884a8ecd101e"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "message": "ext4: Fix off-by-one-error in ext4_valid_extent_idx()\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7a262f7c69163cd4811f2f838faef5c5b18439c9",
      "tree": "1d048ed0fa78d8d768c149cf414bd4325315f184",
      "parents": [
        "56b19868aca856a7d7bf20c3a7a1030e4fd75b2b"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "message": "ext4: Validate extent details only when read from the disk\n\nMake sure we validate extent details only when read from the disk.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "56b19868aca856a7d7bf20c3a7a1030e4fd75b2b",
      "tree": "ca8f9765aa6a319bbe2d5c014b0e27a949c4fc5d",
      "parents": [
        "e6f009b0b45220c004672d41a58865e94946104d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Mar 12 09:51:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 09:51:20 2009 -0400"
      },
      "message": "ext4: Add checks to validate extent entries.\n\nThis patch adds checks to validate the extent entries along with extent\nheaders, to avoid crashes caused by corrupt filesystems.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4912123b688e057084e6557cef8924f7ae5bbde",
      "tree": "34e88705d6617b52caa0f87692b480119a9c9e2e",
      "parents": [
        "2dc6b0d48ca0599837df21b14bb8393d0804af57"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "message": "ext4: New inode/block allocation algorithms for flex_bg filesystems\n\nThe find_group_flex() inode allocator is now only used if the\nfilesystem is mounted using the \"oldalloc\" mount option.  It is\nreplaced with the original Orlov allocator that has been updated for\nflex_bg filesystems (it should behave the same way if flex_bg is\ndisabled).  The inode allocator now functions by taking into account\neach flex_bg group, instead of each block group, when deciding whether\nor not it\u0027s time to allocate a new directory into a fresh flex_bg.\n\nThe block allocator has also been changed so that the first block\ngroup in each flex_bg is preferred for use for storing directory\nblocks.  This keeps directory blocks close together, which is good for\nspeeding up e2fsck since large directories are more likely to look\nlike this:\n\ndebugfs:  stat /home/tytso/Maildir/cur\nInode: 1844562   Type: directory    Mode:  0700   Flags: 0x81000\nGeneration: 1132745781    Version: 0x00000000:0000ad71\nUser: 15806   Group: 15806   Size: 1060864\nFile ACL: 0    Directory ACL: 0\nLinks: 2   Blockcount: 2072\nFragment:  Address: 0    Number: 0    Size: 0\n ctime: 0x499c0ff4:164961f4 -- Wed Feb 18 08:41:08 2009\n atime: 0x499c0ff4:00000000 -- Wed Feb 18 08:41:08 2009\n mtime: 0x49957f51:00000000 -- Fri Feb 13 09:10:25 2009\ncrtime: 0x499c0f57:00d51440 -- Wed Feb 18 08:38:31 2009\nSize of extra inode fields: 28\nBLOCKS:\n(0):7348651, (1-258):7348654-7348911\nTOTAL: 259\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "395a87bfefbc400011417e9eaae33169f9f036c0",
      "tree": "1f0d0f85f33166c9d6187102573a683c27d3e849",
      "parents": [
        "041b62374c7fedc11a8a1eeda2868612d3d1436c"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 10 18:18:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 10 18:18:47 2009 -0400"
      },
      "message": "ext4: fix header check in ext4_ext_search_right() for deep extent trees.\n\nThe ext4_ext_search_right() function is confusing; it uses a\n\"depth\" variable which is 0 at the root and maximum at the leaves, \nbut the on-disk metadata uses a \"depth\" (actually eh_depth) which\nis opposite: maximum at the root, and 0 at the leaves.\n\nThe ext4_ext_check_header() function is given a depth and checks\nthe header agaisnt that depth; it expects the on-disk semantics,\nbut we are giving it the opposite in the while loop in this \nfunction.  We should be giving it the on-disk notion of \"depth\"\nwhich we can get from (p_depth - depth) - and if you look, the last\n(more commonly hit) call to ext4_ext_check_header() does just this.\n\nSending in the wrong depth results in (incorrect) messages\nabout corruption:\n\nEXT4-fs error (device sdb1): ext4_ext_search_right: bad header\nin inode #2621457: unexpected eh_depth - magic f30a, entries 340,\nmax 340(0), depth 1(2)\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12821\n\nReported-by: David Dindorp \u003cddi@dubex.dk\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9fd9784c91db79e953ea3fe3741f885bdc390a72",
      "tree": "b92c9be3218c6559aed0ff9dc4d61c33a1130093",
      "parents": [
        "fdff73f094e7220602cc3f8959c7230517976412"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Mon Jan 26 19:26:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 26 19:26:26 2009 -0500"
      },
      "message": "ext4: Fix building with EXT4FS_DEBUG\n\nWhen bg_free_blocks_count was renamed to bg_free_blocks_count_lo in\n560671a0, its uses under EXT4FS_DEBUG were not changed to the helper\next4_free_blks_count.\n\nAnother commit, 498e5f24, also did not change everything needed under\nEXT4FS_DEBUG, thus making it spill some warnings related to printing\nformat.\n\nThis commit fixes both issues and makes ext4 build again when\nEXT4FS_DEBUG is enabled.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "73ac36ea14fd18ea3dc057e41b16ff31a3c0bd5a",
      "tree": "7f187cade83d9ca9bd180273c25e1216a1dff506",
      "parents": [
        "da2bdf9a6ff40b10d77620d0d76b02a738c103cb"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Wed Jan 07 18:09:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "fix similar typos to successfull\n\nWhen I review ocfs2 code, find there are 2 typos to \"successfull\".  After\ndoing grep \"successfull \" in kernel tree, 22 typos found totally -- great\nminds always think alike :)\n\nThis patch fixes all the similar typos. Thanks for Randy\u0027s ack and comments.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Jeremy Kerr \u003cjk@ozlabs.org\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: Sridhar Samudrala \u003csri@us.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": "83982b6f47201c4c7767210d24d7d8c99567a0b3",
      "tree": "f1c19b1c6b5a34dd0c5de7519b78414b7a9267ee",
      "parents": [
        "4d783b093cd4f3e2738527365979cbd1c5101065"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "message": "ext4: Remove \"extents\" mount option\n\nThis mount option is largely superfluous, and in fact the way it was\nimplemented was buggy; if a filesystem which did not have the extents\nfeature flag was mounted -o extents, the filesystem would attempt to\ncreate and use extents-based file even though the extents feature flag\nwas not eabled.  The simplest thing to do is to nuke the mount option\nentirely.  It\u0027s not all that useful to force the non-creation of new\nextent-based files if the filesystem can support it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3a06d778dfeda7eaeeb79bfa49cf97f2aae132b4",
      "tree": "08c813063950404356c9c64678eed72f21f217b9",
      "parents": [
        "1a0d3786dd57dbd74f340322054c3d618b999dcf"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Nov 22 15:04:59 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Nov 22 15:04:59 2008 -0500"
      },
      "message": "ext4: sparse fixes\n\n* Change EXT4_HAS_*_FEATURE to return a boolean\n* Add a function prototype for ext4_fiemap() in ext4.h\n* Make ext4_ext_fiemap_cb() and ext4_xattr_fiemap() be static functions\n* Add lock annotations to mb_free_blocks()\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "498e5f24158da7bf8fa48074a70e370e22844492",
      "tree": "1434b349c8eca3b0667af0b385533cbcd599c1c3",
      "parents": [
        "a9df9a49102f3578909cba7bd33784eb3b9caaa4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:14:04 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:14:04 2008 -0500"
      },
      "message": "ext4: Change unsigned long to unsigned int\n\nConvert the unsigned longs that are most responsible for bloating the\nstack usage on 64-bit systems.\n\nNearly all places in the ext3/4 code which uses \"unsigned long\" is\nprobably a bug, since on 32-bit systems a ulong a 32-bits, which means\nwe are wasting stack space on 64-bit systems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cde6436004ad9cd8cab5a874b6fa8b01f1da91bf",
      "tree": "55cae59d0ac6e26297524e599ff915a1675082ed",
      "parents": [
        "30773840c19cea60dcef39545960d541b1ac1cf8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 04 18:46:03 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 04 18:46:03 2008 -0500"
      },
      "message": "ext4: Remove i_ext_generation from ext4_inode_info structure\n\nThe i_ext_generation was incremented, but never used.  Remove it to\nslim down the ext4_inode_info structure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0390131ba84fd3f726f9e24fc4553828125700bb",
      "tree": "4c90afad4e8690e25aec0ce069fd450e92ab5f96",
      "parents": [
        "ff7ef329b268b603ea4a2303241ef1c3829fd574"
      ],
      "author": {
        "name": "Frank Mayhar",
        "email": "fmayhar@google.com",
        "time": "Wed Jan 07 00:06:22 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 07 00:06:22 2009 -0500"
      },
      "message": "ext4: Allow ext4 to run without a journal\n\nA few weeks ago I posted a patch for discussion that allowed ext4 to run\nwithout a journal.  Since that time I\u0027ve integrated the excellent\ncomments from Andreas and fixed several serious bugs.  We\u0027re currently\nrunning with this patch and generating some performance numbers against\nboth ext2 (with backported reservations code) and ext4 with and without\na journal.  It just so happens that running without a journal is\nslightly faster for most everything.\n\nWe did\n\tiozone -T -t 4 s 2g -r 256k -T -I -i0 -i1 -i2\n\nwhich creates 4 threads, each of which create and do reads and writes on\na 2G file, with a buffer size of 256K, using O_DIRECT for all file opens\nto bypass the page cache.  Results:\n\n                     ext2        ext4, default   ext4, no journal\n  initial writes   13.0 MB/s        15.4 MB/s          15.7 MB/s\n  rewrites         13.1 MB/s        15.6 MB/s          15.9 MB/s\n  reads            15.2 MB/s        16.9 MB/s          17.2 MB/s\n  re-reads         15.3 MB/s        16.9 MB/s          17.2 MB/s\n  random readers    5.6 MB/s         5.6 MB/s           5.7 MB/s\n  random writers    5.1 MB/s         5.3 MB/s           5.4 MB/s \n\nSo it seems that, so far, this was a useful exercise.\n\nSigned-off-by: Frank Mayhar \u003cfmayhar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "25f1ee3aba17584ba4810da892175acab7fff9c8",
      "tree": "e05da5e03396a3660f71df07bcbedb3023f4b6a4",
      "parents": [
        "565a9617b2151e21b22700e97a8b04e70e103153"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Nov 25 17:24:23 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 25 17:24:23 2008 -0500"
      },
      "message": "ext4: fix build warning\n\nReplace `if\u0027 with `goto\u0027 to assure gcc that ix has been initialized.\n\nSigned-off-by: Wu Fengguang \u003cwfg@linux.intel.com\u003e\n"
    },
    {
      "commit": "97df5d155dee478efe33b001f502e9630e1bba92",
      "tree": "11847bd119be9b68365a2fa4beb5f95f691162b1",
      "parents": [
        "cfe82c856747b7841a3a00d591ce9ed46f579d27"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Dec 12 12:41:28 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Dec 12 12:41:28 2008 -0500"
      },
      "message": "ext4: remove do_blk_alloc()\n\nThe convenience function do_blk_alloc() is a static function with only\none caller, so fold it into ext4_new_meta_blocks() to simplify the\ncode and to make it easier to understand.\n\nTo save more stack space, if count is a null pointer in\next4_new_meta_blocks() assume that caller wanted a single block (and\nif there is an error, no blocks were allocated).\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cfe82c856747b7841a3a00d591ce9ed46f579d27",
      "tree": "b5a306bdb06ead17bf19adc671df149aa9f0895e",
      "parents": [
        "815a1130687ffac2c3e91513ce64aab629d6a54d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 07 14:10:54 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 07 14:10:54 2008 -0500"
      },
      "message": "ext4: remove ext4_new_meta_block()\n\nThere were only two one callers of the function ext4_new_meta_block(),\nwhich just a very simpler wrapper function around\next4_new_meta_blocks().  Change those two functions to call\next4_new_meta_blocks() directly, to save code and stack space usage.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6873fa0de14e49c433f1f181c54e511f4f3d459d",
      "tree": "4759862db403c037c11f570f0b2ca5e25198073e",
      "parents": [
        "68c9d702bb72f367f3b148963ec6cf5e07ff7f65"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Oct 07 00:46:36 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 07 00:46:36 2008 -0400"
      },
      "message": "Hook ext4 to the vfs fiemap interface.\n\next4_ext_walk_space() was reinstated to be used for iterating over file\nextents with a callback; it is used by the ext4 fiemap implementation.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: linux-ext4@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "c2ea3fde61f1df1dbf062345f23277dcd6f01dfe",
      "tree": "53ecbf57416326810540494e814c05753bf30874",
      "parents": [
        "240799cdf22bd789ea6852653c3b879d35ad0a6c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 09:40:52 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 09:40:52 2008 -0400"
      },
      "message": "ext4: Remove old legacy block allocator\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cf17fea6575cb1739552e1d0cb2b446305ee3d0c",
      "tree": "319e1044e271aeb31ad14847f369776ac5db74db",
      "parents": [
        "ae4d537211ff250a8c23c4f1227c4276cd2508ab"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Sep 13 13:06:18 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 13:06:18 2008 -0400"
      },
      "message": "ext4: Properly update i_disksize.\n\nWith delayed allocation we use i_data_sem to update i_disksize.  We need\nto update i_disksize only if the new size specified is greater than the\ncurrent value and we need to make sure we don\u0027t race with other\ni_disksize update.  With delayed allocation we will switch to the\nwrite_begin function for non-delayed allocation if we are low on free\nblocks.  This means the write_begin function for non-delayed allocation\nalso needs to use the same locking.\n\nWe also need to check and update i_disksize even if the new size is less\nthat inode.i_size because of delayed allocation.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "af5bc92dded4d98dfeabc8b5b9812571345b263d",
      "tree": "5cfaf27e673a09d3ad1341c175559be0a3ea990d",
      "parents": [
        "e5f8eab8851dff162e7ade46f084cb8575dc45f7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 22:25:24 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 22:25:24 2008 -0400"
      },
      "message": "ext4: Fix whitespace checkpatch warnings/errors\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "4776004f54e4190e104caf620fd0fa5909412236",
      "tree": "ebd37cb847d58d434ad4ea3bd98c77256f05347e",
      "parents": [
        "1f7c14c62ce63805f9574664a6c6de3633d4a354"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 23:00:52 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 23:00:52 2008 -0400"
      },
      "message": "ext4: Add printk priority levels to clean up checkpatch warnings\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "525f4ed8dcb72c71b306a78ecbf06f41d08fe441",
      "tree": "d4d74dc7b109c5d74fa955970a8528ec90e20b06",
      "parents": [
        "a1d6cc563bfdf1bf2829d3e6ce4d8b774251796b"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:15:58 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:15:58 2008 -0400"
      },
      "message": "ext4: journal credit fix for the delayed allocation\u0027s writepages() function\n\nPrevious delalloc writepages implementation started a new transaction\noutside of a loop which called get_block() to do the block allocation.\nSince we didn\u0027t know exactly how many blocks would need to be allocated,\nthe estimated journal credits required was very conservative and caused\nmany issues.\n\nWith the reworked delayed allocation, a new transaction is created for\neach get_block(), thus we don\u0027t need to guess how many credits for the\nmultiple chunk of allocation.  We start every transaction with enough\ncredits for inserting a single exent.  When estimate the credits for\nindirect blocks to allocate a chunk of blocks, we need to know the\nnumber of data blocks to allocate.  We use the total number of reserved\ndelalloc datablocks; if that is too big, for non-extent files, we need\nto limit the number of blocks to EXT4_MAX_TRANS_BLOCKS.\n\nCode cleanup from Aneesh.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-off-by:  Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f3bd1f3fa8ca7ec70cfd87aa94dc5e1a260901f2",
      "tree": "a0f0ce2e044f8a75009e94d5f788b45a3948bbe3",
      "parents": [
        "ee12b630687d510f6f4b6d4acdc4e267fd4adeda"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:03 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:03 2008 -0400"
      },
      "message": "ext4: journal credits reservation fixes for DIO, fallocate\n\nDIO and fallocate credit calculation is different than writepage, as\nthey do start a new journal right for each call to ext4_get_blocks_wrap().\nThis patch uses the helper function in DIO and fallocate case, passing\na flag indicating that the modified data are contigous thus could account\nless indirect/index blocks.\n\nThis patch also fixed the journal credit reservation for direct I/O\n(DIO).  Previously the estimated credits for DIO only was calculated for\nnon-extent files, which was not enough if the file is extent-based.\n\nAlso fixed was fallocate double-counting credits for modifying the the\nsuperblock.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ee12b630687d510f6f4b6d4acdc4e267fd4adeda",
      "tree": "8dd253073c5e811751bf1bb479fb03f772e42406",
      "parents": [
        "a02908f19c819aeec5e3dcf238adaa6deddd70b0"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:05 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:05 2008 -0400"
      },
      "message": "ext4: journal credits reservation fixes for extent file writepage\n\nThis patch modified the writepage/write_begin credit calculation for\nextent files, to use the credits caculation helper function.\n\nThe current calculation of how many index/leaf blocks should be\naccounted is too conservetive, it always considered the worse case,\nwhere the tree level is 5, and in the case of multiple chunk\nallocations, it always assumed no blocks were dirtied in common across\nthe allocations. This path uses the accurate depth of the inode with\nsome extras to calculate the index blocks, and also less conservative in\nthe case of multiple allocation accounting.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "88aa3cff4e9a38b953de9fbc54c96e619a2bb9f9",
      "tree": "2905089c0d20ef7a6017d40acbe887148f3cd1fa",
      "parents": [
        "d015641734cde55d2fce48a6db3983c8a029fe05"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 16 07:57:35 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 16 07:57:35 2008 -0400"
      },
      "message": "ext4: Use ext4_discard_reservations instead of mballoc-specific call\n\nIn ext4_ext_truncate(), we should use the more generic\next4_discard_reservations() call so we do the right thing when the\nfilesystem is mounted with the nomballoc option.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "2b2d6d019724de6e51ac5bcf22b5ef969daefa8b",
      "tree": "71145b61b73b200fd3d4bae520bb988f5f7d21f5",
      "parents": [
        "ec05e868ac80cc8fc7de6e5cf773b232198e49af"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 26 16:15:44 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 26 16:15:44 2008 -0400"
      },
      "message": "ext4: Cleanup whitespace and other miscellaneous style issues\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "34071da71a665d8c81e3b3467c9a2e7c56386fec",
      "tree": "bf737db477d20e4f748eccfcf13a28e428a7e04b",
      "parents": [
        "bc965ab3f2b4b7bb898b11d61d25295c2053b8ac"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 01 21:59:19 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 01 21:59:19 2008 -0400"
      },
      "message": "ext4: don\u0027t assume extents can\u0027t cross block groups when truncating\n\nWith the FLEX_BG layout, there is no reason why extents can\u0027t cross\nblock groups, so make the truncate code reserve enough credits so we\ndon\u0027t BUG if we come across such an extent.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0123c93998511978556b03d2bb023af92aa24d55",
      "tree": "ec01472f1c23b046fe25c1c2b4e2d4d054a5d163",
      "parents": [
        "d5a0d4f732af3438e592efab4cb80076d1dd81b5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 01 20:57:54 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Aug 01 20:57:54 2008 -0400"
      },
      "message": "ext4: Fix ext4_ext_journal_restart()\n\nThe ext4_ext_journal_restart() is a convenience function which checks\nto see if the requested number of credits is present, and if so it\ncloses the current transaction and attaches the current handle to the\nnew transaction.  Unfortunately, it wasn\u0027t proprely checking the\nreturn value from ext4_journal_extend(), so it was starting a new\ntransaction when one was not necessary, and returning an error when\nall that was necessary was to restart the handle with a new\ntransaction.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d03856bd5e5abac717da137dc60fe4a691769bd0",
      "tree": "7de3649a2b48e36744aae72d5905bede2e28b6ca",
      "parents": [
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Aug 02 18:51:32 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 02 18:51:32 2008 -0400"
      },
      "message": "ext4: Fix data corruption when writing to prealloc area\n\nInserting an extent can cause a new entry in the already existing index\nblock. That doesn\u0027t increase the depth of the instead. Instead it adds a\nnew leaf block. Now with the new leaf block the path information\ncorresponding to the logical block should be fetched from the new block.\nThe old path will be pointing to the old leaf block.\n\nWe need to recalucate the path information on extent insert\neven if depth doesn\u0027t change. Without this change, the extent merge\nafter converting an unwritten extent to initialized extent takes the wrong\nextent and cause data corruption.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "61628a3f3a37af2bf25daf8e26fd6b76a78c4f76",
      "tree": "25375b739b2e3f65c8dff3d3dd2a78e0724d0f96",
      "parents": [
        "06d6cf6959d22037fcec598f4f954db5db3d7356"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Invert lock ordering of page_lock and transaction start in delalloc\n\nWith the reverse locking, we need to start a transation before taking\nthe page lock, so in ext4_da_writepages() we need to break the write-out\ninto chunks, and restart the journal for each chunck to ensure the\nwrite-out fits in a single transaction.\n\nUpdated patch from Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nwhich fixes delalloc sync hang with journal lock inversion, and address\nthe performance regression issue.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d2a1763791a634e315ec926b62829c1e88842c86",
      "tree": "75a701a89829ba7d728fdc19c30aa2794b9706b9",
      "parents": [
        "e8ced39d5e8911c662d4d69a342b9d053eaaac4e"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Jul 14 17:52:37 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 14 17:52:37 2008 -0400"
      },
      "message": "ext4: delayed allocation ENOSPC handling\n\nThis patch does block reservation for delayed\nallocation, to avoid ENOSPC later at page flush time.\n\nBlocks(data and metadata) are reserved at da_write_begin()\ntime, the freeblocks counter is updated by then, and the number of\nreserved blocks is store in per inode counter.\n        \nAt the writepage time, the unused reserved meta blocks are returned\nback. At unlink/truncate time, reserved blocks are properly released.\n\nUpdated fix from  Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nto fix the oldallocator block reservation accounting with delalloc, added\nlock to guard the counters and also fix the reservation for meta blocks.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9ddfc3dc75b5cc55ff3cfa586e962d252f1db9d3",
      "tree": "4932f75d2f303561b0038fb5ea8985345b3ccd6b",
      "parents": [
        "cf108bca465dde0c015f32dd453b99457d31c7c7"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Fix lock inversion in ext4_ext_truncate()\n\nWe cannot call ext4_orphan_add() from under i_data_sem because that\ncauses a lock ordering violation between i_data_sem and and the\nsuperblock lock.\n\nUpdated with Aneesh\u0027s locking order fix\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e \nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "cf108bca465dde0c015f32dd453b99457d31c7c7",
      "tree": "b1c9dfc1936579e4fd2a48f77f702effc39029e2",
      "parents": [
        "c7d206b3379f7d6462e778b74f475c470ee3dcaf"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Invert the locking order of page_lock and transaction start\n\nThis changes are needed to support data\u003dordered mode handling via\ninodes.  This enables us to get rid of the journal heads and buffer\nheads for data buffers in the ordered mode.  With the changes, during\ntranasaction commit we writeout the inode pages using the\nwritepages()/writepage(). That implies we take page lock during\ntransaction commit. This can cause a deadlock with the locking order\npage_lock -\u003e jbd2_journal_start, since the jbd2_journal_start can wait\nfor the journal_commit to happen and the journal_commit now needs to\ntake the page lock. To avoid this dead lock reverse the locking order.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "953e622b601f58b7cc0f29fe644457fa40a18456",
      "tree": "15fcef3e6489b90aaf92100b096021773ef856df",
      "parents": [
        "47b4a50bebfd34b5e1fa2a9c673c8f31fa231cc1"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: use atomic functions to set bh_state\n\nUse the BUFFER_FNS functions (set_buffer_foo) to set buffer\nhead state atomically instead of nonatomic __set_bit().\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "654b4908bc17a6318d18f3036fecc5155de92f55",
      "tree": "a77264435aa5ed0386334653fae7624ee423f8cf",
      "parents": [
        "7061eba75ceb0835ba61e7cbd757a6f9c1e4af92"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: cleanup block allocator\n\nMove the code related to block allocation to a single function and add helper\nfuntions to differient allocation for data and meta data blocks\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7061eba75ceb0835ba61e7cbd757a6f9c1e4af92",
      "tree": "9c70df3078c0543573a9f38bb60c6b0f54608c7a",
      "parents": [
        "6afd670713c9e7d5c5550e379dfedca8ffab4c90"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Use inode preallocation with -o noextents\n\nWhen mballoc is enabled, block allocation for old block-based\nfiles are allocated using mballoc allocator instead of old\nblock-based allocator. The old ext3 block reservation is turned\noff when mballoc is turned on.\n\nHowever, the in-core preallocation is not enabled for block-based/\nnon-extent based file block allocation. This result in performance\nregression, as now we don\u0027t have \"reservation\" ore in-core preallocation\nto prevent interleaved fragmentation in multiple writes workload.\n\nThis patch fix this by enable per inode in-core preallocation\nfor non extent files when mballoc is used.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9102e4fa8016af8bf1a263df913ee8fdafd4dfb0",
      "tree": "f2d045cf2fd421d6ba6989b3eef966a40af5080b",
      "parents": [
        "1973adcba570c226de840299056e055a3614185e"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Fix ext4_ext_journal_restart() to reflect errors up to the caller\n\nFix ext4_ext_journal_restart() so it returns any errors reported by \next4_journal_extend() and ext4_journal_restart().\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "1973adcba570c226de840299056e055a3614185e",
      "tree": "393b70bd62ed89eb0c558312e1153ae133f44bde",
      "parents": [
        "787e0981fad97a5ca3d07c7afe115a7e345b2861"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Make ext4_ext_find_extent fills ext_path completely\n\nWhen pos\u003d0 or depth, the fields of ext4_ext_path is are not\ncompletely filled.  This patch also removes some unnecessary code.\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "787e0981fad97a5ca3d07c7afe115a7e345b2861",
      "tree": "bbab1d5506aa8c3cfdb018a75b346f8d873818bc",
      "parents": [
        "a379cd1d6bb00f9f5d2759d4a5621a884df5914e"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: return error when calling ext4_ext_split failed\n\next4_ext_create_new_leaf must return error when its\ncalling to ext4_ext_split failed.\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a379cd1d6bb00f9f5d2759d4a5621a884df5914e",
      "tree": "437211f483736d3a2335cbca20e771b099b6bf77",
      "parents": [
        "363d4251d4bd984c304e0989789f6494343660fd"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "ext4: Update i_disksize properly when allocating from fallocate area.\n\nWhen allocating unitialized space at the end of file which had been\npreallocated with the FALLOC_FL_KEEP_SIZE option, the file size is not\nupdated at that time.  But the later we are not updating the file size\nwhen writing to that preallocated space.\n\nThese changes are for code correctness.  This patch allows us to update\nthe i_disksize at the write_end() callback of filesystem properly.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ef7377289a1510d638004158e43878643bc75dc5",
      "tree": "4e7cfd27dc9322f0803fe438f63e1f9a2c4fb4cd",
      "parents": [
        "c83617db76353ff30e825874be2c15c185b95759"
      ],
      "author": {
        "name": "Solofo Ramangalahy",
        "email": "Solofo.Ramangalahy@bull.net",
        "time": "Tue Apr 29 22:00:41 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 29 22:00:41 2008 -0400"
      },
      "message": "ext4: update ctime and mtime for truncate with extents.\n\nThe recently announced \"Linux POSIX file system test suite\"\ncaught a truncate issue when using extents:\nmtime and ctime are not updated when truncate is successful.\n\nThis is the single issue caught with \"default\" ext4 (mkfs and mount\nwith minimal options).\nThe testsuite does not report failure with -o noextents.\n\nWith the following patch, all tests of the testsuite pass.\n\nSigned-off-by: Solofo Ramangalahy \u003cSolofo.Ramangalahy@bull.net\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    }
  ],
  "next": "3dcf54515aa4981a647ad74859199032965193a5"
}
