)]}'
{
  "log": [
    {
      "commit": "1d5ccd1c422d7d292a9e45248aa36771900c6331",
      "tree": "6fa8e117697dcb42dfec026149dfea49325bed98",
      "parents": [
        "6d848a488ad83cc3891bb274691118f45ce6aab9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 28 12:12:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 11:09:04 2009 -0700"
      },
      "message": "ext[234]: move over to \u0027check_acl\u0027 permission model\n\nDon\u0027t implement per-filesystem \u0027extX_permission()\u0027 functions that have\nto be called for every path component operation, and instead just expose\nthe actual ACL checking so that the VFS layer can now do it for us.\n\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1cf29683f4414296dc772a87caa207cab16c310c",
      "tree": "90d05ba531c5ad48d8d171d5b78038a7df7728e7",
      "parents": [
        "4a390e07fc53ce9dd615d7b788e9ecc73f87ad94",
        "96577c43827697ca1af5982fa256a34786d0c720"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 13 16:39:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 13 16:39:25 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  jbd2: fix race between write_metadata_buffer and get_write_access\n  ext4: Fix ext4_mb_initialize_context() to initialize all fields\n  ext4: fix null handler of ioctls in no journal mode\n  ext4: Fix buffer head reference leak in no-journal mode\n  ext4: Move __ext4_journalled_writepage() to avoid forward declaration\n  ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 !nodellaoc\n  ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 delayed allocation\n  ext4: Don\u0027t look at buffer_heads outside i_size.\n  ext4: Fix goal inum check in the inode allocator\n  ext4: fix no journal corruption with locale-gen\n  ext4: Calculate required journal credits for inserting an extent properly\n  ext4: Fix truncation of symlinks after failed write\n  jbd2: Fix a race between checkpointing code and journal_get_write_access()\n  ext4: Use rcu_barrier() on module unload.\n  ext4: naturally align struct ext4_allocation_request\n  ext4: mark several more functions in mballoc.c as noinline\n  ext4: Fix potential reclaim deadlock when truncating partial block\n  jbd2: Remove GFP_ATOMIC kmalloc from inside spinlock critical region\n  ext4: Fix type warning on 64-bit platforms in tracing events header\n"
    },
    {
      "commit": "833576b362e15c38be3bfe43942cda693e56287c",
      "tree": "5a221bd167ae7f1b0575fd24fbc5e4cdae18a598",
      "parents": [
        "ac046f1d6121ccdda6db66bd88acd52418f489b2"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 09:45:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 09:45:52 2009 -0400"
      },
      "message": "ext4: Fix ext4_mb_initialize_context() to initialize all fields\n\nPavel Roskin pointed out that kmemcheck indicated that\next4_mb_store_history() was accessing uninitialized values of\nac-\u003eac_tail and ac-\u003eac_buddy leading to garbage in the mballoc\nhistory.  Fix this by initializing the entire structure to all zeros\nfirst.\n\nAlso, two fields were getting doubly initialized by the caller of\next4_mb_initialize_context, so remove them for efficiency\u0027s sake.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ac046f1d6121ccdda6db66bd88acd52418f489b2",
      "tree": "3a52ddd6ae7663b0cdd52a9eab059711626ae491",
      "parents": [
        "e6b5d30104db5f34110678ecab14988f1f1eff63"
      ],
      "author": {
        "name": "Peng Tao",
        "email": "bergwolf@gmail.com",
        "time": "Mon Jul 13 09:30:17 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 09:30:17 2009 -0400"
      },
      "message": "ext4: fix null handler of ioctls in no journal mode\n\nThe EXT4_IOC_GROUP_ADD and EXT4_IOC_GROUP_EXTEND ioctls should not\nflush the journal in no_journal mode.  Otherwise, running resize2fs on\na mounted no_journal partition triggers the following error messages:\n\nBUG: unable to handle kernel NULL pointer dereference at 00000014\nIP: [\u003cc039d282\u003e] _spin_lock+0x8/0x19\n*pde \u003d 00000000 \nOops: 0002 [#1] SMP\n\nSigned-off-by: Peng Tao \u003cbergwolf@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6b5d30104db5f34110678ecab14988f1f1eff63",
      "tree": "922408d70d388925f0113998649d56da475deff4",
      "parents": [
        "62e086be5d2abef8cad854bc5707329ad345f2ec"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Mon Jul 13 09:07:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 09:07:20 2009 -0400"
      },
      "message": "ext4: Fix buffer head reference leak in no-journal mode\n\nWe found a problem with buffer head reference leaks when using an ext4\npartition without a journal.  In particular, calls to ext4_forget() would\nnot to a brelse() on the input buffer head, which will cause pages they\nbelong to to not be reclaimable.\n\nFurther investigation showed that all places where ext4_journal_forget() and\next4_journal_revoke() are called are subject to the same problem.  The patch\nbelow changes __ext4_journal_forget/__ext4_journal_revoke to do an explicit\nrelease of the buffer head when the journal handle isn\u0027t valid.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "073aaa1b142461d91f83da66db1184d7c1b1edea",
      "tree": "2b54d185d78f1229418fca521a93e6b55c57248b",
      "parents": [
        "06b16e9f68edaa1e71aee943d3c030bcf7380af1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 09 12:11:54 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:07 2009 -0400"
      },
      "message": "helpers for acl caching + switch to those\n\nhelpers: get_cached_acl(inode, type), set_cached_acl(inode, type, acl),\nforget_cached_acl(inode, type).\n\nubifs/xattr.c needed includes reordered, the rest is a plain switchover.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4bfe2f76d785cc77611a4bda8cedaff358d8c7d",
      "tree": "a8c953fe752afebadb4f0fb4aa3e80dbab934f7f",
      "parents": [
        "6582a0e6f6bc7bf64817b9e1a424782855292ab0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:54:26 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:04 2009 -0400"
      },
      "message": "switch ext4 to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "31583d6acf940d2951bc8716557b06d9de5a0c4b",
      "tree": "607aef385b0998f0cb7ff63b05407afed5182840",
      "parents": [
        "ee37ba7a4212c7420f12e6a2ad8a3966649ede7a",
        "f740f5ca056f0a4eff3abdf272a8a4ba3965d57d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 17:43:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 19 17:43:04 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Fix kernel-doc parameter name typo in blk-settings.c:\n  block: rename CONFIG_LBD to CONFIG_LBDAF\n  block: Fix bounce_pfn setting\n  hd: stop defining MAJOR_NR\n"
    },
    {
      "commit": "90c699a9ee4be165966d40f1837909ccb8890a68",
      "tree": "ff136ce7b73c7d7bbf5eb4241d01cb3b930d3566",
      "parents": [
        "3a02c8e8142f7f133d4c6e72bc3e1d830e6b8b9e"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Fri Jun 19 08:08:50 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 19 08:08:50 2009 +0200"
      },
      "message": "block: rename CONFIG_LBD to CONFIG_LBDAF\n\nFollow-up to \"block: enable by default support for large devices\nand files on 32-bit archs\".\n\nRename CONFIG_LBD to CONFIG_LBDAF to:\n- allow update of existing [def]configs for \"default y\" change\n- reflect that it is used also for large files support nowadays\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "210ad6aedb332e73167ece5af9bd47f0da8c2aca",
      "tree": "29e463655148987f3bce2510d94e36da7dd07176",
      "parents": [
        "9c64daff9d5afb102dfe64a26829e26725538e58"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 08 15:22:25 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 17 00:36:35 2009 -0400"
      },
      "message": "ext4: avoid unnecessary spinlock in critical POSIX ACL path\n\nIf a filesystem supports POSIX ACL\u0027s, the VFS layer expects the filesystem\nto do POSIX ACL checks on any files not owned by the caller, and it does\nthis for every single pathname component that it looks up.\n\nThat obviously can be pretty expensive if the filesystem isn\u0027t careful\nabout it, especially with locking. That\u0027s doubly sad, since the common\ncase tends to be that there are no ACL\u0027s associated with the files in\nquestion.\n\next4 already caches the ACL data so that it doesn\u0027t have to look it up\nover and over again, but it does so by taking the inode-\u003ei_lock spinlock\non every lookup. Which is a noticeable overhead even if it\u0027s a private\nlock, especially on CPU\u0027s where the serialization is expensive (eg Intel\nNetburst aka \u0027P4\u0027).\n\nFor the special case of not actually having any ACL\u0027s, all that locking is\nunnecessary. Even if somebody else were to be changing the ACL\u0027s on\nanother CPU, we simply don\u0027t care - if we\u0027ve seen a NULL ACL, we might as\nwell use it.\n\nSo just load the ACL speculatively without any locking, and if it was\nNULL, just use it. If it\u0027s non-NULL (either because we had a cached\nentry, or because the cache hasn\u0027t been filled in at all), it means that\nwe\u0027ll need to get the lock and re-load it properly.\n\n(This commit was ported from a patch originally authored by Linus for\next3.)\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4159175058987cb68aefd0e9eec2598b795363b4",
      "tree": "452a3ef5f8f2ae4c79095519078383fe766d69ab",
      "parents": [
        "de9a55b841132f7ae097f6e31ccebad2d5030cf5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:41:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:41:23 2009 -0400"
      },
      "message": "ext4: Don\u0027t update ctime for non-extent-mapped inodes\n\nThe VFS handles updating ctime, so we don\u0027t need to update the inode\u0027s\nctime in ext4_splace_branch() to update the direct or indirect blocks.\nThis was harmless when we did this in ext3, but in ext4, thanks to\ndelayed allocation, updating the ctime in ext4_splice_branch() can\ncause the ctime to mysteriously jump when the blocks are finally\nallocated.\n\nThanks to Björn Steinbrink for pointing out this problem on the git\nmailing list.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "62e086be5d2abef8cad854bc5707329ad345f2ec",
      "tree": "1f3ea5daf9325a338585e1368edf78a1d04747df",
      "parents": [
        "43ce1d23b43330634507a049b55c36e91d27282e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:59:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:59:34 2009 -0400"
      },
      "message": "ext4: Move __ext4_journalled_writepage() to avoid forward declaration\n\nIn addition, fix two unused variable warnings.\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": "43ce1d23b43330634507a049b55c36e91d27282e",
      "tree": "d7532d7c0bea60b7bfe29dad51b4b92122acdd5a",
      "parents": [
        "c364b22c9580a885e0f8c0d0f9710d67dc448958"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:58:45 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:58:45 2009 -0400"
      },
      "message": "ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 !nodellaoc\n\nThis patch fixes the mmap/truncate race that was fixed for delayed\nallocation by merging ext4_{journalled,normal,da}_writepage() into\next4_writepage().\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": "c364b22c9580a885e0f8c0d0f9710d67dc448958",
      "tree": "6a714e767afb7d08a648f8e23e4acca414896699",
      "parents": [
        "b767e78a179e5ab30fdbff1686d074ac270471eb"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jun 14 17:57:10 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:57:10 2009 -0400"
      },
      "message": "ext4: Fix mmap/truncate race when blocksize \u003c pagesize \u0026\u0026 delayed allocation\n\nIt is possible to see buffer_heads which are not mapped in the\nwritepage callback in the following scneario (where the fs blocksize\nis 1k and the page size is 4k):\n\n1) truncate(f, 1024)\n2) mmap(f, 0, 4096)\n3) a[0] \u003d \u0027a\u0027\n4) truncate(f, 4096)\n5) writepage(...)\n\nNow if we get a writepage callback immediately after (4) and before an\nattempt to write at any other offset via mmap address (which implies we\nare yet to get a pagefault and do a get_block) what we would have is the\npage which is dirty have first block allocated and the other three\nbuffer_heads unmapped.\n\nIn the above case the writepage should go ahead and try to write the\nfirst blocks and clear the page_dirty flag. Further attempts to write\nto the page will again create a fault and result in allocating blocks\nand marking page dirty.  If we don\u0027t write any other offset via mmap\naddress we would still have written the first block to the disk and\nrest of the space will be considered as a hole.\n\nSo to address this, we change all of the places where we look for\ndelayed, unmapped, or unwritten buffer heads, and only check for\ndelayed or unwritten buffer heads instead.\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": "de9a55b841132f7ae097f6e31ccebad2d5030cf5",
      "tree": "9b66c7c68bff923a62d4c2b04114e22a8fa524e1",
      "parents": [
        "0610b6e99939828b77eec020ead0e1f44cba38ca"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:45:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 14 17:45:34 2009 -0400"
      },
      "message": "ext4: Fix up whitespace issues in fs/ext4/inode.c\n\nThis is a pure cleanup patch.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0610b6e99939828b77eec020ead0e1f44cba38ca",
      "tree": "ede610c64a0456a43618e500c577b35e462f8953",
      "parents": [
        "11013911daea4820147ae6d7094dd7c6894e8651"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:45:05 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 15 03:45:05 2009 -0400"
      },
      "message": "ext4: Fix 64-bit block type problem on 32-bit platforms\n\nThe function ext4_mb_free_blocks() was using an \"unsigned long\" to\npass a block number; this will cause 64-bit block numbers to get\ntruncated on x86 and other 32-bit platforms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "11013911daea4820147ae6d7094dd7c6894e8651",
      "tree": "f8e9f9d2058e0dfc826d4df3d88a7eb18a56b3f3",
      "parents": [
        "f157a4aa98a18bd3817a72bea90d48494e2586e7"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@sun.com",
        "time": "Sat Jun 13 11:45:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:45:35 2009 -0400"
      },
      "message": "ext4: teach the inode allocator to use a goal inode number\n\nEnhance the inode allocator to take a goal inode number as a\nparemeter; if it is specified, it takes precedence over Orlov or\nparent directory inode allocation algorithms.\n\nThe extents migration function uses the goal inode number so that the\nextent trees allocated the migration function use the correct flex_bg.\nIn the future, the goal inode functionality will also be used to\nallocate an adjacent inode for the extended attributes.\n\nAlso, for testing purposes the goal inode number can be specified via\n/sys/fs/{dev}/inode_goal.  This can be useful for testing inode\nallocation beyond 2^32 blocks on very large filesystems.\n\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f157a4aa98a18bd3817a72bea90d48494e2586e7",
      "tree": "105547639a67296b4ea7acdc35c9e65ee2a85fd8",
      "parents": [
        "8a8a2050c844d9de224ff591e91bda3f77bd6eda"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:09:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 11:09:42 2009 -0400"
      },
      "message": "ext4: Use a hash of the topdir directory name for the Orlov parent group\n\nInstead of using a random number to determine the goal parent grop for\nthe Orlov top directories, use a hash of the directory name.  This\nallows for repeatable results when trying to benchmark filesystem\nlayout algorithms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4ab2f15b7f709c3626a7eed075a7225b4c775c7e",
      "tree": "bfefc592c4c2eb176162134c615132e75f810486",
      "parents": [
        "bc0b0d6d69ee9022f18ae264e62beb30ddeb322a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:36 2009 -0400"
      },
      "message": "ext4: move the abort flag from s_mount_opts to s_mount_flags\n\nWe\u0027re running out of space in the mount options word, and\nEXT4_MOUNT_ABORT isn\u0027t really a mount option, but a run-time flag.  So\nmove it to become EXT4_MF_FS_ABORTED in s_mount_flags.\n\nAlso remove bogus ext2_fs.h / ext4.h simultaneous #include protection,\nwhich can never happen.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bc0b0d6d69ee9022f18ae264e62beb30ddeb322a",
      "tree": "fb1d04af657b6de21fa441c1d14fc296f32c723e",
      "parents": [
        "7f4520cc6242780ce720aa440ad4b391f998b558"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:48 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:48 2009 -0400"
      },
      "message": "ext4: update the s_last_mounted field in the superblock\n\nThis field can be very helpful when a system administrator is trying\nto sort through large numbers of block devices or filesystem images.\nWhat is stored in this field can be ambiguous if multiple filesystem\nnamespaces are in play; what we store in practice is the mountpoint\ninterpreted by the process\u0027s namespace which first opens a file in the\nfilesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7f4520cc6242780ce720aa440ad4b391f998b558",
      "tree": "c8f1d99e019f2e29a967851031f4a60bf7ab1467",
      "parents": [
        "748de6736c1e482e111f9d1b5a5d5b1787600cad"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:41 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jun 13 10:09:41 2009 -0400"
      },
      "message": "ext4: change s_mount_opt to be an unsigned int\n\nWe can only fit 32 options in s_mount_opt because an unsigned long is\n32-bits on a x86 machine.  So use an unsigned int to save space on\n64-bit platforms.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "748de6736c1e482e111f9d1b5a5d5b1787600cad",
      "tree": "9e5bd6085cd0eea0453c2a8bbce1422f291f059f",
      "parents": [
        "8b0f9e8f78bd0a65fa001bf18f2c47eef2893a10"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 19:24:03 2009 -0400"
      },
      "message": "ext4: online defrag -- Add EXT4_IOC_MOVE_EXT ioctl\n\nThe EXT4_IOC_MOVE_EXT exchanges the blocks between orig_fd and donor_fd,\nand then write the file data of orig_fd to donor_fd.\next4_mext_move_extent() is the main fucntion of ext4 online defrag,\nand this patch includes all functions related to ext4 online defrag.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "337eb00a2c3a421999c39c94ce7e33545ee8baa7",
      "tree": "d9b780d095b638b1d8fa23841ff70347cf5daa08",
      "parents": [
        "4195f73d1329e49727bcceb028e58cb38376c2b0"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Tue May 12 15:10:54 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:11 2009 -0400"
      },
      "message": "Push BKL down into -\u003eremount_fs()\n\n[xfs, btrfs, capifs, shmem don\u0027t need BKL, exempt]\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebc1ac164560a241d9bf1b7519062910c3f90a01",
      "tree": "db17fd3043b15f8269cce2c2d00213814022fc30",
      "parents": [
        "01ba687577647beef6c5f2ea59bfb56fac9fcde2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon May 11 23:35:03 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:09 2009 -0400"
      },
      "message": "-\u003ewrite_super lock_super pushdown\n\nPush down lock_super into -\u003ewrite_super instances and remove it from the\ncaller.\n\nFollowing filesystem don\u0027t need -\u003es_lock in -\u003ewrite_super and are skipped:\n\n * bfs, nilfs2 - no other uses of s_lock and have internal locks in\n\t-\u003ewrite_super\n * ext2 - uses BKL in ext2_write_super and has internal calls without s_lock\n * reiserfs - no other uses of s_lock as has reiserfs_write_lock (BKL) in\n \t-\u003ewrite_super\n * xfs - no other uses of s_lock and uses internal lock (buffer lock on\n\tsuperblock buffer) to serialize -\u003ewrite_super.  Also xfs_fs_write_super\n\tis superflous and will go away in the next merge window\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbd6851a3213a525128473e978b692ab6ac11aba",
      "tree": "8ebddebadd8992871ab98456187cb00849a82058",
      "parents": [
        "6cfd0148425e528b859b26e436b01f23f6926224"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 10:43:07 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:08 2009 -0400"
      },
      "message": "Push lock_super() into the -\u003eremount_fs() of filesystems that care about it\n\nNote that since we can\u0027t run into contention between remount_fs and write_super\n(due to exclusion on s_umount), we have to care only about filesystems that\ntouch lock_super() on their own.  Out of those ext3, ext4, hpfs, sysv and ufs\ndo need it; fat doesn\u0027t since its -\u003eremount_fs() only accesses assign-once\ndata (basically, it\u0027s \"we have no atime on directories and only have atime on\nfiles for vfat; force nodiratime and possibly noatime into *flags\").\n\n[folded a build fix from hch]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9e220f8322e2b0e0b8903fe00265461cffad3f0",
      "tree": "b3be7d58b8eb9fd810636223f0458191ec1b9d75",
      "parents": [
        "62c6943b4b1e818aea60c11c5a68a50785b83119"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 05 22:10:44 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "No need to do lock_super() for exclusion in generic_shutdown_super()\n\nWe can\u0027t run into contention on it.  All other callers of lock_super()\neither hold s_umount (and we have it exclusive) or hold an active\nreference to superblock in question, which prevents the call of\ngeneric_shutdown_super() while the reference is held.  So we can\nreplace lock_super(s) with get_fs_excl() in generic_shutdown_super()\n(and corresponding change for unlock_super(), of course).\n\nSince ext4 expects s_lock held for its put_super, take lock_super()\ninto it.  The rest of filesystems do not care at all.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c85e125124a473d6f3e9bb187b0b84207f81d91",
      "tree": "d883424a156c00c55193e46567efdffddb6ef6b9",
      "parents": [
        "517bfae28353e996160518add4d00033d3886e61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 28 18:00:26 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "remove -\u003ewrite_super call in generic_shutdown_super\n\nWe just did a full fs writeout using sync_filesystem before, and if\nthat\u0027s not enough for the filesystem it can perform it\u0027s own writeout\nin -\u003eput_super, which many filesystems already do.\n\nMove a call to foofs_write_super into every foofs_put_super for now to\nguarantee identical behaviour until it\u0027s cleaned up by the individual\nfilesystem maintainers.\n\nExceptions:\n\n - affs already has identical copy \u0026 pasted code at the beginning of\n   affs_put_super so no need to do it twice.\n - xfs does the right thing without it and I have changes pending for\n   the xfs tree touching this are so I don\u0027t really need conflicts\n   here..\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "a41f20716975910d9beb90b7efc61107901492b8",
      "tree": "99d3987296660884b998be4d2308d38ca84670a6",
      "parents": [
        "0eab928221bac8895a0b494a16a8810002bd8645"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Jun 10 14:22:55 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 10 14:22:55 2009 -0400"
      },
      "message": "ext4: Avoid corrupting the uninitialized bit in the extent during truncate\n\nThe unitialized bit was not properly getting preserved in in an extent\nwhich is partially truncated because the it was geting set to the\nvalue of the first extent to be removed or truncated as part of the\ntruncate operation, and if there are multiple extents are getting\nremoved or modified as part of the truncate operation, it is only the\nlast extent which will might be partially truncated, and its\nuninitalized bit is not necessarily the same as the first extent to be\ntruncated.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0eab928221bac8895a0b494a16a8810002bd8645",
      "tree": "733ca0ee831fffb3fd2c96b6715250e79e7a24fa",
      "parents": [
        "9aee2286071c23c535fe9928eec1a26e0bcf256d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 09:54:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 09:54:40 2009 -0400"
      },
      "message": "ext4: Don\u0027t treat a truncation of a zero-length file as replace-via-truncate\n\nIf a non-existent file is opened via O_WRONLY|O_CREAT|O_TRUNC, there\u0027s\nno need to treat this as a true file truncation, so we shouldn\u0027t\nactivate the replace-via-truncate hueristic.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9aee2286071c23c535fe9928eec1a26e0bcf256d",
      "tree": "e0518acaa75c1399ffcf67ca74a54d5a9488296b",
      "parents": [
        "f8514083cd61daef12fba5ef883ad9352c450428"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Mon Jun 08 12:41:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 08 12:41:35 2009 -0400"
      },
      "message": "ext4: fix dx_map_entry to support 256k directory blocks\n\nThe dx_map_entry structure doesn\u0027t support over 64KB block size by\ncurrent usage of its member(\"offs\"). Because \"offs\" treats an offset\nof copies of the ext4_dir_entry_2 structure as is. This member size is\n16 bits. But real offset for over 64KB(256KB) block size needs 18\nbits. However, real offset keeps 4 byte boundary, so lower 2 bits is\nnot used.\n\nTherefore, we do the following to fix this limitation:\nFor \"store\": \n\twe divide the real offset by 4 and then store this result to \"offs\" \n\tmember.\nFor \"use\":\n\twe multiply \"offs\" member by 4 and then use this result \n\tas real offset.\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f8514083cd61daef12fba5ef883ad9352c450428",
      "tree": "46cbf0c28ea112229c3ee9209750c8017f1b9385",
      "parents": [
        "1938a150c25bf7c2c47182e753a1038945b70b0e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jun 05 00:56:49 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 05 00:56:49 2009 -0400"
      },
      "message": "ext4: truncate the file properly if we fail to copy data from userspace\n\nIn generic_perform_write if we fail to copy the user data we don\u0027t\nupdate the inode-\u003ei_size.  We should truncate the file in the above\ncase so that we don\u0027t have blocks allocated outside inode-\u003ei_size.  Add\nthe inode to orphan list in the same transaction as block allocation\nThis ensures that if we crash in between the recovery would do the\ntruncate.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCC:  Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1938a150c25bf7c2c47182e753a1038945b70b0e",
      "tree": "cab711b2868d719c6f460a75387acf84f6b37576",
      "parents": [
        "b31e15527a9bb71b6a11a425d17ce139a62f5af5"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Jun 05 01:00:26 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 05 01:00:26 2009 -0400"
      },
      "message": "ext4: Avoid leaking blocks after a block allocation failure\n\nWe should add inode to the orphan list in the same transaction\nas block allocation.  This ensures that if we crash after a failed\nblock allocation and before we do a vmtruncate we don\u0027t leak block\n(ie block marked as used in bitmap but not claimed by the inode).\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCC:  Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b31e15527a9bb71b6a11a425d17ce139a62f5af5",
      "tree": "3b8fdb014e3b960b27369643de9ad1213ec2cbba",
      "parents": [
        "03f5d8bcf094a5e3b501bd2ae1553656efa8d1be"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Jun 04 17:36:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 04 17:36:36 2009 -0400"
      },
      "message": "ext4: Change all super.c messages to print the device\n\nThis patch changes ext4 super.c to include the device name with all \nwarning/error messages, by using a new utility function ext4_msg. \nIt\u0027s a rather large patch, but very mechanic. I left debug printks\nalone.\n\nThis is a straightforward port of a patch which Andi Kleen did for\next3.\n\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "03f5d8bcf094a5e3b501bd2ae1553656efa8d1be",
      "tree": "04644e9008e7357fd87f14fee6404b7c306bc3e9",
      "parents": [
        "0b8e58a140cae2ba1c4a21ccae7c6c3c939c51f9"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 09 00:17:05 2009 -0400"
      },
      "message": "ext4: Get rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle()\n\nGet rid of EXTEND_DISKSIZE flag of ext4_get_blocks_handle(). This\nseems to be a relict from some old days and setting disksize in this\nfunction does not make much sense.  Currently it was set only by\next4_getblk().  Since the parameter has some effect only if create \u003d\u003d\n1, it is easy to check by grepping through the sources that the three\ncallers which end up calling ext4_getblk() with create \u003d\u003d 1\n(ext4_append, ext4_quota_write, ext4_mkdir) do the right thing and set\ndisksize themselves.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b767e78a179e5ab30fdbff1686d074ac270471eb",
      "tree": "1ff6c357cf52e23acbed789adf20bca432e2b465",
      "parents": [
        "e6462869e4fd88be5141a356ee0c28d8067340cc"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Jun 04 08:06:06 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 04 08:06:06 2009 -0400"
      },
      "message": "ext4: Don\u0027t look at buffer_heads outside i_size.\n\nBuffer heads outside i_size will be unmapped. So when we\nare doing \"walk_page_buffers\" limit ourself to i_size.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nReviewed-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n----\n"
    },
    {
      "commit": "e6462869e4fd88be5141a356ee0c28d8067340cc",
      "tree": "f22c68d85bc9192944d81dd0cec4b8c7f6827b9a",
      "parents": [
        "5adfee9c17314c1411095c23191c3cb0c2d25f9f"
      ],
      "author": {
        "name": "Johann Lombardi",
        "email": "johann@Sun.COM",
        "time": "Sun Jul 05 23:45:11 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 23:45:11 2009 -0400"
      },
      "message": "ext4: Fix goal inum check in the inode allocator\n\nThe goal inode is specificed by inode number which belongs\nto [1; s_inodes_count].\n\nSigned-off-by: Johann Lombardi \u003cjohann@sun.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5adfee9c17314c1411095c23191c3cb0c2d25f9f",
      "tree": "67b9d406ffd6d72c3c0a02f599ea97c6fd8780ef",
      "parents": [
        "5887e98b609e96ce61ee0528cf94a2bfdc809dd7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 08 17:11:24 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 08 17:11:24 2009 -0400"
      },
      "message": "ext4: fix no journal corruption with locale-gen\n\nIf there is no journal, ext4_should_writeback_data() should return\nTRUE.  This will fix ext4_set_aops() to set ext4_da_ops in the case of\ndelayed allocation; otherwise ext4_journaled_aops gets used by\ndefault, which doesn\u0027t handle delayed allocation properly.\n\nThe advantage of using ext4_should_writeback_data() approach is that\nit should handle nobh better as well.\n\nThanks to Curt Wohlgemuth for investigating this problem, and Aneesh\nKumar for suggesting this approach.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5887e98b609e96ce61ee0528cf94a2bfdc809dd7",
      "tree": "41cc58790c649da6d4e1d0afa440bda994420ddd",
      "parents": [
        "ffacfa7a79d6c00624196b2d13b0a7f72f2b8227"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sun Jul 05 23:12:04 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 23:12:04 2009 -0400"
      },
      "message": "ext4: Calculate required journal credits for inserting an extent properly\n\nWhen we have space in the extent tree leaf node we should be able to\ninsert the extent with much less journal credits. The code was doing\nproper calculation but missed a return statement.\n\nReported-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ffacfa7a79d6c00624196b2d13b0a7f72f2b8227",
      "tree": "201920b755aff4c8a196006c0ec5538235b7ee32",
      "parents": [
        "f91d1d04171026e56c7e343ee3cdcc801dd85cfb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 13 16:22:22 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 16:22:22 2009 -0400"
      },
      "message": "ext4: Fix truncation of symlinks after failed write\n\nContents of long symlinks is written via standard write methods. So\nwhen the write fails, we add inode to orphan list. But symlinks don\u0027t\nhave .truncate method defined so nobody properly removes them from the\non disk orphan list.\n\nFix this by calling ext4_truncate() directly instead of calling\nvmtruncate() (which is saner anyway since we don\u0027t need anything\nvmtruncate() does except from calling .truncate in these paths).  We\nalso add inode to orphan list only if ext4_can_truncate() is true\n(currently, it can be false for symlinks when there are no blocks\nallocated) - otherwise orphan list processing will complain and\next4_truncate() will not remove inode from on-disk orphan list.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3e03f9ca6a2599db1823bb0ea24e0845219a0e69",
      "tree": "5eddfee10fa2ba535441ad87b9382c8d686b5e07",
      "parents": [
        "726447d803802cd0be8f62d17c4a34421781b938"
      ],
      "author": {
        "name": "Jesper Dangaard Brouer",
        "email": "hawk@comx.dk",
        "time": "Sun Jul 05 22:29:27 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:29:27 2009 -0400"
      },
      "message": "ext4: Use rcu_barrier() on module unload.\n\nThe ext4 module uses rcu_call() thus it should use rcu_barrier()on\nmodule unload.\n\nThe kmem cache ext4_pspace_cachep is sometimes free\u0027ed using\ncall_rcu() callbacks.  Thus, we must wait for completion of call_rcu()\nbefore doing kmem_cache_destroy().\n\nSigned-off-by: Jesper Dangaard Brouer \u003chawk@comx.dk\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "726447d803802cd0be8f62d17c4a34421781b938",
      "tree": "ef1d7d4b9afb0f81b9eb6f09980c152d35ceb3cf",
      "parents": [
        "089ceecc1ea4a69ed8bcc5c7c7b96ce487e26b33"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Jul 13 10:24:17 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 10:24:17 2009 -0400"
      },
      "message": "ext4: naturally align struct ext4_allocation_request\n\nAs Ted noted, the ext4_allocation_request isn\u0027t well aligned.  Looking\nat it with pahole we\u0027re wasting space on 64-bit arches:\n\nstruct ext4_allocation_request {\n        struct inode *             inode;              /*     0     8 */\n        ext4_lblk_t                logical;            /*     8     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               goal;               /*    16     8 */\n        ext4_lblk_t                lleft;              /*    24     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               pleft;              /*    32     8 */\n        ext4_lblk_t                lright;             /*    40     4 */\n\n        /* XXX 4 bytes hole, try to pack */\n\n        ext4_fsblk_t               pright;             /*    48     8 */\n        unsigned int               len;                /*    56     4 */\n        unsigned int               flags;              /*    60     4 */\n        /* --- cacheline 1 boundary (64 bytes) --- */\n\n        /* size: 64, cachelines: 1, members: 9 */\n        /* sum members: 52, holes: 3, sum holes: 12 */\n};\n\nGrouping 32-bit members together closes these holes and shrinks the\nstructure by 12 bytes. which is important since ext4 can get on the\nhairy edge of stack overruns.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "089ceecc1ea4a69ed8bcc5c7c7b96ce487e26b33",
      "tree": "141821f26ff0d6e201f43b0c18b26075cea376a4",
      "parents": [
        "f4a01017d678fe4baecf480e79d7c4f4b7ebc772"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sun Jul 05 22:17:31 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:17:31 2009 -0400"
      },
      "message": "ext4: mark several more functions in mballoc.c as noinline\n\nTed noticed a stack-deep callchain through\nwritepages-\u003eext4_mb_regular_allocator-\u003eext4_mb_init_cache-\u003esubmit_bh ...\n\nWith all the static functions in mballoc.c, gcc helpfully\ninlines for us, and we get something like this:\n\next4_mb_regular_allocator\t(232 bytes stack)\n\text4_mb_init_cache\t(232 bytes stack)\n\t\tsubmit_bh\t(starts 464 deeper)\n\nthe 2 ext4 functions here get several others inlined; by telling\ngcc not to inline them, we can save stack space for when we\nhead off into submit_bh land and associated block layer callchains.\nThe following noinlined functions are only called once, so this\nwon\u0027t impact any other callchains:\n\next4_mb_regular_allocator \t\t\t(104) (was 232)\n\text4_mb_find_by_goal\t\t\t (56) (noinlined)\n\text4_mb_init_group\t\t\t (24) (noinlined)\n\t\text4_mb_init_cache\t\t(136) (was 232)\n\t\t\text4_mb_generate_buddy\t (88) (noinlined)\n\t\t\text4_mb_generate_from_pa (40) (noinlined)\n\t\t\tsubmit_bh\n\text4_mb_simple_scan_group\t\t (24) (noinlined)\n\text4_mb_scan_aligned\t\t\t (56) (noinlined)\n\text4_mb_complex_scan_group\t\t (40) (noinlined)\n\text4_mb_try_best_found\t\t\t (24) (noinlined)\n\nnow when we head off into submit_bh() we\u0027re only 264 bytes deeper\nin stack than when we entered ext4_mb_regular_allocator()\n(vs. 464 bytes before).  Every 200 bytes helps.  :)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f4a01017d678fe4baecf480e79d7c4f4b7ebc772",
      "tree": "0f4002c7ca16f4b0bd6ab1b6f1d8015c1f10e150",
      "parents": [
        "b574480507460b8e31b8d38dd4642219fc3b9a10"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:08:16 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 05 22:08:16 2009 -0400"
      },
      "message": "ext4: Fix potential reclaim deadlock when truncating partial block\n\nThe ext4_block_truncate_page() function previously called\ngrab_cache_page(), which called find_or_create_page() with the\n__GFP_FS flag potentially set.  This could cause a deadlock if the\nsystem is low on memory and it attempts a memory reclaim, which could\npotentially call back into ext4.  So we need to call\nfind_or_create_page() directly, and remove the __GFP_FP flag to avoid\nthis potential deadlock.\n\nThanks to Roland Dreier for reporting a lockdep warning which showed\nthis problem.\n\n[20786.363249] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[20786.363257] [ INFO: inconsistent lock state ]\n[20786.363265] 2.6.31-2-generic #14~rbd4gitd960eea9\n[20786.363270] ---------------------------------\n[20786.363276] inconsistent {IN-RECLAIM_FS-W} -\u003e {RECLAIM_FS-ON-W} usage.\n[20786.363285] http/8397 [HC0[0]:SC0[0]:HE1:SE1] takes:\n[20786.363291]  (jbd2_handle){+.+.?.}, at: [\u003cffffffff812008bb\u003e] jbd2_journal_start+0xdb/0x150\n[20786.363314] {IN-RECLAIM_FS-W} state was registered at:\n[20786.363320]   [\u003cffffffff8108bef6\u003e] mark_irqflags+0xc6/0x1a0\n[20786.363334]   [\u003cffffffff8108d347\u003e] __lock_acquire+0x287/0x430\n[20786.363345]   [\u003cffffffff8108d595\u003e] lock_acquire+0xa5/0x150\n[20786.363355]   [\u003cffffffff812008da\u003e] jbd2_journal_start+0xfa/0x150\n[20786.363365]   [\u003cffffffff811d98a8\u003e] ext4_journal_start_sb+0x58/0x90\n[20786.363377]   [\u003cffffffff811cce85\u003e] ext4_delete_inode+0xc5/0x2c0\n[20786.363389]   [\u003cffffffff81146fa3\u003e] generic_delete_inode+0xd3/0x1a0\n[20786.363401]   [\u003cffffffff81147095\u003e] generic_drop_inode+0x25/0x30\n[20786.363411]   [\u003cffffffff81145ce2\u003e] iput+0x62/0x70\n[20786.363420]   [\u003cffffffff81142878\u003e] dentry_iput+0x98/0x110\n[20786.363429]   [\u003cffffffff81142a00\u003e] d_kill+0x50/0x80\n[20786.363438]   [\u003cffffffff811444c5\u003e] dput+0x95/0x180\n[20786.363447]   [\u003cffffffff8120de4b\u003e] ecryptfs_d_release+0x2b/0x70\n[20786.363459]   [\u003cffffffff81142978\u003e] d_free+0x28/0x60\n[20786.363468]   [\u003cffffffff81142a18\u003e] d_kill+0x68/0x80\n[20786.363477]   [\u003cffffffff81142ad3\u003e] prune_one_dentry+0xa3/0xc0\n[20786.363487]   [\u003cffffffff81142d61\u003e] __shrink_dcache_sb+0x271/0x290\n[20786.363497]   [\u003cffffffff81142e89\u003e] prune_dcache+0x109/0x1b0\n[20786.363506]   [\u003cffffffff81142f6f\u003e] shrink_dcache_memory+0x3f/0x50\n[20786.363516]   [\u003cffffffff810f6d3d\u003e] shrink_slab+0x12d/0x190\n[20786.363527]   [\u003cffffffff810f97d7\u003e] balance_pgdat+0x4d7/0x640\n[20786.363537]   [\u003cffffffff810f9a57\u003e] kswapd+0x117/0x170\n[20786.363546]   [\u003cffffffff810773ce\u003e] kthread+0x9e/0xb0\n[20786.363558]   [\u003cffffffff8101430a\u003e] child_rip+0xa/0x20\n[20786.363569]   [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n[20786.363598] irq event stamp: 15997\n[20786.363603] hardirqs last  enabled at (15997): [\u003cffffffff81125f9d\u003e] kmem_cache_alloc+0xfd/0x1a0\n[20786.363617] hardirqs last disabled at (15996): [\u003cffffffff81125f01\u003e] kmem_cache_alloc+0x61/0x1a0\n[20786.363628] softirqs last  enabled at (15966): [\u003cffffffff810631ea\u003e] __do_softirq+0x14a/0x220\n[20786.363641] softirqs last disabled at (15861): [\u003cffffffff8101440c\u003e] call_softirq+0x1c/0x30\n[20786.363651] \n[20786.363653] other info that might help us debug this:\n[20786.363660] 3 locks held by http/8397:\n[20786.363665]  #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#8){+.+.+.}, at: [\u003cffffffff8112ed24\u003e] do_truncate+0x64/0x90\n[20786.363685]  #1:  (\u0026sb-\u003es_type-\u003ei_alloc_sem_key#5){+++++.}, at: [\u003cffffffff81147f90\u003e] notify_change+0x250/0x350\n[20786.363707]  #2:  (jbd2_handle){+.+.?.}, at: [\u003cffffffff812008bb\u003e] jbd2_journal_start+0xdb/0x150\n[20786.363724] \n[20786.363726] stack backtrace:\n[20786.363734] Pid: 8397, comm: http Tainted: G         C 2.6.31-2-generic #14~rbd4gitd960eea9\n[20786.363741] Call Trace:\n[20786.363752]  [\u003cffffffff8108ad7c\u003e] print_usage_bug+0x18c/0x1a0\n[20786.363763]  [\u003cffffffff8108b0c0\u003e] ? check_usage_backwards+0x0/0xb0\n[20786.363773]  [\u003cffffffff8108bad2\u003e] mark_lock_irq+0xf2/0x280\n[20786.363783]  [\u003cffffffff8108bd97\u003e] mark_lock+0x137/0x1d0\n[20786.363793]  [\u003cffffffff8108c03c\u003e] mark_held_locks+0x6c/0xa0\n[20786.363803]  [\u003cffffffff8108c11f\u003e] lockdep_trace_alloc+0xaf/0xe0\n[20786.363813]  [\u003cffffffff810efbac\u003e] __alloc_pages_nodemask+0x7c/0x180\n[20786.363824]  [\u003cffffffff810e9411\u003e] ? find_get_page+0x91/0xf0\n[20786.363835]  [\u003cffffffff8111d3b7\u003e] alloc_pages_current+0x87/0xd0\n[20786.363845]  [\u003cffffffff810e9827\u003e] __page_cache_alloc+0x67/0x70\n[20786.363856]  [\u003cffffffff810eb7df\u003e] find_or_create_page+0x4f/0xb0\n[20786.363867]  [\u003cffffffff811cb3be\u003e] ext4_block_truncate_page+0x3e/0x460\n[20786.363876]  [\u003cffffffff812008da\u003e] ? jbd2_journal_start+0xfa/0x150\n[20786.363885]  [\u003cffffffff812008bb\u003e] ? jbd2_journal_start+0xdb/0x150\n[20786.363895]  [\u003cffffffff811c6415\u003e] ? ext4_meta_trans_blocks+0x75/0xf0\n[20786.363905]  [\u003cffffffff811e8d8b\u003e] ext4_ext_truncate+0x1bb/0x1e0\n[20786.363916]  [\u003cffffffff811072c5\u003e] ? unmap_mapping_range+0x75/0x290\n[20786.363926]  [\u003cffffffff811ccc28\u003e] ext4_truncate+0x498/0x630\n[20786.363938]  [\u003cffffffff8129b4ce\u003e] ? _raw_spin_unlock+0x5e/0xb0\n[20786.363947]  [\u003cffffffff81107306\u003e] ? unmap_mapping_range+0xb6/0x290\n[20786.363957]  [\u003cffffffff8108c3ad\u003e] ? trace_hardirqs_on+0xd/0x10\n[20786.363966]  [\u003cffffffff811ffe58\u003e] ? jbd2_journal_stop+0x1f8/0x2e0\n[20786.363976]  [\u003cffffffff81107690\u003e] vmtruncate+0xb0/0x110\n[20786.363986]  [\u003cffffffff81147c05\u003e] inode_setattr+0x35/0x170\n[20786.363995]  [\u003cffffffff811c9906\u003e] ext4_setattr+0x186/0x370\n[20786.364005]  [\u003cffffffff81147eab\u003e] notify_change+0x16b/0x350\n[20786.364014]  [\u003cffffffff8112ed30\u003e] do_truncate+0x70/0x90\n[20786.364021]  [\u003cffffffff8112f48b\u003e] T.657+0xeb/0x110\n[20786.364021]  [\u003cffffffff8112f4be\u003e] sys_ftruncate+0xe/0x10\n[20786.364021]  [\u003cffffffff81013132\u003e] system_call_fastpath+0x16/0x1b\n\nReported-by: Roland Dreier \u003croland@digitalvampire.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0b8e58a140cae2ba1c4a21ccae7c6c3c939c51f9",
      "tree": "70fc974b7f4b258a3cf0a64a825dbebc9e1f1150",
      "parents": [
        "bfcd3555af478dbf04c87adc9bb1a739d0a6ccff"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@sun.com",
        "time": "Wed Jun 03 17:59:28 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 03 17:59:28 2009 -0400"
      },
      "message": "ext4: super.c whitespace cleanup\n\nCleanup of whitespace and formatting.  Initially driven by confusing indents\nfor the ext4_{block,inode}_bitmap() et. al. helper routines, but figured I\u0027d\ncleanup some other 80-column wrapping and other indenting problems at the\nsame time.\n\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "88b6edd17c62b7d346d21f4087893ce7d4ef828a",
      "tree": "e6c80d48f184861c965a58bd88fd3a023b65a1c9",
      "parents": [
        "759d427aa5a9d88a81afd11817cdeb40aea85234"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:50:39 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:50:39 2009 -0400"
      },
      "message": "ext4: Clean up calls to ext4_get_group_desc()\n\nIf the caller isn\u0027t planning on modifying the block group descriptors,\nthere\u0027s no need to pass in a pointer to a struct buffer_head.  Nuking\nthis saves a tiny amount of CPU time and stack space usage.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "759d427aa5a9d88a81afd11817cdeb40aea85234",
      "tree": "8e8316ed77c9ee21cce9058d5b477c0e7cf4462b",
      "parents": [
        "0f7ee7c17241915fdaff49d1a36f5aafd80a7dce"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:51:00 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 25 11:51:00 2009 -0400"
      },
      "message": "ext4: remove unused function __ext4_write_dirty_metadata\n\nThe __ext4_write_dirty_metadata() function was introduced by commit\n0390131b, \"ext4: Allow ext4 to run without a journal\", but nothing\never used the function, either then or since.  So let\u0027s remove it and\nsave a bit of space.\n\nCc: Frank Mayhar \u003cfmayhar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f68301656b5f5d2de104f2687add6beeb8f3c3b9",
      "tree": "b5f559c14d81031f7f0c43c229625bdc808e0163",
      "parents": [
        "0568c518937ee3a9b6a94d18bae9c150fe5d6832"
      ],
      "author": {
        "name": "Manish Katiyar",
        "email": "mkatiyar@gmail.com",
        "time": "Sun May 17 23:52:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 23:52:44 2009 -0400"
      },
      "message": "ext4: Fix memory leak in ext4_fill_super() in case of a failed mount\n\nSigned-off-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0568c518937ee3a9b6a94d18bae9c150fe5d6832",
      "tree": "b6392f24142e9199a7a0b34e29ac2f6c82a221d7",
      "parents": [
        "6fd058f7791087648c683eb8572edf3be3c4c23c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 23:31:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 23:31:23 2009 -0400"
      },
      "message": "ext4: down i_data_sem only for read when walking tree for fiemap\n\nNot sure why I put this in as down_write originally; all we are\ndoing is walking the tree, nothing will change under us and\nconcurrent reads should be no problem.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6fd058f7791087648c683eb8572edf3be3c4c23c",
      "tree": "0d80791532d2d022c91f20013003716eaf0afb40",
      "parents": [
        "2ac3b6e00acb46406c993d57921f86a594aafe08"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 17 15:38:01 2009 -0400"
      },
      "message": "ext4: Add a comprehensive block validity check to ext4_get_blocks()\n\nTo catch filesystem bugs or corruption which could lead to the\nfilesystem getting severly damaged, this patch adds a facility for\ntracking all of the filesystem metadata blocks by contiguous regions\nin a red-black tree.  This allows quick searching of the tree to\nlocate extents which might overlap with filesystem metadata blocks.\n\nThis facility is also used by the multi-block allocator to assure that\nit is not allocating blocks out of the system zone, as well as by the\nroutines used when reading indirect blocks and extents information\nfrom disk to make sure their contents are valid.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2ec0ae3acec47f628179ee95fe2c4da01b5e9fc4",
      "tree": "f8cf43b7d3840c405dac1db3974466a2d755919a",
      "parents": [
        "2a8964d63d50dd2d65d71d342bc7fb6ef4117614"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 09:07:28 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 09:07:28 2009 -0400"
      },
      "message": "ext4: Fix race in ext4_inode_info.i_cached_extent\n\nIf two CPU\u0027s simultaneously call ext4_ext_get_blocks() at the same\ntime, there is nothing protecting the i_cached_extent structure from\nbeing used and updated at the same time.  This could potentially cause\nthe wrong location on disk to be read or written to, including\npotentially causing the corruption of the block group descriptors\nand/or inode table.\n\nThis bug has been in the ext4 code since almost the very beginning of\next4\u0027s development.  Fortunately once the data is stored in the page\ncache cache, ext4_get_blocks() doesn\u0027t need to be called, so trying to\nreplicate this problem to the point where we could identify its root\ncause was *extremely* difficult.  Many thanks to Kevin Shanahan for\nworking over several months to be able to reproduce this easily so we\ncould finally nail down the cause of the corruption.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2a8964d63d50dd2d65d71d342bc7fb6ef4117614",
      "tree": "7dd80d63afd9adab61ba0695ac3e0c95485dc2ed",
      "parents": [
        "33b9817e2ae097c7b8d256e3510ac6c54fc6d9d0"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu May 14 17:05:39 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 17:05:39 2009 -0400"
      },
      "message": "ext4: Clear the unwritten buffer_head flag after the extent is initialized\n\nThe BH_Unwritten flag indicates that the buffer is allocated on disk\nbut has not been written; that is, the disk was part of a persistent\npreallocation area.  That flag should only be set when a get_blocks()\nfunction is looking up a inode\u0027s logical to physical block mapping.\n\nWhen ext4_get_blocks_wrap() is called with create\u003d1, the uninitialized\nextent is converted into an initialized one, so the BH_Unwritten flag\nis no longer appropriate.  Hence, we need to make sure the\nBH_Unwritten is not left set, since the combination of BH_Mapped and\nBH_Unwritten is not allowed; among other things, it will result ext4\u0027s\nget_block() to be called over and over again during the write_begin\nphase of write(2).\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": "2ac3b6e00acb46406c993d57921f86a594aafe08",
      "tree": "51f8a245caa53776fb9617973742ffc81023e007",
      "parents": [
        "2fa3cdfb319055fd8b25abdafa413e16f00ad493"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 13:57:08 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 13:57:08 2009 -0400"
      },
      "message": "ext4: Clean up ext4_get_blocks() so it does not depend on bh_result-\u003eb_state\n\nThe ext4_get_blocks() function was depending on the value of\nbh_result-\u003eb_state as an input parameter to decide whether or not\nupdate the delalloc accounting statistics by calling\next4_da_update_reserve_space().  We now use a separate flag,\nEXT4_GET_BLOCKS_UPDATE_RESERVE_SPACE, to requests this update, so that\nall callers of ext4_get_blocks() can clear map_bh.b_state before\ncalling ext4_get_blocks() without worrying about any consistency\nissues.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2fa3cdfb319055fd8b25abdafa413e16f00ad493",
      "tree": "c85e56fa92eecc163a85084d11aef356a686c9b9",
      "parents": [
        "a2dc52b5d1d8cc280b3e795abf1c80ac8c49f30c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 09:29:45 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 09:29:45 2009 -0400"
      },
      "message": "ext4: Merge ext4_da_get_block_write() into mpage_da_map_blocks()\n\nThe static function ext4_da_get_block_write() was only used by\nmpage_da_map_blocks().  So to simplify the code, merge that function\ninto mpage_da_map_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "33b9817e2ae097c7b8d256e3510ac6c54fc6d9d0",
      "tree": "3de27ab9a089fb53503fdcc2746e396ee9fb78d0",
      "parents": [
        "9c1ee184a30394e54165fa4c15923cabd952c106"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue May 12 14:40:37 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 14:40:37 2009 -0400"
      },
      "message": "ext4: Use a fake block number for delayed new buffer_head\n\nUse a very large unsigned number (~0xffff) as as the fake block number\nfor the delayed new buffer. The VFS should never try to write out this\nnumber, but if it does, this will make it obvious.\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": "9c1ee184a30394e54165fa4c15923cabd952c106",
      "tree": "77fee66ccc5e4aec3aeff7c7d641691b116be091",
      "parents": [
        "091bf7624d1c90cec9e578a18529f615213ff847"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 18:36:58 2009 -0400"
      },
      "message": "ext4: Fix sub-block zeroing for writes into preallocated extents\n\nWe need to mark the buffer_head mapping preallocated space as new\nduring write_begin. Otherwise we don\u0027t zero out the page cache content\nproperly for a partial write. This will cause file corruption with\npreallocation.\n\nNow that we mark the buffer_head new we also need to have a valid\nbuffer_head blocknr so that unmap_underlying_metadata() unmaps the\ncorrect block.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a2dc52b5d1d8cc280b3e795abf1c80ac8c49f30c",
      "tree": "2f425d897dfdab9f2a5997f9801c6ccbea7c1323",
      "parents": [
        "b920c75502cb2c48654ef196d647c8eb81ab608a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 13:51:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 13:51:29 2009 -0400"
      },
      "message": "ext4: Add BUG_ON debugging checks to noalloc_get_block_write()\n\nEnforce that noalloc_get_block_write() is only called to map one block\nat a time, and that it always is successful in finding a mapping for\ngiven an inode\u0027s logical block block number if it is called with\ncreate \u003d\u003d 1.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b920c75502cb2c48654ef196d647c8eb81ab608a",
      "tree": "73105b8a1212001a3636d83b3f8e9e554e048170",
      "parents": [
        "c21770573319922e3f3fcb331cfaa290c49f1c81"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:54:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:54:29 2009 -0400"
      },
      "message": "ext4: Add documentation to the ext4_*get_block* functions\n\nThis adds more documentation to various internal functions in\nfs/ext4/inode.c, most notably ext4_ind_get_blocks(),\next4_da_get_block_write(), ext4_da_get_block_prep(),\next4_normal_get_block_write().\n\nIn addition, the static function ext4_normal_get_block_write() has\nbeen renamed noalloc_get_block_write(), since it is used in many\nplaces far beyond ext4_normal_writepage().\n\nPlenty of warnings have been added to the noalloc_get_block_write()\nfunction, since the way it is used is amazingly fragile.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c21770573319922e3f3fcb331cfaa290c49f1c81",
      "tree": "ee21ebb2d73d4d3b19d7e391e7accf00704371d9",
      "parents": [
        "12b7ac176831df1aa58a787e67c3e5d698b30163"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:58:52 2009 -0400"
      },
      "message": "ext4: Define a new set of flags for ext4_get_blocks()\n\nThe functions ext4_get_blocks(), ext4_ext_get_blocks(), and\next4_ind_get_blocks() used an ad-hoc set of integer variables used as\nboolean flags passed in as arguments.  Use a single flags parameter\nand a setandard set of bitfield flags instead.  This saves space on\nthe call stack, and it also makes the code a bit more understandable.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12b7ac176831df1aa58a787e67c3e5d698b30163",
      "tree": "d8d3ab93fd28d5b84efff0b5c247da74c84788e0",
      "parents": [
        "e4d996ca806e93dddb5d76c0d3d859b494c559f6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 14 00:57:44 2009 -0400"
      },
      "message": "ext4: Rename ext4_get_blocks_wrap() to be ext4_get_blocks()\n\nAnother function rename for clarity\u0027s sake.  The _wrap prefix simply\nconfuses people, and didn\u0027t add much people trying to follow the code\npaths.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e4d996ca806e93dddb5d76c0d3d859b494c559f6",
      "tree": "dee33d8bb77bcd5ef5bebeab04d7fe95e3cb4dc5",
      "parents": [
        "f888e652d758bfe0c04c209b72a05972daeba386"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:25:28 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:25:28 2009 -0400"
      },
      "message": "ext4: Rename ext4_get_blocks_handle() to be ext4_ind_get_blocks()\n\nThe static function ext4_get_blocks_handle() is badly named.  Of\n*course* it takes a handle.  Since its counterpart for extent-based\nfile is ext4_ext_get_blocks(), rename it to be ext4_ind_get_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f888e652d758bfe0c04c209b72a05972daeba386",
      "tree": "5d593d7ce0f4e58cf2c049b8635e55f3b5a0d415",
      "parents": [
        "bc8e67409ccdcff72c3f1656b1fb1aad7ff396db"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:21:29 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 00:21:29 2009 -0400"
      },
      "message": "ext4: Simplify function signature for ext4_da_get_block_write() \n\nThe function ext4_da_get_block_write() is called in exactly one write,\nand the last argument, create, is always 1.  Remove it to simplify the\ncode slightly.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bc8e67409ccdcff72c3f1656b1fb1aad7ff396db",
      "tree": "2a766e3c7bc938b697499aa7d5a20f2f468b5a2f",
      "parents": [
        "955ce5f5be67dfe0d1d096b543af33fe8a1ce3dd"
      ],
      "author": {
        "name": "Vincent Minet",
        "email": "vincent@vincent-minet.net",
        "time": "Fri May 15 08:33:18 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 15 08:33:18 2009 -0400"
      },
      "message": "ext4: Fix spinlock assertions on UP systems\n\nOn UP systems without DEBUG_SPINLOCK, ext4_is_group_locked always fails\nwhich triggers a BUG_ON() call.\nThis patch fixes it by using assert_spin_locked instead.\n\nSigned-off-by: Vincent Minet \u003cvincent@vincent-minet.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "955ce5f5be67dfe0d1d096b543af33fe8a1ce3dd",
      "tree": "68b0bdbef1594a3e43c1ef28ae8e096b40a06ae4",
      "parents": [
        "eefd7f03b86b8a319890e7fac5a6fcc7f8694b76"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat May 02 20:35:09 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 20:35:09 2009 -0400"
      },
      "message": "ext4: Convert ext4_lock_group to use sb_bgl_lock\n\nWe have sb_bgl_lock() and ext4_group_info.bb_state\nbit spinlock to protech group information. The later is only\nused within mballoc code. Consolidate them to use sb_bgl_lock().\nThis makes the mballoc.c code much simpler and also avoid\nconfusion with two locks protecting same info.\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": "eefd7f03b86b8a319890e7fac5a6fcc7f8694b76",
      "tree": "d8dd02626d522926b828042f87c0850d42f86d2e",
      "parents": [
        "c9877b205f6ce7943bb95281342f4001cc1c00ec"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 19:05:37 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 19:05:37 2009 -0400"
      },
      "message": "ext4: fix the length returned by fiemap for an unallocated extent\n\nIf the file\u0027s blocks have not yet been allocated because of delayed\nallocation, the length of the extent returned by fiemap is incorrect.\nThis commit fixes this bug.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c9877b205f6ce7943bb95281342f4001cc1c00ec",
      "tree": "2556179d7591d8fa7e770e3f2be15a467fe59a6e",
      "parents": [
        "19ba0559f9ce104171ab16706893ce01f03ef116"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Fri May 01 23:32:06 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 23:32:06 2009 -0400"
      },
      "message": "ext4: fix for fiemap last-block test\n\nCarl Henrik Lunde reported and debugged this; the test for the\nlast allocated block was comparing bytes to blocks in this test:\n\n\tif (logical + length - 1 \u003d\u003d EXT_MAX_BLOCK ||\n\t    ext4_ext_next_allocated_block(path) \u003d\u003d EXT_MAX_BLOCK)\n\t\tflags |\u003d FIEMAP_EXTENT_LAST;\n\nso any extent which ended right at 4G was stopping the extent\nwalk.  Just replacing these values with the extent block \u0026\nlength should fix it.\n\nAlso give blksize_bits a saner type, and reverse the order \nof the tests to make the more likely case tested first.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReported-by: Carl Henrik Lunde \u003cchlunde@ping.uio.no\u003e\nTested-by: Carl Henrik Lunde \u003cchlunde@ping.uio.no\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "abc8746eb91fb01e8d411896f80f7687c0d8372e",
      "tree": "b339a559ed8f33b4fe64b5fba5d7684b05d2e071",
      "parents": [
        "f40339031b04279c3fdde7ac5fe97db33b2a7694"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat May 02 22:54:32 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat May 02 22:54:32 2009 -0400"
      },
      "message": "ext4: hook fiemap operation for directories\n\nAdd fiemap callback for directories\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": "f40339031b04279c3fdde7ac5fe97db33b2a7694",
      "tree": "62b565c12488c63e620e5686304c16ed3434b735",
      "parents": [
        "bb23c20a851a5038b255a3c0d0aa56093c1da3f8"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri May 01 20:27:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 20:27:20 2009 -0400"
      },
      "message": "ext4: Make the length of the mb_history file tunable\n\nIn memory-constrained systems with many partitions, the ~68K for each\npartition for the mb_history buffer can be excessive.\n\nThis patch adds a new mount option, mb_history_length, as well as a\nway of setting the default via a module parameter (or via a sysfs\nparameter in /sys/module/ext4/parameter/default_mb_history_length).\nIf the mb_history_length is set to zero, the mb_history facility is\ndisabled entirely.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "bb23c20a851a5038b255a3c0d0aa56093c1da3f8",
      "tree": "257211bf2bf5ffd53fe24b0528928ca4d3f2ecba",
      "parents": [
        "596397b77c895d0fa3674f579c94ad5ea88ef01d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 19:44:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 19:44:44 2009 -0400"
      },
      "message": "ext4: Move fs/ext4/group.h into ext4.h\n\nMove the function prototypes in group.h into ext4.h so they are all\ndefined in one place.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "596397b77c895d0fa3674f579c94ad5ea88ef01d",
      "tree": "bd4f9916556b4d5bc59ee4b5171248df44e2c5c4",
      "parents": [
        "ca0faba0e8ac844dc0279825eb8db876b5962ea5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:49:15 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:49:15 2009 -0400"
      },
      "message": "ext4: Move fs/ext4/namei.h into ext4.h\n\nThe fs/ext4/namei.h header file had only a single function\ndeclaration, and should have never been a standalone file.  Move it\ninto ext4.h, where should have been from the beginning.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ca0faba0e8ac844dc0279825eb8db876b5962ea5",
      "tree": "186acf88dda5958f44ec80349778f815cb172895",
      "parents": [
        "d444c3c38189b3f18337a213855ac1c07af4e2d9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 03 16:33:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 03 16:33:44 2009 -0400"
      },
      "message": "ext4: Move the ext4_sb.h header file into ext4.h\n\nThere is no longer a reason for a separate ext4_sb.h header file, so\nmove it into ext4.h just to make life easier for developers to find\nthe relevant data structures and typedefs.  Should also speed up\ncompiles slightly, too.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d444c3c38189b3f18337a213855ac1c07af4e2d9",
      "tree": "180b83e442c9ab72e1553a19140e3f1169806d28",
      "parents": [
        "75507efb1372b6acf1aa6bf00ebd49ce196fd994"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:44:33 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 13:44:33 2009 -0400"
      },
      "message": "ext4: Move the ext4_i.h header file into ext4.h\n\nThere is no longer a reason for a separate ext4_i.h header file, so\nmove it into ext4.h just to make life easier for developers to find\nthe relevant data structures and typedefs.  Should also speed up\ncompiles slightly, too.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "75507efb1372b6acf1aa6bf00ebd49ce196fd994",
      "tree": "ed2455cbd29b444e8cfc1651b51c6d7a34b6b01f",
      "parents": [
        "32ed5058ce90024efcd811254b4b1de0468099df"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 12:58:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 12:58:36 2009 -0400"
      },
      "message": "ext4: Don\u0027t avoid using BLOCK_UNINIT block groups in mballoc\n\nBy avoiding the use of not-yet-used block groups (i.e., block groups\nwith the BLOCK_UNINIT flag), mballoc had a tendency to create large\nfiles with large non-contiguous gaps.  In addition avoiding the use of\nnew block groups had a tendency to push regular file data into the\nfirst block group in a flex_bg group, which slows down the speed of\ne2fsck pass 2, since it has a tendency to seek much more.  For\nexample:\n\n               Before Patch                       After Patch\n              Time in seconds                   Time in seconds\n            Real /  User/  Sys   MB/s      Real /  User/  Sys    MB/s\nPass 1      8.52 / 2.21 / 0.46  20.43      8.84 / 4.97 / 1.11   19.68\nPass 2     21.16 / 1.02 / 1.86  11.30      6.54 / 1.77 / 1.78   36.39\nPass 3      0.01 / 0.00 / 0.00 139.00      0.01 / 0.01 / 0.00  128.90\nPass 4      0.16 / 0.15 / 0.00   0.00      0.17 / 0.17 / 0.00    0.00\nPass 5      2.52 / 1.99 / 0.09   0.79      2.31 / 1.78 / 0.06    0.86\nTotal      32.40 / 5.11 / 2.49  12.81     17.99 / 8.75 / 2.98   23.01\n\nThis was on a sample 80 gig root filesystem which was approximately\n50% full.  Note the improved e2fsck pass 2 performance, by over a\nfactor of 3, due to a decreased number of seeks.  (The total amount of\nI/O in pass 2 was unchanged; the layout of the directory blocks was\nsimply much better from e2fsck\u0027s\u0027s perspective.)\n\nOther changes as a result of this patch on this sample filesystem:\n\n                             Before Patch    After Patch\n# of non-contig files           762             779\n# of non-contig directories     571             570\n# of BLOCK_UNINIT bg\u0027s          307             293\n# of INODE_UNINIT bg\u0027s          503             503\n\nOut of 640 block groups, of which 333 were in use, this patch caused\nan extra 14 block groups to be utilized.  The number of non-contiguous\nfiles did go up slightly, but when measured against the 99.9% of the\nfiles (603,154) which were contiguously allocated, this is pretty\ninsignificant.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\n"
    },
    {
      "commit": "8b0f9e8f78bd0a65fa001bf18f2c47eef2893a10",
      "tree": "f97cd42eb0cf5c20e260c34c0a082c9b7ee6a621",
      "parents": [
        "96159f25112595386c56e09eca90284e85e7ecbf"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 27 17:33:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 27 17:33:23 2009 -0400"
      },
      "message": "ext4: avoid unnecessary spinlock in critical POSIX ACL path\n\nIf a filesystem supports POSIX ACL\u0027s, the VFS layer expects the filesystem\nto do POSIX ACL checks on any files not owned by the caller, and it does\nthis for every single pathname component that it looks up.\n\nThat obviously can be pretty expensive if the filesystem isn\u0027t careful\nabout it, especially with locking. That\u0027s doubly sad, since the common\ncase tends to be that there are no ACL\u0027s associated with the files in\nquestion.\n\next4 already caches the ACL data so that it doesn\u0027t have to look it up\nover and over again, but it does so by taking the inode-\u003ei_lock spinlock\non every lookup. Which is a noticeable overhead even if it\u0027s a private\nlock, especially on CPU\u0027s where the serialization is expensive (eg Intel\nNetburst aka \u0027P4\u0027).\n\nFor the special case of not actually having any ACL\u0027s, all that locking is\nunnecessary. Even if somebody else were to be changing the ACL\u0027s on\nanother CPU, we simply don\u0027t care - if we\u0027ve seen a NULL ACL, we might as\nwell use it.\n\nSo just load the ACL speculatively without any locking, and if it was\nNULL, just use it. If it\u0027s non-NULL (either because we had a cached\nentry, or because the cache hasn\u0027t been filled in at all), it means that\nwe\u0027ll need to get the lock and re-load it properly.\n\n(This commit was ported from a patch originally authored by Linus for\next3.)\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9bffad1ed2a003a355ed1b42424a0ae3575275ed",
      "tree": "9016e7b0e04a0e5319680f9e1f89fc1abb13c765",
      "parents": [
        "879c5e6b7cb4c689d08ca9b2e353d8ab3dc425d5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:48:11 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:48:11 2009 -0400"
      },
      "message": "ext4: convert instrumentation from markers to tracepoints\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "32ed5058ce90024efcd811254b4b1de0468099df",
      "tree": "0054cc5c385b4ba02abd95a761ccb01b453ba05f",
      "parents": [
        "3b9d4ed26680771295d904a6b83e88e620780893"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 22:53:39 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 22:53:39 2009 -0400"
      },
      "message": "ext4: Replace lock/unlock_super() with an explicit lock for resizing\n    \nUse a separate lock to protect s_groups_count and the other block\ngroup descriptors which get changed via an on-line resize operation,\nso we can stop overloading the use of lock_super().\n    \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "3b9d4ed26680771295d904a6b83e88e620780893",
      "tree": "905b0e95697839c446c86250cf38dd256f5e846a",
      "parents": [
        "a63c9eb2ce6f5028da90f282798232c4f398ceb8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 22:54:04 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 22:54:04 2009 -0400"
      },
      "message": "ext4: Replace lock/unlock_super() with an explicit lock for the orphan list\n\nUse a separate lock to protect the orphan list, so we can stop\noverloading the use of lock_super().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a63c9eb2ce6f5028da90f282798232c4f398ceb8",
      "tree": "3b32193dfc80a3925f5ea5a6545765f5176a6f2d",
      "parents": [
        "114e9fc90703bd6aac0229fb559e97caa6c49770"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 01:59:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 01:59:42 2009 -0400"
      },
      "message": "ext4: ext4_mark_recovery_complete() doesn\u0027t need to use lock_super\n\nThe function ext4_mark_recovery_complete() is called from two call\npaths: either (a) while mounting the filesystem, in which case there\u0027s\nno danger of any other CPU calling write_super() until the mount is\ncompleted, and (b) while remounting the filesystem read-write, in\nwhich case the fs core has already locked the superblock.  This also\nallows us to take out a very vile unlock_super()/lock_super() pair in\next4_remount().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "114e9fc90703bd6aac0229fb559e97caa6c49770",
      "tree": "722343de92b421c252a9e33b0e5e44955115080a",
      "parents": [
        "8df9675f8b498d0bfa1f0b5b06f56bf1ff366dd5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 15:48:07 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 25 15:48:07 2009 -0400"
      },
      "message": "ext4: Remove outdated comment about lock_super()\n\next4_fill_super() is no longer called by read_super(), and it is no\nlonger called with the superblock locked.  The\nunlock_super()/lock_super() is no longer present, so this comment is\nentirely superfluous.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8df9675f8b498d0bfa1f0b5b06f56bf1ff366dd5",
      "tree": "38fd56a82049f50b4d774af47b9d39f116071755",
      "parents": [
        "9ca92389c5312a51e819c15c762f0abdc7f3129b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 08:50:38 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 08:50:38 2009 -0400"
      },
      "message": "ext4: Avoid races caused by on-line resizing and SMP memory reordering\n\nExt4\u0027s on-line resizing adds a new block group and then, only at the\nlast step adjusts s_groups_count.  However, it\u0027s possible on SMP\nsystems that another CPU could see the updated the s_group_count and\nnot see the newly initialized data structures for the just-added block\ngroup.  For this reason, it\u0027s important to insert a SMP read barrier\nafter reading s_groups_count and before reading any (for example) the\nnew block group descriptors allowed by the increased value of\ns_groups_count.\n\nUnfortunately, we rather blatently violate this locking protocol\ndocumented in fs/ext4/resize.c.  Fortunately, (1) on-line resizes\nhappen relatively rarely, and (2) it seems rare that the filesystem\ncode will immediately try to use just-added block group before any\nmemory ordering issues resolve themselves.  So apparently problems\nhere are relatively hard to hit, since ext3 has been vulnerable to the\nsame issue for years with no one apparently complaining.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9ca92389c5312a51e819c15c762f0abdc7f3129b",
      "tree": "0f99256a5632614134573283853c577676cb1b99",
      "parents": [
        "7234ab2a55e77784b44cf2d862136d9e41b8d98a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 12:52:25 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 12:52:25 2009 -0400"
      },
      "message": "ext4: Use separate super_operations structure for no_journal filesystems\n\nBy using a separate super_operations structure for filesystems that\nhave and don\u0027t have journals, we can simply ext4_write_super() ---\nwhich is only needed when no journal is present --- and ext4_freeze(),\next4_unfreeze(), and ext4_sync_fs(), which are only needed when the\njournal is present.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7234ab2a55e77784b44cf2d862136d9e41b8d98a",
      "tree": "cad3f1ee096243529125b3d6a028cc1426773b9c",
      "parents": [
        "e2d670523c6c4ccb0fca9f3ab1b8f066d9aa57d6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 30 21:24:04 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 30 21:24:04 2009 -0400"
      },
      "message": "ext4: Fix and simplify s_dirt handling\n\nThe s_dirt flag wasn\u0027t completely handled correctly, but it didn\u0027t\nreally matter when journalling was enabled.  It turns out that when\next4 runs without a journal, we don\u0027t clear s_dirt in places where we\nshould have, with the result that the high-level write_super()\nfunction was writing the superblock when it wasn\u0027t necessary.\n\nSo we fix this by making ext4_commit_super() clear the s_dirt flag,\nand removing many of the other places where s_dirt is manipulated.\nWhen journalling is enabled, the s_dirt flag might be left set more\noften, but s_dirt really doesn\u0027t matter when journalling is enabled.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e2d670523c6c4ccb0fca9f3ab1b8f066d9aa57d6",
      "tree": "648f9a29142831ded24fd92d22d3add5c3190185",
      "parents": [
        "f7c439504ccba0cca43271e651013ab97a221c62"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 00:33:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 01 00:33:44 2009 -0400"
      },
      "message": "ext4: Simplify ext4_commit_super()\u0027s function signature\n\nThe ext4_commit_super() function took both a struct super_block * and\na struct ext4_super_block *, but the struct ext4_super_block can be\nderived from the struct super_block.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7c439504ccba0cca43271e651013ab97a221c62",
      "tree": "35f2489b2503bdc9273435e8b433ac58b8a1f276",
      "parents": [
        "c5ca7c7636fa689a9746b6032f83aa7fffec31c6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 23:31:59 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 23:31:59 2009 -0400"
      },
      "message": "ext4: Use is_power_of_2() for clarity\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c5ca7c7636fa689a9746b6032f83aa7fffec31c6",
      "tree": "eebbdd1d477b5062148ee61c9e1bf1d4da3e9e05",
      "parents": [
        "29fa89d088941d79765d60f22d5ccdd6b8696e11"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 27 22:48:48 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 27 22:48:48 2009 -0400"
      },
      "message": "ext4: Fallback to vmalloc if kmalloc can\u0027t allocate s_flex_groups array\n\nFor very large filesystems, the s_flex_groups array can get quite big.\nFor example, a filesystem that can be resized up to 16TB will have\n8192 flex groups (assuming the default flex_bg size of 16), so the\narray is 96k, which is *very* marginal for kmalloc().  On the other\nhand, a 160GB filesystem without the resize_inode feature will only\nrequire 960 bytes.  So we try to allocate the array first using\nkmalloc(), and if that fails, we\u0027ll try to use vmalloc() instead.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "29fa89d088941d79765d60f22d5ccdd6b8696e11",
      "tree": "3fbe031eec140c03dafa11f2416c4f6e3826f21d",
      "parents": [
        "8fb0e342481c4d80040670fec915f0b9c7c6499a"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 12 16:30:27 2009 -0400"
      },
      "message": "ext4: Mark the unwritten buffer_head as mapped during write_begin\n\nSetting BH_Unwritten buffer_heads as BH_Mapped avoids multiple\n(unnecessary) calls to get_block() during the call to the write(2)\nsystem call.  Setting BH_Unwritten buffer heads as BH_Mapped requires\nthat the writepages() functions can handle BH_Unwritten buffer_heads.\n\nAfter this commit, things work as follows:\n\next4_ext_get_block() returns unmapped, unwritten, buffer head when\ncalled with create \u003d 0 for prealloc space. This makes sure we handle\nthe read path and non-delayed allocation case correctly.  Even though\nthe buffer head is marked unmapped we have valid b_blocknr and b_bdev\nvalues in the buffer_head.\n\next4_da_get_block_prep() called for block resrevation will now return\nmapped, unwritten, new buffer_head for prealloc space. This avoids\nmultiple calls to get_block() for write to same offset. By making such\nbuffers as BH_New, we also assure that sub-block zeroing of buffered\nwrites happens correctly.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "79ffab34391933ee3b95dac7f25c0478fa2f8f1e",
      "tree": "8bc139928e172ef2ebd38e01f97dc01f886d8526",
      "parents": [
        "9fa7eb283c5cdc2b0f4a8cfe6387ed82e5e9a3d3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 13 15:13:42 2009 -0400"
      },
      "message": "ext4: Properly initialize the buffer_head state\n\nThese struct buffer_heads are allocated on the stack (and hence are\ninitialized with stack garbage).  They are only used to call a\nget_blocks() function, so that\u0027s mostly OK, but b_state must be\ninitialized to be 0 so we don\u0027t have any unexpected BH_* flags set by\naccident, such as BH_Unwritten or BH_Delay.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c4b5a614316c505922a522b2e35ba05ea3e08a7c",
      "tree": "8b76988940551726ef05d311e02a06bb61464274",
      "parents": [
        "a9e817425dc0baede8ebe5fbc9984a640257432b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 18:45:35 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 18:45:35 2009 -0400"
      },
      "message": "ext4: Do not try to validate extents on special files\n\nThe EXTENTS_FL flag should never be set on special files, but if it\nis, don\u0027t bother trying to validate that the extents tree is valid,\nsince only files, directories, and non-fast symlinks will ever have an\nextent data structure.  We perhaps should flag the filesystem as being\ncorrupted if we see a special file (named pipes, device nodes, Unix\ndomain sockets, etc.) with the EXTENTS_FL flag, but e2fsck doesn\u0027t\ncurrently check this case, so we\u0027ll just ignore this for now, since\nit\u0027s harmless.\n\nWithout this fix, a special device with the extents flag is flagged as\nan error by the kernel, so it is impossible to access or delete the\ninode, but e2fsck doesn\u0027t see it as a problem, leading to\nconfused/frustrated users.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a9e817425dc0baede8ebe5fbc9984a640257432b",
      "tree": "ff59f9cc8dcee908f58a136554323d8c8fbfcca8",
      "parents": [
        "485c26ec70f823f2a9cf45982b724893e53a859e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 16:11:18 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 16:11:18 2009 -0400"
      },
      "message": "ext4: Ignore i_file_acl_high unless EXT4_FEATURE_INCOMPAT_64BIT is present\n\nDon\u0027t try to look at i_file_acl_high unless the INCOMPAT_64BIT feature\nbit is set.  The field is normally zero, but older versions of e2fsck\ndidn\u0027t automatically check to make sure of this, so in the spirit of\n\"be liberal in what you accept\", don\u0027t look at i_file_acl_high unless\nwe are using a 64-bit filesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "485c26ec70f823f2a9cf45982b724893e53a859e",
      "tree": "545ee089625b9b4131773eb26c57a51889deda78",
      "parents": [
        "0c8454f56623505a99463405fd7d5664adfbb094"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 13:43:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 24 13:43:20 2009 -0400"
      },
      "message": "ext4: Fix softlockup caused by illegal i_file_acl value in on-disk inode\n\nIf the block containing external extended attributes (which is stored\nin i_file_acl and i_file_acl_high) is larger than the on-disk\nfilesystem, the process which tried to access the extended attributes\nwill endlessly issue kernel printks complaining that\n\"__find_get_block_slow() failed\", locking up that CPU until the system\nis forcibly rebooted.\n\nSo when we read in the inode, make sure the i_file_acl value is legal,\nand if not, flag the filesystem as being corrupted.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4277bf122e907e4fec509fc0bd9bf5fde30b14e",
      "tree": "b359e8b0f7895acda1d6331332e69ea5b14d5f0d",
      "parents": [
        "6ae85d6db4871d8dbcb5cc0e9056f97f1ca07061",
        "b5451f7b2694b04d9f912f6cf09db1729f291996"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: Fix potential inode allocation soft lockup in Orlov allocator\n  ext4: Make the extent validity check more paranoid\n  jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  ext4: really print the find_group_flex fallback warning only once\n"
    },
    {
      "commit": "b5451f7b2694b04d9f912f6cf09db1729f291996",
      "tree": "a1221f12730bc54357fc7600de2b5fbcce97cac3",
      "parents": [
        "e84a26ce178345498a7eca0590852bcc36f1092f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 21:00:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 21:00:36 2009 -0400"
      },
      "message": "ext4: Fix potential inode allocation soft lockup in Orlov allocator\n\nIf the Orlov allocator is having trouble finding an appropriate block\ngroup, the fallback code could loop forever, causing a soft lockup\nwarning in find_group_orlov():\n\nBUG: soft lockup - CPU#0 stuck for 61s! [cp:11728]\n     ...\nPid: 11728, comm: cp Not tainted (2.6.30-rc1-dirty #77) Lenovo          \nEIP: 0060:[\u003cc021650e\u003e] EFLAGS: 00000246 CPU: 0\nEIP is at ext4_get_group_desc+0x54/0x9d\n    ...\nCall Trace:\n [\u003cc0218021\u003e] find_group_orlov+0x2ee/0x334\n [\u003cc0120a5f\u003e] ? sched_clock+0x8/0xb\n [\u003cc02188e3\u003e] ext4_new_inode+0x2cf/0xb1a\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e84a26ce178345498a7eca0590852bcc36f1092f",
      "tree": "dcd2f95c9f73ffb8d2020fe89bb1c30785e0fa78",
      "parents": [
        "38d726d153cfe5efe5fe22d28d36ab382dda3a5c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "message": "ext4: Make the extent validity check more paranoid\n\nInstead of just checking that the extent block number is greater or\nequal than s_first_data_block, make sure it it is not pointing into\nthe block group descriptors, since that is clearly wrong.  This helps\nprevent filesystem from getting very badly corrupted in case an extent\nblock is corrupted.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "226e7dabf5534722944adefbad01970bd38bb7ae",
      "tree": "569375339adae68e4773406de0640522158ff12e",
      "parents": [
        "4d1f9fdb6177a9bdecf26976337dd39abcc8edbc"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 15 10:36:16 2009 +0530"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:13 2009 +0200"
      },
      "message": "ext4: Remove code handling bio_alloc failure with __GFP_WAIT\n\nRemove code handling bio_alloc failure with __GFP_WAIT.\nGFP_NOIO implies __GFP_WAIT.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6b82f3cb2d480b7714eb0ff61aee99c22160389e",
      "tree": "31eea4876e8ceb93f8641082128b4a8ccd944e0b",
      "parents": [
        "b0cbc861a3c05e634520b049b5cc27ad6febb51f"
      ],
      "author": {
        "name": "Chuck Ebbert",
        "email": "cebbert@redhat.com",
        "time": "Tue Apr 14 07:37:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 07:37:40 2009 -0400"
      },
      "message": "ext4: really print the find_group_flex fallback warning only once\n\nMissing braces caused the warning to print more than once.\n\nSigned-Off-By: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0f2ddca66d70c8ccba7486cf2d79c6b60e777abd",
      "tree": "7d58c31ab30ba2b9e94780008a2083ac87f80db5",
      "parents": [
        "e44543b83bf4ab84dc6bd5b88158c78b1ed1c208"
      ],
      "author": {
        "name": "From: Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Apr 07 14:07:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 07 14:07:47 2009 -0400"
      },
      "message": "ext4: check block device size on mount\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e44543b83bf4ab84dc6bd5b88158c78b1ed1c208",
      "tree": "c55b92d612db9175125ca0edc33af3ff6dcc16d3",
      "parents": [
        "f73953c0656f2db9073c585c4df2884a8ecd101e"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "message": "ext4: Fix off-by-one-error in ext4_valid_extent_idx()\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "f73953c0656f2db9073c585c4df2884a8ecd101e"
}
