)]}'
{
  "log": [
    {
      "commit": "9613bebb223dea3179c265dc31e1bb41ae39f321",
      "tree": "39bf883573d23775a53be3172323c0237fef5630",
      "parents": [
        "40380f1c7841a5dcbf0b20f0b6da11969211ef77",
        "bc3f116fec194f1d7329b160c266fe16b9266a1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes and features from Chris Mason:\n \"We\u0027ve merged in the error handling patches from SuSE.  These are\n  already shipping in the sles kernel, and they give btrfs the ability\n  to abort transactions and go readonly on errors.  It involves a lot of\n  churn as they clarify BUG_ONs, and remove the ones we now properly\n  deal with.\n\n  Josef reworked the way our metadata interacts with the page cache.\n  page-\u003eprivate now points to the btrfs extent_buffer object, which\n  makes everything faster.  He changed it so we write an whole extent\n  buffer at a time instead of allowing individual pages to go down,,\n  which will be important for the raid5/6 code (for the 3.5 merge\n  window ;)\n\n  Josef also made us more aggressive about dropping pages for metadata\n  blocks that were freed due to COW.  Overall, our metadata caching is\n  much faster now.\n\n  We\u0027ve integrated my patch for metadata bigger than the page size.\n  This allows metadata blocks up to 64KB in size.  In practice 16K and\n  32K seem to work best.  For workloads with lots of metadata, this cuts\n  down the size of the extent allocation tree dramatically and fragments\n  much less.\n\n  Scrub was updated to support the larger block sizes, which ended up\n  being a fairly large change (thanks Stefan Behrens).\n\n  We also have an assortment of fixes and updates, especially to the\n  balancing code (Ilya Dryomov), the back ref walker (Jan Schmidt) and\n  the defragging code (Liu Bo).\"\n\nFixed up trivial conflicts in fs/btrfs/scrub.c that were just due to\nremoval of the second argument to k[un]map_atomic() in commit\n7ac687d9e047.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (75 commits)\n  Btrfs: update the checks for mixed block groups with big metadata blocks\n  Btrfs: update to the right index of defragment\n  Btrfs: do not bother to defrag an extent if it is a big real extent\n  Btrfs: add a check to decide if we should defrag the range\n  Btrfs: fix recursive defragment with autodefrag option\n  Btrfs: fix the mismatch of page-\u003emapping\n  Btrfs: fix race between direct io and autodefrag\n  Btrfs: fix deadlock during allocating chunks\n  Btrfs: show useful info in space reservation tracepoint\n  Btrfs: don\u0027t use crc items bigger than 4KB\n  Btrfs: flush out and clean up any block device pages during mount\n  btrfs: disallow unequal data/metadata blocksize for mixed block groups\n  Btrfs: enhance superblock sanity checks\n  Btrfs: change scrub to support big blocks\n  Btrfs: minor cleanup in scrub\n  Btrfs: introduce common define for max number of mirrors\n  Btrfs: fix infinite loop in btrfs_shrink_device()\n  Btrfs: fix memory leak in resolver code\n  Btrfs: allow dup for data chunks in mixed mode\n  Btrfs: validate target profiles only if we are going to use them\n  ...\n"
    },
    {
      "commit": "7ca4be45a0255ac8f08c05491c6add2dd87dd4f8",
      "tree": "aca39ca7f1d210138733cb3be54c408a2acf302b",
      "parents": [
        "3c4bb26b213e618473e486776483a5bad15ba6da"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:19:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:34:10 2012 -0400"
      },
      "message": "Btrfs: don\u0027t use crc items bigger than 4KB\n\nWith the big metadata blocks, we can have crc items\nthat are much bigger than a page.  There are a few\nplaces that we try to kmalloc memory to hold the\nitems during a split.\n\nItems bigger than 4KB don\u0027t really have a huge benefit\nin efficiency, but they do trigger larger order allocations.\nThis commits changes the csums to make sure they stay under\n4KB.  This is not a format change, just a #define to limit\nhuge items.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "0678b61851b510ba68341dff59cd9b47e1712e91",
      "tree": "e8e8199ee3929e508c42bea39a3eeb122246626c",
      "parents": [
        "be1a5564fd39fa2ca6adbb41c75fb08f96a1ffcb"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 05 15:46:16 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:37 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON kzalloc error in btrfs_lookup_csums_range()\n\nUnfortunately it isn\u0027t enough to just exit here - the kzalloc() happens in a\nloop and the allocated items are added to a linked list whose head is passed\nin from the caller.\n\nTo fix the BUG_ON() and also provide the semantic that the list passed in is\nonly modified on success, I create function-local temporary list that we add\nitems too. If no error is met, that list is spliced to the callers at the\nend of the function. Otherwise the list will be walked and all items freed\nbefore the error value is returned.\n\nI did a simple test on this patch by forcing an error at the kzalloc() point\nand verifying that when this hits (git clone seemed to exercise this), the\nfunction throws the proper error. Unfortunately but predictably, we later\nhit a BUG_ON(ret) type line that still hasn\u0027t been fixed up ;)\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "7ac687d9e047b3fa335f04e18c7188db6a170334",
      "tree": "5f17ea504a2185070b75076ea0108d88b96309c3",
      "parents": [
        "e8e3c3d66fd9d1ee2250f68d778cc48c1346d228"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:28 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:21 2012 +0800"
      },
      "message": "btrfs: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "ddf23b3fc6850bd4654d51ec9457fe7c77cde51e",
      "tree": "9f5fe8f71a2793b5f651ef6c535d9116b5094348",
      "parents": [
        "e0b6d65be57fb37ca67b04ce8964546a74d2125c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "message": "Btrfs: skip locking if searching the commit root in csum lookup\n\nIt\u0027s not enough to just search the commit root, since we could be cow\u0027ing the\nvery block we need to search through, which would mean that its locked and we\u0027ll\nstill deadlock.  So use path-\u003eskip_locking as well.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.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": "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": "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": "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": "d6c0cb379c5198487e4ac124728cbb2346d63b1f",
      "tree": "167a97ac58c7a2fbf7c4e94b6abbfe1e03af014a",
      "parents": [
        "8e531cdfeb75269c6c5aae33651cca39707848da",
        "1f78160ce1b1b8e657e2248118c4d91f881763f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups_and_fixes\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/tree-log.c\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1cd307990d6e2b4965620e339a92e0d7ae853e13",
      "tree": "cd3cc9c06e2c7bbbeda4d38bbcc00d44bfd98a02",
      "parents": [
        "65a246c5ffe3b487a001de025816326939e63362"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu May 19 05:19:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:39 2011 -0400"
      },
      "message": "Btrfs: BUG_ON is deleted from the caller of btrfs_truncate_item \u0026 btrfs_extend_item\n\nCurrently, btrfs_truncate_item and btrfs_extend_item returns only 0.\nSo, the check by BUG_ON in the caller is unnecessary.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "65a246c5ffe3b487a001de025816326939e63362",
      "tree": "52da5b08a584ac3178f8bd35a5e7333f5a3908e1",
      "parents": [
        "b0b802d7e34b0b4a78f911c3a8aad88aa91fd7ab"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu May 19 04:37:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:39 2011 -0400"
      },
      "message": "Btrfs: return error code to caller when btrfs_del_item fails\n\nThe error code is returned instead of calling BUG_ON when\nbtrfs_del_item returns the error.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "712673339a0d085358fd1cd3a6477cc7979bb69f",
      "tree": "b2e268685e3cbba19a4adb2a47d853e4e461fcfc",
      "parents": [
        "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
        "8628764e1a5e1998a42b9713e9edea7753653d01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/ctree.h\n\tfs/btrfs/volumes.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a2de733c78fa7af51ba9670482fa7d392aa67c57",
      "tree": "d88817bc7aba94e7efea530efac5ef190c1b799c",
      "parents": [
        "7cf96da3ec7ca225acf4f284b0e904a1f5f98821"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Mar 08 14:14:00 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:45:20 2011 +0200"
      },
      "message": "btrfs: scrub\n\nThis adds an initial implementation for scrub. It works quite\nstraightforward. The usermode issues an ioctl for each device in the\nfs. For each device, it enumerates the allocated device chunks. For\neach chunk, the contained extents are enumerated and the data checksums\nfetched. The extents are read sequentially and the checksums verified.\nIf an error occurs (checksum or EIO), a good copy is searched for. If\none is found, the bad copy will be rewritten.\nAll enumerations happen from the commit roots. During a transaction\ncommit, the scrubs get paused and afterwards continue from the new\nroots.\n\nThis commit is based on the series originally posted to linux-btrfs\nwith some improvements that resulted from comments from David Sterba,\nIlya Dryomov and Jan Schmidt.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "b3b4aa74b58bded927f579fff787fb6fa1c0393c",
      "tree": "30dab4ab26558992dd8b6b212bef805de11c4c29",
      "parents": [
        "ba14419264684b290f0d0b7f48d26eafb11fc0c6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 01:20:15 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:22 2011 +0200"
      },
      "message": "btrfs: drop unused parameter from btrfs_release_path\n\nparameter tree root it\u0027s not used since commit\n5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (\"Btrfs: Create extent_buffer\ninterface for large blocksizes\")\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "33345d01522f8152f99dc84a3e7a1a45707f387f",
      "tree": "6a978702dc4421768e63501fa15bc8fedd5bff32",
      "parents": [
        "0414efae7989a2183fb2cc000ab285c4c2836a00"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:31:50 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:09 2011 +0800"
      },
      "message": "Btrfs: Always use 64bit inode number\n\nThere\u0027s a potential problem in 32bit system when we exhaust 32bit inode\nnumbers and start to allocate big inode numbers, because btrfs uses\ninode-\u003ei_ino in many places.\n\nSo here we always use BTRFS_I(inode)-\u003elocation.objectid, which is an\nu64 variable.\n\nThere are 2 exceptions that BTRFS_I(inode)-\u003elocation.objectid !\u003d\ninode-\u003ei_ino: the btree inode (0 vs 1) and empty subvol dirs (256 vs 2),\nand inode-\u003ei_ino will be used in those cases.\n\nAnother reason to make this change is I\u0027m going to use a special inode\nto save free ino cache, and the inode number must be \u003e (u64)-256.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "c2db1073fdf9757e6fd8b4a59d15b6ecc7a2af8a",
      "tree": "024264b2d27f75b967efbde01060ebb8626fa39d",
      "parents": [
        "c59021f846881a957ac5afe456d0f59d6a517b61"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Mar 01 06:48:31 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:54 2011 -0400"
      },
      "message": "Btrfs: check return value of btrfs_alloc_path()\n\nAdding the check on the return value of btrfs_alloc_path() to several places.\nAnd, some of callers are modified by this change.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db5b493ac78e46c7b6bad22cd25d8041564cd8ea",
      "tree": "18f484c3d8194b80165e5400831931a3ac5c58ba",
      "parents": [
        "1abe9b8a138c9988ba8f7bfded6453649a31541f"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Mar 23 08:14:16 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:35 2011 -0400"
      },
      "message": "Btrfs: cleanup some BUG_ON()\n\nThis patch changes some BUG_ON() to the error return.\n(but, most callers still use BUG_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": "ad0397a7a97f55fd7f70998ec208c5d8b90310ff",
      "tree": "dbebfe94a571155d4f376e265026c9a1ca1e2f2f",
      "parents": [
        "68a82277b8619e6d0f2738b1d9b160b627e81e92"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 28 18:44:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:42:34 2011 -0500"
      },
      "message": "Btrfs: do error checking in btrfs_del_csums\n\nGot a report of a box panicing because we got a NULL eb in read_extent_buffer.\nHis fs was borked and btrfs_search_path returned EIO, but we don\u0027t check for\nerrors so the box paniced.  Yes I know this will just make something higher up\nthe stack panic, but that\u0027s a problem for future Josef.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a29edc6b60a5248ccab588e7ba7dad38cef0235",
      "tree": "45a7939e9e061cb2f06b09ae5f48aa79853e1250",
      "parents": [
        "6b82ce8d824bd46053e46a895876cde39d9026e4"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jan 26 06:22:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:36 2011 -0500"
      },
      "message": "btrfs: fix several uncheck memory allocations\n\nTo make btrfs more stable, add several missing necessary memory allocation\nchecks, and when no memory, return proper errno.\n\nWe\u0027ve checked that some of those -ENOMEM errors will be returned to\nuserspace, and some will be catched by BUG_ON() in the upper callers,\nand none will be ignored silently.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4b46fce23349bfca781a32e2707a18328ca5ae22",
      "tree": "68f1200f2bc82d3f35218aef38e6d5d92bff4aca",
      "parents": [
        "c2c6ca417e2db7a519e6e92c82f4a933d940d076"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun May 23 11:00:55 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:57 2010 -0400"
      },
      "message": "Btrfs: add basic DIO read/write support\n\nThis provides basic DIO support for reading and writing.  It does not do the\nwork to recover from mismatching checksums, that will come later.  A few design\nchanges have been made from Jim\u0027s code (sorry Jim!)\n\n1) Use the generic direct-io code.  Jim originally re-wrote all the generic DIO\ncode in order to account for all of BTRFS\u0027s oddities, but thanks to that work it\nseems like the best bet is to just ignore compression and such and just opt to\nfallback on buffered IO.\n\n2) Fallback on buffered IO for compressed or inline extents.  Jim\u0027s code did\nit\u0027s own buffering to make dio with compressed extents work.  Now we just\nfallback onto normal buffered IO.\n\n3) Use ordered extents for the writes so that all of the\n\nlock_extent()\nlookup_ordered()\n\ntype checks continue to work.\n\n4) Do the lock_extent() lookup_ordered() loop in readpage so we don\u0027t race with\nDIO writes.\n\nI\u0027ve tested this with fsx and everything works great.  This patch depends on my\ndio and filemap.c patches to work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4a500fd178c89b96fa166a2d9e7855df33429841",
      "tree": "b97fe0b0c1cb19388fcf28f77cd74a645ec69a61",
      "parents": [
        "d68fc57b7e3245cfacf2e3b47acfed1946a11786"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:49:59 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:53 2010 -0400"
      },
      "message": "Btrfs: Metadata ENOSPC handling for tree log\n\nPrevious patches make the allocater return -ENOSPC if there is no\nunreserved free metadata space. This patch updates tree log code\nand various other places to propagate/handle the ENOSPC error.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b9473439d3e84d9fc1a0a83faca69cc1b7566341",
      "tree": "bef8321b80589026b617d61d0fabaf545d459269",
      "parents": [
        "89573b9c516b24af8a3b9958dd5afca8fa874e3d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 13 11:00:37 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:28 2009 -0400"
      },
      "message": "Btrfs: leave btree locks spinning more often\n\nbtrfs_mark_buffer dirty would set dirty bits in the extent_io tree\nfor the buffers it was dirtying.  This may require a kmalloc and it\nwas not atomic.  So, anyone who called btrfs_mark_buffer_dirty had to\nset any btree locks they were holding to blocking first.\n\nThis commit changes dirty tracking for extent buffers to just use a flag\nin the extent buffer.  Now that we have one and only one extent buffer\nper page, this can be safely done without losing dirty bits along the way.\n\nThis also introduces a path-\u003eleave_spinning flag that callers of\nbtrfs_search_slot can use to indicate they will properly deal with a\npath returned where all the locks are spinning instead of blocking.\n\nMany of the btree search callers now expect spinning paths,\nresulting in better btree concurrency overall.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "07d400a6df4767a90d49a153fdb7f4cfa1e3f23e",
      "tree": "8ca61bb87ffb72343b8d392a26fb7a6265f6fa3d",
      "parents": [
        "1ba12553f3600ffebad226c5204ab0e46df98161"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "message": "Btrfs: tree logging checksum fixes\n\nThis patch contains following things.\n\n1) Limit the max size of btrfs_ordered_sum structure to PAGE_SIZE.  This\nstruct is kmalloced so we want to keep it reasonable.\n\n2) Replace copy_extent_csums by btrfs_lookup_csums_range.  This was\nduplicated code in tree-log.c\n\n3) Remove replay_one_csum. csum items are replayed at the same time as\n   replaying file extents. This guarantees we only replay useful csums.\n\n4) nbytes accounting fix.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "d397712bcc6a759a560fd247e6053ecae091f958",
      "tree": "9da8daebb870d8b8b1843507c4621715e23dd31a",
      "parents": [
        "1f3c79a28c8837e8572b98f6d14142d9a6133c56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "message": "Btrfs: Fix checkpatch.pl warnings\n\nThere were many, most are fixed now.  struct-funcs.c generates some warnings\nbut these are bogus.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "87b29b208c6c38f3446d2de6ece946e2459052cf",
      "tree": "43e717289e1e8446fced4093ab39667bba9ea60a",
      "parents": [
        "d7f735d0bc68c411abda0a612e1421bdade649cc"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Dec 17 10:21:48 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 10:21:48 2008 -0500"
      },
      "message": "Btrfs: properly check free space for tree balancing\n\nbtrfs_insert_empty_items takes the space needed by the btrfs_item\nstructure into account when calculating the required free space.\n\nSo the tree balancing code shouldn\u0027t add sizeof(struct btrfs_item)\nto the size when checking the free space. This patch removes these\nsuperfluous additions.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "dcbdd4dcb9793b00b46ab023e9330922c8c7c54c",
      "tree": "ca599e975c92de75c98283756f80b2aa7a1879bb",
      "parents": [
        "75eff68ea6959efd999b125fc3dcf73931a3b30b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 16 13:51:01 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 16 13:51:01 2008 -0500"
      },
      "message": "Btrfs: delete checksum items before marking blocks free\n\nBtrfs maintains a cache of blocks available for allocation in ram.  The\ncode that frees extents was marking the extents free and then deleting\nthe checksum items.\n\nThis meant it was possible the extent would be reallocated before the\nchecksum item was actually deleted, leading to races and other\nproblems as the checksums were updated for the newly allocated extent.\n\nThe fix is to delete the checksum before marking the extent free.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17d217fe970d34720f4f1633dca73a6aa2f3d9d1",
      "tree": "4e2e716400cc45a6697475629f4c046b96ff76e7",
      "parents": [
        "e4404d6e8da678d852b7f767f665f8edf76c9e9f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "message": "Btrfs: fix nodatasum handling in balancing code\n\nChecksums on data can be disabled by mount option, so it\u0027s\npossible some data extents don\u0027t have checksums or have\ninvalid checksums. This causes trouble for data relocation.\nThis patch contains following things to make data relocation\nwork.\n\n1) make nodatasum/nodatacow mount option only affects new\nfiles. Checksums and COW on data are only controlled by the\ninode flags.\n\n2) check the existence of checksum in the nodatacow checker.\nIf checksums exist, force COW the data extent. This ensure that\nchecksum for a given block is either valid or does not exist.\n\n3) update data relocation code to properly handle the case\nof checksum missing.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "459931eca5f4b8c9ad259d07cc1ca49afed54804",
      "tree": "86088c14cff53f93281dc25022b61fb1d86c2458",
      "parents": [
        "580afd76e451deb6772d0507de580fb1df14da6c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 10 09:10:46 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 10 09:10:46 2008 -0500"
      },
      "message": "Btrfs: Delete csum items when freeing extents\n\nThis finishes off the new checksumming code by removing csum items\nfor extents that are no longer in use.\n\nThe trick is doing it without racing because a single csum item may\nhold csums for more than one extent.  Extra checks are added to\nbtrfs_csum_file_blocks to make sure that we are using the correct\ncsum item after dropping locks.\n\nA new btrfs_split_item is added to split a single csum item so it\ncan be split without dropping the leaf lock.  This is used to\nremove csum bytes from the middle of an item.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d20f7043fa65659136c1a7c3c456eeeb5c6f431f",
      "tree": "05d1031cadec6d440a97221e3a32adb504a51699",
      "parents": [
        "c99e905c945c462085c6d64646dc5af0c0a16815"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "message": "Btrfs: move data checksumming into a dedicated tree\n\nBtrfs stores checksums for each data block.  Until now, they have\nbeen stored in the subvolume trees, indexed by the inode that is\nreferencing the data block.  This means that when we read the inode,\nwe\u0027ve probably read in at least some checksums as well.\n\nBut, this has a few problems:\n\n* The checksums are indexed by logical offset in the file.  When\ncompression is on, this means we have to do the expensive checksumming\non the uncompressed data.  It would be faster if we could checksum\nthe compressed data instead.\n\n* If we implement encryption, we\u0027ll be checksumming the plain text and\nstoring that on disk.  This is significantly less secure.\n\n* For either compression or encryption, we have to get the plain text\nback before we can verify the checksum as correct.  This makes the raid\nlayer balancing and extent moving much more expensive.\n\n* It makes the front end caching code more complex, as we have touch\nthe subvolume and inodes as we cache extents.\n\n* There is potentitally one copy of the checksum in each subvolume\nreferencing an extent.\n\nThe solution used here is to store the extent checksums in a dedicated\ntree.  This allows us to index the checksums by phyiscal extent\nstart and length.  It means:\n\n* The checksum is against the data stored on disk, after any compression\nor encryption is done.\n\n* The checksum is stored in a central location, and can be verified without\nfollowing back references, or reading inodes.\n\nThis makes compression significantly faster by reducing the amount of\ndata that needs to be checksummed.  It will also allow much faster\nraid management code in general.\n\nThe checksums are indexed by a key with a fixed objectid (a magic value\nin ctree.h) and offset set to the starting byte of the extent.  This\nallows us to copy the checksum items into the fsync log tree directly (or\nany other tree), without having to invent a second format for them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "607d432da0542e84ddcd358adfddac6f68500e3d",
      "tree": "44425bf1fe8378022bc1b84425ca4ba9d0176566",
      "parents": [
        "c6e2bac1a52ffc36dd10769b594dfa3994e95f77"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "message": "Btrfs: add support for multiple csum algorithms\n\nThis patch gives us the space we will need in order to have different csum\nalgorithims at some point in the future.  We save the csum algorithim type\nin the superblock, and use those instead of define\u0027s.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "39be25cd89450940b0e5f8a6aad71d1ec99b17bf",
      "tree": "ecd9732a647df1af7439e1f859ac3b00e68cb430",
      "parents": [
        "f5a31e166772a7b9fff6725b697eb8b57633671e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:50:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:50:50 2008 -0500"
      },
      "message": "Btrfs: Use invalidatepage when writepage finds a page outside of i_size\n\nWith all the recent fixes to the delalloc locking, it is now safe\nagain to use invalidatepage inside the writepage code for\npages outside of i_size.  This used to deadlock against some of the\ncode to write locked ranges of pages, but all of that has been fixed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c8b978188c9a0fd3d535c13debd19d522b726f1f",
      "tree": "873628723fb82fe2a7c77adc65fa93eca1d61c0c",
      "parents": [
        "26ce34a9c47334ff7984769e4661b2f1883594ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 29 14:49:59 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 29 14:49:59 2008 -0400"
      },
      "message": "Btrfs: Add zlib compression support\n\nThis is a large change for adding compression on reading and writing,\nboth for inline and regular extents.  It does some fairly large\nsurgery to the writeback paths.\n\nCompression is off by default and enabled by mount -o compress.  Even\nwhen the -o compress mount option is not used, it is possible to read\ncompressed extents off the disk.\n\nIf compression for a given set of pages fails to make them smaller, the\nfile is flagged to avoid future compression attempts later.\n\n* While finding delalloc extents, the pages are locked before being sent down\nto the delalloc handler.  This allows the delalloc handler to do complex things\nsuch as cleaning the pages, marking them writeback and starting IO on their\nbehalf.\n\n* Inline extents are inserted at delalloc time now.  This allows us to compress\nthe data before inserting the inline extent, and it allows us to insert\nan inline extent that spans multiple pages.\n\n* All of the in-memory extent representations (extent_map.c, ordered-data.c etc)\nare changed to record both an in-memory size and an on disk size, as well\nas a flag for compression.\n\nFrom a disk format point of view, the extent pointers in the file are changed\nto record the on disk size of a given extent and some encoding flags.\nSpace in the disk format is allocated for compression encoding, as well\nas encryption and a generic \u0027other\u0027 field.  Neither the encryption or the\n\u0027other\u0027 field are currently used.\n\nIn order to limit the amount of data read for a single random read in the\nfile, the size of a compressed extent is limited to 128k.  This is a\nsoftware only limit, the disk format supports u64 sized compressed extents.\n\nIn order to limit the ram consumed while processing extents, the uncompressed\nsize of a compressed extent is limited to 256k.  This is a software only limit\nand will be subject to tuning later.\n\nChecksumming is still done on compressed extents, and it is done on the\nuncompressed version of the data.  This way additional encodings can be\nlayered on without having to figure out which encoding to checksum.\n\nCompression happens at delalloc time, which is basically singled threaded because\nit is usually done by a single pdflush thread.  This makes it tricky to\nspread the compression load across all the cpus on the box.  We\u0027ll have to\nlook at parallel pdflush walks of dirty inodes at a later time.\n\nDecompression is hooked into readpages and it does spread across CPUs nicely.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "639cb58675ce9b507eed9c3d6b3335488079b21a",
      "tree": "a299ab939050d2423ad318a699c91f2a51880c74",
      "parents": [
        "9473f16c75606fe6b2e5000525fe9766114505f3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 28 06:15:25 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Fix variable init during csum creation\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4d1b5fb4d7075f862848dbff8873e22382abd482",
      "tree": "2b68d05910f50c9e385890816e78eda6e8e6e55a",
      "parents": [
        "7c2fe32a238eb12422beca5cbd5194a594baa559"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 20 09:44:52 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Lookup readpage checksums on bio submission again\n\nThis optimization had been removed because I thought it was triggering\ncsum errors.  The real cause of the errors was elsewhere, and so\nthis optimization is back.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "53863232ef961778aa414b700ed88a48e8e871e6",
      "tree": "05a74ac264a5fb4f6b8824771f5820ca5907afe5",
      "parents": [
        "4854ddd0ed0a687fc2d7c45a529c406232e31e7b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:18 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Lower contention on the csum mutex\n\nThis takes the csum mutex deeper in the call chain and releases it\nmore often.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3de9d6b649b4cc60687be92e71cef36d7d4e8f2f",
      "tree": "039f774f07a86bb9ace7986592dc462c7e1eec88",
      "parents": [
        "ea8c281947950fac5f78818b767821d696c9512a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 23:17:27 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "btrfs_lookup_bio_sums seems broken, go back to the readpage_io_hook for now\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6dab81574346c831ded96ae3ab0e8f9ca72c37ae",
      "tree": "5ce65744c1ed6d81a7799c52532893d2e0ae3da1",
      "parents": [
        "2dd3e67b1eaec8504da7e12b8afee77323a49f38"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 08:35:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Hold csum mutex while reading in sums during readpages\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61b4944018449003ac5f9757f4d125dce519cf51",
      "tree": "553855996c641a945344db870b6dfd0d2d02086e",
      "parents": [
        "37d1aeee3990385e9bb436c50c2f7e120a668df6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 31 15:42:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Fix streaming read performance with checksumming on\n\nLarge streaming reads make for large bios, which means each entry on the\nlist async work queues represents a large amount of data.  IO\ncongestion throttling on the device was kicking in before the async\nworker threads decided a single thread was busy and needed some help.\n\nThe end result was that a streaming read would result in a single CPU\nrunning at 100% instead of balancing the work off to other CPUs.\n\nThis patch also changes the pre-IO checksum lookup done by reads to\nwork on a per-bio basis instead of a per-page.  This results in many\nextra btree lookups on large streaming reads.  Doing the checksum lookup\nright before bio submit allows us to reuse searches while processing\nadjacent offsets.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bcc63abbf3e9bf948a1b0129b3e6120ec7d7f698",
      "tree": "1c66dc210f948f79c86786368d2c75b57482875d",
      "parents": [
        "33958dc6d38fb4ca7e62273855fcb2db7e616263"
      ],
      "author": {
        "name": "Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Jul 30 16:29:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: implement memory reclaim for leaf reference cache\n\nThe memory reclaiming issue happens when snapshot exists. In that\ncase, some cache entries may not be used during old snapshot dropping,\nso they will remain in the cache until umount.\n\nThe patch adds a field to struct btrfs_leaf_ref to record create time. Besides,\nthe patch makes all dead roots of a given snapshot linked together in order of\ncreate time. After a old snapshot was completely dropped, we check the dead\nroot list and remove all cache entries created before the oldest dead root in\nthe list.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed98b56a6393c5e150fd5095b9eb7fd7d3cfb041",
      "tree": "1e69d882a08d089d083132b2b10fcf385d857620",
      "parents": [
        "c286ac48ed7aaf53586f575af6053ae2a0f8554a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 22 23:06:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Take the csum mutex while reading checksums\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e5a2217ef6ff088d08a27208929a6f9c635d672c",
      "tree": "47dfed451e11357a5e066180eebba8db942af2b3",
      "parents": [
        "7f3c74fb831fa19bafe087e817c0a5ff3883f1ea"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jul 18 20:42:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Fix btrfs_wait_ordered_extent_range to properly wait\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7f3c74fb831fa19bafe087e817c0a5ff3883f1ea",
      "tree": "416e95db10e408240916d5061caf1e5d1182b330",
      "parents": [
        "211f90e68b679d27fe23c5505f86d6ce62c98bae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jul 18 12:01:11 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Keep extent mappings in ram until pending ordered extents are done\n\nIt was possible for stale mappings from disk to be used instead of the\nnew pending ordered extent.  This adds a flag to the extent map struct\nto keep it pinned until the pending ordered extent is actually on disk.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3edf7d33f4edb1e4a9bb0a4c0a84d95fb4d22a09",
      "tree": "8698a6dd1d0d038f1b56f79c92783518d36f2145",
      "parents": [
        "eb84ae039e10f1f80443d846ba1350122bbdc753"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jul 18 06:17:13 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Handle data checksumming on bios that span multiple ordered extents\n\nData checksumming is done right before the bio is sent down the IO stack,\nwhich means a single bio might span more than one ordered extent.  In\nthis case, the checksumming data is split between two ordered extents.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e6dcd2dc9c489108648e2ed543315dd134d50a9a",
      "tree": "cddf6f588b65e28c5feb8bff89b22d8ff70f8a50",
      "parents": [
        "77a41afb7d0dd0f27b6f2f1a5bc701929c7034de"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 17 12:53:50 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: New data\u003dordered implementation\n\nThe old data\u003dordered code would force commit to wait until\nall the data extents from the transaction were fully on disk.  This\nintroduced large latencies into the commit and stalled new writers\nin the transaction for a long time.\n\nThe new code changes the way data allocations and extents work:\n\n* When delayed allocation is filled, data extents are reserved, and\n  the extent bit EXTENT_ORDERED is set on the entire range of the extent.\n  A struct btrfs_ordered_extent is allocated an inserted into a per-inode\n  rbtree to track the pending extents.\n\n* As each page is written EXTENT_ORDERED is cleared on the bytes corresponding\n  to that page.\n\n* When all of the bytes corresponding to a single struct btrfs_ordered_extent\n  are written, The previously reserved extent is inserted into the FS\n  btree and into the extent allocation trees.  The checksums for the file\n  data are also updated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2eb0a241f0e5c135d93243b0236cb1f14c305e0",
      "tree": "dd3141efb9142a294222b9195593371887519207",
      "parents": [
        "d6bfde8765668c8687de72f7a40f52acdf4f2f19"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 02 14:43:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Clone file data ioctl\n\nAdd a new ioctl to clone file data\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e015640f9c4fa2417dcc3bbbb3b2b61ad4059ab0",
      "tree": "2ba41617e428f60ff970abc8a862ab77980b4a20",
      "parents": [
        "44b8bd7edda4f63de180d0f7325c9fb704b3806b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 16 11:15:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:01 2008 -0400"
      },
      "message": "Btrfs: Write bio checksumming outside the FS mutex\n\nThis significantly improves streaming write performance by allowing\nconcurrency in the data checksumming.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eb20978f318ab5e360ef9c1b24b5dea14d0fee6a",
      "tree": "80affc2b5b03c5baa97bce37a5e1b8ecbe808eb2",
      "parents": [
        "55d474148982785dd8995dc690febad3a16a2c46"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 21 09:30:08 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Use KM_USERN instead of KM_IRQ during data summing\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2e1a992e3103624af48f1501aaad4e4d8317f88c",
      "tree": "51e9107af5ffabfce1b2b366a8e3ecbd234a24e5",
      "parents": [
        "6885f308b557020efce6ef9c1fcc96adaabecbb6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 20 15:44:32 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Make sure bio pages are adjacent during bulk csumming\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6e92f5e651a34f24ab31ebdf3f113c7d23a36000",
      "tree": "57695b87c3a86c418cb4ba65de53ca809e7b5e60",
      "parents": [
        "065631f6dccea07bfad48d8981369f6d9cfd6e2b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 20 12:07:25 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: While doing checksums on bios, cache the extent_buffer mapping\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "065631f6dccea07bfad48d8981369f6d9cfd6e2b",
      "tree": "d9d5736f61d225d0418cf298092ac36fbe6099e2",
      "parents": [
        "0740c82bc7585a23e100c9a59d5e2abbf99459fb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 20 12:07:25 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: checksum file data at bio submission time instead of during writepage\n\nWhen we checkum file data during writepage, the checksumming is done one\npage at a time, making it difficult to do bulk metadata modifications\nto insert checksums for large ranges of the file at once.\n\nThis patch changes btrfs to checksum on a per-bio basis instead.  The\nbios are checksummed before they are handed off to the block layer, so\neach bio is contiguous and only has pages from the same inode.\n\nChecksumming on a bio basis allows us to insert and modify the file\nchecksum items in large groups.  It also allows the checksumming to\nbe done more easily by async worker threads.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aadfeb6e39ad6bde080cb3ab23f4da57ccb25f4a",
      "tree": "9e5a1158b8857f26bfc7237adaa49e1784a163a4",
      "parents": [
        "c2a8b6e11009398ca9363d8ba8d4e7e40fb897fd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 29 09:10:27 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Add some extra debugging around file data checksum failures\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "179e29e488cc74f1e9bd67bc45f70b832740e9ec",
      "tree": "aa055d77b8d3f2b4bc59b1bb8a5b98ec0b223fb5",
      "parents": [
        "35ebb934bd7fcc7ca991b155b7980c3c4ff9f1a5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 01 11:28:41 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Fix a number of inline extent problems that Yan Zheng reported.\n\nThe fixes do a number of things:\n\n1) Most btrfs_drop_extent callers will try to leave the inline extents in\nplace.  It can truncate bytes off the beginning of the inline extent if\nrequired.\n\n2) writepage can now update the inline extent, allowing mmap writes to\ngo directly into the inline extent.\n\n3) btrfs_truncate_in_transaction truncates inline extents\n\n4) extent_map.c fixed to not merge inline extent mappings and hole\nmappings together\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b56baf5bedccd3258643b09289f17ceab3ddea52",
      "tree": "eb493a33d091f32deed028c4e66de0e9342c7628",
      "parents": [
        "689f9346612d96ab93890160cf2fe0df5217ab73"
      ],
      "author": {
        "name": "Yan",
        "email": "yanzheng@21cn.com",
        "time": "Mon Oct 29 12:01:05 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Minor fix for btrfs_csum_file_block.\n\nExecution should goto label \u0027insert\u0027 when \u0027btrfs_next_leaf\u0027 return a\nnon-zero value, otherwise the parameter \u0027slot\u0027 for\n\u0027btrfs_item_key_to_cpu\u0027 may be out of bounds. The original codes jump\nto  label \u0027insert\u0027 only when \u0027btrfs_next_leaf\u0027 return a negative\nvalue.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f578d4bd7e141dd03ca7e8695c1cc118c326e69e",
      "tree": "bb89f7548f3c537ed34ddf9d0ac71f3a6fefff85",
      "parents": [
        "5ee78ac70f6c01f2a5acf662c2af975665710edc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 25 15:42:56 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Optimize csum insertion to create larger items when possible\n\nThis reduces the number of calls to btrfs_extend_item and greatly lowers\nthe cpu usage while writing large files.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff79f8190b6e955ff7a71faf804a3017d526e657",
      "tree": "d3f56ae2822eb312eba760dcf4df1a058de5a699",
      "parents": [
        "cf786e79e3f96f4bc037c69e1a7afb5fb85c6111"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:22:25 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Add back file data checksumming\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db94535db75e67fab12ccbb7f5ee548e33fed891",
      "tree": "1ad7dfc82b003294a94ee87d7329b24b902b369f",
      "parents": [
        "1a5bc167f6707542b79a55452075525620ed43f5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:15:53 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Allow tree blocks larger than the page size\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f39d397dfbe140a14edecd4e73c34ce23c4f9ee",
      "tree": "280561e4b68d573590557dd27df656869eed8023",
      "parents": [
        "50b78c24d594e6985f36a9a8d8e2fb74e1664e90"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:14:19 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Create extent_buffer interface for large blocksizes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ec6b910fb330f29e169c9f502c3ac209515af8d1",
      "tree": "1b9854ebbc2f3cae4e8fb43dde53527bc7d7eb09",
      "parents": [
        "f2fdf02406de9273ad27c3b73f70aee745173f7b"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Jul 11 10:00:37 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Jul 11 10:00:37 2007 -0400"
      },
      "message": "Btrfs: trivial include fixups\n\nAlmost none of the files including module.h need to do so,\nremove them.\n\nInclude sched.h in extent-tree.c to silence a warning about cond_resched()\nbeing undeclared.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "54aa1f4dfdacd60a19c4471220b24e581be6f774",
      "tree": "1462277822cc63c00ad31b522457363a5c6be6ab",
      "parents": [
        "11bd143fc8243cf48c934dc1c4479a5aacf58ce3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "message": "Btrfs: Audit callers and return codes to make sure -ENOSPC gets up the stack\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8c2383c3dd2cb5bb39598ce4fa97154bc591020a",
      "tree": "68a9c491bfa19d572dca6b41e5dde7f05165c270",
      "parents": [
        "9ebefb180bad4914a31c4e1748ba187a30e1e990"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 18 09:57:58 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Jun 18 09:57:58 2007 -0400"
      },
      "message": "Subject: Rework btrfs_file_write to only allocate while page locks are held\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9ebefb180bad4914a31c4e1748ba187a30e1e990",
      "tree": "68d4833889fac64b1b69e6212afa9584cc88f2ff",
      "parents": [
        "f1ace244c8c1e16eaa5c8b3b5339849651e31ede"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 15 13:50:00 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Jun 15 13:50:00 2007 -0400"
      },
      "message": "Btrfs: patch queue: page_mkwrite\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f1ace244c8c1e16eaa5c8b3b5339849651e31ede",
      "tree": "f1a84930a17a6803072f390bab28eb43f6e95f5b",
      "parents": [
        "b79ab950f57c3260ee609ba41779019d21b8eb88"
      ],
      "author": {
        "name": "Aneesh",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Wed Jun 13 16:18:26 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Jun 13 16:18:26 2007 -0400"
      },
      "message": "btrfs: Code cleanup\nAttaching below is some of the code cleanups that i came across while\nreading the code.\n\na) alloc_path already calls init_path.\nb) Mention that btrfs_inode is the in memory copy.Ext4 have ext4_inode_info as\nthe in memory copy ext4_inode as the disk copy\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6cbd55707802b98843f953d1ae6d8f5bcd9a76c0",
      "tree": "5c2d9de53ab948c7aae31660dbabfb5a9fb649b5",
      "parents": [
        "8a712645c3fbbf43293af8640af337b7cf1fef01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "message": "Btrfs: add GPLv2\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5af3981c1878b0657b9babd2ef7ec98c2008cf2c",
      "tree": "084068ff090eab1a8235c6bdd9f49563a51675a6",
      "parents": [
        "84f54cfa78c81991e087309a9b379f25f1ffdb10"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 07:50:13 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 07:50:13 2007 -0400"
      },
      "message": "Btrfs: printk fixes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "84f54cfa78c81991e087309a9b379f25f1ffdb10",
      "tree": "2f2576ea31a276504e99090473e2c6829d1a9024",
      "parents": [
        "39279cc3d2704cfbf9c35dcb5bdd392159ae4625"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 07:43:08 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 07:43:08 2007 -0400"
      },
      "message": "Btrfs: 64 bit div fixes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1de037a43edf67f3a9f66dd197195b3c08febb16",
      "tree": "eba718d502f766f9527fcdc43961fb082641f3ac",
      "parents": [
        "3a686375629da5d2e2ad019265b66ef113c87455"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 29 15:17:08 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue May 29 15:17:08 2007 -0400"
      },
      "message": "Btrfs: fixup various fsx failures\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3a686375629da5d2e2ad019265b66ef113c87455",
      "tree": "1fbbedfcb92aeea38d90955ef11975187ddcc6f3",
      "parents": [
        "2b8d99a723a3186a69b5bd941a272dbecae9205b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 24 13:35:57 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu May 24 13:35:57 2007 -0400"
      },
      "message": "Btrfs: sparse files!\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "509659cde578d891445afd67d87121dd13e71596",
      "tree": "17d663e2fed7c1674c5cd9c02f30ef3a56afcaf2",
      "parents": [
        "8d7be552a733e53135a91d2d28f57ab87dc0e889"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 10 12:36:17 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu May 10 12:36:17 2007 -0400"
      },
      "message": "Btrfs: switch to crc32c instead of sha256\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "236454dfffb64a95ee01c50a215153f5de61c475",
      "tree": "605a8256dc83916c4daac5e709117cdd2fab3d64",
      "parents": [
        "a429e51371eee3c989160c003ee40bc3947c6a76"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 19 13:37:44 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu Apr 19 13:37:44 2007 -0400"
      },
      "message": "Btrfs: many file_write fixes, inline data\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a429e51371eee3c989160c003ee40bc3947c6a76",
      "tree": "863b55de8823be579264260a51407cd90aac103d",
      "parents": [
        "70b2befd0c8a4064715d8b340270650cc9d15af8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 18 16:15:28 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Apr 18 16:15:28 2007 -0400"
      },
      "message": "Btrfs: working file_write, reorganized key flags\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "70b2befd0c8a4064715d8b340270650cc9d15af8",
      "tree": "81171607c9ddf501e5c0233dc24d20d1a5b19858",
      "parents": [
        "b18c6685810af8e6763760711aece31ccc7a8ea8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 17 15:39:32 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Apr 17 15:39:32 2007 -0400"
      },
      "message": "Btrfs: rework csums and extent item ordering\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b18c6685810af8e6763760711aece31ccc7a8ea8",
      "tree": "db7220ed6fb418fbdc069ac422fc8b1c1598e92f",
      "parents": [
        "6567e837df07e43bffc08ac40858af8133a007bf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 17 13:26:50 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Apr 17 13:26:50 2007 -0400"
      },
      "message": "Btrfs: progress on file_write\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6567e837df07e43bffc08ac40858af8133a007bf",
      "tree": "3bf186544e5cd5d4ef5c755e1e3b8f678f6df198",
      "parents": [
        "b4100d64241fed93a3f821ddf59d11ab4443a3ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 16 09:22:45 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Apr 16 09:22:45 2007 -0400"
      },
      "message": "Btrfs: early work to file_write in big extents\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0dbc6245cefa36e19dff49c557ccf05e3063e9c",
      "tree": "88d01c9d2dbfc92aea35523f77e32d81310e3e56",
      "parents": [
        "1b05da2ee6217e7d55460d04335813fec25be4ca"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 10 12:36:36 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Apr 10 12:36:36 2007 -0400"
      },
      "message": "Btrfs: drop owner and parentid\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2da566edd8ce32ae2952b863ee634bcc2e7d63c1",
      "tree": "35dbd7064dbb6d60924bc1d80703ee2efc72ad03",
      "parents": [
        "7cfcc17e7f2334a0503331264c1340de4e564c85"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 02 15:43:21 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Apr 02 15:43:21 2007 -0400"
      },
      "message": "Btrfs: csum_verify_file_block locking fix\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5caf2a002901f0fde475371c4bf1c553b51884af",
      "tree": "1c262f723307fe924ea4e960761354f194f3843e",
      "parents": [
        "2c90e5d658424bc71b111eb5a972240d5d06fe86"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 02 11:20:42 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Apr 02 11:20:42 2007 -0400"
      },
      "message": "Btrfs: dynamic allocation of path struct\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d6025579531b7ea170ba283b171ff7a6bf7d0e12",
      "tree": "c3b742fda3a6ac8541c06011bb3c26635db99212",
      "parents": [
        "22b0ebda6c63a1ad66b6a9e806bd226a4a03a049"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 30 14:27:56 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Mar 30 14:27:56 2007 -0400"
      },
      "message": "Btrfs: corruption hunt continues\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f254e52c1ce550fdaa0d31f5e068f0d67c2485d4",
      "tree": "1232b7e16b6f0b1b1b150c5df396452cac5e3853",
      "parents": [
        "75dfe3960e602e63ea42ac7a2a0520832b189ffa"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 15:15:27 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu Mar 29 15:15:27 2007 -0400"
      },
      "message": "Btrfs: verify csums on read\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9773a788681db1f5c2701b7433737fdca61a14ba",
      "tree": "9d5f79f7a0e3b0f5e89509b42a3d8134364bed32",
      "parents": [
        "f4b9aa8d3b877d0a6044a6d6d9a44b29cab9e265"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 11:26:26 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Mar 27 11:26:26 2007 -0400"
      },
      "message": "Btrfs: byte offsets for file keys\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "71951f35a6e413f2bfbd41829af8cf10a890aeb6",
      "tree": "eef4dd2ab8dd6af6353c9600b6613b8ca50691c4",
      "parents": [
        "9a6f11ed8f421fb1cc7b37390e32316ff4701f5d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 09:16:29 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Mar 27 09:16:29 2007 -0400"
      },
      "message": "Btrfs: add generation field to file extent\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dee26a9f7aab7ffe1193cd1415b23a69426acc9f",
      "tree": "7271c85340349817b92647d8882247478192d1bb",
      "parents": [
        "4730a4bc5bf3861d2cb40999374b3ac0ee2a1e0d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:00:06 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Mar 26 16:00:06 2007 -0400"
      },
      "message": "btrfs_get_block, file read/write\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2e635a278354a1a7951e16cfea4c247d6d0e7c99",
      "tree": "4b94d54ddcd7cb184681260738b68caef4edee81",
      "parents": [
        "1261ec42b3d3a3ad878bd172144940e3ac710749"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 21 11:12:56 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Mar 21 11:12:56 2007 -0400"
      },
      "message": "Btrfs: initial move to kernel module land\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9f5fae2fe6dc35b46bf56183f11398451851cb3f",
      "tree": "e72b03149662b8e5d4fe491c36f3cf66c5df5437",
      "parents": [
        "631d7d950a2f2706f5c86858402c1ec50b9801f1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 20 14:38:32 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Mar 20 14:38:32 2007 -0400"
      },
      "message": "Btrfs: Add inode map, and the start of file extent items\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1e1d27017c5986c1ea81181506042cf9cba3f6ea",
      "tree": "aad9439d33f45543d7b041c3609ab180c2283526",
      "parents": [
        "1d4f6404de26df49eb8452f8fdf7672b59f407fc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 15 19:03:33 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu Mar 15 19:03:33 2007 -0400"
      },
      "message": "Btrfs: add inode item\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ]
}
