)]}'
{
  "log": [
    {
      "commit": "b22b1f178f6799278d3178d894f37facb2085765",
      "tree": "7d5b9559492a79ebddcfdab5c9fc2743dec26922",
      "parents": [
        "b0dd6b70f0fda17ae9762fbb72d98e40a4f66556"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu Jun 07 19:04:19 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 07 19:04:19 2012 -0400"
      },
      "message": "ext4: don\u0027t set i_flags in EXT4_IOC_SETFLAGS\n\nCommit 7990696 uses the ext4_{set,clear}_inode_flags() functions to\nchange the i_flags automatically but fails to remove the error setting\nof i_flags.  So we still have the problem of trashing state flags.\nFix this by removing the assignment.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b0dd6b70f0fda17ae9762fbb72d98e40a4f66556",
      "tree": "64b75161542ef9d74bb397b82e9cea5b60c9304b",
      "parents": [
        "f8f5701bdaf9134b1f90e5044a82c66324d2073f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 07 18:56:06 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 07 18:56:06 2012 -0400"
      },
      "message": "ext4: fix the free blocks calculation for ext3 file systems w/ uninit_bg\n\nExt3 filesystems that are converted to use as many ext4 file system\nfeatures as possible will enable uninit_bg to speed up e2fsck times.\nThese file systems will have a native ext3 layout of inode tables and\nblock allocation bitmaps (as opposed to ext4\u0027s flex_bg layout).\nUnfortunately, in these cases, when first allocating a block in an\nuninitialized block group, ext4 would incorrectly calculate the number\nof free blocks in that block group, and then errorneously report that\nthe file system was corrupt:\n\nEXT4-fs error (device vdd): ext4_mb_generate_buddy:741: group 30, 32254 clusters in bitmap, 32258 in gd\n\nThis problem can be reproduced via:\n\n    mke2fs -q -t ext4 -O ^flex_bg /dev/vdd 5g\n    mount -t ext4 /dev/vdd /mnt\n    fallocate -l 4600m /mnt/test\n\nThe problem was caused by a bone headed mistake in the check to see if a\nparticular metadata block was part of the block group.\n\nMany thanks to Kees Cook for finding and bisecting the buggy commit\nwhich introduced this bug (commit fd034a84e1, present since v3.2).\n\nReported-by: Sander Eikelenboom \u003clinux@eikelenboom.it\u003e\nReported-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nTested-by: Kees Cook \u003ckeescook@chromium.org\u003e\nCc: stable@kernel.org\n"
    },
    {
      "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": "5e44f8c374dc4f8eadf61cd18b2c0d46bc87c1b7",
      "tree": "ccecc6ddd068b809de59b45abe7714ee47076d95",
      "parents": [
        "b2f4edb335f23626225a792e0669d1becf68312f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Fri Jun 01 00:15:28 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 01 00:15:28 2012 -0400"
      },
      "message": "ext4: hole-punch use truncate_pagecache_range\n\nWhen truncating a file, we unmap pages from userspace first, as that\u0027s\nusually more efficient than relying, page by page, on the fallback in\ntruncate_inode_page() - particularly if the file is mapped many times.\n\nDo the same when punching a hole: 3.4 added truncate_pagecache_range()\nto do the unmap and trunc, so use it in ext4_ext_punch_hole(), instead\nof calling truncate_inode_pages_range() directly.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "95599968d19db175829fb580baa6b68939b320fb",
      "tree": "f28bdf3d19f818a8d61dc68454c72d62e8247b05",
      "parents": [
        "02b7831019ea4e7994968c84b5826fa8b248ffc8"
      ],
      "author": {
        "name": "Salman Qazi",
        "email": "sqazi@google.com",
        "time": "Thu May 31 23:52:14 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 23:52:14 2012 -0400"
      },
      "message": "ext4: remove mb_groups before tearing down the buddy_cache\n\nWe can\u0027t have references held on pages in the s_buddy_cache while we are\ntrying to truncate its pages and put the inode.  All the pages must be\ngone before we reach clear_inode.  This can only be gauranteed if we\ncan prevent new users from grabbing references to s_buddy_cache\u0027s pages.\n\nThe original bug can be reproduced and the bug fix can be verified by:\n\nwhile true; do mount -t ext4 /dev/ram0 /export/hda3/ram0; \\\n\tumount /export/hda3/ram0; done \u0026\n\nwhile true; do cat /proc/fs/ext4/ram0/mb_groups; done\n\nSigned-off-by: Salman Qazi \u003csqazi@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "02b7831019ea4e7994968c84b5826fa8b248ffc8",
      "tree": "929419054f15d2582d2b977505f55ec421e39549",
      "parents": [
        "79906964a187c405db72a3abc60eb9b50d804fbc"
      ],
      "author": {
        "name": "Salman Qazi",
        "email": "sqazi@google.com",
        "time": "Thu May 31 23:51:27 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 23:51:27 2012 -0400"
      },
      "message": "ext4: add ext4_mb_unload_buddy in the error path\n\next4_free_blocks fails to pair an ext4_mb_load_buddy with a matching\next4_mb_unload_buddy when it fails a memory allocation.\n\nSigned-off-by: Salman Qazi \u003csqazi@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "79906964a187c405db72a3abc60eb9b50d804fbc",
      "tree": "bb9cec1905d268cda5d46a95b993e0a173c226c4",
      "parents": [
        "9660755100ae7677d65772a28e16d475a2ee9eab"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 23:46:01 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 23:46:01 2012 -0400"
      },
      "message": "ext4: don\u0027t trash state flags in EXT4_IOC_SETFLAGS\n\nIn commit 353eb83c we removed i_state_flags with 64-bit longs, But\nwhen handling the EXT4_IOC_SETFLAGS ioctl, we replace i_flags\ndirectly, which trashes the state flags which are stored in the high\n32-bits of i_flags on 64-bit platforms.  So use the the\next4_{set,clear}_inode_flags() functions which use atomic bit\nmanipulation functions instead.\n\nReported-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n\n"
    },
    {
      "commit": "9660755100ae7677d65772a28e16d475a2ee9eab",
      "tree": "b7192f775c46add4ad1b96d8c766ce236aec872f",
      "parents": [
        "f3fc0210c0fc91900766c995f089c39170e68305"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu May 31 22:54:16 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 31 22:54:16 2012 -0400"
      },
      "message": "ext4: let getattr report the right blocks in delalloc+bigalloc\n\nIn delayed allocation, i_reserved_data_blocks now indicates\nclusters, not blocks. So report it in the right number.\n\nThis can be easily exposed by the following command:\necho foo \u003e blah; du -hc blah; sync; du -hc blah\n\nReported-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f3fc0210c0fc91900766c995f089c39170e68305",
      "tree": "e3f3f032ee2ee9c668d2e9f5db3c86ad288d9b90",
      "parents": [
        "2c0544b23568674efba22532e1f25fb62ce10163"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 30 23:00:16 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 30 23:00:16 2012 -0400"
      },
      "message": "ext4: add missing save_error_info() to ext4_error()\n\nThe ext4_error() function is missing a call to save_error_info().\nSince this is the function which marks the file system as containing\nan error, this oversight (which was introduced in 2.6.36) is quite\nsignificant, and should be backported to older stable kernels with\nhigh urgency.\n\nReported-by: Ken Sumrall \u003cksumrall@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: ksumrall@google.com\nCc: stable@kernel.org\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": "6f2e9f0e7d795214b9cf5a47724a273b705fd113",
      "tree": "c33979cd8d907b0eab9e3d9eada09a09e222e54a",
      "parents": [
        "8563000d3bf3ccfccce335c092a7c43078be8ffd"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon May 28 18:20:59 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 18:20:59 2012 -0400"
      },
      "message": "ext4: protect group inode free counting with group lock\n\nNow when we set the group inode free count, we don\u0027t have a proper\ngroup lock so that multiple threads may decrease the inode free\ncount at the same time. And e2fsck will complain something like:\n\nFree inodes count wrong for group #1 (1, counted\u003d0).\nFix? no\n\nFree inodes count wrong for group #2 (3, counted\u003d0).\nFix? no\n\nDirectories count wrong for group #2 (780, counted\u003d779).\nFix? no\n\nFree inodes count wrong for group #3 (2272, counted\u003d2273).\nFix? no\n\nSo this patch try to protect it with the ext4_lock_group.\n\nbtw, it is found by xfstests test case 269 and the volume is\nmkfsed with the parameter\n\"-O ^resize_inode,^uninit_bg,extent,meta_bg,flex_bg,ext_attr\"\nand I have run it 100 times and the error in e2fsck doesn\u0027t\nshow up again.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8563000d3bf3ccfccce335c092a7c43078be8ffd",
      "tree": "393a35a5504527f0e98e8c82cbac259fd886c766",
      "parents": [
        "4a3c3a5120bff77cc8c3a70c7cb681f458f47bfd"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Mon May 28 18:06:51 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 18:06:51 2012 -0400"
      },
      "message": "ext4: use consistent ssize_t type in ext4_file_write()\n\nThe generic_file_aio_write() function returns ssize_t, and\next4_file_write() returns a ssize_t, so use a ssize_t to collect the\nreturn value from generic_file_aio_write().  It shouldn\u0027t matter since\nthe VFS read/write paths shouldn\u0027t allow a read greater than MAX_INT,\nbut there was previously a bug in the AIO code paths, and it\u0027s best if\nwe use a consistent type so that the return value from\ngeneric_file_aio_write() can\u0027t get truncated.\n\nReported-by: Jouni Siren \u003cjouni.siren@iki.fi\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4a3c3a5120bff77cc8c3a70c7cb681f458f47bfd",
      "tree": "8a303785b5f5cdf5f4a0113da3660fe1c0383273",
      "parents": [
        "400db9d30146dc062aaba97a6301b425eb6015bc"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Mon May 28 17:55:16 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:55:16 2012 -0400"
      },
      "message": "ext4: fix format flag in ext4_ext_binsearch_idx()\n\nfix ext_debug format flag in ext4_ext_binsearch_idx().\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "400db9d30146dc062aaba97a6301b425eb6015bc",
      "tree": "3d2dac1ccc329077991f1f9eae2e144ef83aea6c",
      "parents": [
        "2cde417de013b2e5ae3007374d937e8c4c426bd4"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Mon May 28 17:53:53 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:53:53 2012 -0400"
      },
      "message": "ext4: cleanup in ext4_discard_allocated_blocks()\n\nremove \u0027len\u0027 variable in ext4_discard_allocated_blocks() because it is\nuseless.\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2cde417de013b2e5ae3007374d937e8c4c426bd4",
      "tree": "a103c97aca903c3b6bc6147f92c76b34fe28c90a",
      "parents": [
        "2716b80284c5ca415b8ce93ca178b0ca28482568"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:49:54 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:49:54 2012 -0400"
      },
      "message": "ext4: return ENOMEM when mounts fail due to lack of memory\n\nThis is a port of the ext3 commit: 4569cd1b0d9\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2716b80284c5ca415b8ce93ca178b0ca28482568",
      "tree": "51cd4aba2dea62cc5d9fd23b5fb24240c7952175",
      "parents": [
        "7e936b737211e6b54e34b71a827e56b872e958d8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:47:52 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:47:52 2012 -0400"
      },
      "message": "ext4: remove redundundant \"(char *) bh-\u003eb_data\" casts\n\nThe b_data field of the buffer_head is already a char *, so there\u0027s no\npoint casting it to a char *.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7e936b737211e6b54e34b71a827e56b872e958d8",
      "tree": "aca4b57eb1982d2cd21bcaa0cbabc45500f97026",
      "parents": [
        "967ac8af4475ce45474800709b12137aa7634c77"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@dilger.ca",
        "time": "Mon May 28 17:02:25 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 17:02:25 2012 -0400"
      },
      "message": "ext4: disallow hard-linked directory in ext4_lookup\n\nA hard-linked directory to its parent can cause the VFS to deadlock,\nand is a sign of a corrupted file system.  So detect this case in\next4_lookup(), before the rmdir() lockup scenario can take place.\n\nSigned-off-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "967ac8af4475ce45474800709b12137aa7634c77",
      "tree": "b40d665c1620e801f313ff516c7986e8c3cdbd59",
      "parents": [
        "9d99012ff26380a09092a9fddbb6e5f996dc631f"
      ],
      "author": {
        "name": "Haogang Chen",
        "email": "haogangchen@gmail.com",
        "time": "Mon May 28 14:21:55 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 14:21:55 2012 -0400"
      },
      "message": "ext4: fix potential integer overflow in alloc_flex_gd()\n\nIn alloc_flex_gd(), when flexbg_size is large, kmalloc size would\noverflow and flex_gd-\u003egroups would point to a buffer smaller than\nexpected, causing OOB accesses when it is used.\n\nNote that in ext4_resize_fs(), flexbg_size is calculated using\nsbi-\u003es_log_groups_per_flex, which is read from the disk and only bounded\nto [1, 31]. The patch returns NULL for too large flexbg_size.\n\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Haogang Chen \u003chaogangchen@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\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": "7e84b6216467b84cd332c8e567bf5aa113fd2f38",
      "tree": "8ca466c423bf9cea3722aa04349b41ee062a18e4",
      "parents": [
        "bb3d132a24cd8bf5e7773b2d9f9baa58b07a7dae"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon May 28 14:17:25 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 14:17:25 2012 -0400"
      },
      "message": "ext4: force ro mount if ext4_setup_super() fails\n\nIf ext4_setup_super() fails i.e. due to a too-high revision,\nthe error is logged in dmesg but the fs is not mounted RO as\nindicated.\n\nTested by:\n\n# mkfs.ext4 -r 4 /dev/sdb6\n# mount /dev/sdb6 /mnt/test\n# dmesg | grep \"too high\"\n[164919.759248] EXT4-fs (sdb6): revision level too high, forcing read-only mode\n# grep sdb6 /proc/mounts\n/dev/sdb6 /mnt/test2 ext4 rw,seclabel,relatime,data\u003dordered 0 0\n\nReviewed-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "bb3d132a24cd8bf5e7773b2d9f9baa58b07a7dae",
      "tree": "c88fbbdb6464bfa35c047b207dd6097f3b447375",
      "parents": [
        "e93376c20b70d1e62bb3246acd1bbe21fe58859f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon May 28 14:16:57 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 28 14:16:57 2012 -0400"
      },
      "message": "ext4: fix potential NULL dereference in ext4_free_inodes_counts()\n\nThe ext4_get_group_desc() function returns NULL on error, and\next4_free_inodes_count() function dereferences it without checking.\nThere is a check on the next line, but it\u0027s too late.\n\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\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": "25ed6e8a54df904c875365eebedbd19138a47328",
      "tree": "ac16e78f0d8e0376f40d9259b1095f356d395165",
      "parents": [
        "8f888ef846d4481e24c74b4a91ece771d2bcbcb5"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun May 27 07:48:56 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 27 07:48:56 2012 -0400"
      },
      "message": "jbd2: enable journal clients to enable v2 checksumming\n\nAdd in the necessary code so that journal clients can enable the new\njournal checksumming 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": "ece78b7df734726e790dcab207f463401ff80440",
      "tree": "4a0b23c28c6a727d5eebc8a88a22fe3720c425fd",
      "parents": [
        "07acfc2a9349a8ce45b236c2624dad452001966b",
        "0324876628a9c7faf8127e20af29373dc6dec876"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 25 08:14:59 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 25 08:14:59 2012 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs\n\nPull ext2, ext3 and quota fixes from Jan Kara:\n \"Interesting bits are:\n   - removal of a special i_mutex locking subclass (I_MUTEX_QUOTA) since\n     quota code does not need i_mutex anymore in any unusual way.\n   - backport (from ext4) of a fix of a checkpointing bug (missing cache\n     flush) that could lead to fs corruption on power failure\n\n  The rest are just random small fixes \u0026 cleanups.\"\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:\n  ext2: trivial fix to comment for ext2_free_blocks\n  ext2: remove the redundant comment for ext2_export_ops\n  ext3: return 32/64-bit dir name hash according to usage type\n  quota: Get rid of nested I_MUTEX_QUOTA locking subclass\n  quota: Use precomputed value of sb_dqopt in dquot_quota_sync\n  ext2: Remove i_mutex use from ext2_quota_write()\n  reiserfs: Remove i_mutex use from reiserfs_quota_write()\n  ext4: Remove i_mutex use from ext4_quota_write()\n  ext3: Remove i_mutex use from ext3_quota_write()\n  quota: Fix double lock in add_dquot_ref() with CONFIG_QUOTA_DEBUG\n  jbd: Write journal superblock with WRITE_FUA after checkpointing\n  jbd: protect all log tail updates with j_checkpoint_mutex\n  jbd: Split updating of journal superblock and marking journal empty\n  ext2: do not register write_super within VFS\n  ext2: Remove s_dirt handling\n  ext2: write superblock only once on unmount\n  ext3: update documentation with barrier\u003d1 default\n  ext3: remove max_debt in find_group_orlov()\n  jbd: Refine commit writeout logic\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": "f32aaf2d2b996b14e993da1c23f7ee22ea7333a3",
      "tree": "8ba6ce1e09319f0a62b69436aade6e06fe76c085",
      "parents": [
        "b09de7fa5217bbcb4caf3d19bd5e94816947ff7a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 21 11:42:02 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 21 11:42:02 2012 -0400"
      },
      "message": "ext4: enable the 64-bit jbd2 feature based on the 64-bit ext4 feature\n\nPreviously we were only enabling the 64-bit jbd2 feature if the number\nof blocks in the file system was greater 2**32-1.  The problem with\nthis is that it makes it harder to test the 64-bit journal code paths\nwith small file systems, since a small test file system would with the\n64-bit ext4 feature enable would use a 64-bit file system on-disk data\nstructures, but use a 32-bit journal.\n\nThis would also cause problems when trying to do an online resize to\ngrow the filesystem above the 2**32-1 boundary.  Fortunately the patch\nto support online resize for 64-bit file systems hasn\u0027t been merged\nyet, so this problem hasn\u0027t arisen in practice.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\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": "0b7f7cefaea96ef25dbe54b8e16d2d61560d8b9d",
      "tree": "640e7107056b7cc5cf06b1c03ba569bd241b6c31",
      "parents": [
        "905c3937625d14fa4453a2643814b72b8a22d9ae"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Apr 25 21:26:54 2012 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 15 23:34:38 2012 +0200"
      },
      "message": "ext4: Remove i_mutex use from ext4_quota_write()\n\nWe don\u0027t need i_mutex in ext4_quota_write() because writes to quota file\nare serialized by dqio_mutex anyway. Changes to quota files outside of quota\ncode are forbidded and enforced by NOATIME and IMMUTABLE bits.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "26fe575028703948880fce4355a210c76bb0536e",
      "tree": "0a7d04289e1eb1f1739659ebc9498d40f2add5da",
      "parents": [
        "ee983e89670704b2a05e897b161f2674a42d1508"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 13:14:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 19:54:35 2012 -0700"
      },
      "message": "vfs: make it possible to access the dentry hash/len as one 64-bit entry\n\nThis allows comparing hash and len in one operation on 64-bit\narchitectures.  Right now only __d_lookup_rcu() takes advantage of this,\nsince that is the case we care most about.\n\nThe use of anonymous struct/unions hides the alternate 64-bit approach\nfrom most users, the exception being a few cases where we initialize a\n\u0027struct qstr\u0027 with a static initializer.  This makes the problematic\ncases use a new QSTR_INIT() helper function for that (but initializing\njust the name pointer with a \"{ .name \u003d xyzzy }\" initializer remains\nvalid, as does just copying another qstr structure).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "b09de7fa5217bbcb4caf3d19bd5e94816947ff7a",
      "tree": "e4ca909438eb43ac5b493793891d626ffd0e6b06",
      "parents": [
        "5c359a47e7d999a0ea7f397da2c15590d0a82815"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 30 07:40:00 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 30 07:40:00 2012 -0400"
      },
      "message": "ext4: remove unnecessary check in add_dirent_to_buf()\n\nNone of this function callers ever pass in a NULL inode pointer, so\nthis check is unnecessary, and the else clause is dead code.  (This\nchange should make the code coverage people a little happier.  :-)\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "cc8e94fd126ab2d2e4bcb1b65c7316196f0cec8c",
      "tree": "1e9e6fa98d5f7dc2e71f615cb3de556a782d577e",
      "parents": [
        "b0336e8d2108e6302aecaadd17c6c0bd686da22d"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:43:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:43:10 2012 -0400"
      },
      "message": "ext4: Calculate and verify checksums of extended attribute blocks\n\nCalculate and verify the checksums of extended attribute blocks.  This\nonly applies to separate EA blocks that are pointed to by\ninode-\u003ei_file_acl (i.e.  external EA blocks); the checksum lives in\nthe EA header.\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": "dbe89444042ab6540bc304343cfdcbc8b95d003d",
      "tree": "436c6e039ffef3387fcfac0bb699f0b14b4c9ba6",
      "parents": [
        "7ac5990d5a3e2e465162880819cc46c6427d3b6f"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:39:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:39:10 2012 -0400"
      },
      "message": "ext4: Calculate and verify checksums for htree nodes\n\nCalculate and verify the checksum for directory index tree (htree)\nnode blocks.  The checksum is stored in the last 4 bytes of the htree\nblock and requires the dx_entry array to stop 1 dx_entry short of the\nend of the 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": "7ac5990d5a3e2e465162880819cc46c6427d3b6f",
      "tree": "7ff0eafbf69010425c69bca61bddbc1c58adc89b",
      "parents": [
        "fa77dcfafeaa6bc73293c646bfc3d5192dcf0be2"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:37:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:37:10 2012 -0400"
      },
      "message": "ext4: verify and calculate checksums for extent tree  blocks\n\nCalculate and verify the checksum for each extent tree block.  The\nchecksum is located in the space immediately after the last possible\next4_extent in the block.  The space is is typically the last 4-8\nbytes in the 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": "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": "d25425f8e0ed01fc0167c043aee7e619fc3f6ab2",
      "tree": "1c88b9de530a45bc79bf96d7acd045114cab480e",
      "parents": [
        "e615391896064eb5a0c760d086b8e1c6ecfffeab"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:25:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:25:10 2012 -0400"
      },
      "message": "ext4: record the checksum algorithm in use in the superblock\n\nRecord the type of checksum algorithm we\u0027re using for metadata in the\nsuperblock, in case we ever want/need to change the algorithm.\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": "f84891289e62a74e9b4942eaad80617368b2d778",
      "tree": "6e86704a9780dd6ed97f25ba1cd32d59ffebf430",
      "parents": [
        "69964ea4c7b68c9399f7977aa5b9aa6539a6a98a"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Sun Apr 29 18:21:10 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 29 18:21:10 2012 -0400"
      },
      "message": "ext4: create a new BH_Verified flag to avoid unnecessary metadata validation\n\nCreate a new BH_Verified flag to indicate that we\u0027ve verified all the\ndata in a buffer_head for correctness.  This allows us to bypass\nexpensive verification steps when they are not necessary without\nmissing them when they are.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "95f714727436836bb46236ce2bcd8ee8f9274aed",
      "tree": "200ea790bf3299c9120b65b890ac85f56337d848",
      "parents": [
        "ce1ee9f5b99fa4ba332692194aa57b604112762f",
        "db7e5c668e1b16061fe2d94d3cba022dd360c5d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 23 19:52:00 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 23 19:52:00 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 bug fixes from Ted Ts\u0027o:\n \"These are two low-risk bug fixes for ext4, fixing a compile warning\n  and a potential deadlock.\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  super.c: unused variable warning without CONFIG_QUOTA\n  jbd2: use GFP_NOFS for blkdev_issue_flush\n"
    },
    {
      "commit": "db7e5c668e1b16061fe2d94d3cba022dd360c5d4",
      "tree": "942cb61ff0c34ccbf73184c99114bc44c92ccc5d",
      "parents": [
        "99aa78466777083255b876293e9e83dec7cd809a"
      ],
      "author": {
        "name": "Eldad Zack",
        "email": "eldad@fogrefinery.com",
        "time": "Sun Apr 22 17:50:52 2012 +0200"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 23 21:44:41 2012 -0400"
      },
      "message": "super.c: unused variable warning without CONFIG_QUOTA\n\nsb info is only checked with quota support.\n\nfs/ext4/super.c: In function ‘parse_options’:\nfs/ext4/super.c:1600:23: warning: unused variable ‘sbi’ [-Wunused-variable]\n\nSigned-off-by: Eldad Zack \u003celdad@fogrefinery.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "592fe8980688e7cba46897685d014c7fb3018a67",
      "tree": "da0df053994838535a6d260eaacf32c84e2619ef",
      "parents": [
        "d44c6d4fa9b3d9b4f6d8d1751d9cbc50ed53cffe",
        "57f73c2c89a5d3b2ed87201c8100d1fa989a1a65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 17 13:30:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 17 13:30:34 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 regression fixes from Ted Ts\u0027o:\n \"This fixes a scalability problem reported by Andi Kleen and Tim Chen;\n  they were quite secretive about the precise nature of their workload,\n  but they later admitted that it only showed up when they were using a\n  large sparse file, so the amount of data I/O that was needed was close\n  to zero.\n\n  I\u0027m not sure how realistic this is and it\u0027s only a regression if you\n  consider changes made since 2.6.39 to be a \"regression\" vis-a-vis the\n  policy regarding post-merge window bug fixes, but Linus agreed it was\n  worth fixing, so I\u0027m including it in this pull request.\n\n  This also fixes the journalled quota mount options, which I\n  accidentally broke while I was cleaning up the mount option handling.\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: fix handling of journalled quota options\n  ext4: address scalability issue by removing extent cache statistics\n"
    },
    {
      "commit": "57f73c2c89a5d3b2ed87201c8100d1fa989a1a65",
      "tree": "7615419aa669cb652099dd3a37439f475a2fbaa5",
      "parents": [
        "9cd70b347e9761ea2d2ac3d758c529a48a8193e6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 16 18:55:26 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 16 18:55:26 2012 -0400"
      },
      "message": "ext4: fix handling of journalled quota options\n\nCommit 26092bf5 broke handling of journalled quota mount options by\ntrying to parse argument of every mount option as a number.  Fix this\nby dealing with the quota options before we call match_int().\n\nThanks to Jan Kara for discovering this regression.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\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": "af1584f570b19b0285e4402a0b54731495d31784",
      "tree": "9f32e6f521d658a1365891998239198077d4b662",
      "parents": [
        "efe39651f08813180f37dc508d950fc7d92b29a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Apr 12 20:32:25 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 13 10:12:08 2012 -0400"
      },
      "message": "ext4: fix endianness breakage in ext4_split_extent_at()\n\n-\u003eee_len is __le16, so assigning cpu_to_le32() to it is going to do\nBad Things(tm) on big-endian hosts...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6268b325c3066234e7bddb99d2b98bcedb0c0033",
      "tree": "5dca66fae30aa44e314ec6713ab31b773ad788e4",
      "parents": [
        "12679a2d7e3bfbdc7586e3e86d1ca90c46659363"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 17:00:56 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 29 17:00:56 2012 -0700"
      },
      "message": "Revert \"ext4: don\u0027t release page refs in ext4_end_bio()\"\n\nThis reverts commit b43d17f319f2c502b17139d1cf70731b2b62c644.\n\nDave Jones reports that it causes lockups on his laptop, and his debug\noutput showed a lot of processes hung waiting for page_writeback (or\nmore commonly - processes hung waiting for a lock that was held during\nthat writeback wait).\n\nThe page_writeback hint made Ted suggest that Dave look at this commit,\nand Dave verified that reverting it makes his problems go away.\n\nTed says:\n \"That commit fixes a race which is seen when you write into fallocated\n  (and hence uninitialized) disk blocks under *very* heavy memory\n  pressure.  Furthermore, although theoretically it could trigger under\n  normal direct I/O writes, it only seems to trigger if you are issuing\n  a huge number of AIO writes, such that a just-written page can get\n  evicted from memory, and then read back into memory, before the\n  workqueue has a chance to update the extent tree.\n\n  This race has been around for a little over a year, and no one noticed\n  until two months ago; it only happens under fairly exotic conditions,\n  and in fact even after trying very hard to create a simple repro under\n  lab conditions, we could only reproduce the problem and confirm the\n  fix on production servers running MySQL on very fast PCIe-attached\n  flash devices.\n\n  Given that Dave was able to hit this problem pretty quickly, if we\n  confirm that this commit is at fault, the only reasonable thing to do\n  is to revert it IMO.\"\n\nReported-and-tested-by: Dave Jones \u003cdavej@redhat.com\u003e\nAcked-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\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": "69e1aaddd63104f37021d0b0f6abfd9623c9134c",
      "tree": "14ad49741b428d270b681694bb2df349465455b9",
      "parents": [
        "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
        "9d547c35799a4ddd235f1565cec2fff6c9263504"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 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 for 3.4 from Ted Ts\u0027o:\n \"Ext4 commits for 3.3 merge window; mostly cleanups and bug fixes\n\n  The changes to export dirty_writeback_interval are from Artem\u0027s s_dirt\n  cleanup patch series.  The same is true of the change to remove the\n  s_dirt helper functions which never got used by anyone in-tree.  I\u0027ve\n  run these changes by Al Viro, and am carrying them so that Artem can\n  more easily fix up the rest of the file systems during the next merge\n  window.  (Originally we had hopped to remove the use of s_dirt from\n  ext4 during this merge window, but his patches had some bugs, so I\n  ultimately ended dropping them from the ext4 tree.)\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (66 commits)\n  vfs: remove unused superblock helpers\n  mm: export dirty_writeback_interval\n  ext4: remove useless s_dirt assignment\n  ext4: write superblock only once on unmount\n  ext4: do not mark superblock as dirty unnecessarily\n  ext4: correct ext4_punch_hole return codes\n  ext4: remove restrictive checks for EOFBLOCKS_FL\n  ext4: always set then trimmed blocks count into len\n  ext4: fix trimmed block count accunting\n  ext4: fix start and len arguments handling in ext4_trim_fs()\n  ext4: update s_free_{inodes,blocks}_count during online resize\n  ext4: change some printk() calls to use ext4_msg() instead\n  ext4: avoid output message interleaving in ext4_error_\u003cfoo\u003e()\n  ext4: remove trailing newlines from ext4_msg() and ext4_error() messages\n  ext4: add no_printk argument validation, fix fallout\n  ext4: remove redundant \"EXT4-fs: \" from uses of ext4_msg\n  ext4: give more helpful error message in ext4_ext_rm_leaf()\n  ext4: remove unused code from ext4_ext_map_blocks()\n  ext4: rewrite punch hole to use ext4_ext_remove_space()\n  jbd2: cleanup journal tail after transaction commit\n  ...\n"
    },
    {
      "commit": "182f514f883abb5f942c94e61c371c4b406352d4",
      "tree": "dfcdedfc4e68eee92107aa06fdf92952dadd259a",
      "parents": [
        "a8e25a83245618e6b0ddf82a9bba79c1b466804d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Mar 21 22:30:06 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:30:06 2012 -0400"
      },
      "message": "ext4: remove useless s_dirt assignment\n\nClean-up ext4 a tiny bit by removing useless s_dirt assignment in\n\u0027ext4_fill_super()\u0027 because a bit later we anyway call\n\u0027ext4_setup_super()\u0027 which writes the superblock to the media\nunconditionally.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a8e25a83245618e6b0ddf82a9bba79c1b466804d",
      "tree": "0bcdefe7f23b4fba9a9b20e02cec08d0550de316",
      "parents": [
        "1b8b9750f07cdd6e13f12c06ae7ec853f2abbe6c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Mar 21 22:29:15 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:29:15 2012 -0400"
      },
      "message": "ext4: write superblock only once on unmount\n\nIn some rather rare cases it is possible that ext4 may the superblock\nto the media twice. This patch makes sure this does not happen. This\nshould speed up unmounting in those cases.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1b8b9750f07cdd6e13f12c06ae7ec853f2abbe6c",
      "tree": "e760b3589e4c4e1e6b346cda33f6730ff3f713a4",
      "parents": [
        "73355192748483a5ba698345092321611f91b04f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Mar 21 22:28:29 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:28:29 2012 -0400"
      },
      "message": "ext4: do not mark superblock as dirty unnecessarily\n\nCommit a0375156ca1041574b5d47cc7e32f10b891151b0 cleaned up superblock\ndirtying handling, but missed one place. This patch does what was\nintended: if we have the journal, then we update the superblock\nthrough the journal rather than doing this directly.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "73355192748483a5ba698345092321611f91b04f",
      "tree": "60f31f2865bef81b8e12d52bb60e63a3a967f325",
      "parents": [
        "afcff5d80a4106e732d903640161d23950eb8e3b"
      ],
      "author": {
        "name": "Allison Henderson",
        "email": "achender@linux.vnet.ibm.com",
        "time": "Wed Mar 21 22:23:31 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 22:23:31 2012 -0400"
      },
      "message": "ext4: correct ext4_punch_hole return codes\n\next4_punch_hole returns -ENOTSUPP but it should be using -EOPNOTSUPP\n\nSigned-off-by: Allison Henderson \u003cachender@linux.vnet.ibm.com\u003e\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "afcff5d80a4106e732d903640161d23950eb8e3b",
      "tree": "9a78cb5546c3f10bb98d3ce8b4f31889f5ad10bc",
      "parents": [
        "a7967f055a9438941268d725b268141c57e32a05"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Mar 21 21:47:55 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 21:47:55 2012 -0400"
      },
      "message": "ext4: remove restrictive checks for EOFBLOCKS_FL\n\nWe are going to remove the EOFBLOCKS_FL flag in the future, so this is\nthe first part of the removal. We can not remove it entirely just now,\nsince the e2fsck is still checking for it and it might cause headache to\nsome people. Instead, remove the restrictive checks now and the rest\nlater, when the new e2fsck code is out and common enough.\n\nThis is also needed because punch hole already breaks the EOFBLOCKS_FL\nsemantics, so it might cause the some troubles. So simply remove it.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a7967f055a9438941268d725b268141c57e32a05",
      "tree": "e79e8452bdb81baa850f71b5f62b23d2c326b98b",
      "parents": [
        "21e7fd22a5a0ca83befe12c58cced21975dab213"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Mar 21 21:26:22 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 21:26:22 2012 -0400"
      },
      "message": "ext4: always set then trimmed blocks count into len\n\nCurrently if the range to trim is too small, for example on 1K fs\nthe request to trim the first block, then the \u0027range-\u003elen\u0027 is not set\nreporting wrong number of discarded block to the caller.\n\nFix this by always setting the \u0027range-\u003elen\u0027 before we return. Note that\nwhen there is a failure (-EINVAL) caller can not depend on \u0027range-\u003elen\u0027\nbeing set properly.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "21e7fd22a5a0ca83befe12c58cced21975dab213",
      "tree": "bb11f7073ad3984e0ab775fc4800f5ee05864623",
      "parents": [
        "913eed83eda42012cde8a9a801c31b312545c098"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Mar 21 21:24:22 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 21:24:22 2012 -0400"
      },
      "message": "ext4: fix trimmed block count accunting\n\nCurrently when there is not enough free blocks in the block group to\ndiscard (grp-\u003ebb_free \u003c minlen) the \u0027trimmed\u0027 is bumped up anyway with\nthe number of discarded blocks from the previous iteration. Fix this\nby bumping up \u0027trimmed\u0027 only if the ext4_trim_all_free() was actually\nrun.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "913eed83eda42012cde8a9a801c31b312545c098",
      "tree": "c6d3ecf5f98fcb1da3854059dbcc51c27b078011",
      "parents": [
        "636d7e2e3b57543636d20cd083079300ccdd569d"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Mar 21 21:22:22 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 21 21:22:22 2012 -0400"
      },
      "message": "ext4: fix start and len arguments handling in ext4_trim_fs()\n\nThe overflow can happen when we are calling get_group_no_and_offset()\nwhich stores the group number in the ext4_grpblk_t type which is\nactually int. However when the blocknr is big enough the group number\nmight be bigger than ext4_grpblk_t resulting in overflow. This will\nmost likely happen with FITRIM default argument len \u003d ULLONG_MAX.\n\nFix this by using \"end\" variable instead of \"start+len\" as it is easier\nto get right and specifically check that the end is not beyond the end\nof the file system, so we are sure that the result of\nget_group_no_and_offset() will not overflow. Otherwise truncate it to\nthe size of the file system.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "07c0c5d8b8c122b2f2df9ee574ac3083daefc981",
      "tree": "042fcae9a90b5e200b9c00c32df8096c8099039c",
      "parents": [
        "88187398cc5fa6650f38b9dcd5464667f468888f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 22:05:02 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 22:05:02 2012 -0400"
      },
      "message": "ext4: initialization of ext4_li_mtx needs to be done earlier\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "636d7e2e3b57543636d20cd083079300ccdd569d",
      "tree": "c3dcb77693d2a2262be5ebc4a2f993d01453b4b6",
      "parents": [
        "92b9781658dba287a1354ad74ed351f68c3ee740"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Tue Mar 20 15:46:11 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 20 15:46:11 2012 -0400"
      },
      "message": "ext4: update s_free_{inodes,blocks}_count during online resize\n\nWhen we\u0027re doing an online resize of an ext4 filesystem, we need to\nupdate the free inode and block counts in the superblock so that fsck\ndoesn\u0027t complain.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "92b9781658dba287a1354ad74ed351f68c3ee740",
      "tree": "1dc2a11343544374321bf18340b0bf886c898f97",
      "parents": [
        "d9ee81da93e86ac45aef30b2493a1e68fc71b9d0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:41:49 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:41:49 2012 -0400"
      },
      "message": "ext4: change some printk() calls to use ext4_msg() instead\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d9ee81da93e86ac45aef30b2493a1e68fc71b9d0",
      "tree": "0c6716d701f2d469ea61e206b6d845e77f185eb4",
      "parents": [
        "1084f252e3490392575b80cbdfa1baf0842173d8"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Mar 19 23:15:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:15:43 2012 -0400"
      },
      "message": "ext4: avoid output message interleaving in ext4_error_\u003cfoo\u003e()\n\nUsing KERN_CONT means that messages from multiple threads may be\ninterleaved.  Avoid this by using a single printk call in\next4_error_inode and ext4_error_file.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1084f252e3490392575b80cbdfa1baf0842173d8",
      "tree": "063673648d6e16f6f2873bfcf99791eacadf1aec",
      "parents": [
        "ace36ad431c6820c2a8718cee85e5294d6e19747"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:13:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:13:43 2012 -0400"
      },
      "message": "ext4: remove trailing newlines from ext4_msg() and ext4_error() messages\n\nThe functions ext4_msg() and ext4_error() already tack on a trailing\nnewline, so remove the unnecessary extra newline.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\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": "7f6a11e73d755ce82497ee4ac79d85aa10f73a38",
      "tree": "d883a87828ca6220eb92a3a2c5ea02e4cace83b0",
      "parents": [
        "dc1841d6cff22b98deef46bfe768a9c678d917c2"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Mar 19 23:09:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:09:43 2012 -0400"
      },
      "message": "ext4: remove redundant \"EXT4-fs: \" from uses of ext4_msg\n\next4_msg adds \"EXT4-fs: \" to the messsage output.\nRemove the redundant bits from uses.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dc1841d6cff22b98deef46bfe768a9c678d917c2",
      "tree": "2d97eb9fd90fcd42bee4f5d7b7d9adb2459983f6",
      "parents": [
        "7877191c28b1e140795c0c951dde8aad43757378"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Mar 19 23:07:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:07:43 2012 -0400"
      },
      "message": "ext4: give more helpful error message in ext4_ext_rm_leaf()\n\nThe error message produced by the ext4_ext_rm_leaf() when we are\nremoving blocks which accidentally ends up inside the existing extent,\nis not very helpful, because we would like to also know which extent did\nwe collide with.\n\nThis commit changes the error message to get us also the information\nabout the extent we are colliding with.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7877191c28b1e140795c0c951dde8aad43757378",
      "tree": "2ce9989e43ad3a072a109e6df8a7cb1939f55e6b",
      "parents": [
        "5f95d21fb6f2aaa52830e5b7fb405f6c71d3ab85"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Mar 19 23:05:43 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:05:43 2012 -0400"
      },
      "message": "ext4: remove unused code from ext4_ext_map_blocks()\n\nSince the commit \u0027Rewrite punch hole to use ext4_ext_remove_space()\u0027\nreworked the punch hole implementation to use ext4_ext_remove_space()\ninstead of ext4_ext_map_blocks(), we can remove the code which is no\nlonger needed from the ext4_ext_map_blocks().\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5f95d21fb6f2aaa52830e5b7fb405f6c71d3ab85",
      "tree": "383159c3d591279fcfae9695d64819f71636fd4b",
      "parents": [
        "3339578f05787259917788f461f4196b7349c2a4"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Mar 19 23:03:19 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 19 23:03:19 2012 -0400"
      },
      "message": "ext4: rewrite punch hole to use ext4_ext_remove_space()\n\nThis commit rewrites ext4 punch hole implementation to use\next4_ext_remove_space() instead of its home gown way of doing this via\next4_ext_map_blocks(). There are several reasons for changing this.\n\nFirstly it is quite non obvious that punching hole needs to\next4_ext_map_blocks() to punch a hole, especially given that this\nfunction should map blocks, not unmap it. It also required a lot of new\ncode in ext4_ext_map_blocks().\n\nSecondly the design of it is not very effective. The reason is that we\nare trying to punch out blocks in ext4_ext_punch_hole() in opposite\ndirection than in ext4_ext_rm_leaf() which causes the ext4_ext_rm_leaf()\nto iterate through the whole tree from the end to the start to find the\nrequested extent for every extent we are going to punch out.\n\nAnd finally the current implementation does not use the existing code,\nbut bring a lot of new code, which is IMO unnecessary since there\nalready is some infrastructure we can use. Specifically\next4_ext_remove_space().\n\nThis commit changes ext4_ext_remove_space() to accept \u0027end\u0027 parameter so\nwe can not only truncate to the end of file, but also remove the space\nin the middle of the file (punch a hole). Moreover, because the last\nblock to punch out, might be in the middle of the extent, we have to\nsplit the extent at \u0027end + 1\u0027 so ext4_ext_rm_leaf() can easily either\nremove the whole fist part of split extent, or change its size.\n\next4_ext_remove_space() is then used to actually remove the space\n(extents) from within the hole, instead of ext4_ext_map_blocks().\n\nNote that this also fix the issue with punch hole, where we would forget\nto remove empty index blocks from the extent tree, resulting in double\nfree block error and file system corruption. This is simply because we\nnow use different code path, where this problem does not exist.\n\nThis has been tested with fsx running for several days and xfstests,\nplus xfstest #251 with \u0027-o discard\u0027 run on the loop image (which\nconverts discard requestes into punch hole to the backing file). All of\nit on 1K and 4K file system block size.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.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": "31d4f3a2f3c73f279ff96a7135d7202ef6833f12",
      "tree": "9240ee74aa863ea27f5e9c89e1e3cf0e4784c032",
      "parents": [
        "4188188bdc3aed29eb41fb1537305cff7431d062"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 11 23:30:16 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 11 23:30:16 2012 -0400"
      },
      "message": "ext4: check for zero length extent\n\nExplicitly test for an extent whose length is zero, and flag that as a\ncorrupted extent.\n\nThis avoids a kernel BUG_ON assertion failure.\n\nTested: Without this patch, the file system image found in\ntests/f_ext_zero_len/image.gz in the latest e2fsprogs sources causes a\nkernel panic.  With this patch, an ext4 file system error is noted\ninstead, and the file system is marked as being corrupted.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d42859\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\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": "b43d17f319f2c502b17139d1cf70731b2b62c644",
      "tree": "05215b2155e4dbc66f6b1035b8afba7c805284db",
      "parents": [
        "491caa43639abcffaa645fbab372a7ef4ce2975c"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Mon Mar 05 10:40:15 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 05 10:40:15 2012 -0500"
      },
      "message": "ext4: don\u0027t release page refs in ext4_end_bio()\n\nWe can clear PageWriteback on each page when the IO\ncompletes, but we can\u0027t release the references on the page\nuntil we convert any uninitialized extents.\n\nWithout this patch, the use of the dioread_nolock mount\noption can break buffered writes, because extents may\nnot be converted by the time a subsequent buffered read\ncomes in; if the page is not in the page cache, a read\nwill return zeros if the extent is still uninitialized.\n\nI tested this with a (temporary) patch that adds a call\nto msleep(1000) at the start of ext4_end_io_work(), to delay\nprocessing of each DIO-unwritten work queue item.  With this\nmsleep(), a simple workload of\n\n  fallocate\n  write\n  fadvise\n  read\n\nwill fail without this patch, succeeds with it.\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": "93ef8541d5c3ad1a73057ff358a49d0ee7146d6f",
      "tree": "70c2a7cac370084edac29ee0156f52d488ee32ab",
      "parents": [
        "f70486055ee351158bd6999f3965ad378b52c694"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Mon Mar 05 10:19:52 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 05 10:19:52 2012 -0500"
      },
      "message": "ext4: clean up the flags passed to __blockdev_direct_IO\n\nFor extent-based files, you can perform DIO to holes, as mentioned in\nthe comments in ext4_ext_direct_IO.  However, that function passes\nDIO_SKIP_HOLES to __blockdev_direct_IO, which is *really* confusing to\nthe uninitiated reader.  The key, here, is that the get_block function\npassed in, ext4_get_block_write, completely ignores the create flag\nthat is passed to it (the create flag is passed in from the direct I/O\ncode, which uses the DIO_SKIP_HOLES flag to determine whether or not\nit should be cleared).\n\nThis is a long-winded way of saying that the DIO_SKIP_HOLES flag is\nultimately ignored.  So let\u0027s remove it.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f70486055ee351158bd6999f3965ad378b52c694",
      "tree": "bc611bc2fa989a7ea3daddd160452ea98f09e76d",
      "parents": [
        "c7198b9c1e4520d3b16f0f65e37d3db78745f1e1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 22:06:20 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 22:06:20 2012 -0500"
      },
      "message": "ext4: try to deprecate noacl and noxattr_user mount options\n\nNo other file system allows ACL\u0027s and extended attributes to be\nenabled or disabled via a mount option.  So let\u0027s try to deprecate\nthese options from ext4.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c7198b9c1e4520d3b16f0f65e37d3db78745f1e1",
      "tree": "1b40ede7c2dc0f74f0ad95c408502f58a86c525a",
      "parents": [
        "66acdcf4ea37f67e59a955509289e82e5f59a5d0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 22:00:53 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 22:00:53 2012 -0500"
      },
      "message": "ext4: ignore mount options supported by ext2/3 (but have since been removed)\n\nUsers who tried to use the ext4 file system driver is being used for\nthe ext2 or ext3 file systems (via the CONFIG_EXT4_USE_FOR_EXT23\noption) could have failed mounts if their /etc/fstab contains options\nrecognized by ext2 or ext3 but which have since been removed in ext4.\n\nSo teach ext4 to recognize them and give a warning that the mount\noption was removed.\n\nReport: https://bbs.archlinux.org/profile.php?id\u003d33804\n\nSigned-off-by: Tom Gundersen \u003cteg@jklm.no\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Thomas Baechler \u003cthomas@archlinux.org\u003e\nCc: Tobias Powalowski \u003ctobias.powalowski@googlemail.com\u003e\nCc: Dave Reisner \u003cd@falconindy.com\u003e\n"
    },
    {
      "commit": "66acdcf4ea37f67e59a955509289e82e5f59a5d0",
      "tree": "6ded862dbcab3eadc75ccc256d15427044672cc1",
      "parents": [
        "5a916be1b31de9e833aa764de6faf27bb79f9b83"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 20:21:38 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 04 20:21:38 2012 -0500"
      },
      "message": "ext4: add debugging /proc file showing file system options\n\nNow that /proc/mounts is consistently showing only those mount options\nwhich need to be specified in /etc/fstab or on the mount command line,\nit is useful to have file which shows exactly which file system\noptions are enabled.  This can be useful when debugging a user\nproblem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\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": "2adf6da8379b68838aa1002e11efd66916689a9b",
      "tree": "17b25884c265f67134d45bde0e85456841075b6d",
      "parents": [
        "26092bf52478d23f872c6531e9e3ea9bde2c66c1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 23:20:50 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 23:20:50 2012 -0500"
      },
      "message": "ext4: move ext4_show_options() after parse_options()\n\nThis commit is strictly a code movement so in preparation of changing\next4_show_options to be table driven.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "26092bf52478d23f872c6531e9e3ea9bde2c66c1",
      "tree": "e32c3dce5d4d82087da6306dc7f4effd3d8c4d31",
      "parents": [
        "72578c33c4977941a5094f1d7011c8e1f5c43552"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 23:20:47 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 23:20:47 2012 -0500"
      },
      "message": "ext4: use a table-driven handler for mount options\n\nBy using a table-drive approach, we shave about 100 lines of code from\next4, and make the code a bit more regular and factored out.  This\nwill also make it possible in a future patch to use this table for\ndisplaying the mount options that were specified in /proc/mounts.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "72578c33c4977941a5094f1d7011c8e1f5c43552",
      "tree": "bbf3e248b01e0a38599958c4ade5b85ffef240d3",
      "parents": [
        "39ef17f1b0613b46c6973596525c2bc816d90b5b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 18:04:40 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 03 18:04:40 2012 -0500"
      },
      "message": "ext4: unify handling of mount options which have been removed\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": "ee4a3fcd1da660147624f13a9dc31d8bf43f5b06",
      "tree": "7961f00958527d76abc51fa9a65071f0aba67320",
      "parents": [
        "87f26807e91102f2526d59c0232bf020479c8d0c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 12:14:24 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 12:14:24 2012 -0500"
      },
      "message": "ext4: remove Opt_ignore\n\nThis is completely unused so let\u0027s just get rid of it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "87f26807e91102f2526d59c0232bf020479c8d0c",
      "tree": "26636cbfc0e606b4926e15fcbaeaf36b2a61308d",
      "parents": [
        "85d216501a7c2aa3e19d71c70430395c864a2ee5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 00:03:21 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 02 00:03:21 2012 -0500"
      },
      "message": "ext4: remove deprecation warnings for minix_df and grpid\n\nPeople complained about removing both of these features, so per\nLinus\u0027s dictate, we won\u0027t be able to remove them.  Sigh...\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "85d216501a7c2aa3e19d71c70430395c864a2ee5",
      "tree": "869861f592a16a7efd3f98a5df693adb71ae0319",
      "parents": [
        "9ee4930259abf3641ae85c19498eabe97cf6abad"
      ],
      "author": {
        "name": "Santosh Nayak",
        "email": "santoshprasadnayak@gmail.com",
        "time": "Mon Feb 27 01:09:03 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 27 01:09:03 2012 -0500"
      },
      "message": "ext4: Fix endianness bug when reading the MMP block\n\nSparse complained about this endian bug in fs/ext4/mmp.c.\n\nSigned-off-by: Santosh Nayak \u003csantoshprasadnayak@gmail.com\u003e\nReviewed-by: Johann Lombardi \u003cjohann@whamcloud.com\u003e\nReviewed-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9ee4930259abf3641ae85c19498eabe97cf6abad",
      "tree": "3c1042a8b41741811ee320beb6b18233660dcc6f",
      "parents": [
        "c1bb05a657fb3d8c6179a4ef7980261fae4521d7"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Mon Feb 20 23:09:36 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 23:09:36 2012 -0500"
      },
      "message": "ext4: format flag in dx_probe()\n\nFix ext4_warning format flag in dx_probe().\n\nCC: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c1bb05a657fb3d8c6179a4ef7980261fae4521d7",
      "tree": "57345a9505bd8e2713381adc864d4ed935b0f6c8",
      "parents": [
        "a0ade1deb86d2325aecc36272bb4505a6eec9235"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Feb 20 23:06:18 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 23:06:18 2012 -0500"
      },
      "message": "ext4: avoid deadlock on sync-mounted FS w/o journal\n\nProcesses hang forever on a sync-mounted ext2 file system that\nis mounted with the ext4 module (default in Fedora 16).\n\nI can reproduce this reliably by mounting an ext2 partition with\n\"-o sync\" and opening a new file an that partition with vim. vim\nwill hang in \"D\" state forever.  The same happens on ext4 without\na journal.\n\nI am attaching a small patch here that solves this issue for me.\nIn the sync mounted case without a journal,\next4_handle_dirty_metadata() may call sync_dirty_buffer(), which\ncan\u0027t be called with buffer lock held.\n\nAlso move mb_cache_entry_release inside lock to avoid race\nfixed previously by 8a2bfdcb ext[34]: EA block reference count racing fix\nNote too that ext2 fixed this same problem in 2006 with\nb2f49033 [PATCH] fix deadlock in ext2\n\nSigned-off-by: Martin.Wilck@ts.fujitsu.com\n[sandeen@redhat.com: move mb_cache_entry_release before unlock, edit commit msg]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a0ade1deb86d2325aecc36272bb4505a6eec9235",
      "tree": "863f896ae46280dbcbbe5c31e9a3d2988c14c1fb",
      "parents": [
        "266991b13890049ee1a6bb95b9817f06339ee3d7"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Feb 20 23:02:06 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 23:02:06 2012 -0500"
      },
      "message": "ext4: fix resize when resizing within single group\n\nWhen resizing file system in the way that the new size of the file\nsystem is still in the same group (no new groups are added), then we can\nhit a BUG_ON in ext4_alloc_group_tables()\n\nBUG_ON(flex_gd-\u003ecount \u003d\u003d 0 || group_data \u003d\u003d NULL);\n\nbecause flex_gd-\u003ecount is zero. The reason is the missing check for such\ncase, so the code always extend the last group fully and then attempt to\nadd more groups, but at that time n_blocks_count is actually smaller\nthan o_blocks_count.\n\nIt can be easily reproduced like this:\n\nmkfs.ext4 -b 4096 /dev/sda 30M\nmount /dev/sda /mnt/test\nresize2fs /dev/sda 50M\n\nFix this by checking whether the resize happens within the singe group\nand only add that many blocks into the last group to satisfy user\nrequest. Then o_blocks_count \u003d\u003d n_blocks_count and the resize will exit\nsuccessfully without and attempt to add more groups into the fs.\n\nAlso fix mixing together block number and blocks count which might be\nconfusing and can easily lead to off-by-one errors (but it is actually\nnot the case here since the two occurrence of this mix-up will cancel\neach other).\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nReported-by: Milan Broz \u003cmbroz@redhat.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\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": "d4dc462f556afe510d58d3b12b3d66c2cabff539",
      "tree": "83e147cbbac02d1a128f5031c43abef65f3590b3",
      "parents": [
        "c5e8f3f3bc4b5e4a73b075ea7128f48c3f215168"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Feb 20 17:57:24 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:57:24 2012 -0500"
      },
      "message": "ext4: fix balloc.c printk-format-warning\n\nGet rid of this one:\n\nfs/ext4/balloc.c: In function \u0027ext4_wait_block_bitmap\u0027:\nfs/ext4/balloc.c:405:3: warning: format \u0027%llu\u0027 expects argument of\n  type \u0027long long unsigned int\u0027, but argument 6 has type \u0027sector_t\u0027 [-Wformat]\n\nHappens because sector_t is u64 (unsigned long long) or unsigned long\ndependent on CONFIG_64BIT.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c5e8f3f3bc4b5e4a73b075ea7128f48c3f215168",
      "tree": "4470673bd261fe07189ff825957a3d1a14bee0a4",
      "parents": [
        "a0cc910f15027fbd731e78f3437cc076eebc22e9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:54:06 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:54:06 2012 -0500"
      },
      "message": "ext4: remove EXT4_MB_{BITMAP,BUDDY} macros\n\nThe EXT4_MB_BITMAP and EXT4_MB_BUDDY macros obfuscate more than they\nprovide any abstraction.   So remove them.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a0cc910f15027fbd731e78f3437cc076eebc22e9",
      "tree": "b59e587fa9238e174ef647ca0767b9d3656d8e0c",
      "parents": [
        "4fda400360e6c15b9dea4351f2ad85845cdfda7e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon Feb 20 17:53:06 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:53:06 2012 -0500"
      },
      "message": "ext4: using PTR_ERR() on the wrong variable in ext4_ext_migrate()\n\n\"inode\" is a valid pointer here.  \"tmp_inode\" was intended.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4fda400360e6c15b9dea4351f2ad85845cdfda7e",
      "tree": "e8759a08bd2bd0947477a22b6550477ca9c03932",
      "parents": [
        "f1b3a2a75356ce9fdcbedd79d2bb0d1ca8ed9cee"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Mon Feb 20 17:53:05 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:53:05 2012 -0500"
      },
      "message": "ext4: remove an unneeded NULL check in __ext4_check_dir_entry()\n\nWe dereference \"bh\" unconditionally a couple lines down to find\n\"by-\u003eb_size\".  This function is never called with a NULL \"bh\" so I have\nremoved the check.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "f1b3a2a75356ce9fdcbedd79d2bb0d1ca8ed9cee"
}
