)]}'
{
  "log": [
    {
      "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": "179f7ebff6be45738c6e2fa68c8d2cc5c2c6308e",
      "tree": "3d48b5f825cfa29f5b39656503c5157872454e9f",
      "parents": [
        "e3d5a27d5862b6425d0879272e24abecf7245105"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 06 14:41:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:13 2009 -0800"
      },
      "message": "percpu_counter: FBC_BATCH should be a variable\n\nFor NR_CPUS \u003e\u003d 16 values, FBC_BATCH is 2*NR_CPUS\n\nConsidering more and more distros are using high NR_CPUS values, it makes\nsense to use a more sensible value for FBC_BATCH, and get rid of NR_CPUS.\n\nA sensible value is 2*num_online_cpus(), with a minimum value of 32 (This\nminimum value helps branch prediction in __percpu_counter_add())\n\nWe already have a hotcpu notifier, so we can adjust FBC_BATCH dynamically.\n\nWe rename FBC_BATCH to percpu_counter_batch since its not a constant\nanymore.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba80b1019aa722b24506db1ee755e0bb2f513022",
      "tree": "0c9a7dfd3af0f5991f3eaaeb65d735b11e9cf777",
      "parents": [
        "c31910672376dfb8d020e32afa7249763bcd924a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "message": "ext4: Add markers for better debuggability\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "560671a0d3c9ad2d647fa6d09375a262e1f19c4f",
      "tree": "a52673326726062d53b35643d51a16739cd804fc",
      "parents": [
        "e8134b27e351e813414da3b95aa8eac6d3908088"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "message": "ext4: Use high 16 bits of the block group descriptor\u0027s free counts fields\n\nRename the lower bits with suffix _lo and add helper\nto access the values. Also rename bg_itable_unused_hi\nto bg_pad as in e2fsprogs.\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": "e83c1397cafc4e44f868289db5e417463c0d09a4",
      "tree": "1e5673897d0c7bcaad4a7e6927a7277e78525924",
      "parents": [
        "b5ed3112b5f74c8ec1c7aa03a76c596635e85197"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Dec 19 20:47:15 2008 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:39 2008 -0500"
      },
      "message": "ext4: ensure fast symlinks are NUL-terminated\n\nEnsure fast symlink targets are NUL-terminated, even if corrupted\non-disk.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: adilger@sun.com\nCc: linux-ext4@vger.kernel.org\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed9b3e3379731e9f9d2f73f3d7fd9e7d2ce3df4a",
      "tree": "d17381e45fe8843646ca70424095a9aa36711ee7",
      "parents": [
        "ac51d83705c2a38c71f39cde99708b14e6212a60"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Nov 07 09:06:45 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 07 09:06:45 2008 -0500"
      },
      "message": "ext4: Mark the buffer_heads as dirty and uptodate after prepare_write\n\nWe need to make sure we mark the buffer_heads as dirty and uptodate\nso that block_write_full_page write them correctly.\n\nThis fixes mmap corruptions that can occur in low memory situations.\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": "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": "ac51d83705c2a38c71f39cde99708b14e6212a60",
      "tree": "e540265888154d1f1b4613a118252b19a31db5db",
      "parents": [
        "14ce0cb411c88681ab8f3a4c9caa7f42e97a3184"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 16:49:36 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 16:49:36 2008 -0500"
      },
      "message": "ext4: calculate journal credits correctly\n\nThis fixes a 2.6.27 regression which was introduced in commit a02908f1.\n\nWe weren\u0027t passing the chunk parameter down to the two subections,\next4_indirect_trans_blocks() and ext4_ext_index_trans_blocks(), with\nthe result that massively overestimate the amount of credits needed by\next4_da_writepages, especially in the non-extents case.  This causes\nfailures especially on /boot partitions, which tend to be small and\nnon-extent using since GRUB doesn\u0027t handle extents.\n\nThis patch fixes the bug reported by Joseph Fannin at:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11964\n\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": "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": "791b7f08954869d7b8ff438f3dac3cfb39778297",
      "tree": "9e5e9414e6b102940dea0f6c3103fee7fcc0df1d",
      "parents": [
        "2a21e37e48b94388f2cc8c0392f104f5443d4bb8"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:50:43 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:50:43 2009 -0500"
      },
      "message": "ext4: Fix the delalloc writepages to allocate blocks at the right offset.\n\nWhen iterating through the pages which have mapped buffer_heads, we\nfailed to update the b_state value. This results in allocating blocks\nat logical offset 0.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2a21e37e48b94388f2cc8c0392f104f5443d4bb8",
      "tree": "271e6b7c181213bc9ffbd7793aef275b924cf63c",
      "parents": [
        "97df5d155dee478efe33b001f502e9630e1bba92"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 09:22:24 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 09:22:24 2008 -0500"
      },
      "message": "ext4: tone down ext4_da_writepages warnings\n\nIf the filesystem has errors, ext4_da_writepages() will return a *lot*\nof errors, including lots and lots of stack dumps.  While it\u0027s true\nthat we are dropping user data on the floor, which is unfortunate, the\nstack dumps aren\u0027t helpful, and they tend to obscure the true original\nroot cause of the problem.  So in the case where the filesystem has\naborted, return an EROFS right away.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "815a1130687ffac2c3e91513ce64aab629d6a54d",
      "tree": "9abc15c6e1e44a5e5fcf1feb0f9328b09657ad59",
      "parents": [
        "8e1a4857cd92e32e642b3e7184c7f6bf85c96e2e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jan 01 23:59:43 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jan 01 23:59:43 2009 -0500"
      },
      "message": "ext4: remove ext4_new_blocks() and call ext4_mb_new_blocks() directly\n\nThere was only one caller of the compatibility function\next4_new_blocks(), in balloc.c\u0027s ext4_alloc_blocks().  Change it to\ncall ext4_mb_new_blocks() directly, and remove ext4_new_blocks()\naltogether.  This cleans up the code, by removing two extra functions\nfrom the call chain, and hopefully saving some stack usage.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f72fbdf0d92e6127583cc548bf043c60cd4720f",
      "tree": "1e640222c04efb9cd0e56fccee5a23084d006c38",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Alexander Beregalov",
        "email": "a.beregalov@gmail.com",
        "time": "Wed Oct 29 17:13:08 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 29 17:13:08 2008 -0400"
      },
      "message": "ext4: fix printk format warning\n\nfs/ext4/balloc.c:607: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 2 has type \u0027s64\u0027\nfs/ext4/inode.c:1822: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 2 has type \u0027s64\u0027\nfs/ext4/inode.c:1824: warning: format \u0027%lld\u0027 expects type \u0027long long int\u0027, but argument 2 has type \u0027s64\u0027\n\nSigned-off-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "f287a1a56130be5fdb96a4a62d1290bd064f308e",
      "tree": "992ac8f5fef83cafae53b8fe00844f2ad3e79d07",
      "parents": [
        "3e624fc72fba09b6f999a9fbb87b64efccd38036"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 22:50:48 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 22:50:48 2008 -0400"
      },
      "message": "ext4: Remove automatic enabling of the HUGE_FILE feature flag\n\nIf the HUGE_FILE feature flag is not set, don\u0027t allow the creation of\nlarge files, instead of automatically enabling the feature flag.\nRecent versions of mke2fs will set the HUGE_FILE flag automatically\nanyway for ext4 filesystems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "22208dedbd7626e5fc4339c417f8d24cc21f79d7",
      "tree": "d03fc8524dc7cb2f18c2038ffe4d2146903f630e",
      "parents": [
        "17bc6c30cf6bfffd816bdc53682dd46fc34a2cf4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Oct 16 10:10:36 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 10:10:36 2008 -0400"
      },
      "message": "ext4: Fix file fragmentation during large file write.\n\nThe range_cyclic writeback mode uses the address_space writeback_index\nas the start index for writeback.  With delayed allocation we were\nupdating writeback_index wrongly resulting in highly fragmented file.\nThis patch reduces the number of extents reduced from 4000 to 27 for a\n3GB file.\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": "af6f029d3836eb7264cd3fbb13a6baf0e5fdb5ea",
      "tree": "b7c1334ad5fab10eaf4962c79ad6025d334b902c",
      "parents": [
        "8a0aba733db1adb5e1f0e828889a18f4c1c512de"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Oct 14 09:20:19 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 14 09:20:19 2008 -0400"
      },
      "message": "ext4: Use tag dirty lookup during mpage_da_submit_io\n\nThis enables us to drop the range_cont writeback mode\nuse from ext4_da_writepages.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "03010a3350301baac2154fa66de925ae2981b7e3",
      "tree": "b1af2cecbb540faab4bd67dc1a28ad3384341d72",
      "parents": [
        "39d80c33a068d9fa63a36c3b2c0d718d38440dd1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 20:02:48 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 20:02:48 2008 -0400"
      },
      "message": "ext4: Rename ext4dev to ext4\n\nThe ext4 filesystem is getting stable enough that it\u0027s time to drop\nthe \"dev\" prefix.  Also remove the requirement for the TEST_FILESYS\nflag.\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": "240799cdf22bd789ea6852653c3b879d35ad0a6c",
      "tree": "e696b60cc103f23838b5c14d8d397f692abffbc3",
      "parents": [
        "37515facd001942221d68171c81c1f46d54ffdd0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 23:53:47 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 23:53:47 2008 -0400"
      },
      "message": "ext4: Use readahead when reading an inode from the inode table\n\nWith modern hard drives, reading 64k takes roughly the same time as\nreading a 4k block.  So request readahead for adjacent inode table\nblocks to reduce the time it takes when iterating over directories\n(especially when doing this in htree sort order) in a cold cache case.\nWith this patch, the time it takes to run \"git status\" on a kernel\ntree after flushing the caches via \"echo 3 \u003e /proc/sys/vm/drop_caches\"\nis reduced by 21%.\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": "ae4d537211ff250a8c23c4f1227c4276cd2508ab",
      "tree": "58aeb4ba30d0ae5b3bff93933200001349547721",
      "parents": [
        "df22291ff0fde0d350cf15dac3e5cc33ac528875"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Sep 13 13:10:25 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 13 13:10:25 2008 -0400"
      },
      "message": "ext4: truncate block allocated on a failed ext4_write_begin\n\nFor blocksize \u003c pagesize we need to remove blocks that got allocated in\nblock_write_begin() if we fail with ENOSPC for later blocks.\nblock_write_begin() internally does this if it allocated pages locally.\nThis makes sure we don\u0027t have blocks outside inode.i_size during ENOSPC.\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": "df22291ff0fde0d350cf15dac3e5cc33ac528875",
      "tree": "723d781b430e7ab796b67eec4e956b6a2e47bf93",
      "parents": [
        "166348dd37a4baacfb6fe495954b56f56b116f0c"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Sep 08 23:05:34 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 23:05:34 2008 -0400"
      },
      "message": "ext4: Retry block allocation if we have free blocks left\n\nWhen we truncate files, the meta-data blocks released are not reused\nuntill we commit the truncate transaction.  That means delayed get_block\nrequest will return ENOSPC even if we have free blocks left.  Force a\njournal commit and retry block allocation if we get ENOSPC with free\nblocks left.\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": "166348dd37a4baacfb6fe495954b56f56b116f0c",
      "tree": "afb36ca25ec3bdbd4397a5b952bc78be1e5feff9",
      "parents": [
        "68629f29c6764c37ebdceec2f6bbef6637eaf420"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Sep 08 23:08:40 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 23:08:40 2008 -0400"
      },
      "message": "ext4: Don\u0027t add the inode to journal handle until after the block is allocated\n    \nMake sure we don\u0027t add the inode to the journal handle until after the\nblock allocation, so that a journal commit will not include the inode in\ncase of block allocation failure.\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": "79f0be8d2e6ebde27dfb3beff18eb689d5c4e36c",
      "tree": "7ddadff1a3f0f4f6814104aed42f20c52a7f5f24",
      "parents": [
        "6bc6e63fcd7dac9e633ea29f1fddd9580ab28f3f"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Oct 08 23:13:30 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 08 23:13:30 2008 -0400"
      },
      "message": "ext4: Switch to non delalloc mode when we are low on free blocks count.\n\nThe delayed allocation code allocates blocks during writepages(), which\ncan not handle block allocation failures.  To deal with this, we switch\naway from delayed allocation mode when we are running low on free\nblocks.  This also allows us to avoid needing to reserve a large number\nof meta-data blocks in case all of the requested blocks are\ndiscontiguous.\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\n"
    },
    {
      "commit": "6bc6e63fcd7dac9e633ea29f1fddd9580ab28f3f",
      "tree": "144d53023af5faeb94b9b3aa28e186a33e6c5b98",
      "parents": [
        "030ba6bc67b4f2bc5cd174f57785a1745c929abe"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Oct 10 09:39:00 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 09:39:00 2008 -0400"
      },
      "message": "ext4: Add percpu dirty block accounting.\n\nThis patch adds dirty block accounting using percpu_counters.  Delayed\nallocation block reservation is now done by updating dirty block\ncounter.  In a later patch we switch to non delalloc mode if the\nfilesystem free blocks is greater than 150% of total filesystem dirty\nblocks\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": "030ba6bc67b4f2bc5cd174f57785a1745c929abe",
      "tree": "14c57b4f6f8afddac0bd2415bfa050fba8d25980",
      "parents": [
        "a30d542a0035b886ffaafd0057ced0a2b28c3a4f"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Sep 08 23:14:50 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Sep 08 23:14:50 2008 -0400"
      },
      "message": "ext4: Retry block reservation\n\nDuring block reservation if we don\u0027t have enough blocks left, retry\nblock reservation with smaller block counts.  This makes sure we try\nfallocate and DIO with smaller request size and don\u0027t fail early.  The\ndelayed allocation reservation cannot try with smaller block count. So\nretry block reservation to handle temporary disk full conditions.  Also\nprint free blocks details if we fail block allocation during writepages.\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": "a30d542a0035b886ffaafd0057ced0a2b28c3a4f",
      "tree": "9e677eaf4eb1611701828554b27a1b0b0ae523fd",
      "parents": [
        "c4a0c46ec92c194c873232b88debce4e1a448483"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Oct 09 10:56:23 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 09 10:56:23 2008 -0400"
      },
      "message": "ext4: Make sure all the block allocation paths reserve blocks\n\nWith delayed allocation we need to make sure block are reserved before\nwe attempt to allocate them. Otherwise we get block allocation failure\n(ENOSPC) during writepages which cannot be handled. This would mean\nsilent data loss (We do a printk stating data will be lost). This patch\nupdates the DIO and fallocate code path to do block reservation before\nblock allocation. This is needed to make sure parallel DIO and fallocate\nrequest doesn\u0027t take block out of delayed reserve space.\n\nWhen free blocks count go below a threshold we switch to a slow patch\nwhich looks at other CPU\u0027s accumulated percpu counter values.\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": "c4a0c46ec92c194c873232b88debce4e1a448483",
      "tree": "ebde1cc191b1af97bcd9189067b23205fa6cefdc",
      "parents": [
        "af5bc92dded4d98dfeabc8b5b9812571345b263d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Aug 19 21:08:18 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 21:08:18 2008 -0400"
      },
      "message": "ext4: invalidate pages if delalloc block allocation fails.\n\nWe are a bit agressive in invalidating all the pages. But\nit is ok because we really don\u0027t know why the block allocation\nfailed and it is better to come of the writeback path\nso that user can look for more info.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\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": "5e745b041f2ccad63077118b40468521306f3962",
      "tree": "2a4d53c884f92899ee8e4f541c32861a4a577e1d",
      "parents": [
        "91246c009094142f95ecc7573b7caed2bcef52c7"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Aug 18 18:00:57 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 18 18:00:57 2008 -0400"
      },
      "message": "ext4: Fix small file fragmentation\n\nFor small file block allocations, mballoc uses per cpu prealloc\nspace.  Use goal block when searching for the right prealloc\nspace.  Also make sure ext4_da_writepages tries to write\nall the pages for small files in single attempt\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": "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": "a1d6cc563bfdf1bf2829d3e6ce4d8b774251796b",
      "tree": "ee81b6842191beb85f3f3baab817d115633ba456",
      "parents": [
        "f3bd1f3fa8ca7ec70cfd87aa94dc5e1a260901f2"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Aug 19 21:55:02 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 21:55:02 2008 -0400"
      },
      "message": "ext4: Rework the ext4_da_writepages() function\n\nWith the below changes we reserve credit needed to insert only one\nextent resulting from a call to single get_block.  This makes sure we\ndon\u0027t take too much journal credits during writeout.  We also don\u0027t\nlimit the pages to write.  That means we loop through the dirty pages\nbuilding largest possible contiguous block request.  Then we issue a\nsingle get_block request.  We may get less block that we requested.  If\nso we would end up not mapping some of the buffer_heads.  That means\nthose buffer_heads are still marked delay.  Later in the writepage\ncallback via __mpage_writepage we redirty those pages.\n\nWe should also not limit/throttle wbc-\u003enr_to_write in the filesystem\nwritepages callback. That cause wrong behaviour in\ngeneric_sync_sb_inodes caused by wbc-\u003enr_to_write being \u003c\u003d 0\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.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": "a02908f19c819aeec5e3dcf238adaa6deddd70b0",
      "tree": "78764672019b22a5a8925abc702d7c54244138e8",
      "parents": [
        "c001077f4003fa75793bb62979baa6241dd8eb19"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:07 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:07 2008 -0400"
      },
      "message": "ext4: journal credits calulation cleanup and fix for non-extent writepage\n\nWhen considering how many journal credits are needed for modifying a\nchunk of data, we need to account for the super block, inode block,\nquota blocks and xattr block, indirect/index blocks, also, group bitmap\nand group descriptor blocks for new allocation (including data and\nindirect/index blocks). There are many places in ext4 do the calculation\non their own and often missed one or two meta blocks, and often they\nassume single block allocation, and did not considering the multile\nchunk of allocation case.\n\nThis patch is trying to cleanup current journal credit code, provides\nsome common helper funtion to calculate the journal credits, to be used\nfor writepage, writepages, DIO, fallocate, migration, defrag, and for\nboth nonextent and extent files.\n\nThis patch modified the writepage/write_begin credit caculation for\nnonextent files, to use the new helper function. It also fixed the\nproblem that writepage on nonextent files did not consider the case\nblocksize \u003cpagesize, thus could possibelly need multiple block\nallocation in a single transaction.\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": "cd21322616c3af265d39bf15321d436e667a5dd1",
      "tree": "2e293b838191785a0ecf3b19f204731c73589139",
      "parents": [
        "b4df2030858bde986cb6ff2e4b45945f84649e32"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Aug 19 22:16:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:59 2008 -0400"
      },
      "message": "ext4: Fix delalloc release block reservation for truncate\n\nExt4 will release the reserved blocks for delayed allocations when\ninode is truncated/unlinked.  If there is no reserved block at all, we\nshouldn\u0027t need to do so.  But current code still tries to release the\nreserved blocks regardless whether the counters\u0027s value is 0.\nContinue to do that causes the later calculation to go wrong and a\nkernel BUG_ON() caught that. This doesn\u0027t happen for extent-based\nfiles, as the calculation for 0 reserved blocks was right for extent\nbased file.\n\nThis patch fixed the kernel BUG() due to above reason.  It adds checks\nfor 0 to avoid unnecessary release and fix calculation for non-extent\nfiles.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b4df2030858bde986cb6ff2e4b45945f84649e32",
      "tree": "3f078df884f234383c6708ddc54695700f270417",
      "parents": [
        "bf068ee266f9dbaa6dacb8433a366bb399e7ae5b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 13 21:44:34 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 13 21:44:34 2008 -0400"
      },
      "message": "ext4: Fix potential truncate BUG due to i_prealloc_list being non-empty\n\nWe need to call ext4_discard_reservation() earlier in ext4_truncate(),\nto avoid a BUG() in ext4_mb_return_to_preallocation(), which is called\n(ultimately) by ext4_free_blocks().  So we must ditch the blocks on\ni_prealloc_list before we start freeing the data blocks.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bf068ee266f9dbaa6dacb8433a366bb399e7ae5b",
      "tree": "dbbf7b4b8a65fd74bdb478bd62e94e5a79f41041",
      "parents": [
        "30a2f3c60a84092c8084dfe788b710f8d0768cd4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Aug 19 22:16:43 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 19 22:16:43 2008 -0400"
      },
      "message": "ext4: Handle unwritten extent properly with delayed allocation\n\nWhen using fallocate the buffer_heads are marked unwritten and unmapped.\nWe need to map them in the writepages after a get_block.  Otherwise we\nsplit the uninit extents, but never write the content to disk.\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": "7d55992d60caa390460bad1a974eb2b3c11538f4",
      "tree": "587447550232932e083074eaf6f486bfba27fcf8",
      "parents": [
        "00b32b7fb671e797bdd2736524a497f18a8df7bf"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sat Aug 02 21:22:18 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 02 21:22:18 2008 -0400"
      },
      "message": "ext4: remove write-only variables from ext4_ordered_write_end\n\nThe variables \u0027from\u0027 and \u0027to\u0027 are not used anywhere.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "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": "12219aea6b944e36795267be31d43f9c484841be",
      "tree": "0a9970929358fc8f0105334f2969888ecdf894e6",
      "parents": [
        "34071da71a665d8c81e3b3467c9a2e7c56386fec"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Jul 17 16:12:08 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 17 16:12:08 2008 -0400"
      },
      "message": "ext4: Cleanup the block reservation code path\n\nThe truncate patch should not use the i_allocated_meta_blocks\nvalue. So add seperate functions to be used in the truncate\nand alloc path. We also need to release the meta-data block\nthat we reserved for the blocks that we are truncating.\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\n"
    },
    {
      "commit": "bc965ab3f2b4b7bb898b11d61d25295c2053b8ac",
      "tree": "7f8cbd4e5d9c2a4e63fb35d5444f77bfb667c00f",
      "parents": [
        "0123c93998511978556b03d2bb023af92aa24d55"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 02 21:10:38 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 02 21:10:38 2008 -0400"
      },
      "message": "ext4: Fix lack of credits BUG() when deleting a badly fragmented inode\n\nThe extents codepath for ext4_truncate() requests journal transaction\ncredits in very small chunks, requesting only what is needed.  This\nmeans there may not be enough credits left on the transaction handle\nafter ext4_truncate() returns and then when ext4_delete_inode() tries\nfinish up its work, it may not have enough transaction credits,\ncausing a BUG() oops in the jbd2 core.\n\nAlso, reserve an extra 2 blocks when starting an ext4_delete_inode()\nsince we need to update the inode bitmap, as well as update the\norphaned inode linked list.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d5a0d4f732af3438e592efab4cb80076d1dd81b5",
      "tree": "f156408767d8f59ecf991b3f71b51531c04d8f06",
      "parents": [
        "e9e34f4e8f42177c66754fec1edfd35e70c18f99"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sat Aug 02 18:51:06 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 02 18:51:06 2008 -0400"
      },
      "message": "ext4: fix ext4_da_write_begin error path\n\next4_da_write_begin needs to call journal_stop before returning,\nif the page allocation fails.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9c83a923c67df311c467ec956009f0eb4019195d",
      "tree": "fbe6cbcfae2406ebbd842859ae445aa6f59276b6",
      "parents": [
        "6be2ded1d7c51b39144b9f07d2c839e1bd8707f1"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Sat Jul 26 16:39:26 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jul 26 16:39:26 2008 -0400"
      },
      "message": "ext4: don\u0027t read inode block if the buffer has a write error\n\nA transient I/O error can corrupt inode data.  Here is the scenario:\n\n(1) update inode_A at the block_B\n(2) pdflush writes out new inode_A to the filesystem, but it results\n    in write I/O error, at this point, BH_Uptodate flag of the buffer\n    for block_B is cleared and BH_Write_EIO is set\n(3) create new inode_C which located at block_B, and\n    __ext4_get_inode_loc() tries to read on-disk block_B because the\n    buffer is not uptodate\n(4) if it can read on-disk block_B successfully, inode_A is\n    overwritten by old data\n\nThis patch makes __ext4_get_inode_loc() not read the inode block if the\nbuffer has BH_Write_EIO flag.  In this case, the buffer should have the\nlatest information, so setting the uptodate flag to the buffer (this\navoids WARN_ON_ONCE() in mark_buffer_dirty().)\n\nAccording to this change, we would need to test BH_Write_EIO flag for the\nerror checking.  Currently nobody checks write I/O errors on metadata\nbuffers, but it will be done in other patches I\u0027m working on.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: sugita \u003cyumiko.sugita.yf@hitachi.com\u003e\nCc: Satoshi OSHIMA \u003csatoshi.oshima.fk@hitachi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8ab22b9abb5c55413802e4adc9aa6223324547c3",
      "tree": "cff3319e1275e8a7c083d492889ec6bd0c7712d3",
      "parents": [
        "d84a52f62f6a396ed77aa0052da74ca9e760b28a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Mon Jul 28 15:46:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "vfs: pagecache usage optimization for pagesize!\u003dblocksize\n\nWhen we read some part of a file through pagecache, if there is a\npagecache of corresponding index but this page is not uptodate, read IO\nis issued and this page will be uptodate.\n\nI think this is good for pagesize \u003d\u003d blocksize environment but there is\nroom for improvement on pagesize !\u003d blocksize environment.  Because in\nthis case a page can have multiple buffers and even if a page is not\nuptodate, some buffers can be uptodate.\n\nSo I suggest that when all buffers which correspond to a part of a file\nthat we want to read are uptodate, use this pagecache and copy data from\nthis pagecache to user buffer even if a page is not uptodate.  This can\nreduce read IO and improve system throughput.\n\nI wrote a benchmark program and got result number with this program.\n\nThis benchmark do:\n\n  1: mount and open a test file.\n\n  2: create a 512MB file.\n\n  3: close a file and umount.\n\n  4: mount and again open a test file.\n\n  5: pwrite randomly 300000 times on a test file.  offset is aligned\n     by IO size(1024bytes).\n\n  6: measure time of preading randomly 100000 times on a test file.\n\nThe result was:\n\t2.6.26\n        330 sec\n\n\t2.6.26-patched\n        226 sec\n\nArch:i386\nFilesystem:ext3\nBlocksize:1024 bytes\nMemory: 1GB\n\nOn ext3/4, a file is written through buffer/block.  So random read/write\nmixed workloads or random read after random write workloads are optimized\nwith this patch under pagesize !\u003d blocksize environment.  This test result\nshowed this.\n\nThe benchmark program is as follows:\n\n#include \u003cstdio.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003ctime.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/mount.h\u003e\n\n#define LEN 1024\n#define LOOP 1024*512 /* 512MB */\n\nmain(void)\n{\n\tunsigned long i, offset, filesize;\n\tint fd;\n\tchar buf[LEN];\n\ttime_t t1, t2;\n\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tmemset(buf, 0, LEN);\n\tfd \u003d open(\"/root/test1/testfile\", O_CREAT|O_RDWR|O_TRUNC);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\tfor (i \u003d 0; i \u003c LOOP; i++)\n\t\twrite(fd, buf, LEN);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tfd \u003d open(\"/root/test1/testfile\", O_RDWR);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\n\tfilesize \u003d LEN * LOOP;\n\tfor (i \u003d 0; i \u003c 300000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpwrite(fd, buf, LEN, offset);\n\t}\n\tprintf(\"start test\\n\");\n\ttime(\u0026t1);\n\tfor (i \u003d 0; i \u003c 100000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpread(fd, buf, LEN, offset);\n\t}\n\ttime(\u0026t2);\n\tprintf(\"%ld sec\\n\", t2-t1);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n}\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e3398a08d6e516675d5af853d625dc7dd90eab1",
      "tree": "d8a37dbaea105cd36e02827b057a0f9fcad62adc",
      "parents": [
        "632eaeab1feb5d78c1e2bfb1d2dfc0ebb8ac187f"
      ],
      "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: delayed allocation i_blocks fix for stat\n\nRight now i_blocks is not getting updated until the blocks are actually\nallocaed on disk.  This means with delayed allocation, right after files\nare copied, \"ls -sF\" shoes the file as taking 0 blocks on disk.  \"du\"\nalso shows the files taking zero space, which is highly confusing to the\nuser.\n\nSince delayed allocation already keeps track of per-inode total\nnumber of blocks that are subject to delayed allocation, this patch fix\nthis by using that to adjust the value returned by stat(2). When real\nblock allocation is done, the i_blocks will get updated. Since the\nreserved blocks for delayed allocation will be decreased, this will be\nkeep value returned by stat(2) consistent.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "632eaeab1feb5d78c1e2bfb1d2dfc0ebb8ac187f",
      "tree": "f20c438da1e05dccc4c70083c635a20da139e116",
      "parents": [
        "f0e6c98593eb8a77edb7dd0edb22bb9f9368c567"
      ],
      "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: fix delalloc i_disksize early update issue\n\nExt4_da_write_end() used walk_page_buffers() with a callback function of\next4_bh_unmapped_or_delay() to check if it extended the file size\nwithout allocating any blocks (since in this case i_disksize needs to be\nupdated).  However, this is didn\u0027t work proprely because the buffer head\nhas not been marked dirty yet --- this is done later in\nblock_commit_write() --- which caused ext4_bh_unmapped_or_delay() to\nalways return false.\n\nIn addition, walk_page_buffers() checks all of the buffer heads covering\nthe page, and the only buffer_head that should be checked is the one\ncovering the end of the write.  Otherwise, given a 1k blocksize\nfilesystem and a 4k page size, the buffer head covering the first 1k\nstripe of the file could be unmapped (because it was a sparse file), and\nthe second or third buffer_head covering that page could be mapped, and\nusing walk_page_buffers() would fail in this case since it would stop at\nthe first unmapped buffer_head and return true.\n\nThe core problem is that walk_page_buffers() was intended to do work in\na callback function, and a non-zero return value indicated a failure,\nwhich termined the walk of the buffer heads covering the page.  It was\nnot intended to be used with a boolean function, such as\next4_bh_unmapped_or_delay().\n\nAdd addtional fix from Aneesh to protect i_disksize update rave with truncate.\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: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f0e6c98593eb8a77edb7dd0edb22bb9f9368c567",
      "tree": "07c588e757d533988d230f43d9c794dbc4a58977",
      "parents": [
        "cd1aac32923a9c8adcc0ae85e33c1ca0c5855838"
      ],
      "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: Handle page without buffers in ext4_*_writepage()\n\nIt can happen that buffers are removed from the page before it gets\nmarked dirty and then is passed to writepage().  In writepage() we just\ninitialize the buffers and check whether they are mapped and non\ndelay. If they are mapped and non delay we write the page. Otherwise we\nmark them dirty.  With this change we don\u0027t do block allocation at all\nin ext4_*_write_page.\n\nwritepage() can get called under many condition and with a locking order\nof journal_start -\u003e lock_page, we should not try to allocate blocks in\nwritepage() which get called after taking page lock.  writepage() can\nget called via shrink_page_list even with a journal handle which was\ncreated for doing inode update.  For example when doing\next4_da_write_begin we create a journal handle with credit 1 expecting a\ni_disksize update for the inode. But ext4_da_write_begin can cause\nshrink_page_list via _grab_page_cache. So having a valid handle via\next4_journal_current_handle is not a guarantee that we can use the\nhandle for block allocation in writepage, since we shouldn\u0027t be using\ncredits that had been reserved for other updates.  That it could result\nin we running out of credits when we update inodes.\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": "cd1aac32923a9c8adcc0ae85e33c1ca0c5855838",
      "tree": "3d55d9249ef960a7e345969404d537e36dbd9609",
      "parents": [
        "61628a3f3a37af2bf25daf8e26fd6b76a78c4f76"
      ],
      "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: Add ordered mode support for delalloc\n\nThis provides a new ordered mode implementation which gets rid of using\nbuffer heads to enforce the ordering between metadata change with the\nrelated data chage.  Instead, in the new ordering mode, it keeps track\nof all of the inodes touched by each transaction on a list, and when\nthat transaction is committed, it flushes all of the dirty pages for\nthose inodes.  In addition, the new ordered mode reverses the lock\nordering of the page lock and transaction lock, which provides easier\nsupport for delayed allocation.\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": "64769240bd07f446f83660bb143bb609d8ab4910",
      "tree": "db8bd8dda988adab6b4f6087a9b59ce504612009",
      "parents": [
        "29a814d2ee0e43c2980f33f91c1311ec06c0aa35"
      ],
      "author": {
        "name": "Alex Tomas",
        "email": "alex@clusterfs.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: Add delayed allocation support in data\u003dwriteback mode\n\nUpdated with fixes from Mingming Cao \u003ccmm@us.ibm.com\u003e to unlock and\nrelease the page from page cache if the delalloc write_begin failed, and\nproperly handle preallocated blocks.  Also added a fix to clear\nbuffer_delay in block_write_full_page() after allocating a delayed\nbuffer.\n\nUpdated with fixes from Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nto update i_disksize properly and to add bmap support for delayed\nallocation.\n\nUpdated with a fix from Valerie Clement \u003cvalerie.clement@bull.net\u003e to\navoid filesystem corruption when the filesystem is mounted with the\ndelalloc option and blocksize \u003c pagesize.\n\nSigned-off-by: Alex Tomas \u003calex@clusterfs.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by:  Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "678aaf481496b01473b778685eca231d6784098b",
      "tree": "298fa039e4910a0ead3cdfb814af167f378391bc",
      "parents": [
        "c851ed540173736e60d48b53b91a16ea5c903896"
      ],
      "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: Use new framework for data\u003dordered mode in JBD2\n\nThis patch makes ext4 use inode-based implementation of data\u003dordered mode\nin JBD2. It allows us to unify some data\u003dordered and data\u003dwriteback paths\n(especially writepage since we don\u0027t have to start a transaction anymore)\nand remove some buffer walking.\n\nUpdated fix from Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nto fix file system hang due to corrupt jinode values.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\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": "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": "2e9ee850355593e311d9a26542290fe51e152f74",
      "tree": "e860a33119edf36e367ad354428dfc0d6201273c",
      "parents": [
        "93e3270c87549dc531a0b0e5d06362d998d810cb"
      ],
      "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 page_mkwrite vma_operations to get mmap write notification.\n\nWe would like to get notified when we are doing a write on mmap section.\nThis is needed with respect to preallocated area. We split the preallocated\narea into initialzed extent and uninitialzed extent in the call back. This\nlet us handle ENOSPC better. Otherwise we get ENOSPC in the writepage and\nthat would result in data loss. The changes are also needed to handle ENOSPC\nwhen writing to an mmap section of files with holes.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\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": "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": "71dc8fbcf5f6363342bd636a646eeac7cfef25c3",
      "tree": "e878c1c7e24115ac63d93976f4382280db006ae7",
      "parents": [
        "91ef4caf800030fa6e5224b8a41f8c74787b303d"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.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: handle deleting corrupted indirect blocks\n\nWhile freeing indirect blocks we attach a journal head to the parent buffer\nhead, free the blocks, then journal the parent. If the indirect block list\nis corrupted and points to the parent the journal head will be detached\nwhen the block is cleared, causing an OOPS.\n\nCheck for that explicitly and handle it gracefully.\n\nThis patch fixes the third case (image hdb.20000057.nullderef.gz)\nreported in http://bugzilla.kernel.org/show_bug.cgi?id\u003d10882.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "91ef4caf800030fa6e5224b8a41f8c74787b303d",
      "tree": "f0c058b50ac2eb9058aa8b077b2da733f8c3ee02",
      "parents": [
        "bce7f793daec3e65ec5c5705d2457b81fe7b5725"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.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: handle corrupted orphan list at mount\n\nIf the orphan node list includes valid, untruncatable nodes with nlink \u003e 0\nthe ext4_orphan_cleanup loop which attempts to delete them will not do so,\ncausing it to loop forever. Fix by checking for such nodes in the\next4_orphan_get function.\n\nThis patch fixes the second case (image hdb.20000009.softlockup.gz)\nreported in http://bugzilla.kernel.org/show_bug.cgi?id\u003d10882.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "f8a87d89304c1eea8e4a8dc02d134f57590913c6",
      "tree": "9d1e5179573a77259c13161a245f7a761e4a5091",
      "parents": [
        "7c2f3d6f89aab04c5c66a0a757888d3a77a5e899"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "12o3l@tiscali.nl",
        "time": "Tue Apr 29 22:01:18 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 29 22:01:18 2008 -0400"
      },
      "message": "ext4: fix test ext_generic_write_end() copied return value\n\n\u0027copied\u0027 is unsigned, whereas \u0027ret2\u0027 is not. The test (copied \u003c 0) fails\n\nSigned-off-by: Roel Kluin \u003c12o3l@tiscali.nl\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3dcf54515aa4981a647ad74859199032965193a5",
      "tree": "b95d895bb2f6fa15be29411b15d538c21b0de930",
      "parents": [
        "216553c4b7f3e3e2beb4981cddca9b2027523928"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 29 18:13:32 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 29 18:13:32 2008 -0400"
      },
      "message": "ext4: move headers out of include/linux\n\nMove ext4 headers out of include/linux.  This is just the trivial move,\nthere\u0027s some more thing that could be done later. \n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "46e665e9d297525d286989640cf4247cbe941df6",
      "tree": "4858cd21e48cab2b2c51839dd80378f6044d3394",
      "parents": [
        "620de4e19890c623eb4ba293ec19b42e2e391b89"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "ext4: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c0a4ef38ac90d9053fcf3e22f81520a507c1a7bd",
      "tree": "d8747f48d70272d3834bf947c3b41e6abeb922c0",
      "parents": [
        "d00a6d7b40b44ee6b03f492a6c58f5bc4649c784"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "ext4: use ext4_get_group_desc()\n\nUse ext4_get_group_desc() in ext4_get_inode_block() instead of open\ncoding the functionality.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Stephen Tweedie \u003csct@redhat.com\u003e\nCc: adilger@clusterfs.com\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "267e4db9ac28a09973476e7ec2cb6807e609d35a",
      "tree": "54eae44c7c0086800901866424ef1526e0ce863e",
      "parents": [
        "3977c965ec35ce1a7eac988ad313f0fc9aee9660"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Apr 29 08:11:12 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 29 08:11:12 2008 -0400"
      },
      "message": "ext4: Fix race between migration and mmap write\n\nFail migrate if we allocated new blocks via mmap write.\n\nIf we write to holes in the file via mmap, we end up allocating\nnew blocks. This block allocation happens without taking inode-\u003ei_mutex.\nSince migrate is protected by i_mutex and migrate expects that no\nnew blocks get allocated during migrate, fail migrate if new blocks\nget allocated.\n\nWe can\u0027t take inode-\u003ei_mutex in the mmap write path because that\nwould result in a locking order violation between i_mutex and mmap_sem.\nAlso adding a separate rw_sempahore for protection is really high overhead\nfor a rare operation such as migrate.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1cc8dcf569a3fcefb7ae32652225f2bd3e85257e",
      "tree": "23e065de096ab6cf044458967bea5baa6a98cff0",
      "parents": [
        "c0d1f29534f2bd6c5992831eb0f648522e9b0204"
      ],
      "author": {
        "name": "Benoit Boissinot",
        "email": "benoit.boissinot@ens-lyon.org",
        "time": "Mon Apr 21 22:45:55 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:45:55 2008 +0000"
      },
      "message": "ext*: spelling fix prefered -\u003e preferred\n\nSpelling fix: prefered -\u003e preferred\n\nSigned-off-by: Benoit Boissinot \u003cbenoit.boissinot@ens-lyon.org\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "f5ab0d1f8f7df937778c60c3da6f4ef939a54a7b",
      "tree": "9a5b63d45dc805383f7789bba75f7935626767fe",
      "parents": [
        "825f1481ead4ce40671089bae7412ac3519e8caa"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Feb 25 15:29:55 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 25 15:29:55 2008 -0500"
      },
      "message": "ext4: Fix BUG when writing to an unitialized extent\n\nThis patch fixes a bug when writing to preallocated but uninitialized\nblocks, which resulted in a BUG in fs/buffer.c saying that the buffer\nis not mapped.\n\nWhen writing to a file, ext4_get_block_wrap() is called with create\u003d1 in\norder to request that blocks be allocated if necessary.  It currently\ncalls ext4_get_blocks() with create\u003d0 in order to do a lookup first.  If\nthe inode contains an unitialized data block, the buffer head is left\nunampped, which ext4_get_blocks_wrap() returns, causing the BUG.\n\nWe fix this by checking to see if the buffer head is unmapped, and if\nso, we make sure the the buffer head is mapped by calling\next4_ext_get_blocks with create\u003d1.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "74d3487fc8aa58cec16dff7239dea1ca59bdab0e",
      "tree": "e7f2e3b107bc7ff98ae4a02d0deb44809ae53394",
      "parents": [
        "e56eb6590693a5a340e8f596db2768a6e1b9e236"
      ],
      "author": {
        "name": "Valerie Clement",
        "email": "valerie.clement@bull.net",
        "time": "Fri Feb 15 13:43:07 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 15 13:43:07 2008 -0500"
      },
      "message": "ext4: modify block allocation algorithm for the last group\n\nWhen a directory inode is allocated in the last group and the last group\ncontains less than s_blocks_per_group blocks, the initial block allocated\nfor the directory is not always allocated in the same group as the\ndirectory inode, but in one of the first groups of the filesystem (group 1\nfor example).\nDepending on the current process\u0027s pid, ext4_find_near() and \next4_ext_find_goal() can return a block number greater than the maximum\nblocks count in the filesystem and in that case the block will be not\nallocated in the same group as the inode.\n\nThe following patch fixes the problem.\n\nShould the modification also be done in ext2/3 code?\n\nSigned-off-by: Valerie Clement \u003cvalerie.clement@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"
    },
    {
      "commit": "642be6ec218b956fbae88304449720f76ba0d578",
      "tree": "ac72e5bcddf63a6e3b9fbdaaa84cd993a64c1094",
      "parents": [
        "bfa274e2436fc7ef72ef51c878083647f1cfd429"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Feb 25 17:20:46 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 25 17:20:46 2008 -0500"
      },
      "message": "Remove incorrect BKL comments in ext4\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "7fb5409df092589b86cc9412d926879cb572b7f0",
      "tree": "8201f2fc124d34098776799f8cec89a8f8b4f8bb",
      "parents": [
        "8009f9fb3067fef6c2ca0c16f6bac786ae28639d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Feb 10 01:08:38 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 10 01:08:38 2008 -0500"
      },
      "message": "ext4: Fix Direct I/O locking\n\nWe cannot start transaction in ext4_direct_IO() and just let it last\nduring the whole write because dio_get_page() acquires mmap_sem which\nranks above transaction start (e.g. because we have dependency chain\nmmap_sem-\u003ePageLock-\u003ejournal_start, or because we update atime while\nholding mmap_sem) and thus deadlocks could happen. We solve the problem\nby starting a transaction separately for each ext4_get_block() call.\n\nWe *could* have a problem that we allocate a block and before its data\nare written out the machine crashes and thus we expose stale data. But\nthat does not happen because for hole-filling generic code falls back to\nbuffered writes and for file extension, we add inode to orphan list and\nthus in case of crash, journal replay will truncate inode back to the\noriginal size.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "0040d9875dcccfcb2131417b10fbd9841bc5f05b",
      "tree": "1480723c649906ec01c4b3c7ee7e2b667324665a",
      "parents": [
        "42a10add852e6291a7544afd8a286622a3e6ae76"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Feb 05 22:36:43 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 05 22:36:43 2008 -0500"
      },
      "message": "allow in-inode EAs on ext4 root inode\n\nThe ext3 root inode was treated specially with respect\nto in-inode extended attributes, for reasons detailed\nin the removed comment below.  The first mkfs-created\ninodes would not get extra_i_size or the EXT3_STATE_XATTR\nflag set in ext3_read_inode, which disallowed reading or\nsetting in-inode EAs on the root.\n\nHowever, in ext4, ext4_mark_inode_dirty calls\next4_expand_extra_isize for all inodes; once this is done\nEAs may be placed in the root ext4 inode body.\n\nBut for reasons above, it won\u0027t be found after a reboot.\n\ntestcase:\n\nsetfattr -n user.name -v value mntpt/\nsetfattr -n user.name2 -v value2 mntpt/\numount mntpt/; remount mntpt/\ngetfattr -d mntpt/\n\nname2/value2 has gone missing; debugfs shows it in the\ninode body, but it is not found there by getattr.\n\nThe following fixes it up; newer mkfs appears to properly\nzero the inodes, so this workaround isn\u0027t needed for ext4.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "1d1fe1ee02b9ac2660995b10e35dd41448fef011",
      "tree": "8961bbe5a36a07dc8ad8c6cd3e973ce0fcde5850",
      "parents": [
        "473043dcee1874aab99f66b0362b344618eb3790"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 07 00:15:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:27 2008 -0800"
      },
      "message": "iget: stop EXT4 from using iget() and read_inode()\n\nStop the EXT4 filesystem from using iget() and read_inode().  Replace\next4_read_inode() with ext4_iget(), and call that instead of iget().\next4_iget() then uses iget_locked() directly and returns a proper error code\ninstead of an inode in the event of an error.\n\next4_fill_super() returns any error incurred when getting the root inode\ninstead of EINVAL.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fb01bfdac733f1925561eea52c60072f2fbcdc97",
      "tree": "92e95b0dd90b99f447d14f0598b398cc2eee9d42",
      "parents": [
        "197cd65accc6a274dabcd81f4811ba5d9a4856df"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Feb 06 01:40:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:21 2008 -0800"
      },
      "message": "ext[234]: remove unused argument for ext[234]_find_goal()\n\nThe argument chain for ext[234]_find_goal() is not used.  This patch removes\nit and fixes comment as well.\n\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9de560ded61faa5b754137b7753da252391c55a",
      "tree": "2c4311377c4aa72450e27f531e198fe3e1c67db0",
      "parents": [
        "1988b51e476bd097d910c9245b53f2e38aedaf0d"
      ],
      "author": {
        "name": "Alex Tomas",
        "email": "alex@clusterfs.com",
        "time": "Tue Jan 29 00:19:52 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 29 00:19:52 2008 -0500"
      },
      "message": "ext4: Add multi block allocator for ext4\n\nSigned-off-by: Alex Tomas \u003calex@clusterfs.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "25ec56b518257a56d2ff41a941d288e4b5ff9488",
      "tree": "77e84d38a5ad242f9d73a006f009649f223378f1",
      "parents": [
        "7a224228ed79d587ece2304869000aad1b8e97dd"
      ],
      "author": {
        "name": "Jean Noel Cordenner",
        "email": "jean-noel.cordenner@bull.net",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Add inode version support in ext4\n\nThis patch adds 64-bit inode version support to ext4. The lower 32 bits\nare stored in the osd1.linux1.l_i_version field while the high 32 bits\nare stored in the i_version_hi field newly created in the ext4_inode.\nThis field is incremented in case the ext4_inode is large enough. A\ni_version mount option has been added to enable the feature.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Kalpak Shah \u003ckalpak@clusterfs.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Jean Noel Cordenner \u003cjean-noel.cordenner@bull.net\u003e\n"
    },
    {
      "commit": "4df3d265bf8f3762e1d77f554ee279c39dedb020",
      "tree": "35d455ac6592750450d9173125b1e5b9b5efe819",
      "parents": [
        "0e855ac8b103ef579052936b59fe7c599ac422a4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:29 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:29 2008 -0500"
      },
      "message": "ext4: Take read lock during overwrite case.\n\nWhen we are overwriting a file and not actually allocating new file system\nblocks we need to take only the read lock on i_data_sem.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0e855ac8b103ef579052936b59fe7c599ac422a4",
      "tree": "ec29f82e1d7bb1987dcadc00497daf69d6955483",
      "parents": [
        "c278bfecebfb1ed67c326ef472660878baa745cd"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:26 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:26 2008 -0500"
      },
      "message": "ext4: Convert truncate_mutex to read write semaphore.\n\nWe are currently taking the truncate_mutex for every read. This would have\nperformance impact on large CPU configuration. Convert the lock to read write\nsemaphore and take read lock when we are trying to read the file.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c278bfecebfb1ed67c326ef472660878baa745cd",
      "tree": "7207594cef5bd04ea7333a8321d78aefee01a540",
      "parents": [
        "01f4adc04480a4e0395906d0268c056cf09c39c0"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Make ext4_get_blocks_wrap take the truncate_mutex early.\n\nWhen doing a migrate from ext3 to ext4 inode we need to make sure the test\nfor inode type and walking inode data happens inside  lock. To make this\nhappen move truncate_mutex early before checking the i_flags.\n\n\nThis actually should enable us to remove the verify_chain().\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "e2b4657453c0d5571bd3c7256585c486ed42d364",
      "tree": "5b8ab501cdf5fa7427ef32440ace56eac72e9ecf",
      "parents": [
        "19295529db35381d46dbaf246f69b4e3b3393996"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: store maxbytes for bitmapped  files and return EFBIG as appropriate\n\nCalculate \u0026 store the max offset for bitmapped files, and\ncatch too-large seeks, truncates, and writes in ext4, shortening\nor rejecting as appropriate.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "8180a5627d126362c2f64e4fa886d6f608d9632a",
      "tree": "1b3a3261f72f8245afdd87088703641c76f60392",
      "parents": [
        "0fc1b451471dfc3cabd6e99ef441df9804616e63"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Support large files\n\nThis patch converts ext4_inode i_blocks to represent total\nblocks occupied by the inode in file system block size.\nEarlier the variable used to represent this in 512 byte\nblock size. This actually limited the total size of the file.\n\nThe feature is enabled transparently when we write an inode\nwhose i_blocks cannot be represnted as 512 byte units in a\n48 bit variable.\n\ninode flag  EXT4_HUGE_FILE_FL\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0fc1b451471dfc3cabd6e99ef441df9804616e63",
      "tree": "b018b6ddc5bb5f02b985b06c11f0c01adb38167a",
      "parents": [
        "a48380f769dfed6163fb82a68b13bd562ea1e027"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:26 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:26 2008 -0500"
      },
      "message": "ext4: Add support for 48 bit inode i_blocks.\n\nUse the __le16 l_i_reserved1 field of the linux2 struct of ext4_inode\nto represet the higher 16 bits for i_blocks. With this change max_file\nsize becomes (2**48 -1 )* 512 bytes.\n\nWe add a RO_COMPAT feature to the super block to indicate that inode\nhave i_blocks represented as a split 48 bits. Super block with this\nfeature set cannot be mounted read write on a kernel with CONFIG_LSF\ndisabled.\n\nSuper block flag EXT4_FEATURE_RO_COMPAT_HUGE_FILE\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a48380f769dfed6163fb82a68b13bd562ea1e027",
      "tree": "2c898479122b3da5c9531aba4b3629c3e6ecfe9f",
      "parents": [
        "7973c0c19ecba92f113488045005f8e7ce1cd7c8"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Rename i_dir_acl to i_size_high\n\nRename ext4_inode.i_dir_acl to i_size_high\ndrop ext4_inode_info.i_dir_acl as it is not used\nRename ext4_inode.i_size to ext4_inode.i_size_lo\nAdd helper function for accessing the ext4_inode combined i_size.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7973c0c19ecba92f113488045005f8e7ce1cd7c8",
      "tree": "c02d6f963d53b362265715c74b8189aef29ae808",
      "parents": [
        "1d03ec984ca41ba184822d1101babb3fa3e26c77"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Rename i_file_acl to i_file_acl_lo\n\nRename i_file_acl to i_file_acl_lo. This helps\nin finding bugs where we use i_file_acl instead\nof the combined i_file_acl_lo and i_file_acl_high\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1d03ec984ca41ba184822d1101babb3fa3e26c77",
      "tree": "6265c324e4c381d4324c69e1692fe6e6dc44cbbc",
      "parents": [
        "99e6f829a854daa6d56006cad51156e98863e73a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4:  Fix sparse warnings.\n\nFix sparse warnings related to static functions\nand local variables.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fd2d42912f9f09e5250cb3b024ee0625704e9cb7",
      "tree": "23e85123e8cc06d518fd7cff665f93429e19e4e2",
      "parents": [
        "bba907433b85ba2adae1bb3b6fd29b4e5f35c468"
      ],
      "author": {
        "name": "Avantika Mathur",
        "email": "mathur@us.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: add ext4_group_t, and change all group variables to this type.\n\nIn many places variables for block group are of type int, which limits the\nmaximum number of block groups to 2^31.  Each block group can have up to\n2^15 blocks, with a 4K block size,  and the max filesystem size is limited to\n2^31 * (2^15 * 2^12) \u003d 2^58  -- or 256 PB\n\nThis patch introduces a new type ext4_group_t, of type unsigned long, to\nrepresent block group numbers in ext4.\nAll occurrences of block group variables are converted to type ext4_group_t.\n\nSigned-off-by: Avantika Mathur \u003cmathur@us.ibm.com\u003e\n"
    },
    {
      "commit": "725d26d3f09ccb5bac4b4293096b985a312a0d67",
      "tree": "1c49a07da252832fc6842c88a2359e8cd43af636",
      "parents": [
        "a72d7f834e1afa08421938d7eb06bd8e56b0e58c"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Introduce ext4_lblk_t\n\nThis patch adds a new data type ext4_lblk_t to represent\nthe logical file blocks.\n\nThis is the preparatory patch to support large files in ext4\nThe follow up patch with convert the ext4_inode i_blocks to\nrepresent the number of blocks in file system block size. This\nchanges makes it possible to have a block number 2**32 -1 which\nwill result in overflow if the block number is represented by\nsigned long. This patch convert all the block number to type\next4_lblk_t which is typedef to __u32\n\nAlso remove dead code ext4_ext_walk_space\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: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "ac39849ddc19c0bbb39068497139ac45bccd4321",
      "tree": "b5a6a17f1cd9c98374b91feafcf554bf5197c44d",
      "parents": [
        "d8dd0b45438d62fc4a93d8e3cee9985710d01e40"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:50:03 2007 -0400"
      },
      "message": "ext4: sparse fixes\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "c1bddad9491b3941f7ae27eeee1e4f4822fb3169",
      "tree": "60f5da7d44b8785f49178d2e48fd84cbd8107102",
      "parents": [
        "717d50e4971b81b96c0199c91cdf0039a8cb181a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:50:01 2007 -0400"
      },
      "message": "ext4: Fix sparse warnings\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f077d0d7ea5d65d01f2ce2e7131e964c13a32433",
      "tree": "17022250e65dd332ea6da88e70df7df3f27725dc",
      "parents": [
        "6f38c74f5a01c7bccf58f9d7ee47ea24fb45752f"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:49:59 2007 -0400"
      },
      "message": "ext4: Remove (partial, never completed) fragment support\n\nFragment support in ext2/3/4 was never implemented, and it probably will\nnever be implemented.   So remove it from ext4.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nAcked-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bfc1af650a8f36feba6b90a6c398325f885c00bc",
      "tree": "c7db5bbfad01d2c18533e7a128027e26d1992a42",
      "parents": [
        "f4fc66a894546bdc88a775d0e83ad20a65210bcb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "ext4: convert to new aops\n\nConvert ext4 to use write_begin()/write_end() methods.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dmitriy Monakhov \u003cdmonakhov@sw.ru\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b38bd33a6bf5095736620ca8e85fe61820c2d312",
      "tree": "86ba1d0c28dedc87ced6d1f06c7a80d944650559",
      "parents": [
        "f0a594c1c74fedbd838402e7372030311be8cc6e"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Thu Jul 19 01:48:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:47 2007 -0700"
      },
      "message": "fix ext4/JBD2 build warnings\n\nLooking at the current linus-git tree jbd_debug() define in\ninclude/linux/jbd2.h\n\nextern u8 journal_enable_debug;\n\n#define jbd_debug(n, f, a...)                                           \\\n        do {                                                            \\\n                if ((n) \u003c\u003d journal_enable_debug) {                      \\\n                        printk (KERN_DEBUG \"(%s, %d): %s: \",            \\\n                                __FILE__, __LINE__, __FUNCTION__);      \\\n                        printk (f, ## a);                               \\\n                }                                                       \\\n        } while (0)\n\u003e fs/ext4/inode.c: In function âext4_write_inodeâ:\n\u003e fs/ext4/inode.c:2906: warning: comparison is always true due to limited\n\u003e range of data type\n\u003e\n\u003e fs/jbd2/recovery.c: In function âjbd2_journal_recoverâ:\n\u003e fs/jbd2/recovery.c:254: warning: comparison is always true due to\n\u003e limited range of data type\n\u003e fs/jbd2/recovery.c:257: warning: comparison is always true due to\n\u003e limited range of data type\n\u003e\n\u003e fs/jbd2/recovery.c: In function âjbd2_journal_skip_recoveryâ:\n\u003e fs/jbd2/recovery.c:301: warning: comparison is always true due to\n\u003e limited range of data type\n\u003e\nNoticed all warnings are occurs when the debug level is 0. Then found\nthe \"jbd2: Move jbd2-debug file to debugfs\" patch\nhttp://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003d0f49d5d019afa4e94253bfc92f0daca3badb990b\n\nchanged the jbd2_journal_enable_debug from int type to u8, makes the\njbd_debug comparision is always true when the debugging level is 0. Thus\nthe compile warning occurs.\n\nThought about changing the jbd2_journal_enable_debug data type back to\nint, but can\u0027t, because the jbd2-debug is moved to debug fs, where\ncalling debugfs_create_u8() to create the debugfs entry needs the value\nto be u8 type.\n\nEven if we changed the data type back to int, the code is still buggy,\nkernel should not print jbd2 debug message if the\njbd2_journal_enable_debug is set to 0. But this is not the case.\n\nThe fix is change the level of debugging to 1. The same should fixed in\next3/JBD, but currently ext3 jbd-debug via /proc fs is broken, so we\nprobably should fix it all together.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d699594dc151c664a2b307e680a3cd9b7145fd83",
      "tree": "9b3e50339d09ea5a7786369fda4da6ecf597d4dd",
      "parents": [
        "1330593eb2d055bdd6ed935886cf2c13c896b288"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Wed Jul 18 08:33:51 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 08:33:51 2007 -0400"
      },
      "message": "ext4: remove extra IS_RDONLY() check\n\next4_change_inode_journal_flag() is only called from one location:\next4_ioctl(EXT3_IOC_SETFLAGS).  That ioctl case already has a IS_RDONLY()\ncall in it so this one is superfluous.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fc0e15a667121e02686cc52679f6272959fb60cc",
      "tree": "1390b806b6286166f486e03726de32c47c3811fa",
      "parents": [
        "f8628a14a27eb4512a1ede43de1d9db4d9f92bc3"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jul 18 09:20:44 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 09:20:44 2007 -0400"
      },
      "message": "Use zero_user_page() in ext4 where possible\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "6dd4ee7cab7e3a17c571aebd444f4344c8c4946e",
      "tree": "ee7b36d3a83ea843746ed3c906a9ad778838b9c6",
      "parents": [
        "ef7f38359ea8b3e9c7f2cae9a4d4935f55ca9e80"
      ],
      "author": {
        "name": "Kalpak Shah",
        "email": "kalpak@clusterfs.com",
        "time": "Wed Jul 18 09:19:57 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 09:19:57 2007 -0400"
      },
      "message": "ext4: Expand extra_inodes space per the s_{want,min}_extra_isize fields \n\nWe need to make sure that existing ext3 filesystems can also avail the\nnew fields that have been added to the ext4 inode. We use\ns_want_extra_isize and s_min_extra_isize to decide by how much we should\nexpand the inode. If EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE feature is set\nthen we expand the inode by max(s_want_extra_isize, s_min_extra_isize ,\nsizeof(ext4_inode) - EXT4_GOOD_OLD_INODE_SIZE) bytes. Actually it is\nstill an open question about whether users should be able to set\ns_*_extra_isize smaller than the known fields or not.\n\nThis patch also adds the functionality to expand inodes to include the\nnewly added fields. We start by trying to expand by s_want_extra_isize\nbytes and if its fails we try to expand by s_min_extra_isize bytes. This\nis done by changing the i_extra_isize if enough space is available in\nthe inode and no EAs are present. If EAs are present and there is enough\nspace in the inode then the EAs in the inode are shifted to make space.\nIf enough space is not available in the inode due to the EAs then 1 or\nmore EAs are shifted to the external EA block. In the worst case when\neven the external EA block does not have enough space we inform the user\nthat some EA would need to be deleted or s_min_extra_isize would have to\nbe reduced.\n\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Kalpak Shah \u003ckalpak@clusterfs.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": "ef7f38359ea8b3e9c7f2cae9a4d4935f55ca9e80",
      "tree": "ee34a5821332cf70b89827eb872f08bc0dd43f89",
      "parents": [
        "0f49d5d019afa4e94253bfc92f0daca3badb990b"
      ],
      "author": {
        "name": "Kalpak Shah",
        "email": "kalpak@clusterfs.com",
        "time": "Wed Jul 18 09:15:20 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 09:15:20 2007 -0400"
      },
      "message": "ext4: Add nanosecond timestamps\n\nThis patch adds nanosecond timestamps for ext4. This involves adding\n*time_extra fields to the ext4_inode to extend the timestamps to\n64-bits.  Creation time is also added by this patch.\n\nThese extended fields will fit into an inode if the filesystem was\nformatted with large inodes (-I 256 or larger) and there are currently\nno EAs consuming all of the available space. For new inodes we always\nreserve enough space for the kernel\u0027s known extended fields, but for\ninodes created with an old kernel this might not have been the case. So\nthis patch also adds the EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE feature\nflag(ro-compat so that older kernels can\u0027t create inodes with a smaller\nextra_isize). which indicates if the fields fitting inside\ns_min_extra_isize are available or not.  If the expansion of inodes if\nunsuccessful then this feature will be disabled.  This feature is only\nenabled if requested by the sysadmin.\n\nNone of the extended inode fields is critical for correct filesystem\noperation.\n\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Kalpak Shah \u003ckalpak@clusterfs.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@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": "ff9ddf7e847c4dc533f119efb6c77a6e57ab6397",
      "tree": "fff8ab26370c0e466d96fb99bf3dc566b909a104",
      "parents": [
        "1e2462f93e011f63fd0f1fedd2c05338ca6b31c2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 18 09:24:20 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 09:24:20 2007 -0400"
      },
      "message": "ext4: copy i_flags to inode flags on write\n    \nPropagate flags such as S_APPEND, S_IMMUTABLE, etc. from i_flags into\next4-specific i_flags.  Quota code changes these flags on quota files\n(to make it harder for sysadmin to screw himself) and these changes were\nnot correctly propagated into the filesystem.\n\n(This is a forward port patch from ext3)\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "e5d2861f31474b373ce7754dc5122b414a176c64",
      "tree": "17daf2e4c81af9adc74912fb4cc15a2a16d819ff",
      "parents": [
        "e4a10a362cd1df6c23fe46f449d36b3f712e2824"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Sat Jun 23 17:16:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jun 24 08:59:12 2007 -0700"
      },
      "message": "ext4: lost brelse in ext4_read_inode()\n\nOne of error path in ext4_read_inode() leaks bh since brelse is forgoten.\n\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nAcked-by: Vasily Averin \u003cvvs@sw.ru\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c55e20411c9499c52890a081724a8b71f3dc3a1",
      "tree": "82f1badade34aa5a5461a4ae5141c30a9a64cc66",
      "parents": [
        "54ca4123363f388ab724fc66da92b87dc05395c3"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@austin.ibm.com",
        "time": "Thu May 24 13:04:54 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 16:20:14 2007 -0400"
      },
      "message": "EXT4: Fix whitespace\n\nReplace a lot of spaces with tabs\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90"
}
