)]}'
{
  "log": [
    {
      "commit": "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526",
      "tree": "2e57247c609a495b31892b2d05ea52e35556ab60",
      "parents": [
        "a6b11f53388973d99c4a357c22b19753b424e73c",
        "0d10ee2e6deb5c8409ae65b970846344897d5e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (31 commits)\n  Btrfs: don\u0027t call writepages from within write_full_page\n  Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n  Btrfs: clean up for find_first_extent_bit()\n  Btrfs: clean up for wait_extent_bit()\n  Btrfs: clean up for insert_state()\n  Btrfs: remove unused members from struct extent_state\n  Btrfs: clean up code for merging extent maps\n  Btrfs: clean up code for extent_map lookup\n  Btrfs: clean up search_extent_mapping()\n  Btrfs: remove redundant code for dir item lookup\n  Btrfs: make acl functions really no-op if acl is not enabled\n  Btrfs: remove remaining ref-cache code\n  Btrfs: remove a BUG_ON() in btrfs_commit_transaction()\n  Btrfs: use wait_event()\n  Btrfs: check the nodatasum flag when writing compressed files\n  Btrfs: copy string correctly in INO_LOOKUP ioctl\n  Btrfs: don\u0027t print the leaf if we had an error\n  btrfs: make btrfs_set_root_node void\n  Btrfs: fix oops while writing data to SSD partitions\n  Btrfs: Protect the readonly flag of block group\n  ...\n\nFix up trivial conflicts (due to acl and writeback cleanups) in\n - fs/btrfs/acl.c\n - fs/btrfs/ctree.h\n - fs/btrfs/extent_io.c\n"
    },
    {
      "commit": "1b8e94993c4752d98c33903aa836acc15f7e6d5c",
      "tree": "b78cba208f0a193ce6ceebbc146021af4425b4e1",
      "parents": [
        "12ff47e7f5fb64c566f62e6cf6a3b291c51bd337",
        "206d440f64030b6425841bf7cb38e26a5ea0c382"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:48:31 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 01 13:48:31 2011 -1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  xfs: Fix build breakage in xfs_iops.c when CONFIG_FS_POSIX_ACL is not set\n  VFS: Reorganise shrink_dcache_for_umount_subtree() after demise of dcache_lock\n  VFS: Remove dentry-\u003ed_lock locking from shrink_dcache_for_umount_subtree()\n  VFS: Remove detached-dentry counter from shrink_dcache_for_umount_subtree()\n  switch posix_acl_chmod() to umode_t\n  switch posix_acl_from_mode() to umode_t\n  switch posix_acl_equiv_mode() to umode_t *\n  switch posix_acl_create() to umode_t *\n  block: initialise bd_super in bdget()\n  vfs: avoid call to inode_lru_list_del() if possible\n  vfs: avoid taking inode_hash_lock on pipes and sockets\n  vfs: conditionally call inode_wb_list_del()\n  VFS: Fix automount for negative autofs dentries\n  Btrfs: load the key from the dir item in readdir into a fake dentry\n  devtmpfs: missing initialialization in never-hit case\n  hppfs: missing include\n"
    },
    {
      "commit": "0d10ee2e6deb5c8409ae65b970846344897d5e4e",
      "tree": "7072161df34ced133b41cc99e5f868bc8e55a018",
      "parents": [
        "341d14f161a475ebdbc9adff1f7e681e1185dee9"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 01 14:37:36 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:37:36 2011 -0400"
      },
      "message": "Btrfs: don\u0027t call writepages from within write_full_page\n\nWhen doing a writepage we call writepages to try and write out any other dirty\npages in the area.  This could cause problems where we commit a transaction and\nthen have somebody else dirtying metadata in the area as we could end up writing\nout a lot more than we care about, which could cause latency on anybody who is\nwaiting for the transaction to completely finish committing.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "341d14f161a475ebdbc9adff1f7e681e1185dee9",
      "tree": "fff1cee32665375837b5ae735ddff17a173f24db",
      "parents": [
        "69261c4b6a394ead1b5ca2966c908469355eb603"
      ],
      "author": {
        "name": "Mitch Harder",
        "email": "mitch.harder@sabayonlinux.org",
        "time": "Tue Jul 12 19:43:45 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:32:39 2011 -0400"
      },
      "message": "Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n\nThe variable \u0027last_index\u0027 is calculated in the __btrfs_buffered_write\nfunction and passed as a parameter to the prepare_pages function,\nbut is not used anywhere in the prepare_pages function.\n\nRemove instances of \u0027last_index\u0027 in these functions.\n\nSigned-off-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "69261c4b6a394ead1b5ca2966c908469355eb603",
      "tree": "3bd8ae6f65473887bc3aab381eea38bfb6b6e8ca",
      "parents": [
        "ded91f0814a349e36b3ca0eff497f816ad518fba"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Thu Jul 14 03:19:45 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:32:39 2011 -0400"
      },
      "message": "Btrfs: clean up for find_first_extent_bit()\n\nfind_first_extent_bit() and find_first_extent_bit_state() share\nmost of the code, and we can just make the former call the latter.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ded91f0814a349e36b3ca0eff497f816ad518fba",
      "tree": "6efec3ebb541a560eebdb0754ee0f3edab96ff56",
      "parents": [
        "3150b6996934455d7f2da243939d80a9b839085a"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Thu Jul 14 03:19:27 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:32:38 2011 -0400"
      },
      "message": "Btrfs: clean up for wait_extent_bit()\n\nWe can just use cond_resched_lock().\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3150b6996934455d7f2da243939d80a9b839085a",
      "tree": "8155ce90c3e9d2dcaec82eae2afc46bb237ce3d5",
      "parents": [
        "3a6d457ec79d4cdf2313189b4e852e53f2b8d2b2"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Thu Jul 14 03:19:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:32:30 2011 -0400"
      },
      "message": "Btrfs: clean up for insert_state()\n\nDon\u0027t duplicate set_state_bits().\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3a6d457ec79d4cdf2313189b4e852e53f2b8d2b2",
      "tree": "e7225abe3352f11f322cdd4b01a380e6b056bb67",
      "parents": [
        "4d2c8f62f12a6652db67cc0c1f4a4a498b05ddbc"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Thu Jul 14 03:18:52 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:50 2011 -0400"
      },
      "message": "Btrfs: remove unused members from struct extent_state\n\nThese members are not used at all.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4d2c8f62f12a6652db67cc0c1f4a4a498b05ddbc",
      "tree": "ebc07d75a30f84d4f8c9b8e86720307c02fe9023",
      "parents": [
        "ed64f06652210b4a52fe0ea65ac43f9c6af1d988"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:18:33 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:50 2011 -0400"
      },
      "message": "Btrfs: clean up code for merging extent maps\n\nunpin_extent_cache() and add_extent_mapping() shares the same code\nthat merges extent maps.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed64f06652210b4a52fe0ea65ac43f9c6af1d988",
      "tree": "a4e8c63e4732384e9c72edeb552dab3f50a1351d",
      "parents": [
        "7e016a038e829c7d1271e1d57b8002860bbdf0db"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:18:15 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:49 2011 -0400"
      },
      "message": "Btrfs: clean up code for extent_map lookup\n\nlookup_extent_map() and search_extent_map() can share most of code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7e016a038e829c7d1271e1d57b8002860bbdf0db",
      "tree": "3698e7d02602b791f783a2b8877651f538db3543",
      "parents": [
        "85d85a743da894029723e002eb556ceeebc03658"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:18:03 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:49 2011 -0400"
      },
      "message": "Btrfs: clean up search_extent_mapping()\n\nrb_node returned by __tree_search() can be a valid pointer or NULL,\nbut won\u0027t be some errno.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "85d85a743da894029723e002eb556ceeebc03658",
      "tree": "fb9cc28ea108c85785ac38f92a16a60467452dd1",
      "parents": [
        "9b89d95a143bb0a9abc4ba0fdcdda78211930f1a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:17:52 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:48 2011 -0400"
      },
      "message": "Btrfs: remove redundant code for dir item lookup\n\nWhen we search a dir item with a specific hash code, we can\njust return NULL without further checking if btrfs_search_slot()\nreturns 1.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9b89d95a143bb0a9abc4ba0fdcdda78211930f1a",
      "tree": "353768825b985753b23fda0ec88e7cc85bf83346",
      "parents": [
        "15de900d08bb132833c8622610ddb1be660a6018"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:17:39 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:48 2011 -0400"
      },
      "message": "Btrfs: make acl functions really no-op if acl is not enabled\n\nSo there\u0027s no overhead for something we don\u0027t use.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "15de900d08bb132833c8622610ddb1be660a6018",
      "tree": "e7004a2761220fcfa19b891e61e81bfcdada032c",
      "parents": [
        "b9c8300c2ac354d850159f301d5b3ead13854cdd"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:17:27 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:47 2011 -0400"
      },
      "message": "Btrfs: remove remaining ref-cache code\n\nSince commit f2a97a9dbd86eb1ef956bdf20e05c507b32beb96\n(\"btrfs: remove all unused functions\"), there\u0027s no extern functions\nat all in ref-cache.c, so just remove the remaining dead code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b9c8300c2ac354d850159f301d5b3ead13854cdd",
      "tree": "3c8a07481fda046b52d098780ea2eb02ac5b7e8d",
      "parents": [
        "72d63ed6427cf233e2b352c0b80c3e5c5a444986"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:17:14 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:47 2011 -0400"
      },
      "message": "Btrfs: remove a BUG_ON() in btrfs_commit_transaction()\n\nwait_for_commit() always returns 0.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "72d63ed6427cf233e2b352c0b80c3e5c5a444986",
      "tree": "e88ba3e354552911f4ee8695e2123e7a4552a6f1",
      "parents": [
        "e55179b3d7d41d83fd6b5f59325f4a8d8ac9700a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:17:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:46 2011 -0400"
      },
      "message": "Btrfs: use wait_event()\n\nUse wait_event() when possible to avoid code duplication.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e55179b3d7d41d83fd6b5f59325f4a8d8ac9700a",
      "tree": "9f8ec3e2ec88e63b1772418ba6699b808e53fad3",
      "parents": [
        "77906a5075a4eb767026c2e07b1a412d08aea5be"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:16:47 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:46 2011 -0400"
      },
      "message": "Btrfs: check the nodatasum flag when writing compressed files\n\nIf mounting with nodatasum option, we won\u0027t csum file data for\ngeneral write or direct-io write, and this rule should also be\napplied when writing compressed files.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "77906a5075a4eb767026c2e07b1a412d08aea5be",
      "tree": "0d7744a53a88c0e657ba727cd69e9b694d034772",
      "parents": [
        "b783e62d9620445d1ca3de76badf0468cdd329ba"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:16:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:45 2011 -0400"
      },
      "message": "Btrfs: copy string correctly in INO_LOOKUP ioctl\n\nMemory areas [ptr, ptr+total_len] and [name, name+total_len]\nmay overlap, so it\u0027s wrong to use memcpy().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b783e62d9620445d1ca3de76badf0468cdd329ba",
      "tree": "a97b81f62f0b431a4c3e5c4f6346ca890e535cb6",
      "parents": [
        "bf5f32ecb6caac52b4d1c083251b3dd4f40a0b7a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jul 13 15:03:50 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:45 2011 -0400"
      },
      "message": "Btrfs: don\u0027t print the leaf if we had an error\n\nIn __btrfs_free_extent we will print the leaf if we fail to find the extent we\nwanted, but the problem is if we get an error we won\u0027t have a leaf so often this\nleads to a NULL pointer dereference and we lose the error that actually\noccurred.  So only print the leaf if ret \u003e 0, which means we didn\u0027t find the\nitem we were looking for but we didn\u0027t error either.  This way the error is\npreserved.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bf5f32ecb6caac52b4d1c083251b3dd4f40a0b7a",
      "tree": "a1022046dd66034c6a916b28abcadc9128184273",
      "parents": [
        "ff1f2b4407454d926d8b143bf37e4dce66026a28"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 21:23:06 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:44 2011 -0400"
      },
      "message": "btrfs: make btrfs_set_root_node void\n\nThis is fairly trivial - btrfs_set_root_node() - always returns zero so we\ncan just make it void.  All callers ignore the return code now anyway.  I\nalso made sure to check that none of the functions that\nbtrfs_set_root_node() calls returns an error that we might have needed to\ncatch and pass back.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff1f2b4407454d926d8b143bf37e4dce66026a28",
      "tree": "f40720d71285ade24fb6a7f7bcdd442806d5f37e",
      "parents": [
        "61cfea9bb84d41b09e59822c33b3eb27acc48358"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jul 27 09:49:18 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:44 2011 -0400"
      },
      "message": "Btrfs: fix oops while writing data to SSD partitions\n\nHere I have a two SSD-partitions btrfs, and they are defaultly set to\n\"data\u003draid0, metadata\u003draid1\", then I try to fill my btrfs partition\ntill \"No space left on device\", via \"dd if\u003d/dev/zero of\u003d/mnt/btrfs/tmp\".\n\nI get an oops panic from kernel BUG at fs/btrfs/extent-tree.c:5199!, which\nrefers to find_free_extent\u0027s\nBUG_ON(index !\u003d get_block_group_index(block_group));\n\nIn SSD mode, in order to find enough space to alloc, we may check the\nblock_group cache which has been checked sometime before, but the index is not\nupdated, where it hits the BUG_ON.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nAcked-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61cfea9bb84d41b09e59822c33b3eb27acc48358",
      "tree": "6c20e098a3be7aad77419dc273bfd670dc470f3a",
      "parents": [
        "1bf85046e493c88be1c1bad9084428373089f618"
      ],
      "author": {
        "name": "WuBo",
        "email": "wu.bo@cn.fujitsu.com",
        "time": "Tue Jul 26 03:30:11 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:43 2011 -0400"
      },
      "message": "Btrfs: Protect the readonly flag of block group\n\nThe access for ro in btrfs_block_group_cache should be protected\nbecause of the racy lock in relocation.\n\nSigned-off-by: Wu Bo \u003cwu.bo@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1bf85046e493c88be1c1bad9084428373089f618",
      "tree": "e7358cb2dd597c8be7001be4573fa0e53361ebb5",
      "parents": [
        "b6973aa62253f3791ef6fa5e9f9de099645fc2bd"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.de",
        "time": "Thu Jul 21 16:56:09 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:43 2011 -0400"
      },
      "message": "btrfs: Make extent-io callbacks that never fail return void\n\nThe set/clear bit and the extent split/merge hooks only ever return 0.\n\n Changing them to return void simplifies the error handling cases later.\n\n This patch changes the hook prototypes, the single implementation of each,\n and the functions that call them to return void instead.\n\n Since all four of these hooks execute under a spinlock, they\u0027re necessarily\n simple.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b6973aa62253f3791ef6fa5e9f9de099645fc2bd",
      "tree": "eb4fe689723dc89e803a139d0d873dc4c9cd205d",
      "parents": [
        "b532402e4d147e4f409c4e7f50d4413e8450101d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jul 20 03:46:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:42 2011 -0400"
      },
      "message": "Btrfs: fix readahead in file defrag\n\nWe passed the wrong value to btrfs_force_ra(). Fix this by changing\nthe argument of btrfs_force_ra() from last_index to nr_page.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b532402e4d147e4f409c4e7f50d4413e8450101d",
      "tree": "0c196fd362d03243704a47e69e41c13acd323bd0",
      "parents": [
        "a0f98dde11a1afe9fbf5c98f57968e086e98b6f5"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Jul 19 07:27:20 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:42 2011 -0400"
      },
      "message": "Btrfs: return error to caller when btrfs_unlink() failes\n\nWhen btrfs_unlink_inode() and btrfs_orphan_add() in btrfs_unlink()\nare error, the error code is returned to the caller instead of\nBUG_ON().\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a0f98dde11a1afe9fbf5c98f57968e086e98b6f5",
      "tree": "e2521f3d54605f9bfc261da0665ffced19acd997",
      "parents": [
        "b43b31bdf2e662006c27cc4dcccf863312d62bc1"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "wanlong.gao@gmail.com",
        "time": "Mon Jul 18 12:19:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:41 2011 -0400"
      },
      "message": "Btrfs:don\u0027t check the return value of __btrfs_add_inode_defrag\n\nDon\u0027t need to check the return value of __btrfs_add_inode_defrag(),\nsince it will always return 0.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b43b31bdf2e662006c27cc4dcccf863312d62bc1",
      "tree": "9e12413edbd9d7a77e4c0b692dd28ca4ae5039bd",
      "parents": [
        "ff95acb6733d41a8d45feb0e18b96df25e610e78",
        "38a1a919535742af677303271eb4ff731547b706"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:27:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:27:34 2011 -0400"
      },
      "message": "Merge branch \u0027alloc_path\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/btrfs-error-handling into for-linus\n"
    },
    {
      "commit": "d6952123b53cc8b334df69bba2cd0063b0d88f68",
      "tree": "b1ccaa7e3d65dbf4af093202044da65bc4deb34e",
      "parents": [
        "d3fb612076eebec6f67257db0c7a9666ac7e5892"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:56:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:10:06 2011 -0400"
      },
      "message": "switch posix_acl_equiv_mode() to umode_t *\n\n... so that \u0026inode-\u003ei_mode could be passed to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d3fb612076eebec6f67257db0c7a9666ac7e5892",
      "tree": "5265fca258a74ffa75b845998492abb9446db72c",
      "parents": [
        "782b94cdf577b4df1feb376f372dccc28e66a771"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 18:37:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 02:09:42 2011 -0400"
      },
      "message": "switch posix_acl_create() to umode_t *\n\nso we can pass \u0026inode-\u003ei_mode to it\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4aff1f874f679320c03e3d97b60fc7babfd4623",
      "tree": "7d70626056dd81bbdb194171d89f35cd390a5a78",
      "parents": [
        "9d108d25487bf958f8093409a4c0bee6169edba6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 28 16:18:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 01:31:42 2011 -0400"
      },
      "message": "Btrfs: load the key from the dir item in readdir into a fake dentry\n\nIn btrfs we have 2 indexes for inodes.  One is for readdir, it\u0027s in this nice\nsequential order and works out brilliantly for readdir.  However if you use ls,\nit usually stat\u0027s each file it gets from readdir.  This is where the second\nindex comes in, which is based on a hash of the name of the file.  So then the\nlookup has to lookup this index, and then lookup the inode.  The index lookup is\ngoing to be in random order (since its based on the name hash), which gives us\nless than stellar performance.  Since we know the inode location from the\nreaddir index, I create a dummy dentry and copy the location key into\ndentry-\u003ed_fsdata.  Then on lookup if we have d_fsdata we use that location to\nlookup the inode, avoiding looking up the other directory index.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "22712200e175e0df5c7f9edfe6c6bf5c94c23b83",
      "tree": "a3e332aab7f5a953ff4f12e67af2a0e5f32f5be5",
      "parents": [
        "597a67e0ba758e3d2239c81fbb648c6e69ec30a2",
        "ff95acb6733d41a8d45feb0e18b96df25e610e78"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n  Btrfs: use the commit_root for reading free_space_inode crcs\n  Btrfs: reduce extent_state lock contention for metadata\n  Btrfs: remove lockdep magic from btrfs_next_leaf\n  Btrfs: make a lockdep class for each root\n  Btrfs: switch the btrfs tree locks to reader/writer\n  Btrfs: fix deadlock when throttling transactions\n  Btrfs: stop using highmem for extent_buffers\n  Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n  Btrfs: tag pages for writeback in sync\n  Btrfs: fix enospc problems with delalloc\n  Btrfs: don\u0027t flush delalloc arbitrarily\n  Btrfs: use find_or_create_page instead of grab_cache_page\n  Btrfs: use a worker thread to do caching\n  Btrfs: fix how we merge extent states and deal with cached states\n  Btrfs: use the normal checksumming infrastructure for free space cache\n  Btrfs: serialize flushers in reserve_metadata_bytes\n  Btrfs: do transaction space reservation before joining the transaction\n  Btrfs: try to only do one btrfs_search_slot in do_setxattr\n"
    },
    {
      "commit": "ff95acb6733d41a8d45feb0e18b96df25e610e78",
      "tree": "e20983c579c9095970aefa9cb176a9df0654d1e4",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe",
        "75c195a2cac2c3c8366c0b87de2d6814c4f4d638"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 16:13:10 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 16:18:13 2011 -0400"
      },
      "message": "Merge branch \u0027integration\u0027 into for-linus\n"
    },
    {
      "commit": "75c195a2cac2c3c8366c0b87de2d6814c4f4d638",
      "tree": "82ac06d2c8f3746a3d438853d03239311c2a71a1",
      "parents": [
        "2cf8572dac62cc2ff7e995173e95b6c694401b3f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 15:57:44 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 16:11:41 2011 -0400"
      },
      "message": "Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n\nThe btrfs transaction code will return any errors that come from\nreserve_metadata_bytes.  We need to make sure we don\u0027t return funny\nthings like 1 or EAGAIN.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2cf8572dac62cc2ff7e995173e95b6c694401b3f",
      "tree": "ae37f2f4a2f4a797ee971a94ee2c29c55a8048dc",
      "parents": [
        "19b6caf4acbf065dc96b47741d99f1b87243c468"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 26 15:35:09 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:48 2011 -0400"
      },
      "message": "Btrfs: use the commit_root for reading free_space_inode crcs\n\nNow that we are using regular file crcs for the free space cache,\nwe can deadlock if we try to read the free_space_inode while we are\nupdating the crc tree.\n\nThis commit fixes things by using the commit_root to read the crcs.  This is\nsafe because we the free space cache file would already be loaded if\nthat block group had been changed in the current transaction.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "19b6caf4acbf065dc96b47741d99f1b87243c468",
      "tree": "4bce889648c2459e1dbd9fd835a196db26c06f9b",
      "parents": [
        "31533fb263928c93a34cda41b66a6e83ade5c766"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jul 25 06:50:50 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:47 2011 -0400"
      },
      "message": "Btrfs: reduce extent_state lock contention for metadata\n\nFor metadata buffers that don\u0027t straddle pages (all of them), btrfs\ncan safely use the page uptodate bits and extent_buffer uptodate bit\ninstead of needing to use the extent_state tree.\n\nThis greatly reduces contention on the state tree lock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "31533fb263928c93a34cda41b66a6e83ade5c766",
      "tree": "b4f3a770e805403adc1931f3bb15213ee2a0d624",
      "parents": [
        "85d4e461117b40eb10722f774566b19bd5e77879"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 26 16:01:59 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:47 2011 -0400"
      },
      "message": "Btrfs: remove lockdep magic from btrfs_next_leaf\n\nBefore the reader/writer locks, btrfs_next_leaf needed to keep\nthe path blocking to avoid making lockdep upset.\n\nNow that btrfs_next_leaf only takes read locks, this isn\u0027t required.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "85d4e461117b40eb10722f774566b19bd5e77879",
      "tree": "56b7c66d03a72008e0db0bf4f58edbee5170fee1",
      "parents": [
        "bd681513fa6f2ff29aa391f01e413a2d1c59fd77"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 26 16:11:19 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:46 2011 -0400"
      },
      "message": "Btrfs: make a lockdep class for each root\n\nThis patch was originally from Tejun Heo.  lockdep complains about the btrfs\nlocking because we sometimes take btree locks from two different trees at the\nsame time.  The current classes are based only on level in the btree, which\nisn\u0027t enough information for lockdep to figure out if the lock is safe.\n\nThis patch makes a class for each type of tree, and lumps all the FS trees that\nactually have files and directories into the same class.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bd681513fa6f2ff29aa391f01e413a2d1c59fd77",
      "tree": "bb10ec6ef876b4d7a553cbe54976ec49a0d10b21",
      "parents": [
        "81317fdeddcef259b6ecf7b5c0d04caa167c6b54"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jul 16 15:23:14 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:46 2011 -0400"
      },
      "message": "Btrfs: switch the btrfs tree locks to reader/writer\n\nThe btrfs metadata btree is the source of significant\nlock contention, especially in the root node.   This\ncommit changes our locking to use a reader/writer\nlock.\n\nThe lock is built on top of rw spinlocks, and it\nextends the lock tracking to remember if we have a\nread lock or a write lock when we go to blocking.  Atomics\ncount the number of blocking readers or writers at any\ngiven time.\n\nIt removes all of the adaptive spinning from the old code\nand uses only the spinning/blocking hints inside of btrfs\nto decide when it should continue spinning.\n\nIn read heavy workloads this is dramatically faster.  In write\nheavy workloads we\u0027re still faster because of less contention\non the root node lock.\n\nWe suffer slightly in dbench because we schedule more often\nduring write locks, but all other benchmarks so far are improved.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81317fdeddcef259b6ecf7b5c0d04caa167c6b54",
      "tree": "aeca005b8b595539b554a6b8a92dc052ccad5601",
      "parents": [
        "a65917156e345946dbde3d7effd28124c6d6a8c2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun Jul 24 15:45:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:46 2011 -0400"
      },
      "message": "Btrfs: fix deadlock when throttling transactions\n\nHit this nice little deadlock.  What happens is this\n\n__btrfs_end_transaction with throttle set, --use_count so it equals 0\n  btrfs_commit_transaction\n    \u003csomebody else actually manages to start the commit\u003e\n    btrfs_end_transaction --use_count so now its -1 \u003c\u003d\u003d BAD\n      we just return and wait on the transaction\n\nThis is bad because we just return after our use_count is -1 and don\u0027t let go\nof our num_writer count on the transaction, so the guy committing the\ntransaction just sits there forever.  Fix this by inc\u0027ing our use_count if we\u0027re\ngoing to call commit_transaction so that if we call btrfs_end_transaction it\u0027s\nvalid.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a65917156e345946dbde3d7effd28124c6d6a8c2",
      "tree": "dc5478189be0f6a321bfc23ee0545f71de67763b",
      "parents": [
        "199c36eaa95077a47ae1bc55532fc0fbeb80cc95"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 19 12:04:14 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:45 2011 -0400"
      },
      "message": "Btrfs: stop using highmem for extent_buffers\n\nThe extent_buffers have a very complex interface where\nwe use HIGHMEM for metadata and try to cache a kmap mapping\nto access the memory.\n\nThe next commit adds reader/writer locks, and concurrent use\nof this kmap cache would make it even more complex.\n\nThis commit drops the ability to use HIGHMEM with extent buffers,\nand rips out all of the related code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "199c36eaa95077a47ae1bc55532fc0fbeb80cc95",
      "tree": "ef4e9a5ff244c842b9b335cb391223d9a4d5f854",
      "parents": [
        "f7aaa06bff6f5fe049ce9723267e1639c2c3d8b5"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Jul 15 10:34:36 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:45 2011 -0400"
      },
      "message": "Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n\nWhen we balanced the chunks across the devices, BUG_ON() in\n__finish_chunk_alloc() was triggered.\n\n------------[ cut here ]------------\nkernel BUG at fs/btrfs/volumes.c:2568!\n[SNIP]\nCall Trace:\n [\u003cffffffffa049525e\u003e] btrfs_alloc_chunk+0x8e/0xa0 [btrfs]\n [\u003cffffffffa04546b0\u003e] do_chunk_alloc+0x330/0x3a0 [btrfs]\n [\u003cffffffffa045c654\u003e] btrfs_reserve_extent+0xb4/0x1f0 [btrfs]\n [\u003cffffffffa045c86b\u003e] btrfs_alloc_free_block+0xdb/0x350 [btrfs]\n [\u003cffffffffa048a8d8\u003e] ? read_extent_buffer+0xd8/0x1d0 [btrfs]\n [\u003cffffffffa04476fd\u003e] __btrfs_cow_block+0x14d/0x5e0 [btrfs]\n [\u003cffffffffa044660d\u003e] ? read_block_for_search+0x14d/0x4d0 [btrfs]\n [\u003cffffffffa0447c9b\u003e] btrfs_cow_block+0x10b/0x240 [btrfs]\n [\u003cffffffffa044dd5e\u003e] btrfs_search_slot+0x49e/0x7a0 [btrfs]\n [\u003cffffffffa044f07d\u003e] btrfs_insert_empty_items+0x8d/0xf0 [btrfs]\n [\u003cffffffffa045e973\u003e] insert_with_overflow+0x43/0x110 [btrfs]\n [\u003cffffffffa045eb0d\u003e] btrfs_insert_dir_item+0xcd/0x1f0 [btrfs]\n [\u003cffffffffa0489bd0\u003e] ? map_extent_buffer+0xb0/0xc0 [btrfs]\n [\u003cffffffff812276ad\u003e] ? rb_insert_color+0x9d/0x160\n [\u003cffffffffa046cc40\u003e] ? inode_tree_add+0xf0/0x150 [btrfs]\n [\u003cffffffffa0474801\u003e] btrfs_add_link+0xc1/0x1c0 [btrfs]\n [\u003cffffffff811dacac\u003e] ? security_inode_init_security+0x1c/0x30\n [\u003cffffffffa04a28aa\u003e] ? btrfs_init_acl+0x4a/0x180 [btrfs]\n [\u003cffffffffa047492f\u003e] btrfs_add_nondir+0x2f/0x70 [btrfs]\n [\u003cffffffffa046af16\u003e] ? btrfs_init_inode_security+0x46/0x60 [btrfs]\n [\u003cffffffffa0474ac0\u003e] btrfs_create+0x150/0x1d0 [btrfs]\n [\u003cffffffff81159c63\u003e] ? generic_permission+0x23/0xb0\n [\u003cffffffff8115b415\u003e] vfs_create+0xa5/0xc0\n [\u003cffffffff8115ce6e\u003e] do_last+0x5fe/0x880\n [\u003cffffffff8115dc0d\u003e] path_openat+0xcd/0x3d0\n [\u003cffffffff8115e029\u003e] do_filp_open+0x49/0xa0\n [\u003cffffffff8116a965\u003e] ? alloc_fd+0x95/0x160\n [\u003cffffffff8114f0c7\u003e] do_sys_open+0x107/0x1e0\n [\u003cffffffff810bcc3f\u003e] ? audit_syscall_entry+0x1bf/0x1f0\n [\u003cffffffff8114f1e0\u003e] sys_open+0x20/0x30\n [\u003cffffffff81484ec2\u003e] system_call_fastpath+0x16/0x1b\n[SNIP]\nRIP  [\u003cffffffffa049444a\u003e] __finish_chunk_alloc+0x20a/0x220 [btrfs]\n\nThe reason is:\nTask1\t\t\t\t\tSpace balance task\ndo_chunk_alloc()\n  __finish_chunk_alloc()\n    update device info\n    in the chunk tree\n      alloc system metadata block\n\t\t\t\t\trelocate system metadata block group\n\t\t\t\t\t  set system metadata block group\n\t\t\t\t\t  readonly, This block group is the\n\t\t\t\t\t  only one that can allocate space. So\n\t\t\t\t\t  there is no free space that can be\n\t\t\t\t\t  allocated now.\n        find no space and don\u0027t try\n        to alloc new chunk, and then\n        return ENOSPC\n  BUG_ON() in __finish_chunk_alloc()\n  was triggered.\n\nFix this bug by allocating a new system metadata chunk before relocating the\nold one if we find there is no free space which can be allocated after setting\nthe old block group to be read-only.\n\nReported-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7aaa06bff6f5fe049ce9723267e1639c2c3d8b5",
      "tree": "d3b5e20709a91f4bc473a898e37531f322a1bc6c",
      "parents": [
        "9e0baf60dea69f31ac3b1adeb35b03b02a53e8e1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 21:26:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:44 2011 -0400"
      },
      "message": "Btrfs: tag pages for writeback in sync\n\nEverybody else does this, we need to do it too.  If we\u0027re syncing, we need to\ntag the pages we\u0027re going to write for writeback so we don\u0027t end up writing the\nsame stuff over and over again if somebody is constantly redirtying our file.\nThis will keep us from having latencies with heavy sync workloads.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9e0baf60dea69f31ac3b1adeb35b03b02a53e8e1",
      "tree": "0fb899e1fa78b599d22389ca3befc8ab51ff5049",
      "parents": [
        "a5991428064e98c7367fe1c1686ea6a23fb6a4b3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 15:16:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:44 2011 -0400"
      },
      "message": "Btrfs: fix enospc problems with delalloc\n\nSo I had this brilliant idea to use atomic counters for outstanding and reserved\nextents, but this turned out to be a bad idea.  Consider this where we have 1\noutstanding extent and 1 reserved extent\n\nReserver\t\t\t\tReleaser\n\t\t\t\t\tatomic_dec(outstanding) now 0\natomic_read(outstanding)+1 get 1\natomic_read(reserved) get 1\ndon\u0027t actually reserve anything because\nthey are the same\n\t\t\t\t\tatomic_cmpxchg(reserved, 1, 0)\natomic_inc(outstanding)\natomic_add(0, reserved)\n\t\t\t\t\tfree reserved space for 1 extent\n\nThen the reserver now has no actual space reserved for it, and when it goes to\nfinish the ordered IO it won\u0027t have enough space to do it\u0027s allocation and you\nget those lovely warnings.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a5991428064e98c7367fe1c1686ea6a23fb6a4b3",
      "tree": "4e063831c205d707bd1e85fb5814a95f61843dc8",
      "parents": [
        "a94733d0bc630edaedc6ca156752dd5a7cb82521"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 16:01:03 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: don\u0027t flush delalloc arbitrarily\n\nKill the check to see if we have 512mb of reserved space in delalloc and\nshrink_delalloc if we do.  This causes unexpected latencies and we have other\nlogic to see if we need to throttle.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a94733d0bc630edaedc6ca156752dd5a7cb82521",
      "tree": "3f0bd508aa1ce5894e43df45bb73031a380ed8f5",
      "parents": [
        "bab39bf998133510f2dad08158006197ec0dabea"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:47:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: use find_or_create_page instead of grab_cache_page\n\ngrab_cache_page will use mapping_gfp_mask(), which for all inodes is set to\nGFP_HIGHUSER_MOVABLE.  So instead use find_or_create_page in all cases where we\nneed GFP_NOFS so we don\u0027t deadlock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "bab39bf998133510f2dad08158006197ec0dabea",
      "tree": "0ea50b2b07a9f75988829de6c42b6936e2355545",
      "parents": [
        "df98b6e2c52f65665eaf0fc23e647fb64335b289"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jun 30 14:42:28 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:25 2011 -0400"
      },
      "message": "Btrfs: use a worker thread to do caching\n\nA user reported a deadlock when copying a bunch of files.  This is because they\nwere low on memory and kthreadd got hung up trying to migrate pages for an\nallocation when starting the caching kthread.  The page was locked by the person\nstarting the caching kthread.  To fix this we just need to use the async thread\nstuff so that the threads are already created and we don\u0027t have to worry about\ndeadlocks.  Thanks,\n\nReported-by: Roman Mamedov \u003crm@romanrm.ru\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "e371d46ae45488bcb112a99a7de462e9e3aa6764",
      "tree": "9e2eceb292018e52304053bd8013cdb0a7f31dcc",
      "parents": [
        "b0189cd087aa82bd23277cb5c8960ab030e13e5c",
        "e57712ebebbb9db7d8dcef216437b3171ddcf115"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  merge fchmod() and fchmodat() guts, kill ancient broken kludge\n  xfs: fix misspelled S_IS...()\n  xfs: get rid of open-coded S_ISREG(), etc.\n  vfs: document locking requirements for d_move, __d_move and d_materialise_unique\n  omfs: fix (mode \u0026 S_IFDIR) abuse\n  btrfs: S_ISREG(mode) is not mode \u0026 S_IFREG...\n  ima: fmode_t misspelled as mode_t...\n  pci-label.c: size_t misspelled as mode_t\n  jffs2: S_ISLNK(mode \u0026 S_IFMT) is pointless\n  snd_msnd -\u003emode is fmode_t, not mode_t\n  v9fs_iop_get_acl: get rid of unused variable\n  vfs: dont chain pipe/anon/socket on superblock s_inodes list\n  Documentation: Exporting: update description of d_splice_alias\n  fs: add missing unlock in default_llseek()\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f01ef569cddb1a8627b1c6b3a134998ad1cf4b22",
      "tree": "29ea1a0942c8549c24411e976cd6891c7e995e89",
      "parents": [
        "a93a1329271038f0e8337061d3b41b3b212a851e",
        "bcff25fc8aa47a13faff8b4b992589813f7b450a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 10:39:54 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback: (27 commits)\n  mm: properly reflect task dirty limits in dirty_exceeded logic\n  writeback: don\u0027t busy retry writeback on new/freeing inodes\n  writeback: scale IO chunk size up to half device bandwidth\n  writeback: trace global_dirty_state\n  writeback: introduce max-pause and pass-good dirty limits\n  writeback: introduce smoothed global dirty limit\n  writeback: consolidate variable names in balance_dirty_pages()\n  writeback: show bdi write bandwidth in debugfs\n  writeback: bdi write bandwidth estimation\n  writeback: account per-bdi accumulated written pages\n  writeback: make writeback_control.nr_to_write straight\n  writeback: skip tmpfs early in balance_dirty_pages_ratelimited_nr()\n  writeback: trace event writeback_queue_io\n  writeback: trace event writeback_single_inode\n  writeback: remove .nonblocking and .encountered_congestion\n  writeback: remove writeback_control.more_io\n  writeback: skip balance_dirty_pages() for in-memory fs\n  writeback: add bdi_dirty_limit() kernel-doc\n  writeback: avoid extra sync work at enqueue time\n  writeback: elevate queue_io() into wb_writeback()\n  ...\n\nFix up trivial conflicts in fs/fs-writeback.c and mm/filemap.c\n"
    },
    {
      "commit": "569254b0cc4e125ffde48780b215ecaf5f72bbf4",
      "tree": "17ff0f097c6245a2bc9ba06e9ba87ea68092b505",
      "parents": [
        "4b2a2c67415f1ab128f1d0b340fe6d13363335e5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 17:08:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 13:05:05 2011 -0400"
      },
      "message": "btrfs: S_ISREG(mode) is not mode \u0026 S_IFREG...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "38a1a919535742af677303271eb4ff731547b706",
      "tree": "bfefad00f864e8239b94607a3d712200fd825eaa",
      "parents": [
        "92b8e897f6e7ba4aa10037ebd8186f85d39330d0"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jul 13 10:59:59 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 25 14:35:15 2011 -0700"
      },
      "message": "btrfs: don\u0027t BUG_ON allocation errors in btrfs_drop_snapshot\n\nIn addition to properly handling allocation failure from btrfs_alloc_path, I\nalso fixed up the kzalloc error handling code immediately below it.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "92b8e897f6e7ba4aa10037ebd8186f85d39330d0",
      "tree": "54988ee036e1dfe3297b0b4e0dfe6323568bf02e",
      "parents": [
        "17e9f796bd92cddec17d781c459376f82340fa44"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 12 10:57:59 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jul 25 14:34:54 2011 -0700"
      },
      "message": "btrfs: Don\u0027t BUG_ON alloc_path errors in find_next_chunk\n\nI also removed the BUG_ON from error return of find_next_chunk in\ninit_first_rw_device(). It turns out that the only caller of\ninit_first_rw_device() also BUGS on any nonzero return so no actual behavior\nchange has occurred here.\n\ndo_chunk_alloc() also needed an update since it calls btrfs_alloc_chunk()\nwhich can now return -ENOMEM. Instead of setting space_info-\u003efull on any\nerror from btrfs_alloc_chunk() I catch and return every error value _except_\n-ENOSPC. Thanks goes to Tsutomu Itoh for pointing that issue out.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "826cae2f2b4d726b925f43bc208a571639da4761",
      "tree": "b7f83eecf3bde8c4e455d89c7c535988b3e8bd59",
      "parents": [
        "95203befa8887997f14077d8557e67d78457ee02"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 03:10:32 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:32 2011 -0400"
      },
      "message": "kill boilerplates around posix_acl_create_masq()\n\nnew helper: posix_acl_create(\u0026acl, gfp, mode_p).  Replaces acl with\nmodified clone, on failure releases acl and replaces with NULL.\nReturns 0 or -ve on error.  All callers of posix_acl_create_masq()\nswitched.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bc26ab5f65ae41b71df86ea46df3c3833d1d8d83",
      "tree": "85bbc4e0da4fac99ccf31b3609c61e2b148a8498",
      "parents": [
        "4482a087d4c5a6ffbc385c56b4a4e2f694d9fd5d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 23 00:18:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:27:30 2011 -0400"
      },
      "message": "kill boilerplate around posix_acl_chmod_masq()\n\nnew helper: posix_acl_chmod(\u0026acl, gfp, mode).  Replaces acl with modified\nclone or with NULL if that has failed; returns 0 or -ve on error.  All\ncallers of posix_acl_chmod_masq() switched to that - they\u0027d been doing\nexactly the same thing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e77819e57f0817c6dc7cadd061acd70c604cbce2",
      "tree": "f5d7aba2dfbb747a97d783b7cc6a486922c42559",
      "parents": [
        "3ca30d40a91fb9b9871e61d5dea2c1a895906a15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:30:19 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:23:39 2011 -0400"
      },
      "message": "vfs: move ACL cache lookup into generic code\n\nThis moves logic for checking the cached ACL values from low-level\nfilesystems into generic code.  The end result is a streamlined ACL\ncheck that doesn\u0027t need to load the inode-\u003ei_op-\u003echeck_acl pointer at\nall for the common cached case.\n\nThe filesystems also don\u0027t need to check for a non-blocking RCU walk\ncase in their acl_check() functions, because that is all handled at a\nVFS layer.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10d9f309d88ca7f47133d57e99b72810f119f75b",
      "tree": "9fb29dbfce5e040b2232bca2378e8de13fc13c31",
      "parents": [
        "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 23:09:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in btrfs rename() and link()\n\n-\u003ed_parent is locked and stable there...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd",
      "tree": "f473a370543927ec2ebf1a462d165fc08c1515d3",
      "parents": [
        "02c24a82187d5a628c68edfe71ae60dc135cd178"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 21:38:06 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in fs/btrfs/ioctl.c\n\nboth callers there have dentry-\u003ed_parent stabilized by the fact that\ntheir caller had obtained dentry from lookup_one_len() and had not\ndropped -\u003ei_mutex on parent since then.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b26751575a9aa55fd6dbf3febde3ff06dfadc44f",
      "tree": "78fc36a92757eafb90bbeae36495adb369fbf6d7",
      "parents": [
        "982d816581eeeacfe5b2b7c6d47d13a157616eff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:56 2011 -0400"
      },
      "message": "Btrfs: implement our own -\u003ellseek\n\nIn order to handle SEEK_HOLE/SEEK_DATA we need to implement our own llseek.\nBasically for the normal SEEK_*\u0027s we will just defer to the generic helper, and\nfor SEEK_HOLE/SEEK_DATA we will use our fiemap helper to figure out the nearest\nhole or data.  Currently this helper doesn\u0027t check for delalloc bytes for\nprealloc space, so for now treat prealloc as data until that is fixed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9049376ee05bf966bfe2b081b5071326856890a",
      "tree": "efb3cbfc7760537f201bb28dacbb0d39ec39f04c",
      "parents": [
        "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 21:20:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:26 2011 -0400"
      },
      "message": "make d_splice_alias(ERR_PTR(err), dentry) \u003d ERR_PTR(err)\n\n... and simplify the living hell out of callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0ee5dc676a5f8fadede608c7281dfedb1ae714ea",
      "tree": "887896f0e1b51f39e9be21a1e8d960ec50a817a7",
      "parents": [
        "fb408e6ccc32404a05783911b6f3fed56bd17b06"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:44:25 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:20 2011 -0400"
      },
      "message": "btrfs: kill magical embedded struct superblock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "17e9f796bd92cddec17d781c459376f82340fa44",
      "tree": "14c360f6adaef5c83299ec49fe2fb00dbafea1ee",
      "parents": [
        "1748f843a0190ef4332d03a64263f383af72682b"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 12 11:10:23 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:45 2011 -0700"
      },
      "message": "btrfs: Don\u0027t BUG_ON alloc_path errors in btrfs_balance()\n\nDealing with this seems trivial - the only caller of btrfs_balance() is\nbtrfs_ioctl() which passes the error code directly back to userspace. There\nalso isn\u0027t much state to unwind (if I\u0027m wrong about this point, we can\nalways safely move the allocation to the top of btrfs_balance() anyway).\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1748f843a0190ef4332d03a64263f383af72682b",
      "tree": "cf577aabbd13a639e2fdf4e6edb017f2276aa9c4",
      "parents": [
        "0eb0e19cde6f01397ef8c0e094e44beb75c62a1e"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 12 11:25:31 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:45 2011 -0700"
      },
      "message": "btrfs: Don\u0027t BUG_ON alloc_path errors in btrfs_read_locked_inode\n\nbtrfs_iget() also needed an update so that errors from btrfs_locked_inode()\nare caught and bubbled back up.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "0eb0e19cde6f01397ef8c0e094e44beb75c62a1e",
      "tree": "136b1858c5c1cf6f5eb8979d153f18248b1dbf4c",
      "parents": [
        "1e5063d093b5f024ae35bf835ca07463de2c1a1f"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 12 16:44:10 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:45 2011 -0700"
      },
      "message": "btrfs: Don\u0027t BUG_ON alloc_path errors in btrfs_truncate_inode_items\n\nI moved the path allocation up a few lines to the top of the function so\nthat we couldn\u0027t get into the state where we\u0027ve dropped delayed items and\nthe extent cache but fail due to -ENOMEM.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "1e5063d093b5f024ae35bf835ca07463de2c1a1f",
      "tree": "c3d5f934e5db6e7169231ce4a7456a31a5eadb28",
      "parents": [
        "d8926bb3badd36670fecf2de4a062c78bc37430b"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 12 10:46:06 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:44 2011 -0700"
      },
      "message": "btrfs: Don\u0027t BUG_ON alloc_path errors in replay_one_buffer()\n\nThe two -\u003eprocess_func call sites in tree-log.c which were ignoring a return\ncode have also been updated to gracefully exit as well.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d8926bb3badd36670fecf2de4a062c78bc37430b",
      "tree": "60c8194f9fbba47ff9535b62b9fe439239997e9c",
      "parents": [
        "8d86e5f91440aa56a5df516bf58fe3883552ad56"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jul 13 10:38:47 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:44 2011 -0700"
      },
      "message": "btrfs: don\u0027t BUG_ON btrfs_alloc_path() errors\n\nThis patch fixes many callers of btrfs_alloc_path() which BUG_ON allocation\nfailure. All the sites that are fixed in this patch were checked by me to\nbe fairly trivial to fix because of at least one of two criteria:\n\n - Callers of the function catch errors from it already so bubbling the\n   error up will be handled.\n - Callers of the function might BUG_ON any nonzero return code in which\n   case there is no behavior changed (but we still got to remove a BUG_ON)\n\nThe following functions were updated:\n\nbtrfs_lookup_extent, alloc_reserved_tree_block, btrfs_remove_block_group,\nbtrfs_lookup_csums_range, btrfs_csum_file_blocks, btrfs_mark_extent_written,\nbtrfs_inode_by_name, btrfs_new_inode, btrfs_symlink,\ninsert_reserved_file_extent, and run_delalloc_nocow\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "df98b6e2c52f65665eaf0fc23e647fb64335b289",
      "tree": "0f7e235f8f51d87928266129392e630524847be5",
      "parents": [
        "2f356126c589d562f98e2287f9c7b983388dc62f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jun 20 14:53:48 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:00:48 2011 -0400"
      },
      "message": "Btrfs: fix how we merge extent states and deal with cached states\n\nFirst, we can sometimes free the state we\u0027re merging, which means anybody who\ncalls merge_state() may have the state it passed in free\u0027ed.  This is\nproblematic because we could end up caching the state, which makes caching\nuseless as the state will no longer be part of the tree.  So instead of free\u0027ing\nthe state we passed into merge_state(), set it\u0027s end to the other-\u003eend and free\nthe other state.  This way we are sure to cache the correct state.  Also because\nwe can merge states together, instead of only using the cache\u0027d state if it\u0027s\nstart \u003d\u003d the start we are looking for, go ahead and use it if the start we are\nlooking for is within the range of the cached state.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2f356126c589d562f98e2287f9c7b983388dc62f",
      "tree": "8674f29e4c8ccc2d536472f5fef5755b252093a3",
      "parents": [
        "fdb5effd5c2a7e01dc3a4217bb194e2d3a5b160f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jun 10 15:31:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 09:58:49 2011 -0400"
      },
      "message": "Btrfs: use the normal checksumming infrastructure for free space cache\n\nWe used to store the checksums of the space cache directly in the space cache,\nhowever that doesn\u0027t work out too well if we have more space than we can fit the\nchecksums into the first page.  So instead use the normal checksumming\ninfrastructure.  There were problems with doing this originally but those\nproblems don\u0027t exist now so this works out fine.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "fdb5effd5c2a7e01dc3a4217bb194e2d3a5b160f",
      "tree": "f5eac07be3a5844179a020fd185ff377fb39961a",
      "parents": [
        "b5009945be18023942ce28327893c7bc1e58fe54"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 07 16:07:44 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 09:58:48 2011 -0400"
      },
      "message": "Btrfs: serialize flushers in reserve_metadata_bytes\n\nWe keep having problems with early enospc, and that\u0027s because our method of\nmaking space is inherently racy.  The problem is we can have one guy trying to\nmake space for himself, and in the meantime people come in and steal his\nreservation.  In order to stop this we make a waitqueue and put anybody who\ncomes into reserve_metadata_bytes on that waitqueue if somebody is trying to\nmake more space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b5009945be18023942ce28327893c7bc1e58fe54",
      "tree": "fe2e04196c833a3b609a1cf947293aafcf90a7bd",
      "parents": [
        "fa09200b8334f9a6af3f656edae924a98d85630f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 07 15:07:51 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 09:58:47 2011 -0400"
      },
      "message": "Btrfs: do transaction space reservation before joining the transaction\n\nWe have to do weird things when handling enospc in the transaction joining code.\nBecause we\u0027ve already joined the transaction we cannot commit the transaction\nwithin the reservation code since it will deadlock, so we have to return EAGAIN\nand then make sure we don\u0027t retry too many times.  Instead of doing this, just\ndo the reservation the normal way before we join the transaction, that way we\ncan do whatever we want to try and reclaim space, and then if it fails we know\nfor sure we are out of space and we can return ENOSPC.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "fa09200b8334f9a6af3f656edae924a98d85630f",
      "tree": "9213ac48212f70d86fb60834beb464d68be332ba",
      "parents": [
        "149e2d76b4886c4c7ff5e077646a8ba3563c8026"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 27 12:06:11 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 09:58:45 2011 -0400"
      },
      "message": "Btrfs: try to only do one btrfs_search_slot in do_setxattr\n\nI\u0027ve been watching how many btrfs_search_slot()\u0027s we do and I noticed that when\nwe create a file with selinux enabled we were doing 2 each time we initialize\nthe security context.  That\u0027s because we lookup the xattr first so we can delete\nit if we\u0027re setting a new value to an existing xattr.  But in the create case we\ndon\u0027t have any xattrs, so it is completely useless to have the extra lookup.  So\nre-arrange things so that we only lookup first if we specifically have\nXATTR_REPLACE.  That way in the basic case we only do 1 search, and in the more\ncomplicated case we do the normal 2 lookups.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d46db3d58233be4be980eb1e42eebe7808bcabab",
      "tree": "6d813b33938d915f0c0633e8615d1ffdcc554c96",
      "parents": [
        "36715cef0770b7e2547892b7c3197fc024274630"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed May 04 19:54:37 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sat Jul 09 22:09:01 2011 -0700"
      },
      "message": "writeback: make writeback_control.nr_to_write straight\n\nPass struct wb_writeback_work all the way down to writeback_sb_inodes(),\nand initialize the struct writeback_control there.\n\nstruct writeback_control is basically designed to control writeback of a\nsingle file, but we keep abuse it for writing multiple files in\nwriteback_sb_inodes() and its callers.\n\nIt immediately clean things up, e.g. suddenly wbc.nr_to_write vs\nwork-\u003enr_pages starts to make sense, and instead of saving and restoring\npages_skipped in writeback_sb_inodes it can always start with a clean\nzero value.\n\nIt also makes a neat IO pattern change: large dirty files are now\nwritten in the full 4MB writeback chunk size, rather than whatever\nremained quota in wbc-\u003enr_to_write.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nProposed-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "1acc9309eb2674533944f48dbaaa53e7750e3947",
      "tree": "255f346c01a33906b612852d5fb008da1f4520da",
      "parents": [
        "c2d197e82b6267fd3338f3fbcb12750ca9f5abda",
        "149e2d76b4886c4c7ff5e077646a8ba3563c8026"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 23:25:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 23:25:45 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  btrfs: fix oops when doing space balance\n  Btrfs: don\u0027t panic if we get an error while balancing V2\n  btrfs: add missing options displayed in mount output\n"
    },
    {
      "commit": "149e2d76b4886c4c7ff5e077646a8ba3563c8026",
      "tree": "0631640e19618a4de26b3a81f90f91fd819dae0a",
      "parents": [
        "508794eb5ec2a2b832742e78c6766844b10c0c94"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jul 06 18:51:53 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 06 18:51:53 2011 -0400"
      },
      "message": "btrfs: fix oops when doing space balance\n\nWe need to make sure the data relocation inode doesn\u0027t go through\nthe delayed metadata updates, otherwise we get an oops during balance:\n\nkernel BUG at fs/btrfs/relocation.c:4303!\n[SNIP]\nCall Trace:\n [\u003cffffffffa03143fd\u003e] ? update_ref_for_cow+0x22d/0x330 [btrfs]\n [\u003cffffffffa0314951\u003e] __btrfs_cow_block+0x451/0x5e0 [btrfs]\n [\u003cffffffffa031355d\u003e] ? read_block_for_search+0x14d/0x4d0 [btrfs]\n [\u003cffffffffa0314beb\u003e] btrfs_cow_block+0x10b/0x240 [btrfs]\n [\u003cffffffffa031acae\u003e] btrfs_search_slot+0x49e/0x7a0 [btrfs]\n [\u003cffffffffa032d8af\u003e] btrfs_lookup_inode+0x2f/0xa0 [btrfs]\n [\u003cffffffff8147bf0e\u003e] ? mutex_lock+0x1e/0x50\n [\u003cffffffffa0380cf1\u003e] btrfs_update_delayed_inode+0x71/0x160 [btrfs]\n [\u003cffffffffa037ff27\u003e] ? __btrfs_release_delayed_node+0x67/0x190 [btrfs]\n [\u003cffffffffa0381cf8\u003e] btrfs_run_delayed_items+0xe8/0x120 [btrfs]\n [\u003cffffffffa03365e0\u003e] btrfs_commit_transaction+0x250/0x850 [btrfs]\n [\u003cffffffff810f91d9\u003e] ? find_get_pages+0x39/0x130\n [\u003cffffffffa0336cd5\u003e] ? join_transaction+0x25/0x250 [btrfs]\n [\u003cffffffff81081de0\u003e] ? wake_up_bit+0x40/0x40\n [\u003cffffffffa03785fa\u003e] prepare_to_relocate+0xda/0xf0 [btrfs]\n [\u003cffffffffa037f2bb\u003e] relocate_block_group+0x4b/0x620 [btrfs]\n [\u003cffffffffa0334cf5\u003e] ? btrfs_clean_old_snapshots+0x35/0x150 [btrfs]\n [\u003cffffffffa037fa43\u003e] btrfs_relocate_block_group+0x1b3/0x2e0 [btrfs]\n [\u003cffffffffa0368ec0\u003e] ? btrfs_tree_unlock+0x50/0x50 [btrfs]\n [\u003cffffffffa035e39b\u003e] btrfs_relocate_chunk+0x8b/0x670 [btrfs]\n [\u003cffffffffa031303d\u003e] ? btrfs_set_path_blocking+0x3d/0x50 [btrfs]\n [\u003cffffffffa03577d8\u003e] ? read_extent_buffer+0xd8/0x1d0 [btrfs]\n [\u003cffffffffa031bea1\u003e] ? btrfs_previous_item+0xb1/0x150 [btrfs]\n [\u003cffffffffa03577d8\u003e] ? read_extent_buffer+0xd8/0x1d0 [btrfs]\n [\u003cffffffffa035f5aa\u003e] btrfs_balance+0x21a/0x2b0 [btrfs]\n [\u003cffffffffa0368898\u003e] btrfs_ioctl+0x798/0xd20 [btrfs]\n [\u003cffffffff8111e358\u003e] ? handle_mm_fault+0x148/0x270\n [\u003cffffffff814809e8\u003e] ? do_page_fault+0x1d8/0x4b0\n [\u003cffffffff81160d6a\u003e] do_vfs_ioctl+0x9a/0x540\n [\u003cffffffff811612b1\u003e] sys_ioctl+0xa1/0xb0\n [\u003cffffffff81484ec2\u003e] system_call_fastpath+0x16/0x1b\n[SNIP]\nRIP  [\u003cffffffffa037c1cc\u003e] btrfs_reloc_cow_block+0x22c/0x270 [btrfs]\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "508794eb5ec2a2b832742e78c6766844b10c0c94",
      "tree": "3ee4f10297e5e99aa1092c3f82d68ea8543a9dba",
      "parents": [
        "0942caa373c676dca614ea8352ac77e0270aba73"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 02 21:24:41 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 06 18:46:43 2011 -0400"
      },
      "message": "Btrfs: don\u0027t panic if we get an error while balancing V2\n\nA user reported an error where if we try to balance an fs after a device has\nbeen removed it will blow up.  This is because we get an EIO back and this is\nwhere BUG_ON(ret) bites us in the ass.  To fix we just exit.  Thanks,\n\nReported-by: Anand Jain \u003cAnand.Jain@oracle.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0942caa373c676dca614ea8352ac77e0270aba73",
      "tree": "0a6a1bdceeb030566fcba6a6bfa322eb79f2d8d9",
      "parents": [
        "2f7e33d432d097a2a7f467b031bf18be91cb3d49"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Jun 28 15:10:37 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 06 18:46:43 2011 -0400"
      },
      "message": "btrfs: add missing options displayed in mount output\n\nThere are three missed mount options settable by user which are not\ncurrently displayed in mount output.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "af4087e0e682df12bdffec5cfafc2fec9208716e",
      "tree": "564622df71c8b5666be24cbfd93f58516791d180",
      "parents": [
        "4699d4423c07a1db35ea9453eac3a07e818338f9",
        "2f7e33d432d097a2a7f467b031bf18be91cb3d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 13:32:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 13:32:14 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  btrfs: fix inconsonant inode information\n  Btrfs: make sure to update total_bitmaps when freeing cache V3\n  Btrfs: fix type mismatch in find_free_extent()\n  Btrfs: make sure to record the transid in new inodes\n"
    },
    {
      "commit": "2f7e33d432d097a2a7f467b031bf18be91cb3d49",
      "tree": "a1729a436b3c9921390e23cae35e5b837653dfe4",
      "parents": [
        "9b90f5135320bc74dc6c9a8c74d69fd4821d9282"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jun 23 07:27:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 27 11:34:27 2011 -0400"
      },
      "message": "btrfs: fix inconsonant inode information\n\nWhen iputting the inode, We may leave the delayed nodes if they have some\ndelayed items that have not been dealt with. So when the inode is read again,\nwe must look up the relative delayed node, and use the information in it to\ninitialize the inode. Or we will get inconsonant inode information, it may\ncause that the same directory index number is allocated again, and hit the\nfollowing oops:\n\n[ 5447.554187] err add delayed dir index item(name: pglog_0.965_0) into the\ninsertion tree of the delayed node(root id: 262, inode id: 258, errno: -17)\n[ 5447.569766] ------------[ cut here ]------------\n[ 5447.575361] kernel BUG at fs/btrfs/delayed-inode.c:1301!\n[SNIP]\n[ 5447.790721] Call Trace:\n[ 5447.793191]  [\u003cffffffffa0641c4e\u003e] btrfs_insert_dir_item+0x189/0x1bb [btrfs]\n[ 5447.800156]  [\u003cffffffffa0651a45\u003e] btrfs_add_link+0x12b/0x191 [btrfs]\n[ 5447.806517]  [\u003cffffffffa0651adc\u003e] btrfs_add_nondir+0x31/0x58 [btrfs]\n[ 5447.812876]  [\u003cffffffffa0651d6a\u003e] btrfs_create+0xf9/0x197 [btrfs]\n[ 5447.818961]  [\u003cffffffff8111f840\u003e] vfs_create+0x72/0x92\n[ 5447.824090]  [\u003cffffffff8111fa8c\u003e] do_last+0x22c/0x40b\n[ 5447.829133]  [\u003cffffffff8112076a\u003e] path_openat+0xc0/0x2ef\n[ 5447.834438]  [\u003cffffffff810c58e2\u003e] ? __perf_event_task_sched_out+0x24/0x44\n[ 5447.841216]  [\u003cffffffff8103ecdd\u003e] ? perf_event_task_sched_out+0x59/0x67\n[ 5447.847846]  [\u003cffffffff81121a79\u003e] do_filp_open+0x3d/0x87\n[ 5447.853156]  [\u003cffffffff811e126c\u003e] ? strncpy_from_user+0x43/0x4d\n[ 5447.859072]  [\u003cffffffff8111f1f5\u003e] ? getname_flags+0x2e/0x80\n[ 5447.864636]  [\u003cffffffff8111f179\u003e] ? do_getname+0x14b/0x173\n[ 5447.870112]  [\u003cffffffff8111f1b7\u003e] ? audit_getname+0x16/0x26\n[ 5447.875682]  [\u003cffffffff8112b1ab\u003e] ? spin_lock+0xe/0x10\n[ 5447.880882]  [\u003cffffffff81112d39\u003e] do_sys_open+0x69/0xae\n[ 5447.886153]  [\u003cffffffff81112db1\u003e] sys_open+0x20/0x22\n[ 5447.891114]  [\u003cffffffff813b9aab\u003e] system_call_fastpath+0x16/0x1b\n\nFix it by reusing the old delayed node.\n\nReported-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nTested-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9b90f5135320bc74dc6c9a8c74d69fd4821d9282",
      "tree": "d149650ba8e15a1ec22b3832482e9b24ea420fa3",
      "parents": [
        "e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jun 24 16:02:51 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 25 09:31:06 2011 -0400"
      },
      "message": "Btrfs: make sure to update total_bitmaps when freeing cache V3\n\nA user reported this bug again where we have more bitmaps than we are supposed\nto.  This is because we failed to load the free space cache, but don\u0027t update\nthe ctl-\u003etotal_bitmaps counter when we remove entries from the tree.  This patch\nfixes this problem and we should be good to go again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c",
      "tree": "85c481aae5bb4998b832e15b2e62a4987a76127b",
      "parents": [
        "1973f0faeb4a5f35597793c65d3c94d8fd386e10"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Sat Jun 18 20:26:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 25 09:31:06 2011 -0400"
      },
      "message": "Btrfs: fix type mismatch in find_free_extent()\n\ndata parameter should be u64 because a full-sized chunk flags field is\npassed instead of 0/1 for distinguishing data from metadata.  All\nunderlying functions expect u64.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1973f0faeb4a5f35597793c65d3c94d8fd386e10",
      "tree": "3e7e5c82f2cb27d679178e4787a583b05b661110",
      "parents": [
        "e999376f094162aa425ae749aa1df95ab928d010"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 24 13:13:29 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 24 13:13:29 2011 -0400"
      },
      "message": "Btrfs: make sure to record the transid in new inodes\n\nWhen we create a new inode, we aren\u0027t filling in the\nfield that records the transaction that last changed this\ninode.\n\nIf we then go to fsync that inode, it will be skipped because the field\nisn\u0027t filled in.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46e4edbf7ea9cf26665eb9f90c0fc7688d1a51ed",
      "tree": "edc47b971abd93024a730661890e833b2e99c499",
      "parents": [
        "1b19ca9f0bdab7d5035821e1ec8f39df9a6e3ee0"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jun 23 23:59:32 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 24 08:34:22 2011 -0700"
      },
      "message": "Remove unneeded version.h includes from fs/\n\nIt was pointed out by \u0027make versioncheck\u0027 that some includes of\nlinux/version.h were not needed in fs/ (fs/btrfs/ctree.h and\nfs/omfs/file.c).\n\nThis patch removes them.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nAcked-by: Bob Copeland \u003cme@bobcopeland.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90a800de0a29426ea900ecd53f2929d5f4bc4578",
      "tree": "22b4ec6119e438c73d695522042669b601672579",
      "parents": [
        "10e18e62309a882c513b4f516527055b6a60d668",
        "e999376f094162aa425ae749aa1df95ab928d010"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 20 08:58:53 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 20 08:58:53 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: avoid delayed metadata items during commits\n  btrfs: fix uninitialized return value\n  btrfs: fix wrong reservation when doing delayed inode operations\n  btrfs: Remove unused sysfs code\n  btrfs: fix dereference of ERR_PTR value\n  Btrfs: fix relocation races\n  Btrfs: set no_trans_join after trying to expand the transaction\n  Btrfs: protect the pending_snapshots list with trans_lock\n  Btrfs: fix path leakage on subvol deletion\n  Btrfs: drop the delalloc_bytes check in shrink_delalloc\n  Btrfs: check the return value from set_anon_super\n"
    },
    {
      "commit": "e999376f094162aa425ae749aa1df95ab928d010",
      "tree": "080d4a2a20d8d7e7ea8b36f63150827b970da715",
      "parents": [
        "35a30d7ce54e087d8025a725d4e5a2fdee723a9f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 16:14:09 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 16:38:47 2011 -0400"
      },
      "message": "Btrfs: avoid delayed metadata items during commits\n\nSnapshot creation has two phases.  One is the initial snapshot setup,\nand the second is done during commit, while nobody is allowed to modify\nthe root we are snapshotting.\n\nThe delayed metadata insertion code can break that rule, it does a\ndelayed inode update on the inode of the parent of the snapshot,\nand delayed directory item insertion.\n\nThis makes sure to run the pending delayed operations before we\nrecord the snapshot root, which avoids corruptions.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "35a30d7ce54e087d8025a725d4e5a2fdee723a9f",
      "tree": "ba7ab5023cde23bb0d7e0ea2e23400db8de80668",
      "parents": [
        "19fd294957e426bfdd8e19085096467ec18df5c4"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Jun 13 15:18:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:54:18 2011 -0400"
      },
      "message": "btrfs: fix uninitialized return value\n\nWhen allocation fails in btrfs_read_fs_root_no_name, ret is not set\nalthough it is returned, holding a garbage value.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "19fd294957e426bfdd8e19085096467ec18df5c4",
      "tree": "47c3ee705ac9d591d2f9497d3dfc3d1426a881a2",
      "parents": [
        "9fe6a50fb764f508dd2de47a66e62e51388791fb"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jun 15 10:47:30 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:54:18 2011 -0400"
      },
      "message": "btrfs: fix wrong reservation when doing delayed inode operations\n\nWe have migrated the space for the delayed inode items from\ntrans_block_rsv to global_block_rsv, but we forgot to set trans-\u003eblock_rsv to\nglobal_block_rsv when we doing delayed inode operations, and the following Oops\nhappened:\n\n[ 9792.654889] ------------[ cut here ]------------\n[ 9792.654898] WARNING: at fs/btrfs/extent-tree.c:5681\nbtrfs_alloc_free_block+0xca/0x27c [btrfs]()\n[ 9792.654899] Hardware name: To Be Filled By O.E.M.\n[ 9792.654900] Modules linked in: btrfs zlib_deflate libcrc32c\nip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables\narc4 rt61pci rt2x00pci rt2x00lib snd_hda_codec_hdmi mac80211\nsnd_hda_codec_realtek cfg80211 snd_hda_intel edac_core snd_seq rfkill\npcspkr serio_raw snd_hda_codec eeprom_93cx6 edac_mce_amd sp5100_tco\ni2c_piix4 k10temp snd_hwdep snd_seq_device snd_pcm floppy r8169 xhci_hcd\nmii snd_timer snd soundcore snd_page_alloc ipv6 firewire_ohci pata_acpi\nata_generic firewire_core pata_via crc_itu_t radeon ttm drm_kms_helper\ndrm i2c_algo_bit i2c_core [last unloaded: scsi_wait_scan]\n[ 9792.654919] Pid: 2762, comm: rm Tainted: G        W   2.6.39+ #1\n[ 9792.654920] Call Trace:\n[ 9792.654922]  [\u003cffffffff81053c4a\u003e] warn_slowpath_common+0x83/0x9b\n[ 9792.654925]  [\u003cffffffff81053c7c\u003e] warn_slowpath_null+0x1a/0x1c\n[ 9792.654933]  [\u003cffffffffa038e747\u003e] btrfs_alloc_free_block+0xca/0x27c [btrfs]\n[ 9792.654945]  [\u003cffffffffa03b8562\u003e] ? map_extent_buffer+0x6e/0xa8 [btrfs]\n[ 9792.654953]  [\u003cffffffffa038189b\u003e] __btrfs_cow_block+0xfc/0x30c [btrfs]\n[ 9792.654963]  [\u003cffffffffa0396aa6\u003e] ? btrfs_buffer_uptodate+0x47/0x58 [btrfs]\n[ 9792.654970]  [\u003cffffffffa0382e48\u003e] ? read_block_for_search+0x94/0x368 [btrfs]\n[ 9792.654978]  [\u003cffffffffa0381ba9\u003e] btrfs_cow_block+0xfe/0x146 [btrfs]\n[ 9792.654986]  [\u003cffffffffa03848b0\u003e] btrfs_search_slot+0x14d/0x4b6 [btrfs]\n[ 9792.654997]  [\u003cffffffffa03b8562\u003e] ? map_extent_buffer+0x6e/0xa8 [btrfs]\n[ 9792.655022]  [\u003cffffffffa03938e8\u003e] btrfs_lookup_inode+0x2f/0x8f [btrfs]\n[ 9792.655025]  [\u003cffffffff8147afac\u003e] ? _cond_resched+0xe/0x22\n[ 9792.655027]  [\u003cffffffff8147b892\u003e] ? mutex_lock+0x29/0x50\n[ 9792.655039]  [\u003cffffffffa03d41b1\u003e] btrfs_update_delayed_inode+0x72/0x137 [btrfs]\n[ 9792.655051]  [\u003cffffffffa03d4ea2\u003e] btrfs_run_delayed_items+0x90/0xdb [btrfs]\n[ 9792.655062]  [\u003cffffffffa039a69b\u003e] btrfs_commit_transaction+0x228/0x654 [btrfs]\n[ 9792.655064]  [\u003cffffffff8106e8da\u003e] ? remove_wait_queue+0x3a/0x3a\n[ 9792.655075]  [\u003cffffffffa03a2fa5\u003e] btrfs_evict_inode+0x14d/0x202 [btrfs]\n[ 9792.655077]  [\u003cffffffff81132bd6\u003e] evict+0x71/0x111\n[ 9792.655079]  [\u003cffffffff81132de0\u003e] iput+0x12a/0x132\n[ 9792.655081]  [\u003cffffffff8112aa3a\u003e] do_unlinkat+0x106/0x155\n[ 9792.655083]  [\u003cffffffff81127b83\u003e] ? path_put+0x1f/0x23\n[ 9792.655085]  [\u003cffffffff8109c53c\u003e] ? audit_syscall_entry+0x145/0x171\n[ 9792.655087]  [\u003cffffffff81128410\u003e] ? putname+0x34/0x36\n[ 9792.655090]  [\u003cffffffff8112b441\u003e] sys_unlinkat+0x29/0x2b\n[ 9792.655092]  [\u003cffffffff81482c42\u003e] system_call_fastpath+0x16/0x1b\n[ 9792.655093] ---[ end trace 02b696eb02b3f768 ]---\n\nThis patch fix it by setting the reservation of the transaction handle to the\ncorrect one.\n\nReported-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9fe6a50fb764f508dd2de47a66e62e51388791fb",
      "tree": "3efe5de8ba7289f6e0971ddcd2a80ada98e413ca",
      "parents": [
        "3ed4498caf381a73d6259d3ffacc914b17a507ec"
      ],
      "author": {
        "name": "Maarten Lankhorst",
        "email": "m.b.lankhorst@gmail.com",
        "time": "Thu Jun 16 09:04:57 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:54:18 2011 -0400"
      },
      "message": "btrfs: Remove unused sysfs code\n\nRemoves code no longer used. The sysfs file itself is kept, because the\nbtrfs developers expressed interest in putting new entries to sysfs.\n\nSigned-off-by: Maarten Lankhorst \u003cm.b.lankhorst@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3ed4498caf381a73d6259d3ffacc914b17a507ec",
      "tree": "cfa41f477e31b26a602d5d2e81c52a032071e01d",
      "parents": [
        "e038dca803423bb7a3fa9a162b7dcc225efe9bf9"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Jun 13 17:54:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:54:17 2011 -0400"
      },
      "message": "btrfs: fix dereference of ERR_PTR value\n\nsmatch reports:\n\nbtrfs_recover_log_trees error: \u0027wc.replay_dest\u0027 dereferencing\npossible ERR_PTR()\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e038dca803423bb7a3fa9a162b7dcc225efe9bf9",
      "tree": "efd5d76b77f21b4a9e570f2cb5bed9f95970f7a0",
      "parents": [
        "7585717f304f5ed005cc4ad933a69aab3efbd136",
        "ed0ca14021e5ae3147602128641aa7f742ab227c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:16:13 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 14:16:13 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7585717f304f5ed005cc4ad933a69aab3efbd136",
      "tree": "2bbef7f61c61b125778d3631237094594b408e0a",
      "parents": [
        "f4c44016218a6fce357715b9bbabbbbe1f69853c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 13 20:00:16 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 17 13:36:58 2011 -0400"
      },
      "message": "Btrfs: fix relocation races\n\nThe recent commit to get rid of our trans_mutex introduced\nsome races with block group relocation.  The problem is that relocation\nneeds to do some record keeping about each root, and it was relying\non the transaction mutex to coordinate things in subtle ways.\n\nThis fix adds a mutex just for the relocation code and makes sure\nit doesn\u0027t have a big impact on normal operations.  The race is\nreally fixed in btrfs_record_root_in_trans, which is where we\nstep back and wait for the relocation code to finish accounting\nsetup.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed0ca14021e5ae3147602128641aa7f742ab227c",
      "tree": "22f9a66f0f99770edb483963ff308982424f2e53",
      "parents": [
        "8351583e3f6e430ce8f71913909a96ad5cc6a2f6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 14 16:22:15 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 15 13:24:47 2011 -0400"
      },
      "message": "Btrfs: set no_trans_join after trying to expand the transaction\n\nWe can lockup if we try to allow new writers join the transaction and we have\nflushoncommit set or have a pending snapshot.  This is because we set\nno_trans_join and then loop around and try to wait for ordered extents again.\nThe problem is the ordered endio stuff needs to join the transaction, which it\ncan\u0027t do because no_trans_join is set.  So instead wait until after this loop to\nset no_trans_join and then make sure to wait for num_writers \u003d\u003d 1 in case\nanybody got started in between us exiting the loop and setting no_trans_join.\nThis could easily be reproduced by mounting -o flushoncommit and running xfstest\n13.  It cannot be reproduced with this patch.  Thanks,\n\nReported-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8351583e3f6e430ce8f71913909a96ad5cc6a2f6",
      "tree": "f345f40f94d12ffe090735f19aebc96c72be44bd",
      "parents": [
        "71d7aed014457147e8f71a843d5fbf03235e4a85"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 14 15:16:14 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 15 13:24:46 2011 -0400"
      },
      "message": "Btrfs: protect the pending_snapshots list with trans_lock\n\nCurrently there is nothing protecting the pending_snapshots list on the\ntransaction.  We only hold the directory mutex that we are snapshotting and a\nread lock on the subvol_sem, so we could race with somebody else creating a\nsnapshot in a different directory and end up with list corruption.  So protect\nthis list with the trans_lock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "71d7aed014457147e8f71a843d5fbf03235e4a85",
      "tree": "bdcb1845959bf6f7ca7f5382a7b53712eefe822a",
      "parents": [
        "30b4caf5d73af5c99cf1b2b46496d8bc35330992"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 14 14:24:32 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 15 13:24:45 2011 -0400"
      },
      "message": "Btrfs: fix path leakage on subvol deletion\n\nThe delayed ref patch accidently removed the btrfs_free_path in\nbtrfs_unlink_subvol, this puts it back and means we don\u0027t leak a path.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f4c44016218a6fce357715b9bbabbbbe1f69853c",
      "tree": "eb091e38b620a174d14e194964707c530bacbd0e",
      "parents": [
        "ac08aedfa5d3de0dcb3825b598d16c2e57991f54"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 13 11:30:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 13 11:30:47 2011 -0400"
      },
      "message": "Btrfs: drop the delalloc_bytes check in shrink_delalloc\n\nEven when delalloc_bytes is zero, we may need to sleep while waiting\nfor delalloc space.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "ac08aedfa5d3de0dcb3825b598d16c2e57991f54"
}
