)]}'
{
  "log": [
    {
      "commit": "4edebed86690eb8db9af3ab85baf4a34e73266cc",
      "tree": "8ab144b08f490f239fa62be52470860c9311664d",
      "parents": [
        "51eab603f5c86dd1eae4c525df3e7f7eeab401d6",
        "5e44f8c374dc4f8eadf61cd18b2c0d46bc87c1b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:12:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:12:15 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull Ext4 updates from Theodore Ts\u0027o:\n \"The major new feature added in this update is Darrick J Wong\u0027s\n  metadata checksum feature, which adds crc32 checksums to ext4\u0027s\n  metadata fields.\n\n  There is also the usual set of cleanups and bug fixes.\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (44 commits)\n  ext4: hole-punch use truncate_pagecache_range\n  jbd2: use kmem_cache_zalloc wrapper instead of flag\n  ext4: remove mb_groups before tearing down the buddy_cache\n  ext4: add ext4_mb_unload_buddy in the error path\n  ext4: don\u0027t trash state flags in EXT4_IOC_SETFLAGS\n  ext4: let getattr report the right blocks in delalloc+bigalloc\n  ext4: add missing save_error_info() to ext4_error()\n  ext4: add debugging trigger for ext4_error()\n  ext4: protect group inode free counting with group lock\n  ext4: use consistent ssize_t type in ext4_file_write()\n  ext4: fix format flag in ext4_ext_binsearch_idx()\n  ext4: cleanup in ext4_discard_allocated_blocks()\n  ext4: return ENOMEM when mounts fail due to lack of memory\n  ext4: remove redundundant \"(char *) bh-\u003eb_data\" casts\n  ext4: disallow hard-linked directory in ext4_lookup\n  ext4: fix potential integer overflow in alloc_flex_gd()\n  ext4: remove needs_recovery in ext4_mb_init()\n  ext4: force ro mount if ext4_setup_super() fails\n  ext4: fix potential NULL dereference in ext4_free_inodes_counts()\n  ext4/jbd2: add metadata checksumming to the list of supported features\n  ...\n"
    },
    {
      "commit": "2c0544b23568674efba22532e1f25fb62ce10163",
      "tree": "b3da7424fc1aa1a69ec5c5c6ae6bbd7a74456364",
      "parents": [
        "6f2e9f0e7d795214b9cf5a47724a273b705fd113"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 30 22:56:46 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 30 22:56:46 2012 -0400"
      },
      "message": "ext4: add debugging trigger for ext4_error()\n\nMake it easy to test whether or not the error handling subsystem in\next4 is working correctly.  This allows us to simulate an ext4_error()\nby echoing a string to /sys/fs/ext4/\u003cdev\u003e/trigger_fs_error.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: ksumrall@google.com\n\n"
    },
    {
      "commit": "9d99012ff26380a09092a9fddbb6e5f996dc631f",
      "tree": "8feeb9279c718d176fd7cb54594e5226da099fda",
      "parents": [
        "7e84b6216467b84cd332c8e567bf5aa113fd2f38"
      ],
      "author": {
        "name": "Akira Fujita",
        "email": "a-fujita@rs.jp.nec.com",
        "time": "Mon May 28 14:19:25 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 14:19:25 2012 -0400"
      },
      "message": "ext4: remove needs_recovery in ext4_mb_init()\n\nneeds_recovery in ext4_mb_init() is not used, remove it.\n\nSigned-off-by: Akira Fujita \u003ca-fujita@rs.jp.ne.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e93376c20b70d1e62bb3246acd1bbe21fe58859f",
      "tree": "922a51a3ce32a229d2b57be3bade92e356f10c88",
      "parents": [
        "c390087591dcbecd244c31d979ccdad49ae83364"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun May 27 08:12:42 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 27 08:12:42 2012 -0400"
      },
      "message": "ext4/jbd2: add metadata checksumming to the list of supported features\n\nActivate the metadata checksumming feature by adding it to ext4 and\njbd2\u0027s lists of supported features.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "644473e9c60c1ff4f6351fed637a6e5551e3dce7",
      "tree": "10316518bedc735a2c6552886658d69dfd9f1eb0",
      "parents": [
        "fb827ec68446c83e9e8754fa9b55aed27ecc4661",
        "4b06a81f1daee668fbd6de85557bfb36dd36078f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 23 17:42:39 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace enhancements from Eric Biederman:\n \"This is a course correction for the user namespace, so that we can\n  reach an inexpensive, maintainable, and reasonably complete\n  implementation.\n\n  Highlights:\n   - Config guards make it impossible to enable the user namespace and\n     code that has not been converted to be user namespace safe.\n\n   - Use of the new kuid_t type ensures the if you somehow get past the\n     config guards the kernel will encounter type errors if you enable\n     user namespaces and attempt to compile in code whose permission\n     checks have not been updated to be user namespace safe.\n\n   - All uids from child user namespaces are mapped into the initial\n     user namespace before they are processed.  Removing the need to add\n     an additional check to see if the user namespace of the compared\n     uids remains the same.\n\n   - With the user namespaces compiled out the performance is as good or\n     better than it is today.\n\n   - For most operations absolutely nothing changes performance or\n     operationally with the user namespace enabled.\n\n   - The worst case performance I could come up with was timing 1\n     billion cache cold stat operations with the user namespace code\n     enabled.  This went from 156s to 164s on my laptop (or 156ns to\n     164ns per stat operation).\n\n   - (uid_t)-1 and (gid_t)-1 are reserved as an internal error value.\n     Most uid/gid setting system calls treat these value specially\n     anyway so attempting to use -1 as a uid would likely cause\n     entertaining failures in userspace.\n\n   - If setuid is called with a uid that can not be mapped setuid fails.\n     I have looked at sendmail, login, ssh and every other program I\n     could think of that would call setuid and they all check for and\n     handle the case where setuid fails.\n\n   - If stat or a similar system call is called from a context in which\n     we can not map a uid we lie and return overflowuid.  The LFS\n     experience suggests not lying and returning an error code might be\n     better, but the historical precedent with uids is different and I\n     can not think of anything that would break by lying about a uid we\n     can\u0027t map.\n\n   - Capabilities are localized to the current user namespace making it\n     safe to give the initial user in a user namespace all capabilities.\n\n  My git tree covers all of the modifications needed to convert the core\n  kernel and enough changes to make a system bootable to runlevel 1.\"\n\nFix up trivial conflicts due to nearby independent changes in fs/stat.c\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (46 commits)\n  userns:  Silence silly gcc warning.\n  cred: use correct cred accessor with regards to rcu read lock\n  userns: Convert the move_pages, and migrate_pages permission checks to use uid_eq\n  userns: Convert cgroup permission checks to use uid_eq\n  userns: Convert tmpfs to use kuid and kgid where appropriate\n  userns: Convert sysfs to use kgid/kuid where appropriate\n  userns: Convert sysctl permission checks to use kuid and kgids.\n  userns: Convert proc to use kuid/kgid where appropriate\n  userns: Convert ext4 to user kuid/kgid where appropriate\n  userns: Convert ext3 to use kuid/kgid where appropriate\n  userns: Convert ext2 to use kuid/kgid where appropriate.\n  userns: Convert devpts to use kuid/kgid where appropriate\n  userns: Convert binary formats to use kuid/kgid where appropriate\n  userns: Add negative depends on entries to avoid building code that is userns unsafe\n  userns: signal remove unnecessary map_cred_ns\n  userns: Teach inode_capable to understand inodes whose uids map to other namespaces.\n  userns: Fail exec for suid and sgid binaries with ids outside our user namespace.\n  userns: Convert stat to return values mapped from kuids and kgids\n  userns: Convert user specfied uids and gids in chown into kuids and kgid\n  userns: Use uid_eq gid_eq helpers when comparing kuids and kgids in the vfs\n  ...\n"
    },
    {
      "commit": "08cefc7ab839cf3ece44b8033968a4732eac06d8",
      "tree": "7264efb33cb3d1249f7be3a7ea6dd12d30c313c1",
      "parents": [
        "1523299d5817773e344d135d4b1c485f269400bc"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Feb 07 15:41:49 2012 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 15 14:59:27 2012 -0700"
      },
      "message": "userns: Convert ext4 to user kuid/kgid where appropriate\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "5c359a47e7d999a0ea7f397da2c15590d0a82815",
      "tree": "f104bbabd12d6ac422bf80a6c477b803102ed3c7",
      "parents": [
        "feb0ab32a57e4e6c8b24f6fb68f0ce08efe4603c"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:47:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:47:10 2012 -0400"
      },
      "message": "ext4: add checksums to the MMP block\n\nCompute and verify a checksum for the MMP block.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "feb0ab32a57e4e6c8b24f6fb68f0ce08efe4603c",
      "tree": "6438fc46013c2f5d60e78060c66e2809c6056f1a",
      "parents": [
        "cc8e94fd126ab2d2e4bcb1b65c7316196f0cec8c"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:45:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:45:10 2012 -0400"
      },
      "message": "ext4: make block group checksums use metadata_csum algorithm\n\nmetadata_csum supersedes uninit_bg.  Convert the ROCOMPAT uninit_bg\nflag check to a helper function that covers both, and make the\nchecksum calculation algorithm use either crc16 or the metadata_csum\nchosen algorithm depending on which flag is set.  Print a warning if\nwe try to mount a filesystem with both feature flags set.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b0336e8d2108e6302aecaadd17c6c0bd686da22d",
      "tree": "063ec0bc590950b7ca0e2c5d5ed8a1c259ce1675",
      "parents": [
        "dbe89444042ab6540bc304343cfdcbc8b95d003d"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:41:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:41:10 2012 -0400"
      },
      "message": "ext4: calculate and verify checksums of directory leaf blocks\n\nCalculate and verify the checksums for directory leaf blocks\n(i.e. blocks that only contain actual directory entries).  The\nchecksum lives in what looks to be an unused directory entry with a 0\nname_len at the end of the block.  This scheme is not used for\ninternal htree nodes because the mechanism in place there only costs\none dx_entry, whereas the \"empty\" directory entry would cost two\ndx_entries.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fa77dcfafeaa6bc73293c646bfc3d5192dcf0be2",
      "tree": "66c4232c2e5c1f59666e05164b77539a9b1dd290",
      "parents": [
        "41a246d1ff75a95d2be3191ca6e6db139dc0f430"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:35:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:35:10 2012 -0400"
      },
      "message": "ext4: calculate and verify block bitmap checksum\n\nCompute and verify the checksum of the block bitmap; this checksum is\nstored in the block group descriptor.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "41a246d1ff75a95d2be3191ca6e6db139dc0f430",
      "tree": "0b5150f476dd69726ffe7ea1ba83832c42b441be",
      "parents": [
        "814525f4df50a196464ce2c7abe91f693203060f"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:33:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:33:10 2012 -0400"
      },
      "message": "ext4: calculate and verify checksums for inode bitmaps\n\nCompute and verify the checksum of the inode bitmap; the checkum is\nstored in the block group descriptor.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "814525f4df50a196464ce2c7abe91f693203060f",
      "tree": "221de5b0331240ff6bc99a2dd7c48460e1305075",
      "parents": [
        "a9c4731780544d52b243bf46e4dd635c67fa9f84"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:31:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:31:10 2012 -0400"
      },
      "message": "ext4: calculate and verify inode checksums\n\nThis patch introduces to ext4 the ability to calculate and verify\ninode checksums.  This requires the use of a new ro compatibility flag\nand some accompanying e2fsprogs patches to provide the relevant\nfeatures in tune2fs and e2fsck.  The inode generation changes have\nbeen integrated into this patch.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a9c4731780544d52b243bf46e4dd635c67fa9f84",
      "tree": "dc735f2f59fa2107e8fed8e3d26f259557e34008",
      "parents": [
        "0441984a3398970ab4820410b9cf4ff85bf3a6b0"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:29:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:29:10 2012 -0400"
      },
      "message": "ext4: calculate and verify superblock checksum\n\nCalculate and verify the superblock checksum.  Since the UUID and\nblock group number are embedded in each copy of the superblock, we\nneed only checksum the entire block.  Refactor some of the code to\neliminate open-coding of the checksum update call.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0441984a3398970ab4820410b9cf4ff85bf3a6b0",
      "tree": "23c22fad52554003b39d35e6dee7729df3e0797d",
      "parents": [
        "d25425f8e0ed01fc0167c043aee7e619fc3f6ab2"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:27:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:27:10 2012 -0400"
      },
      "message": "ext4: load the crc32c driver if necessary\n\nObtain a reference to the cryptoapi and crc32c if we mount a\nfilesystem with metadata checksumming enabled.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e615391896064eb5a0c760d086b8e1c6ecfffeab",
      "tree": "1d05a5e925579bc444468d88eacca00d633b8286",
      "parents": [
        "f84891289e62a74e9b4942eaad80617368b2d778"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:23:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:23:10 2012 -0400"
      },
      "message": "ext4: change on-disk layout to support extended metadata checksumming\n\nDefine flags and change structure definitions to allow checksumming of\next4 metadata.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9cd70b347e9761ea2d2ac3d758c529a48a8193e6",
      "tree": "f215d10558a62c34aff4528f1c40f1b154bd6c25",
      "parents": [
        "0034102808e0dbbf3a2394b82b1bb40b5778de9e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 16 12:16:20 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 16 12:16:20 2012 -0400"
      },
      "message": "ext4: address scalability issue by removing extent cache statistics\n\nAndi Kleen and Tim Chen have reported that under certain circumstances\nthe extent cache statistics are causing scalability problems due to\ncache line bounces.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "71db34fc4330f7c784397acb9f1e6ee7f7b32eb2",
      "tree": "77dd08f6f778a799dcd0c48eb72d0742349df235",
      "parents": [
        "50483c3268918ee51a56d1baa39b9149d2d0d521",
        "797a9d797f8483bb67f265c761b76dcd5a077a23"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:53:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 14:53:25 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.4\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd changes from Bruce Fields:\n\nHighlights:\n - Benny Halevy and Tigran Mkrtchyan implemented some more 4.1 features,\n   moving us closer to a complete 4.1 implementation.\n - Bernd Schubert fixed a long-standing problem with readdir cookies on\n   ext2/3/4.\n - Jeff Layton performed a long-overdue overhaul of the server reboot\n   recovery code which will allow us to deprecate the current code (a\n   rather unusual user of the vfs), and give us some needed flexibility\n   for further improvements.\n - Like the client, we now support numeric uid\u0027s and gid\u0027s in the\n   auth_sys case, allowing easier upgrades from NFSv2/v3 to v4.x.\n\nPlus miscellaneous bugfixes and cleanup.\n\nThanks to everyone!\n\nThere are also some delegation fixes waiting on vfs review that I\nsuppose will have to wait for 3.5.  With that done I think we\u0027ll finally\nturn off the \"EXPERIMENTAL\" dependency for v4 (though that\u0027s mostly\nsymbolic as it\u0027s been on by default in distro\u0027s for a while).\n\nAnd the list of 4.1 todo\u0027s should be achievable for 3.5 as well:\n\n   http://wiki.linux-nfs.org/wiki/index.php/Server_4.0_and_4.1_issues\n\nthough we may still want a bit more experience with it before turning it\non by default.\n\n* \u0027for-3.4\u0027 of git://linux-nfs.org/~bfields/linux: (55 commits)\n  nfsd: only register cld pipe notifier when CONFIG_NFSD_V4 is enabled\n  nfsd4: use auth_unix unconditionally on backchannel\n  nfsd: fix NULL pointer dereference in cld_pipe_downcall\n  nfsd4: memory corruption in numeric_name_to_id()\n  sunrpc: skip portmap calls on sessions backchannel\n  nfsd4: allow numeric idmapping\n  nfsd: don\u0027t allow legacy client tracker init for anything but init_net\n  nfsd: add notifier to handle mount/unmount of rpc_pipefs sb\n  nfsd: add the infrastructure to handle the cld upcall\n  nfsd: add a header describing upcall to nfsdcld\n  nfsd: add a per-net-namespace struct for nfsd\n  sunrpc: create nfsd dir in rpc_pipefs\n  nfsd: add nfsd4_client_tracking_ops struct and a way to set it\n  nfsd: convert nfs4_client-\u003ecl_cb_flags to a generic flags field\n  NFSD: Fix nfs4_verifier memory alignment\n  NFSD: Fix warnings when NFSD_DEBUG is not defined\n  nfsd: vfs_llseek() with 32 or 64 bit offsets (hashes)\n  nfsd: rename \u0027int access\u0027 to \u0027int may_flags\u0027 in nfsd_open()\n  ext4: return 32/64-bit dir name hash according to usage type\n  fs: add new FMODE flags: FMODE_32bithash and FMODE_64bithash\n  ...\n"
    },
    {
      "commit": "ace36ad431c6820c2a8718cee85e5294d6e19747",
      "tree": "b912bf7cf277cbca3bb04d71e973ad1cbf62b432",
      "parents": [
        "7f6a11e73d755ce82497ee4ac79d85aa10f73a38"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Mar 19 23:11:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:11:43 2012 -0400"
      },
      "message": "ext4: add no_printk argument validation, fix fallout\n\nAdd argument validation to debug functions.\nUse ##__VA_ARGS__.\n\nFix format and argument mismatches.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d1f5273e9adb40724a85272f248f210dc4ce919a",
      "tree": "1ddb119dab8247ab7d7774394094c61161013f2a",
      "parents": [
        "6a8a13e03861c0ab83ab07d573ca793cff0e5d00"
      ],
      "author": {
        "name": "Fan Yong",
        "email": "yong.fan@whamcloud.com",
        "time": "Sun Mar 18 22:44:40 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 18 22:44:40 2012 -0400"
      },
      "message": "ext4: return 32/64-bit dir name hash according to usage type\n\nTraditionally ext2/3/4 has returned a 32-bit hash value from llseek()\nto appease NFSv2, which can only handle a 32-bit cookie for seekdir()\nand telldir().  However, this causes problems if there are 32-bit hash\ncollisions, since the NFSv2 server can get stuck resending the same\nentries from the directory repeatedly.\n\nAllow ext4 to return a full 64-bit hash (both major and minor) for\ntelldir to decrease the chance of hash collisions.  This still needs\nintegration on the NFS side.\n\nPatch-updated-by: Bernd Schubert \u003cbernd.schubert@itwm.fraunhofer.de\u003e\n(blame me if something is not correct)\n\nSigned-off-by: Fan Yong \u003cyong.fan@whamcloud.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: Bernd Schubert \u003cbernd.schubert@itwm.fraunhofer.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4188188bdc3aed29eb41fb1537305cff7431d062",
      "tree": "8068d261bb142eeb6b5c443db23baf1dca77b09e",
      "parents": [
        "b43d17f319f2c502b17139d1cf70731b2b62c644"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Mon Mar 05 10:40:22 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 05 10:40:22 2012 -0500"
      },
      "message": "ext4: add comments to definition of ext4_io_end_t\n\nThis should make it more clear what this structure is used\nfor, and how some of the (mutually exclusive) fields are\nused to keep page cache references.\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "491caa43639abcffaa645fbab372a7ef4ce2975c",
      "tree": "361ce8690a50681765a21fb6c0ed579034ae4b4e",
      "parents": [
        "93ef8541d5c3ad1a73057ff358a49d0ee7146d6f"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Mar 05 10:29:52 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 05 10:29:52 2012 -0500"
      },
      "message": "ext4: fix race between sync and completed io work\n\nThe following command line will leave the aio-stress process unkillable\non an ext4 file system (in my case, mounted on /mnt/test):\n\naio-stress -t 20 -s 10 -O -S -o 2 -I 1000 /mnt/test/aiostress.3561.4 /mnt/test/aiostress.3561.4.20 /mnt/test/aiostress.3561.4.19 /mnt/test/aiostress.3561.4.18 /mnt/test/aiostress.3561.4.17 /mnt/test/aiostress.3561.4.16 /mnt/test/aiostress.3561.4.15 /mnt/test/aiostress.3561.4.14 /mnt/test/aiostress.3561.4.13 /mnt/test/aiostress.3561.4.12 /mnt/test/aiostress.3561.4.11 /mnt/test/aiostress.3561.4.10 /mnt/test/aiostress.3561.4.9 /mnt/test/aiostress.3561.4.8 /mnt/test/aiostress.3561.4.7 /mnt/test/aiostress.3561.4.6 /mnt/test/aiostress.3561.4.5 /mnt/test/aiostress.3561.4.4 /mnt/test/aiostress.3561.4.3 /mnt/test/aiostress.3561.4.2\n\nThis is using the aio-stress program from the xfstests test suite.\nThat particular command line tells aio-stress to do random writes to\n20 files from 20 threads (one thread per file).  The files are NOT\npreallocated, so you will get writes to random offsets within the\nfile, thus creating holes and extending i_size.  It also opens the\nfile with O_DIRECT and O_SYNC.\n\nOn to the problem.  When an I/O requires unwritten extent conversion,\nit is queued onto the completed_io_list for the ext4 inode.  Two code\npaths will pull work items from this list.  The first is the\next4_end_io_work routine, and the second is ext4_flush_completed_IO,\nwhich is called via the fsync path (and O_SYNC handling, as well).\nThere are two issues I\u0027ve found in these code paths.  First, if the\nfsync path beats the work routine to a particular I/O, the work\nroutine will free the io_end structure!  It does not take into account\nthe fact that the io_end may still be in use by the fsync path.  I\u0027ve\nfixed this issue by adding yet another IO_END flag, indicating that\nthe io_end is being processed by the fsync path.\n\nThe second problem is that the work routine will make an assignment to\nio-\u003eflag outside of the lock.  I have witnessed this result in a hang\nat umount.  Moving the flag setting inside the lock resolved that\nproblem.\n\nThe problem was introduced by commit b82e384c7b (\"ext4: optimize\nlocking for end_io extent conversion\"), which first appeared in 3.2.\nAs such, the fix should be backported to that release (probably along\nwith the unwritten extent conversion race fix).\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCC: stable@kernel.org\n\n"
    },
    {
      "commit": "5a916be1b31de9e833aa764de6faf27bb79f9b83",
      "tree": "62cf0697a0edef5ab44870cbc81cf07451f232ef",
      "parents": [
        "2adf6da8379b68838aa1002e11efd66916689a9b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 19:27:31 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 19:27:31 2012 -0500"
      },
      "message": "ext4: make ext4_show_options() be table-driven\n\nConsistently show mount options which are the non-default, so that\n/proc/mounts accurately shows the mount options that would be\nnecessary to mount the file system in its current mode of operation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "39ef17f1b0613b46c6973596525c2bc816d90b5b",
      "tree": "c07e2dcd3cd21d7d5db0203263e5efae63a02729",
      "parents": [
        "c64db50e76c4bf68c0a84379d7bd70daada531b4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 17:56:23 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 17:56:23 2012 -0500"
      },
      "message": "ext4: simplify handling of the errors\u003d* mount options\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c64db50e76c4bf68c0a84379d7bd70daada531b4",
      "tree": "eaf00466a48e2ce16d087f4ccb5d5545adfcf613",
      "parents": [
        "ee4a3fcd1da660147624f13a9dc31d8bf43f5b06"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 12:23:11 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 12:23:11 2012 -0500"
      },
      "message": "ext4: remove the I_VERSION mount flag and use the super_block flag instead\n\nThere\u0027s no point to have two bits that are set in parallel; so use the\nMS_I_VERSION flag that is needed by the VFS anyway, and that way we\nfree up a bit in sbi-\u003es_mount_opts.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "266991b13890049ee1a6bb95b9817f06339ee3d7",
      "tree": "55c4f0e3c0b978e563ced079002bcf7ea60d9767",
      "parents": [
        "d4dc462f556afe510d58d3b12b3d66c2cabff539"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Feb 20 17:59:24 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:59:24 2012 -0500"
      },
      "message": "ext4: fix race between unwritten extent conversion and truncate\n\nThe following comment in ext4_end_io_dio caught my attention:\n\n\t/* XXX: probably should move into the real I/O completion handler */\n        inode_dio_done(inode);\n\nThe truncate code takes i_mutex, then calls inode_dio_wait.  Because the\next4 code path above will end up dropping the mutex before it is\nreacquired by the worker thread that does the extent conversion, it\nseems to me that the truncate can happen out of order.  Jan Kara\nmentioned that this might result in error messages in the system logs,\nbut that should be the extent of the \"damage.\"\n\nThe fix is pretty straight-forward: don\u0027t call inode_dio_done until the\nextent conversion is complete.\n\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "856cbcf9a971b43a83e78ac708ed6459ab1d0c89",
      "tree": "3ba90433f4e2c2315acf11a45c8d533fb3ccee92",
      "parents": [
        "2201c590dd6e802795e21e69e3c152c519f1568e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:53:01 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:53:01 2012 -0500"
      },
      "message": "ext4: fix INCOMPAT feature codepoint reservation for INLINEDATA\n\nIn commit 9b90e5e028 I incorrectly reserved the wrong bit for\nEXT4_FEATURE_INCOMPAT_INLINEDATA per the discussion on the linux-ext4\nlist on December 7, 2011.  The codepoint 0x2000 should be used for\nEXT4_FEATURE_INCOMPAT_USE_META_CSUM, so INLINEDATA will be assigned\nthe value 0x8000.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "813e57276fd909f7d5a816ef7ca706fca491ee61",
      "tree": "cc2d262c0f6524f1a18d2a168d03e2ae3eb624ab",
      "parents": [
        "119c0d4460b001e44b41dcf73dc6ee794b98bd31"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:52:46 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:52:46 2012 -0500"
      },
      "message": "ext4: fix race when setting bitmap_uptodate flag\n\nIn ext4_read_{inode,block}_bitmap() we were setting bitmap_uptodate()\nbefore submitting the buffer for read.  The is bad, since we check\nbitmap_uptodate() without locking the buffer, and so if another\nprocess is racing with us, it\u0027s possible that they will think the\nbitmap is uptodate even though the read has not completed yet,\nresulting in inodes and blocks potentially getting allocated more than\nonce if we get really unlucky.\n\nAddresses-Google-Bug: 2828254\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ff9cb1c4eead5e4c292e75cd3170a82d66944101",
      "tree": "cdb132a39e550a9b7b28ea67544cb86cd6ebdb6e",
      "parents": [
        "e4e11180dfa545233e5145919b75b7fac88638df",
        "d50f2ab6f050311dbf7b8f5501b25f0bf64a439b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "message": "Merge branch \u0027for_linus\u0027 into for_linus_merged\n\nConflicts:\n\tfs/ext4/ioctl.c\n"
    },
    {
      "commit": "5f163cc759a9fa8844a4efcf1f579dc5b2ca2491",
      "tree": "2a8e127fbe2e807113699de992cd1d248b1f9e3e",
      "parents": [
        "176576dbc8141528557eeeb007af2d5a2a4891ef"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Jan 04 22:33:28 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 22:33:28 2012 -0500"
      },
      "message": "ext4: make more symbols static\n\nA couple more functions can reasonably be made static if desired.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9b90e5e02896406a6da28a376568003d14c06770",
      "tree": "b8f842e3d8cd7dc68f63fbead56f16fed546d852",
      "parents": [
        "1d526fc91bea04ee35b7599bf8b82f86c0aaf46c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 22:01:53 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 22:01:53 2012 -0500"
      },
      "message": "ext4: reserve new feature flag codepoints\n\nReserve the ext4 features flags EXT4_FEATURE_RO_COMPAT_METADATA_CSUM,\nEXT4_FEATURE_INCOMPAT_INLINEDATA, and EXT4_FEATURE_INCOMPAT_LARGEDIR.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "19c5246d251640ac76daa4d34165af78c64b1454",
      "tree": "cdf4f2250ca6b61d4910a3279d4d991486631d30",
      "parents": [
        "4bac1f8cef7bfd2c62793f75aba66a5b8357dede"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Jan 04 17:09:44 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 17:09:44 2012 -0500"
      },
      "message": "ext4: add new online resize interface\n\nThis patch adds new online resize interface, whose input argument is a\n64-bit integer indicating how many blocks there are in the resized fs.\n\nIn new resize impelmentation, all work like allocating group tables\nare done by kernel side, so the new resize interface can support\nflex_bg feature and prepares ground for suppoting resize with features\nlike bigalloc and exclude bitmap. Besides these, user-space tools just\npasses in the new number of blocks.\n\nWe delay initializing the bitmaps and inode tables of added groups if\npossible and add multi groups (a flex groups) each time, so new resize\nis very fast like mkfs.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "33afdcc5402d0abf70ef2dfb96d0b901d20bcc37",
      "tree": "1991d90dfed2cab0775bf668a897bcf66681df53",
      "parents": [
        "28c7bac0091687e6116ebd6c179e154ae4053c90"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jan 03 23:32:52 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 03 23:32:52 2012 -0500"
      },
      "message": "ext4: add a function which sets up group blocks of a flex bg\n\nThis patch adds a function named setup_new_flex_group_blocks() which\nsets up group blocks of a flex bg.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dcca3fec9f6436dae8693e38cc69c241ea0860cd",
      "tree": "b887cd52b62ec6c43635c6c130c0fb06ab0fbcb4",
      "parents": [
        "69b34f3ab30836bb736b5108f40bf76de9f656f3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 02:48:06 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:59 2012 -0500"
      },
      "message": "ext4: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "597d508c17a6dcd17770f4dd9da873d93cc15493",
      "tree": "e977644fd79c2f73bd90b78c08075cb53cc65196",
      "parents": [
        "ccb4d7af914e0fe9b2f1022f8ea6c300463fd5e6"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Dec 28 20:32:07 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 20:32:07 2011 -0500"
      },
      "message": "ext4: use proper little-endian bitops\n\next4_{set,clear}_bit() is defined as __test_and_{set,clear}_bit_le() for\next4.  Only two ext4_{set,clear}_bit() calls check the return value.  The\nrest of calls ignore the return value and they can be replaced with\n__{set,clear}_bit_le().\n\nThis changes ext4_{set,clear}_bit() from __test_and_{set,clear}_bit_le()\nto __{set,clear}_bit_le() and introduces ext4_test_and_{set,clear}_bit()\nfor the two places where old bit needs to be returned.\n\nThis ext4_{set,clear}_bit() change is considered safe, because if someone\nuses these macros without noticing the change, new ext4_{set,clear}_bit\ndon\u0027t have return value and causes compiler errors where the return value\nis used.\n\nThis also removes unused ext4_find_first_zero_bit().\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ccb4d7af914e0fe9b2f1022f8ea6c300463fd5e6",
      "tree": "1e8f739dfdd2aadf667d608800b8cad551f13bd3",
      "parents": [
        "14c83c9fddf2e75bdd0c20f1072f35260e356484"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "wenqing.lz@taobao.com",
        "time": "Wed Dec 28 20:25:40 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 20:25:40 2011 -0500"
      },
      "message": "ext4: remove no longer used functions in inode.c\n\nThe functions ext4_block_truncate_page() and ext4_block_zero_page_range()\nare no longer used, so remove them.\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f1f8935a5c38a2c61e86a42bc971a2539eef2211",
      "tree": "694950045f2f5d89507d7206cf6595e09cdfbd2c",
      "parents": [
        "34116645d912f65d7eb4508a1db3c9d0e45facb1",
        "f2a44523b20f323e4aef7c16261d34d6f0a4bf06"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 10:06:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 10:06:20 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (97 commits)\n  jbd2: Unify log messages in jbd2 code\n  jbd/jbd2: validate sb-\u003es_first in journal_get_superblock()\n  ext4: let ext4_ext_rm_leaf work with EXT_DEBUG defined\n  ext4: fix a syntax error in ext4_ext_insert_extent when debugging enabled\n  ext4: fix a typo in struct ext4_allocation_context\n  ext4: Don\u0027t normalize an falloc request if it can fit in 1 extent.\n  ext4: remove comments about extent mount option in ext4_new_inode()\n  ext4: let ext4_discard_partial_buffers handle unaligned range correctly\n  ext4: return ENOMEM if find_or_create_pages fails\n  ext4: move vars to local scope in ext4_discard_partial_page_buffers_no_lock()\n  ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten\n  ext4: optimize locking for end_io extent conversion\n  ext4: remove unnecessary call to waitqueue_active()\n  ext4: Use correct locking for ext4_end_io_nolock()\n  ext4: fix race in xattr block allocation path\n  ext4: trace punch_hole correctly in ext4_ext_map_blocks\n  ext4: clean up AGGRESSIVE_TEST code\n  ext4: move variables to their scope\n  ext4: fix quota accounting during migration\n  ext4: migrate cleanup\n  ...\n"
    },
    {
      "commit": "b9075fa968a0a4347aef35e235e2995c0e57dddd",
      "tree": "cf9f9716784e790d8a43339653256d9cf9178ff3",
      "parents": [
        "ae29bc92da01a2e9d278a9a58c3b307d41cc0254"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Oct 31 17:11:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:54 2011 -0700"
      },
      "message": "treewide: use __printf not __attribute__((format(printf,...)))\n\nStandardize the style for compiler based printf format verification.\nStandardized the location of __printf too.\n\nDone via script and a little typing.\n\n$ grep -rPl --include\u003d*.[ch] -w \"__attribute__\" * | \\\n  grep -vP \"^(tools|scripts|include/linux/compiler-gcc.h)\" | \\\n  xargs perl -n -i -e \u0027local $/; while (\u003c\u003e) { s/\\b__attribute__\\s*\\(\\s*\\(\\s*format\\s*\\(\\s*printf\\s*,\\s*(.+)\\s*,\\s*(.+)\\s*\\)\\s*\\)\\s*\\)/__printf($1, $2)/g ; print; }\u0027\n\n[akpm@linux-foundation.org: revert arch bits]\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0edeb71dc9133bfb505d3bf59642e07cd936613e",
      "tree": "bcb68e2676d9bba1e4e4e28fb1ba8d382caf26eb",
      "parents": [
        "b82e384c7bb9a19036b4daf58fa216df7cd48aa0"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 31 17:30:44 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Oct 31 17:30:44 2011 -0400"
      },
      "message": "ext4: Create helper function for EXT4_IO_END_UNWRITTEN and i_aiodio_unwritten\n\nEXT4_IO_END_UNWRITTEN flag set and the increase of i_aiodio_unwritten\nshould be done simultaneously since ext4_end_io_nolock always clear\nthe flag and decrease the counter in the same time.\n\nWe have found some bugs that the flag is set while leaving\ni_aiodio_unwritten unchanged(commit 32c80b32c053d). So this patch just tries\nto create a helper function to wrap them to avoid any future bug.\nThe idea is inspired by Eric.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5cb81dabcc28863e7d04e6fd9ede154bd8459c14",
      "tree": "704df9fffdc243449dc5eba697cec133162ee1bf",
      "parents": [
        "fba90ffee813e2425feb9a57c532b3d297af18c3"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sat Oct 29 09:05:00 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 29 09:05:00 2011 -0400"
      },
      "message": "ext4: fix quota accounting during migration\n\nThe tmp_inode should have same uid/gid as the original inode.\nOtherwise new metadata blocks will be accounted to wrong quota-id,\nwhich will result in a quota leak after the inode migration is\ncompleted.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4e5d88b1b24827f4f6a3cba43228936a67d81ba",
      "tree": "0f5b0309f290f5fc23478794c6f4adcd7c18896a",
      "parents": [
        "750c9c47a5f9daa88333ac435a1afe4d4b428230"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Oct 25 08:15:12 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Oct 25 08:15:12 2011 -0400"
      },
      "message": "ext4: update EOFBLOCKS flag on fallocate properly\n\nEOFBLOCK_FL should be updated if called w/o FALLOCATE_FL_KEEP_SIZE\nCurrently it happens only if new extent was allocated.\n\nTESTCASE:\nfallocate test_file -n -l4096\nfallocate test_file -l4096\nLast fallocate cmd has updated size, but keept EOFBLOCK_FL set. And\nfsck will complain about that.\n\nAlso remove ping pong in ext4_fallocate() in case of new extents,\nwhere ext4_ext_map_blocks() clear EOFBLOCKS bit, and later\next4_falloc_update_inode() restore it again.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7fd59c83b05dc1b8af2be4d991ee376f782cd8b0",
      "tree": "0d320a397b687f822167749afbb11d89d9f21a66",
      "parents": [
        "df3ab17072c31fbd394614711772682f0a956a2c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Sat Oct 08 15:56:35 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 08 15:56:35 2011 -0400"
      },
      "message": "ext4: remove the obsolete/broken EXT4_IOC_WAIT_FOR_READONLY ioctl\n\nThere are no users of the EXT4_IOC_WAIT_FOR_READONLY ioctl, and it is\nalso broken.  No one sets the set_ro_timer, no one wakes up us and our\nstate is set to TASK_INTERRUPTIBLE not RUNNING.  So remove it.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4113c4caa4f355b8ff8b7ff0510c29c9d00d30b3",
      "tree": "b978be1044d72ab78739edd441385253f6c932ac",
      "parents": [
        "af909a57fde821627282204ba43f27331342bf26"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Sat Oct 08 14:34:47 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 08 14:34:47 2011 -0400"
      },
      "message": "ext4: remove deprecated oldalloc\n\nFor a long time now orlov is the default block allocator in the\next4. It performs better than the old one and no one seems to claim\notherwise so we can safely drop it and make oldalloc and orlov mount\noption deprecated.\n\nThis is a part of the effort to reduce number of ext4 options hence the\ntest matrix.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5356f2615cd558c57a1f7d7528d1ad4de3640d96",
      "tree": "e3590bf14d9a21c4eb365105886382bfb1131b95",
      "parents": [
        "d8990240d8c911064447f8aa5a440f9345a6d692"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:20:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:20:51 2011 -0400"
      },
      "message": "ext4: attempt to fix race in bigalloc code path\n\nCurrently, there exists a race between delayed allocated writes and\nthe writeback when bigalloc feature is in use. The race was because we\nwanted to determine what blocks in a cluster are under delayed\nallocation and we were using buffer_delayed(bh) check for it. But, the\nwriteback codepath clears this bit without any synchronization which\nresulted in a race and an ext4 warning similar to:\n\nEXT4-fs (ram1): ext4_da_update_reserve_space: ino 13, used 1 with only 0\n\t\treserved data blocks\n\nThe race existed in two places.\n(1) between ext4_find_delalloc_range() and ext4_map_blocks() when called from\n    writeback code path.\n(2) between ext4_find_delalloc_range() and ext4_da_get_block_prep() (where\n    buffer_delayed(bh) is set.\n\nTo fix (1), this patch introduces a new buffer_head state bit -\nBH_Da_Mapped.  This bit is set under the protection of\nEXT4_I(inode)-\u003ei_data_sem when we have actually mapped the delayed\nallocated blocks during the writeout time. We can now reliably check\nfor this bit inside ext4_find_delalloc_range() to determine whether\nthe reservation for the blocks have already been claimed or not.\n\nTo fix (2), it was necessary to set buffer_delay(bh) under the\nprotection of i_data_sem.  So, I extracted the very beginning of\next4_map_blocks into a new function - ext4_da_map_blocks() - and\nperformed the required setting of bh_delay bit and the quota\nreservation under the protection of i_data_sem.  These two fixes makes\nthe checking of buffer_delay(bh) and buffer_da_mapped(bh) consistent,\nthus removing the race.\n\nTested: I was able to reproduce the problem by running \u0027dd\u0027 and\n\u0027fsync\u0027 in parallel. Also, xfstests sometimes used to reproduce this\nrace. After the fix both my test and xfstests were successful and no\nrace (warning message) was observed.\n\nGoogle-Bug-Id: 4997027\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d8990240d8c911064447f8aa5a440f9345a6d692",
      "tree": "c12cda27583eb9616d91ec38fdfd79c6eb490bd5",
      "parents": [
        "df55c99dc8ee4c3c886a5edc8a4aa6b131c95afc"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:18:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:18:51 2011 -0400"
      },
      "message": "ext4: add some tracepoints in ext4/extents.c\n\nThis patch adds some tracepoints in ext4/extents.c and updates a tracepoint in\next4/inode.c.\n\nTested: Built and ran the kernel and verified that these tracepoints work.\nAlso ran xfstests.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n    \n\n"
    },
    {
      "commit": "df55c99dc8ee4c3c886a5edc8a4aa6b131c95afc",
      "tree": "6e5ea5a435659fa2dee7410f0b0196bdaf3a2054",
      "parents": [
        "e7d5f3156e6827970f75ab27ad7eb0155826eb0b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:16:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:16:51 2011 -0400"
      },
      "message": "ext4: rename ext4_has_free_blocks() to ext4_has_free_clusters()\n\nRename the function so it is more clear what is going on.  Also rename\nthe various variables so it\u0027s clearer what\u0027s happening.\n\nAlso fix a missing blocks to cluster conversion when reading the\nnumber of reserved blocks for root.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e7d5f3156e6827970f75ab27ad7eb0155826eb0b",
      "tree": "7eab0a0660052e4a3fe1bba57a869138fb29e7f4",
      "parents": [
        "cff1dfd767d1ee3c773fd8b57fe310957e5f8abb"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:14:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:14:51 2011 -0400"
      },
      "message": "ext4: rename ext4_claim_free_blocks() to ext4_claim_free_clusters()\n\nThis function really claims a number of free clusters, not blocks, so\nrename it so it\u0027s clearer what\u0027s going on.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cff1dfd767d1ee3c773fd8b57fe310957e5f8abb",
      "tree": "ace05de33bb5d1e2062724818d57d89eae66004f",
      "parents": [
        "5dee54372c1ea15ab482b959634cda8c01b042bd"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:12:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:12:51 2011 -0400"
      },
      "message": "ext4: rename ext4_free_blocks_after_init() to ext4_free_clusters_after_init()\n\nThis function really returns the number of clusters after initializing\nan uninitalized block bitmap has been initialized.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5dee54372c1ea15ab482b959634cda8c01b042bd",
      "tree": "512da0144f6a9f86b5817569d0521b60cddee4c9",
      "parents": [
        "021b65bb1e4e4b625c80bbb82651e5e155721ef3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "message": "ext4: rename ext4_count_free_blocks() to ext4_count_free_clusters()\n\nThis function really counts the free clusters reported in the block\ngroup descriptors, so rename it to reduce confusion.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "021b65bb1e4e4b625c80bbb82651e5e155721ef3",
      "tree": "e1826a0ec395ac2acf46c43113f2c6a64a5165d0",
      "parents": [
        "6f16b60690ba04cf476480a6f19b204e4b95b4a6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:08:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:08:51 2011 -0400"
      },
      "message": "ext4: Rename ext4_free_blks_{count,set}() to refer to clusters\n\nThe field bg_free_blocks_count_{lo,high} in the block group\ndescriptor has been repurposed to hold the number of free clusters for\nbigalloc functions.  So rename the functions so it makes it easier to\nread and audit the block allocation and block freeing code.\n\nNote: at this point in bigalloc development we doesn\u0027t support\nonline resize, so this also makes it really obvious all of the places\nwe need to fix up to add support for online resize.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6f16b60690ba04cf476480a6f19b204e4b95b4a6",
      "tree": "dbb3efd3912e0a81ea8f439deb561bfc9fc2a9bd",
      "parents": [
        "7b415bf60f6afb0499fd3dc0ee33444f54e28567"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:06:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:06:51 2011 -0400"
      },
      "message": "ext4: enable mounting bigalloc as read/write\n\nNow that we have implemented all of the changes needed for bigalloc,\nwe can finally enable it!\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7b415bf60f6afb0499fd3dc0ee33444f54e28567",
      "tree": "9c64fef2b8d60ce64865af6e4c2cc6008026e28c",
      "parents": [
        "27baebb849d46d901e756e6502b0a65a62e43771"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "message": "ext4: Fix bigalloc quota accounting and i_blocks value\n\nWith bigalloc changes, the i_blocks value was not correctly set (it was still\nset to number of blocks being used, but in case of bigalloc, we want i_blocks\nto represent the number of clusters being used). Since the quota subsystem sets\nthe i_blocks value, this patch fixes the quota accounting and makes sure that\nthe i_blocks value is set correctly.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5",
      "tree": "7f83cc8e52b5f2edc5d89d2d1808d0972831f9bf",
      "parents": [
        "5704265188ffe4290ed73b3cb685206c3ed8209d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:58:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:58:51 2011 -0400"
      },
      "message": "ext4: convert the free_blocks field in s_flex_groups to be free_clusters\n\nConvert the free_blocks to be free_clusters to make the final revised\nbigalloc changes easier to read/understand.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "5704265188ffe4290ed73b3cb685206c3ed8209d",
      "tree": "6bc51bea59625b2a7c8e4b74bbb66884371f74dd",
      "parents": [
        "0aa060000e83ca3d09ddc446a7174fb0820d99bc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "message": "ext4: convert s_{dirty,free}blocks_counter to s_{dirty,free}clusters_counter\n\nConvert the percpu counters s_dirtyblocks_counter and\ns_freeblocks_counter in struct ext4_super_info to be\ns_dirtyclusters_counter and s_freeclusters_counter.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "84130193e0e6568dfdfb823f0e1e19aec80aff6e",
      "tree": "799534ea6cd551ba346e32da2ee2f363851a3257",
      "parents": [
        "53accfa9f819c80056db6f03f9c5cfa4bcba1ed8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:50:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:50:51 2011 -0400"
      },
      "message": "ext4: teach ext4_free_blocks() about bigalloc and clusters\n\nThe ext4_free_blocks() function now has two new flags that indicate\nwhether a partial cluster at the beginning or the end of the block\nextents should be freed or not.  That will be up the caller (i.e.,\ntruncate), who can figure out whether partial clusters at the\nbeginning or the end of a block range can be freed.\n\nWe also have to update the ext4_mb_free_metadata() and\nrelease_blocks_on_commit() machinery to be cluster-based, since it is\nused by ext4_free_blocks().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d5b8f31007a93777cfb0603b665858fb7aebebfc",
      "tree": "19d9dfed9314132302b8e3036a2ada26f9809036",
      "parents": [
        "fd034a84e1ea5c8c8d159cd2089c32e792c269b0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:44:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:44:51 2011 -0400"
      },
      "message": "ext4: bigalloc changes to block bitmap initialization functions\n\nAdd bigalloc support to ext4_init_block_bitmap() and\next4_free_blocks_after_init().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fd034a84e1ea5c8c8d159cd2089c32e792c269b0",
      "tree": "5992d541a005137a57a44921fd1be6311ee841d2",
      "parents": [
        "49f7f9af4bb4d7972f3a35a74877937fec9f622d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:42:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:42:51 2011 -0400"
      },
      "message": "ext4: split out ext4_free_blocks_after_init()\n\nThe function ext4_free_blocks_after_init() used to be a #define of\next4_init_block_bitmap().  This actually made it difficult to\nunderstand how the function worked, and made it hard make changes to\nsupport clusters.  So as an initial cleanup, I\u0027ve separated out the\nfunctionality of initializing block bitmap from calculating the number\nof free blocks in the new block group.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "281b59959707dfae03ce038cdf231bf4904e170c",
      "tree": "3a6b36d060a41b19351c29c51d079149cae7511c",
      "parents": [
        "7c2e70879fc0949b4220ee61b7c4553f6976a94d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:34:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:34:51 2011 -0400"
      },
      "message": "ext4: read-only support for bigalloc file systems\n\nThis adds supports for bigalloc file systems.  It teaches the mount\ncode just enough about bigalloc superblock fields that it will mount\nthe file system without freaking out that the number of blocks per\ngroup is too big.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "56889787cfa77dfd96f0b3a3e6a4f26c2e4a5134",
      "tree": "5fb1be2d593fae0bb1a566397c58dc4f7ce010f2",
      "parents": [
        "2be4751b21ae1cacb002da48cfc5bf6743fee8c1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 18:22:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 18:22:38 2011 -0400"
      },
      "message": "ext4: improve handling of conflicting mount options\n\nIf the user explicitly specifies conflicting mount options for\ndelalloc or dioread_nolock and data\u003djournal, fail the mount, instead\nof printing a warning and continuing (since many user\u0027s won\u0027t look at\ndmesg and notice the warning).\n\nAlso, print a single warning that data\u003djournal implies that delayed\nallocation is not on by default (since it\u0027s not supported), and\nfurthermore that O_DIRECT is not supported.  Improve the text in\nDocumentation/filesystems/ext4.txt so this is clear there as well.\n\nSimilarly, if the dioread_nolock mount option is specified when the\nfile system block size !\u003d PAGE_SIZE, fail the mount instead of\nprinting a warning message and ignoring the mount option.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4e96b2dbbf1d7e81f22047a50f862555a6cb87cb",
      "tree": "1f9c1d6712d1d16d3c6d04635019d2d1774c54d4",
      "parents": [
        "5930ea643805feb50a2f8383ae12eb6f10935e49"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Sat Sep 03 11:51:09 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 11:51:09 2011 -0400"
      },
      "message": "ext4: Add new ext4_discard_partial_page_buffers routines\n\nThis patch adds two new routines: ext4_discard_partial_page_buffers\nand ext4_discard_partial_page_buffers_no_lock.\n\nThe ext4_discard_partial_page_buffers routine is a wrapper\nfunction to ext4_discard_partial_page_buffers_no_lock.\nThe wrapper function locks the page and passes it to\next4_discard_partial_page_buffers_no_lock.\nCalling functions that already have the page locked can call\next4_discard_partial_page_buffers_no_lock directly.\n\nThe ext4_discard_partial_page_buffers_no_lock function\nzeros a specified range in a page, and unmaps the\ncorresponding buffer heads.  Only block aligned regions of the\npage will have their buffer heads unmapped.  Unblock aligned regions\nwill be mapped if needed so that they can be updated with the\npartial zero out.  This function is meant to\nbe used to update a page and its buffer heads to be zeroed\nand unmapped when the corresponding blocks have been released\nor will be released.\n\nThis routine is used in the following scenarios:\n* A hole is punched and the non page aligned regions\n  of the head and tail of the hole need to be discarded\n\n* The file is truncated and the partial page beyond EOF needs\n  to be discarded\n\n* The end of a hole is in the same page as EOF.  After the\n  page is flushed, the partial page beyond EOF needs to be\n  discarded.\n\n* A write operation begins or ends inside a hole and the partial\n  page appearing before or after the write needs to be discarded\n\n* A write operation extends EOF and the partial page beyond EOF\n  needs to be discarded\n\nThis function takes a flag EXT4_DISCARD_PARTIAL_PG_ZERO_UNMAPPED\nwhich is used when a write operation begins or ends in a hole.\nWhen the EXT4_DISCARD_PARTIAL_PG_ZERO_UNMAPPED flag is used, only\nbuffer heads that are already unmapped will have the corresponding\nregions of the page zeroed.\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1cd9f0976aa4606db8d6e3dc3edd0aca8019372a",
      "tree": "3928541b60787c1add5120bb34a4016529de3d6b",
      "parents": [
        "8c0bec2151a47906bf779c6715a10ce04453ab77"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:54:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:54:51 2011 -0400"
      },
      "message": "ext2,ext3,ext4: don\u0027t inherit APPEND_FL or IMMUTABLE_FL for new inodes\n\nThis doesn\u0027t make much sense, and it exposes a bug in the kernel where\nattempts to create a new file in an append-only directory using\nO_CREAT will fail (but still leave a zero-length file).  This was\ndiscovered when xfstests #79 was generalized so it could run on all\nfile systems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc:stable@kernel.org\n"
    },
    {
      "commit": "8c0bec2151a47906bf779c6715a10ce04453ab77",
      "tree": "0165e80ba408b5db1e9e2adf9264bf4186b06768",
      "parents": [
        "fcb8ce5cfe30ca9ca5c9a79cdfe26d1993e65e0c"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 31 11:50:51 2011 -0400"
      },
      "message": "ext4: remove i_mutex lock in ext4_evict_inode to fix lockdep complaining\n\nThe i_mutex lock and flush_completed_IO() added by commit 2581fdc810\nin ext4_evict_inode() causes lockdep complaining about potential\ndeadlock in several places.  In most/all of these LOCKDEP complaints\nit looks like it\u0027s a false positive, since many of the potential\ncircular locking cases can\u0027t take place by the time the\next4_evict_inode() is called; but since at the very least it may mask\nreal problems, we need to address this.\n\nThis change removes the flush_completed_IO() and i_mutex lock in\next4_evict_inode().  Instead, we take a different approach to resolve\nthe software lockup that commit 2581fdc810 intends to fix.  Rather\nthan having ext4-dio-unwritten thread wait for grabing the i_mutex\nlock of an inode, we use mutex_trylock() instead, and simply requeue\nthe work item if we fail to grab the inode\u0027s i_mutex lock.\n\nThis should speed up work queue processing in general and also\nprevents the following deadlock scenario: During page fault,\nshrink_icache_memory is called that in turn evicts another inode B.\nInode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero.  However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue.  As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock.  Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "60ad4466821a96913a9b567115e194ed1087c2d7",
      "tree": "cd488ba72a60f856b85a467763fb633cbe7ef2d9",
      "parents": [
        "1b8e94993c4752d98c33903aa836acc15f7e6d5c",
        "79a77c5ac34cc27ccbfbdf7113b41cdd93534eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:56:03 2011 -1000"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (60 commits)\n  ext4: prevent memory leaks from ext4_mb_init_backend() on error path\n  ext4: use EXT4_BAD_INO for buddy cache to avoid colliding with valid inode #\n  ext4: use ext4_msg() instead of printk in mballoc\n  ext4: use ext4_kvzalloc()/ext4_kvmalloc() for s_group_desc and s_group_info\n  ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n  ext4: use the correct error exit path in ext4_init_inode_table()\n  ext4: add missing kfree() on error return path in add_new_gdb()\n  ext4: change umode_t in tracepoint headers to be an explicit __u16\n  ext4: fix races in ext4_sync_parent()\n  ext4: Fix overflow caused by missing cast in ext4_fallocate()\n  ext4: add action of moving index in ext4_ext_rm_idx for Punch Hole\n  ext4: simplify parameters of reserve_backup_gdb()\n  ext4: simplify parameters of add_new_gdb()\n  ext4: remove lock_buffer in bclean() and setup_new_group_blocks()\n  ext4: simplify journal handling in setup_new_group_blocks()\n  ext4: let setup_new_group_blocks() set multiple bits at a time\n  ext4: fix a typo in ext4_group_extend()\n  ext4: let ext4_group_add_blocks() handle 0 blocks quickly\n  ext4: let ext4_group_add_blocks() return an error code\n  ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks()\n  ...\n\nFix up conflict in fs/ext4/inode.c: commit aacfc19c626e (\"fs: simplify\nthe blockdev_direct_IO prototype\") had changed the ext4_ind_direct_IO()\nfunction for the new simplified calling convention, while commit\ndae1e52cb126 (\"ext4: move ext4_ind_* functions from inode.c to\nindirect.c\") moved the function to another file.\n"
    },
    {
      "commit": "9933fc0ac1ac14b795819cd63d05ea92112f690a",
      "tree": "bff42e3494fd5401e6b171ddae8f52ecd1defd91",
      "parents": [
        "33853a0dde359ded0534204eb6857ad5166d515b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "message": "ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n\nIntroduce new helper functions which try kmalloc, and then fall back\nto vmalloc if necessary, and use them for allocating and deallocating\ns_flex_groups.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c3e94d1df9bdd9e2c4ba7e8f534f7925f1756f97",
      "tree": "b0f23df82b491e04b64d7d67e4eecc80d1f4c6a0",
      "parents": [
        "2b79b09d13e35577151bd13ba08809911baccd1c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 22:05:53 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 22:05:53 2011 -0400"
      },
      "message": "ext4: let setup_new_group_blocks() set multiple bits at a time\n\nRename mb_set_bits() to ext4_set_bits() and make it a global function\nso that setup_new_group_blocks() can use it.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cc7365dfe48cb2191f1572bf69e30d3e58716313",
      "tree": "1d0a533d6ffcee71900894741995a1d0cf91ab0f",
      "parents": [
        "0529155e8a4bcb77dfc9ceaea19c6501487e452b"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:46:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:46:07 2011 -0400"
      },
      "message": "ext4: let ext4_group_add_blocks() return an error code\n\nThis patch lets ext4_group_add_blocks() return an error code if it\nfails, so that upper functions can handle error correctly.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0529155e8a4bcb77dfc9ceaea19c6501487e452b",
      "tree": "a67262d87fcfa101ea8ea3af9d90725a9de22f2c",
      "parents": [
        "ce723c31b58f54fb865036805475ee7a8c5dc173"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:43:56 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:43:56 2011 -0400"
      },
      "message": "ext4: rename ext4_add_groupblocks() to ext4_group_add_blocks()\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f82f840ec6ab873f520364d443ff6fa1b3f8e22",
      "tree": "72d90cdc8f7311ef913b7471e53f718bebbf7414",
      "parents": [
        "2d859db3e4a82a365572592d57624a5f996ed0ec"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "message": "ext4: prevent parallel resizers by atomic bit ops\n\nBefore this patch, parallel resizers are allowed and protected by a\nmutex lock, actually, there is no need to support parallel resizer, so\nthis patch prevents parallel resizers by atmoic bit ops, like\nlock_page() and unlock_page() do.\n\nTo do this, the patch removed the mutex lock s_resize_lock from struct\next4_sb_info and added a unsigned long field named s_resize_flags\nwhich inidicates if there is a resizer.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d56b8d2c74cc3f375ce332b3ac3519e009d79ee",
      "tree": "47c13dc80779a3d8d93902897a500b056375689c",
      "parents": [
        "b3d4c2b10b68d205d3eb1b5c17dcb4649a502798"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Jul 11 00:03:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 11 00:03:38 2011 -0400"
      },
      "message": "ext4: Speed up FITRIM by recording flags in ext4_group_info\n\nIn ext4, when FITRIM is called every time, we iterate all the\ngroups and do trim one by one. It is a bit time wasting if the\ngroup has been trimmed and there is no change since the last\ntrim.\n\nSo this patch adds a new flag in ext4_group_info-\u003ebb_state to\nindicate that the group has been trimmed, and it will be cleared\nif some blocks is freed(in release_blocks_on_commit). Another\ntrim_minlen is added in ext4_sb_info to record the last minlen\nwe use to trim the volume, so that if the caller provide a small\none, we will go on the trim regardless of the bb_state.\n\nA simple test with my intel x25m ssd:\ndf -h shows:\n/dev/sdb1              40G   21G   17G  56% /mnt/ext4\nBlock size:               4096\n\nrun the FITRIM with the following parameter:\nrange.start \u003d 0;\nrange.len \u003d UINT64_MAX;\nrange.minlen \u003d 1048576;\n\nwithout the patch:\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.505s\nuser\t0m0.000s\nsys\t0m1.224s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.359s\nuser\t0m0.000s\nsys\t0m1.178s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.228s\nuser\t0m0.000s\nsys\t0m1.151s\n\nwith the patch:\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m5.625s\nuser\t0m0.000s\nsys\t0m1.269s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m0.002s\nuser\t0m0.000s\nsys\t0m0.001s\n[root@boyu-tm linux-2.6]# time ./ftrim /mnt/ext4/a\nreal\t0m0.002s\nuser\t0m0.000s\nsys\t0m0.001s\n\nA big improvement for the 2nd and 3rd run.\n\nEven after I delete some big image files, it is still much\nfaster than iterating the whole disk.\n\n[root@boyu-tm test]# time ./ftrim /mnt/ext4/a\nreal\t0m1.217s\nuser\t0m0.000s\nsys\t0m0.196s\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7132de744ba76930d13033061018ddd7e3e8cd91",
      "tree": "1da773f7293e056e4849dc590dac35854662f666",
      "parents": [
        "275d3ba6b40d0f098693b9089c6fee9bd4e55d74"
      ],
      "author": {
        "name": "Maxim Patlasov",
        "email": "maxim.patlasov@gmail.com",
        "time": "Sun Jul 10 19:37:48 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 19:37:48 2011 -0400"
      },
      "message": "ext4: fix i_blocks/quota accounting when extent insertion fails\n\nThe current implementation of ext4_free_blocks() always calls\ndquot_free_block This looks quite sensible in the most cases: blocks\nto be freed are associated with inode and were accounted in quota and\ni_blocks some time ago.\n\nHowever, there is a case when blocks to free were not accounted by the\ntime calling ext4_free_blocks() yet:\n\n1. delalloc is on, write_begin pre-allocated some space in quota\n2. write-back happens, ext4 allocates some blocks in ext4_ext_map_blocks()\n3. then ext4_ext_map_blocks() gets an error (e.g.  ENOSPC) from\n   ext4_ext_insert_extent() and calls ext4_free_blocks().\n\nIn this scenario, ext4_free_blocks() calls dquot_free_block() who, in\nturn, decrements i_blocks for blocks which were not accounted yet (due\nto delalloc) After clean umount, e2fsck reports something like:\n\n\u003e Inode 21, i_blocks is 5080, should be 5128.  Fix\u003cy\u003e?\nbecause i_blocks was erroneously decremented as explained above.\n\nThe patch fixes the problem by passing the new flag\nEXT4_FREE_BLOCKS_NO_QUOT_UPDATE to ext4_free_blocks(), to request\nthat the dquot_free_block() call be skipped.\n\nSigned-off-by: Maxim Patlasov \u003cmaxim.patlasov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f86186b44b4164600cce03d0d93ad48ec21fa429",
      "tree": "48aafabbbe46d22de84e4e9b3ebf7c5b35fd6d1e",
      "parents": [
        "dae1e52cb1267bf8f52e5e47a80fab566d7e8aa4"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jun 28 10:01:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 28 10:01:31 2011 -0400"
      },
      "message": "ext4: refactor duplicated block placement code\n\nI found that ext4_ext_find_goal() and ext4_find_near()\nshare the same code for returning a coloured start block\nbased on i_block_group.\n\nWe can refactor this into a common function so that they\ndon\u0027t diverge in the future.\n\nThanks to adilger for suggesting the new function name.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dae1e52cb1267bf8f52e5e47a80fab566d7e8aa4",
      "tree": "2537e9f8f138e4935f88e605244174c9b2400bf4",
      "parents": [
        "9f125d641beb898f5bf2fe69583192c18043517a"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:40:50 2011 -0400"
      },
      "message": "ext4: move ext4_ind_* functions from inode.c to indirect.c\n\nThis patch moves functions from inode.c to indirect.c.\nThe moved functions are ext4_ind_* functions and their helpers.\nFunctions called from inode.c are declared extern.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f7d1e77419050831a905353683807fa69a26625",
      "tree": "0f32626160b1ecab1e6067ff0e94746c3da068c4",
      "parents": [
        "8bb2b247124ba6093455d4aef26743b1bef27bc5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 19:16:02 2011 -0400"
      },
      "message": "ext4: move __ext4_check_blockref to block_validity.c\n\nIn preparation for moving the indirect functions to a separate file,\nmove __ext4_check_blockref() to block_validity.c and rename it to\next4_check_blockref() which is exported as globally visible function.\n\nAlso, rename the cpp macro ext4_check_inode_blockref() to\next4_ind_check_inode(), to make it clear that it is only valid for use\nwith non-extent mapped inodes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ff9893dc8aa622a4f122293a6861566a284edea5",
      "tree": "ca7d798360c32379fb4d3d0913d349ac79f55c6d",
      "parents": [
        "ed7a7e16724a4123fce1fc0ff1f5131a0596f189"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 27 16:36:31 2011 -0400"
      },
      "message": "ext4: split ext4_ind_truncate from ext4_truncate\n\nWe are about to move all indirect inode functions to a new file.\nBefore we do that, let\u0027s split ext4_ind_truncate() out of ext4_truncate()\nleaving only generic code in the latter, so we will be able to move\next4_ind_truncate() to the new file.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "556b27abf73833923d5cd4be80006292e1b31662",
      "tree": "588fa7c3db66afb545921cdfc894f0a41e66dc49",
      "parents": [
        "a4bb6b64e39abc0e41ca077725f2a72c868e7622"
      ],
      "author": {
        "name": "Vivek Haldar",
        "email": "haldar@google.com",
        "time": "Wed May 25 07:41:54 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:54 2011 -0400"
      },
      "message": "ext4: do not normalize block requests from fallocate()\n\nCurrently, an fallocate request of size slightly larger than a power of\n2 is turned into two block requests, each a power of 2, with the extra\nblocks pre-allocated for future use. When an application calls\nfallocate, it already has an idea about how large the file may grow so\nthere is usually little benefit to reserve extra blocks on the\npreallocation list. This reduces disk fragmentation.\n\nTested: fsstress. Also verified manually that fallocat\u0027ed files are\ncontiguously laid out with this change (whereas without it they begin at\npower-of-2 boundaries, leaving blocks in between). CPU usage of\nfallocate is not appreciably higher.  In a tight fallocate loop, CPU\nusage hovers between 5%-8% with this change, and 5%-7% without it.\n\nUsing a simulated file system aging program which the file system to\n70%, the percentage of free extents larger than 8MB (as measured by\ne2freefrag) increased from 38.8% without this change, to 69.4% with\nthis change.\n\nSigned-off-by: Vivek Haldar \u003chaldar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4bb6b64e39abc0e41ca077725f2a72c868e7622",
      "tree": "0d911caa13d445d64cce5ea37f424bf066731ea6",
      "parents": [
        "e861304b8ed83fe43e36d46794d72641c82d4636"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:50 2011 -0400"
      },
      "message": "ext4: enable \"punch hole\" functionality\n\nThis patch adds new routines: \"ext4_punch_hole\" \"ext4_ext_punch_hole\"\nand \"ext4_ext_check_cache\"\n\nfallocate has been modified to call ext4_punch_hole when the punch hole\nflag is passed.  At the moment, we only support punching holes in\nextents, so this routine is pretty much a wrapper for the ext4_ext_punch_hole\nroutine.\n\nThe ext4_ext_punch_hole routine first completes all outstanding writes\nwith the associated pages, and then releases them.  The unblock\naligned data is zeroed, and all blocks in between are punched out.\n\nThe ext4_ext_check_cache routine is very similar to ext4_ext_in_cache\nexcept it accepts a ext4_ext_cache parameter instead of a ext4_extent\nparameter.  This routine is used by ext4_ext_punch_hole to check and\nsee if a block in a hole that has been cached.  The ext4_ext_cache\nparameter is necessary because the members ext4_extent structure are\nnot large enough to hold a 32 bit value.  The existing\next4_ext_in_cache routine has become a wrapper to this new function.\n\n[ext4 punch hole patch series 5/5 v7] \n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "308488518dfcbe3be250085cd582f5b0c1ce72a9",
      "tree": "4696b50debf9794f2cbb966cccbedadb93dc996a",
      "parents": [
        "55f020db66ce187fb8c8e4002a94b0eb714da450"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:32 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:32 2011 -0400"
      },
      "message": "ext4: add new function ext4_block_zero_page_range()\n\nThis patch modifies the existing ext4_block_truncate_page() function\nwhich was used by the truncate code path, and which zeroes out block\nunaligned data, by adding a new length parameter, and renames it to\next4_block_zero_page_rage().  This function can now be used to zero out the\nhead of a block, the tail of a block, or the middle\nof a block.\n\nThe ext4_block_truncate_page() function is now a wrapper to\next4_block_zero_page_range().\n\n[ext4 punch hole patch series 2/5 v7] \n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "55f020db66ce187fb8c8e4002a94b0eb714da450",
      "tree": "e98214511542f57fa93074be12e27c4819520333",
      "parents": [
        "ae81230686282af745ebb7a74c0332349cb9131a"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed May 25 07:41:26 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 25 07:41:26 2011 -0400"
      },
      "message": "ext4: add flag to ext4_has_free_blocks\n\nThis patch adds an allocation request flag to the ext4_has_free_blocks\nfunction which enables the use of reserved blocks.  This will allow a\npunch hole to proceed even if the disk is full.  Punching a hole may\nrequire additional blocks to first split the extents.\n\nBecause ext4_has_free_blocks is a low level function, the flag needs\nto be passed down through several functions listed below:\n\next4_ext_insert_extent\next4_ext_create_new_leaf\next4_ext_grow_indepth\next4_ext_split\next4_ext_new_meta_block\next4_mb_new_blocks\next4_claim_free_blocks\next4_has_free_blocks\n\n[ext4 punch hole patch series 1/5 v7]\n\nSigned-off-by: Allison Henderson \u003cachender@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "ae81230686282af745ebb7a74c0332349cb9131a",
      "tree": "bd293ae7a338e582991ecb2930397fb7b010c6cc",
      "parents": [
        "c5e06d101aaf72f1f2192a661414459775e9bd74"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Tue May 24 19:00:39 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 19:00:39 2011 -0400"
      },
      "message": "ext4: reserve inodes and feature code for \u0027quota\u0027 feature\n\nI am working on patch to add quota as a built-in feature for ext4\nfilesystem. The implementation is based on the design given at\nhttps://ext4.wiki.kernel.org/index.php/Design_For_1st_Class_Quota_in_Ext4.\nThis patch reserves the inode numbers 3 and 4 for quota purposes and\nalso reserves EXT4_FEATURE_RO_COMPAT_QUOTA feature code.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c5e06d101aaf72f1f2192a661414459775e9bd74",
      "tree": "96d05d41be2bfea6d51be915ce196f033a5d9bf3",
      "parents": [
        "d02a9391f79cab65cde74cd9e8ccd2290a565229"
      ],
      "author": {
        "name": "Johann Lombardi",
        "email": "johann@whamcloud.com",
        "time": "Tue May 24 18:31:25 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 18:31:25 2011 -0400"
      },
      "message": "ext4: add support for multiple mount protection\n\nPrevent an ext4 filesystem from being mounted multiple times.\nA sequence number is stored on disk and is periodically updated (every 5\nseconds by default) by a mounted filesystem.\nAt mount time, we now wait for s_mmp_update_interval seconds to make sure\nthat the MMP sequence does not change.\nIn case of failure, the nodename, bdevname and the time at which the MMP\nblock was last updated is displayed.\n\nSigned-off-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: Johann Lombardi \u003cjohann@whamcloud.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "77f4135f2a219a2127be6cc1208c42e6175b11dd",
      "tree": "8f85549d2354c5a69a5b29197f68a554daad1324",
      "parents": [
        "93917411be8db5d21abf15c781dfa43c5cc6edf2"
      ],
      "author": {
        "name": "Vivek Haldar",
        "email": "haldar@google.com",
        "time": "Sun May 22 21:24:16 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 22 21:24:16 2011 -0400"
      },
      "message": "ext4: count hits/misses of extent cache and expose in sysfs\n\nThe number of hits and misses for each filesystem is exposed in\n/sys/fs/ext4/\u003cdev\u003e/extent_cache_{hits, misses}.\n\nTested: fsstress, manual checks.\nSigned-off-by: Vivek Haldar \u003chaldar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e1290b3e62c496ade19939ce036f35bb69306820",
      "tree": "aaf8fc2fd2b9b7c9c1ce15303bb8debf7ab3d01b",
      "parents": [
        "4ed5c033c11b33149d993734a6a8de1016e8f03f"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:49:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:49:51 2011 -0400"
      },
      "message": "ext4: Remove unnecessary wait_event ext4_run_lazyinit_thread()\n\nFor some reason we have been waiting for lazyinit thread to start in the\next4_run_lazyinit_thread() but it is not needed since it was jus\nunnecessary complexity, so get rid of it. We can also remove li_task and\nli_wait_task since it is not used anymore.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "4ed5c033c11b33149d993734a6a8de1016e8f03f",
      "tree": "826892fddc9cef7cbfac541eb13bb8eebc95c539",
      "parents": [
        "0e499890c1fd9e0a1bed02002161c4c7873d7489"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:49:04 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:49:04 2011 -0400"
      },
      "message": "ext4: Use schedule_timeout_interruptible() for waiting in lazyinit thread\n\nIn order to make lazyinit eat approx. 10% of io bandwidth at max, we\nare sleeping between zeroing each single inode table. For that purpose\nwe are using timer which wakes up thread when it expires. It is set\nvia add_timer() and this may cause troubles in the case that thread\nhas been woken up earlier and in next iteration we call add_timer() on\nstill running timer hence hitting BUG_ON in add_timer(). We could fix\nthat by using mod_timer() instead however we can use\nschedule_timeout_interruptible() for waiting and hence simplifying\nthings a lot.\n\nThis commit exchange the old \"waiting mechanism\" with simple\nschedule_timeout_interruptible(), setting the time to sleep. Hence we\ndo not longer need li_wait_daemon waiting queue and others, so get rid\nof it.\n\nAddresses-Red-Hat-Bugzilla: #699708\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "2846e82004a8d5ef0a63cd3209c84ea5cd796f11",
      "tree": "3b20c08ce64e918d4217bb95228fc597c63bf0e0",
      "parents": [
        "66bb82798d9ff896271d13f5020f7fb9b7d88e1a"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@users.sf.net",
        "time": "Mon May 09 10:46:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 09 10:46:41 2011 -0400"
      },
      "message": "ext4: move ext4_add_groupblocks() to mballoc.c\n\nIn preparation for the next patch, the function ext4_add_groupblocks()\nis moved to mballoc.c, where it could use some static functions.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2035e776050aea57fb5255557216473e82793f2c",
      "tree": "6a97e536fd5fbdc29e4b471195a5dd5a0df35fc6",
      "parents": [
        "26626f1172fb4f3f323239a6a5cf4e082643fa46"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 18 17:29:14 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 18 17:29:14 2011 -0400"
      },
      "message": "ext4: check for ext[23] file system features when mounting as ext[23]\n\nProvide better emulation for ext[23] mode by enforcing that the file\nsystem does not have any unsupported file system features as defined\nby ext[23] when emulating the ext[23] file system driver when\nCONFIG_EXT4_USE_FOR_EXT23 is defined.\n\nThis causes the file system type information in /proc/mounts to be\ncorrect for the automatically mounted root file system.  This also\nmeans that \"mount -t ext2 /dev/sda /mnt\" will fail if /dev/sda\ncontains an ext3 or ext4 file system, just as one would expect if the\noriginal ext2 file system driver were in use.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "50e0168cc3406fc1a04d57eb08f500a173d1660d",
      "tree": "19f8e15048c37bfface138e19eb93855e02c266c",
      "parents": [
        "0795ccea24714c790187e3d4f23c8e5be515f42d"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Mar 23 16:42:07 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:17 2011 -0700"
      },
      "message": "ext4: use little-endian bitops\n\nAs a preparation for removing ext2 non-atomic bit operations from\nasm/bitops.h.  This converts ext2 non-atomic bit operations to\nlittle-endian bit operations.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9e3bcecf44c04b9e6b505fd8e2eb9cea58fb94d",
      "tree": "9f347a48889a00071dbe1f12be4c50ec7a45542b",
      "parents": [
        "2892c15ddda6a76dc10b7499e56c0f3b892e5a69"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sat Feb 12 08:17:34 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 12 08:17:34 2011 -0500"
      },
      "message": "ext4: serialize unaligned asynchronous DIO\n\next4 has a data corruption case when doing non-block-aligned\nasynchronous direct IO into a sparse file, as demonstrated\nby xfstest 240.\n\nThe root cause is that while ext4 preallocates space in the\nhole, mappings of that space still look \"new\" and \ndio_zero_block() will zero out the unwritten portions.  When\nmore than one AIO thread is going, they both find this \"new\"\nblock and race to zero out their portion; this is uncoordinated\nand causes data corruption.\n\nDave Chinner fixed this for xfs by simply serializing all\nunaligned asynchronous direct IO.  I\u0027ve done the same here.\nThe difference is that we only wait on conversions, not all IO.\nThis is a very big hammer, and I\u0027m not very pleased with\nstuffing this into ext4_file_write().  But since ext4 is\nDIO_LOCKING, we need to serialize it at this high level.\n\nI tried to move this into ext4_ext_direct_IO, but by then\nwe have the i_mutex already, and we will wait on the\nwork queue to do conversions - which must also take the\ni_mutex.  So that won\u0027t work.\n\nThis was originally exposed by qemu-kvm installing to\na raw disk image with a normal sector-63 alignment.  I\u0027ve\ntested a backport of this patch with qemu, and it does\navoid the corruption.  It is also quite a lot slower\n(14 min for package installs, vs. 8 min for well-aligned)\nbut I\u0027ll take slow correctness over fast corruption any day.\n\nMingming suggested that we can track outstanding\nconversions, and wait on those so that non-sparse\nfiles won\u0027t be affected, and I\u0027ve implemented that here;\nunaligned AIO to nonsparse files won\u0027t take a perf hit.\n\n[tytso@mit.edu: Keep the mutex as a hashed array instead\n of bloating the ext4 inode]\n\n[tytso@mit.edu: Fix up namespace issues so that global\n variables are protected with an \"ext4_\" prefix.]\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "3889fd57ea3c58209354862523275774fca9db03",
      "tree": "1e68fb9b2691c0b792a36be7d87c987e8508dac6",
      "parents": [
        "b40971426a837e9dc9c66e1b6bbcb3874eafe4e0"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Mon Jan 10 12:47:05 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:47:05 2011 -0500"
      },
      "message": "ext4: flush the i_completed_io_list during ext4_truncate\n\nTed first found the bug when running 2.6.36 kernel with dioread_nolock\nmount option that xfstests #13 complained about wrong file size during fsck.\nHowever, the bug exists in the older kernels as well although it is\nsomehow harder to trigger.\n\nThe problem is that ext4_end_io_work() can happen after we have truncated an\ninode to a smaller size. Then when ext4_end_io_work() calls \next4_convert_unwritten_extents(), we may reallocate some blocks that have \nbeen truncated, so the inode size becomes inconsistent with the allocated\nblocks. \n\nThe following patch flushes the i_completed_io_list during truncate to reduce \nthe risk that some pending end_io requests are executed later and convert \nalready truncated blocks to initialized. \n\nNote that although the fix helps reduce the problem a lot there may still \nbe a race window between vmtruncate() and ext4_end_io_work(). The fundamental\nproblem is that if vmtruncate() is called without either i_mutex or i_alloc_sem\nheld, it can race with an ongoing write request so that the io_end request is\nprocessed later when the corresponding blocks have been truncated.\n\nTed and I have discussed the problem offline and we saw a few ways to fix\nthe race completely:\n\na) We guarantee that i_mutex lock and i_alloc_sem write lock are both hold \nwhenever vmtruncate() is called. The i_mutex lock prevents any new write\nrequests from entering writeback and the i_alloc_sem prevents the race\nfrom ext4_page_mkwrite(). Currently we hold both locks if vmtruncate()\nis called from do_truncate(), which is probably the most common case.\nHowever, there are places where we may call vmtruncate() without holding\neither i_mutex or i_alloc_sem. I would like to ask for other people\u0027s\nopinions on what locks are expected to be held before calling vmtruncate().\nThere seems a disagreement among the callers of that function.\n\nb) We change the ext4 write path so that we change the extent tree to contain \nthe newly allocated blocks and update i_size both at the same time --- when \nthe write of the data blocks is completed.\n\nc) We add some additional locking to synchronize vmtruncate() and \next4_end_io_work(). This approach may have performance implications so we\nneed to be careful.\n\nAll of the above proposals may require more substantial changes, so\nwe may consider to take the following patch as a bandaid.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8aefcd557d26d0023a36f9ec5afbf55e59f8f26b",
      "tree": "e13143306cd64525cddd2cc2513c448275a1d95a",
      "parents": [
        "353eb83c1422c6326eaab30ce044a179c6018169"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "message": "ext4: dynamically allocate the jbd2_inode in ext4_inode_info as necessary\n\nReplace the jbd2_inode structure (which is 48 bytes) with a pointer\nand only allocate the jbd2_inode when it is needed --- that is, when\nthe file system has a journal present and the inode has been opened\nfor writing.  This allows us to further slim down the ext4_inode_info\nstructure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "353eb83c1422c6326eaab30ce044a179c6018169",
      "tree": "fd43e39b344de5ee43d82c90f0affda68a65f2df",
      "parents": [
        "8a2005d3f84457b7d7d8646ab5195341d9e5f06a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:18:25 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:18:25 2011 -0500"
      },
      "message": "ext4: drop i_state_flags on architectures with 64-bit longs\n\nWe can store the dynamic inode state flags in the high bits of\nEXT4_I(inode)-\u003ei_flags, and eliminate i_state_flags.  This saves 8\nbytes from the size of ext4_inode_info structure, which when\nmultiplied by the number of the number of in the inode cache, can save\na lot of memory.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8a2005d3f84457b7d7d8646ab5195341d9e5f06a",
      "tree": "4d94161103e806435745e1544fb24e6398b2e06b",
      "parents": [
        "b05e6ae58a13b56e3e11882c1fc71948c9b29760"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:42 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:42 2011 -0500"
      },
      "message": "ext4: reorder ext4_inode_info structure elements to remove unneeded padding\n\nBy reordering the elements in the ext4_inode_info structure, we can\nreduce the padding needed on an x86_64 system by 16 bytes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b05e6ae58a13b56e3e11882c1fc71948c9b29760",
      "tree": "452cbadcbc8091b4db95f917f28b0f9de845dabf",
      "parents": [
        "01f49d0b9d0209dc1194255b11601e4b94447b36"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:26 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:26 2011 -0500"
      },
      "message": "ext4: drop ec_type from the ext4_ext_cache structure\n\nWe can encode the ec_type information by using ee_len \u003d\u003d 0 to denote\nEXT4_EXT_CACHE_NO, ee_start \u003d\u003d 0 to denote EXT4_EXT_CACHE_GAP, and if\nneither is true, then the cache type must be EXT4_EXT_CACHE_EXTENT.\nThis allows us to reduce the size of ext4_ext_inode by another 8\nbytes.  (ec_type is 4 bytes, plus another 4 bytes of padding)\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "01f49d0b9d0209dc1194255b11601e4b94447b36",
      "tree": "c3ec53c7725bf7a9188e844d8c8c09432d2be6ae",
      "parents": [
        "f232109773ff5b0c840a6761d74940b9cf0d66ec"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:03 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:03 2011 -0500"
      },
      "message": "ext4: use ext4_lblk_t instead of sector_t for logical blocks\n\nThis fixes a number of places where we used sector_t instead of\next4_lblk_t for logical blocks, which for ext4 are still 32-bit data\ntypes.  No point wasting space in the ext4_inode_info structure, and\nrequiring 64-bit arithmetic on 32-bit systems, when it isn\u0027t\nnecessary.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f232109773ff5b0c840a6761d74940b9cf0d66ec",
      "tree": "a32da5ebd1a3e074e9f52107f3bdc23babb6340c",
      "parents": [
        "ad4fb9cafe100a4a9de6e0529015e584d94ac8dc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "message": "ext4: replace i_delalloc_reserved_flag with EXT4_STATE_DELALLOC_RESERVED\n\nRemove the short element i_delalloc_reserved_flag from the\next4_inode_info structure and replace it a new bit in i_state_flags.\nSince we have an ext4_inode_info for every ext4 inode cached in the\ninode cache, any savings we can produce here is a very good thing from\na memory utilization perspective.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7c21177af0b32a2cd9ee36189637f0c1f0e1e17",
      "tree": "ba83d4ddcd4b7e15ff575f0b75013ba9ed62f249",
      "parents": [
        "f9a62d090cf47fae2fe6f6bd8eb9f24482573fd8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "message": "ext4: Use ext4_error_file() to print the pathname to the corrupted inode\n\nWhere the file pointer is available, use ext4_error_file() instead of\next4_error_inode().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "af0b44a1970fed1cda31d2969c99c46ffc515160",
      "tree": "b382d80df604c0bbd61836c13ae0b6f3020728e5",
      "parents": [
        "cad3f00763dcf9dfc62cbddf4bd714ab5a71a0eb"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sun Dec 19 22:10:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:10:31 2010 -0500"
      },
      "message": "ext4: zero out nanosecond timestamps for small inodes\n\nWhen nanosecond timestamp resolution isn\u0027t supported on an ext4\npartition (inode size \u003d 128), stat() appears to be returning\nuninitialized garbage in the nanosecond component of timestamps.\n\nEXT4_INODE_GET_XTIME should zero out tv_nsec when EXT4_FITS_IN_INODE\nevaluates to false.\n\nReported-by: Jordan Russell \u003cjr-list-2010@quo.to\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "cad3f00763dcf9dfc62cbddf4bd714ab5a71a0eb"
}
