)]}'
{
  "log": [
    {
      "commit": "a76a3cd40c1127ca199d4f7f37bf0d541bf44eb2",
      "tree": "a91e91d9f67ce8bd314cebdacc458315d3e54275",
      "parents": [
        "a62b940160d8125016e85046e68ae621c99e751f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Oct 09 11:46:29 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 09 11:46:29 2008 -0400"
      },
      "message": "Btrfs: Count space allocated to file in bytes\n\nThis patch makes btrfs count space allocated to file in bytes instead\nof 512 byte sectors.\n\nEverything else in btrfs uses a byte count instead of sector sizes or\nblocks sizes, so this fits better.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "a62b940160d8125016e85046e68ae621c99e751f",
      "tree": "c26ebe1ccf229f829513e1fc85c8110928187e13",
      "parents": [
        "30c43e2444c16afe3b2130f40ad273541bf3dc36"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 16:31:08 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 16:31:08 2008 -0400"
      },
      "message": "Btrfs: cast bio-\u003ebi_sector to a u64 before shifting\n\nOn 32 bit machines without CONFIG_LBD, the bi_sector field is only 32 bits.\nBtrfs needs to cast it before shifting up, or we end up doing IO into\nthe wrong place.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "30c43e2444c16afe3b2130f40ad273541bf3dc36",
      "tree": "d15296f70f1a66c0248008bfa77494593f28f2a2",
      "parents": [
        "cb843a6f513a1a91c54951005e60bd9b95bdf973"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 12:24:01 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 12:24:01 2008 -0400"
      },
      "message": "Btrfs: remove last_log_alloc allocator optimization\n\nThe tree logging code was trying to separate tree log allocations\nfrom normal metadata allocations to improve writeback patterns during\nan fsync.\n\nBut, the code was not effective and ended up just mixing tree log\nblocks with regular metadata.  That seems to be working fairly well,\nso the last_log_alloc code can be removed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "cb843a6f513a1a91c54951005e60bd9b95bdf973",
      "tree": "12edfb1154691f1a8aaeeadb97899397574aa785",
      "parents": [
        "323ac95bce442bbde514e3ce57e840402f80d909"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 12:30:02 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 03 12:30:02 2008 -0400"
      },
      "message": "Btrfs: O_DIRECT writes via buffered writes + invaldiate\n\nThis reworks the btrfs O_DIRECT write code a bit.  It had always fallen\nback to buffered IO and done an invalidate, but needed to be updated\nfor the data\u003dordered code.  The invalidate wasn\u0027t actually removing pages\nbecause they were still inside an ordered extent.\n\nThis also combines the O_DIRECT/O_SYNC paths where possible, and kicks\noff IO in the main btrfs_file_write loop to keep the pipe down the the\ndisk full as we process long writes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "323ac95bce442bbde514e3ce57e840402f80d909",
      "tree": "9b2241ed4de746087fdfb66f83fc142279648f9b",
      "parents": [
        "cf749823857230017c86504bfdc70524f929ba96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 01 19:05:46 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 01 19:05:46 2008 -0400"
      },
      "message": "Btrfs: don\u0027t read leaf blocks containing only checksums during truncate\n\nChecksum items take up a significant portion of the metadata for large files.\nIt is possible to avoid reading them during truncates by checking the keys in\nthe higher level nodes.\n\nIf a given leaf is followed by another leaf where the lowest key is a checksum\nitem from the same file, we know we can safely delete the leaf without\nreading it.\n\nFor a 32GB file on a 6 drive raid0 array, Btrfs needs 8s to delete\nthe file with a cold cache.  It is read bound during the run.\n\nWith this change, Btrfs is able to delete the file in 0.5s\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "cf749823857230017c86504bfdc70524f929ba96",
      "tree": "bea09bb1df8954b1ed1629ea4269bc596ad83ef6",
      "parents": [
        "83afeac42c5680b0b70d64fb8c4724cf05483fc2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Oct 01 19:11:18 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 01 19:11:18 2008 -0400"
      },
      "message": "Btrfs: fix deadlock between alloc_mutex/chunk_mutex\n\nThis fixes a deadlock that happens between the alloc_mutex and chunk_mutex.\nProcess A comes in, decides to do a do_chunk_alloc, which takes the\nchunk_mutex, and is holding the alloc_mutex because the only way you get to\ndo_chunk_alloc is by holding the alloc_mutex.  btrfs_alloc_chunk does its thing\nand goes to insert a new item, which results in a cow of the block.\n\nWe get into del_pending_extents from there, where if we need to be rescheduled\nwe drop the alloc_mutex and schedule.  At this point process B comes in to do\nan allocation and gets the alloc_mutex, and because process A did not do the\nchunk allocation completely it thinks its a good time to do a chunk allocation\nas well, and hangs on the chunk_mutex.\n\nProcess A wakes up and tries to take the alloc_mutex and cannot.  The way to\nfix this is do a mutex_trylock() on chunk_mutex.  If we return 0 we didn\u0027t get\nthe lock, and if this is just a \"hey it may be a good time to allocate a chunk\"\nthen we just exit.  If we are trying to force an allocation then we reschedule\nand keep trying to acquire the chunk_mutex.  If once we acquire it the space is\nalready full then we can just exit, otherwise we can continue with the chunk\nallocation.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "83afeac42c5680b0b70d64fb8c4724cf05483fc2",
      "tree": "a81261351ae676ed02f86760c07ed73a63709c8f",
      "parents": [
        "0463bb4e8d2f717a9bf3be6cc12c0aec51cc261d"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "meyering@redhat.com",
        "time": "Wed Oct 01 19:09:51 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 01 19:09:51 2008 -0400"
      },
      "message": "Btrfs: disk-io.c (open_ctree): avoid leaks upon allocation failure\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0463bb4e8d2f717a9bf3be6cc12c0aec51cc261d",
      "tree": "08d4cfb8e0ddbada2399e2d4477fdf29b2521cd3",
      "parents": [
        "75ccf47d13bfb66de7faf596bfe497b9af7aaa40"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "meyering@redhat.com",
        "time": "Wed Oct 01 19:09:04 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 01 19:09:04 2008 -0400"
      },
      "message": "Btrfs: disk-io.c (open_ctree): Don\u0027t deref. NULL upon failed kzalloc\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "75ccf47d13bfb66de7faf596bfe497b9af7aaa40",
      "tree": "e1b06bc9afec8f6b48cc2fb00c5e1e4d4dda2e0b",
      "parents": [
        "45b8c9a8b1e15bf79c2c17ec217adf96785f8011"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 30 19:24:06 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 30 19:36:34 2008 -0400"
      },
      "message": "Btrfs: fix multi-device code to use raid policies set by mkfs\n\nWhen reading in block groups, a global mask of the available raid policies\nshould be adjusted based on the types of block groups found on disk.  This\nglobal mask is then used to decide which raid policy to use for new\nblock groups.\n\nThe recent allocator changes dropped the call that updated the global\nmask, making all the block groups allocated at run time single striped\nonto a single drive.\n\nThis also fixes the async worker threads to set any thread that uses\nthe requeue mechanism as busy.  This allows us to avoid blocking\non get_request_wait for the async bio submission threads.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45b8c9a8b1e15bf79c2c17ec217adf96785f8011",
      "tree": "591260c2db70755b6913c379631e81df929abb02",
      "parents": [
        "d352ac68148b69937d39ca5d48bcc4478e118dbf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Sep 30 14:40:06 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 30 14:40:06 2008 -0400"
      },
      "message": "Btrfs: fix seekiness due to finding the wrong block group\n\nThis patch fixes a problem where we end up seeking too much when *last_ptr is\nvalid.  This happens because btrfs_lookup_first_block_group only returns a\nblock group that starts on or after the given search start, so if the\nsearch_start is in the middle of a block group it will return the block group\nafter the given search_start, which is suboptimal.\n\nThis patch fixes that by doing a btrfs_lookup_block_group, which will return\nthe block group that contains the given search start.  If we fail to find a\nblock group, we fall back on btrfs_lookup_first_block_group so we can find the\nnext block group, not sure if this is absolutely needed, but better safe than\nsorry.\n\nAlso if we can\u0027t find the block group that we need, or it happens to not be of\nthe right type, we need to add empty_cluster since *last_ptr could point to a\nmismatched block group, which means we need to start over with empty_cluster\nadded to total needed.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d352ac68148b69937d39ca5d48bcc4478e118dbf",
      "tree": "7951dd7311999d9e77766acdc7f8e93de97874d8",
      "parents": [
        "9a5e1ea1e1e539e244a54afffc330fc368376ab9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 15:18:18 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 15:18:18 2008 -0400"
      },
      "message": "Btrfs: add and improve comments\n\nThis improves the comments at the top of many functions.  It didn\u0027t\ndive into the guts of functions because I was trying to\navoid merging problems with the new allocator and back reference work.\n\nextent-tree.c and volumes.c were both skipped, and there is definitely\nmore work todo in cleaning and commenting the code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9a5e1ea1e1e539e244a54afffc330fc368376ab9",
      "tree": "87b48444ba411ff6d87a87190faf5a3d912765d1",
      "parents": [
        "8c8bee1d7ca47fc75b6bd24a8085c525a2394c02"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 11:24:41 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 11:24:41 2008 -0400"
      },
      "message": "Btrfs: drop WARN_ON from btrfs_add_leaf_ref\n\nbtrfs_add_leaf_ref was doing checks on the objects it found in the\nrbtree to make sure they were properly linked into the tree.  But, the field\nit was checking can be safely changed outside of the tree spin lock.\n\nThe WARN_ON was for debugging the initial implementation and can be\nsafely removed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "8c8bee1d7ca47fc75b6bd24a8085c525a2394c02",
      "tree": "eb10010a7baa7ab73b068f9d9a95d15b7d79e300",
      "parents": [
        "1a40e23b95da45051ee4d74374c58ae87a14051c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 11:19:10 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 29 11:19:10 2008 -0400"
      },
      "message": "Btrfs: Wait for IO on the block device inodes of newly added devices\n\nbtrfs-vol -a /dev/xxx will zero the first and last two MB of the device.\nThe kernel code needs to wait for this IO to finish before it adds\nthe device.\n\nbtrfs metadata IO does not happen through the block device inode.  A\nseparate address space is used, allowing the zero filled buffer heads in\nthe block device inode to be written to disk after FS metadata starts\ngoing down to the disk via the btrfs metadata inode.\n\nThe end result is zero filled metadata blocks after adding new devices\ninto the filesystem.\n\nThe fix is a simple filemap_write_and_wait on the block device inode\nbefore actually inserting it into the pool of available devices.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1a40e23b95da45051ee4d74374c58ae87a14051c",
      "tree": "77faffd3f9d3a26c22e6cf03b83762c95d687596",
      "parents": [
        "5b21f2ed3f2947b5195b65c9fdbdd9e52904cc03"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 26 10:09:34 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 26 10:09:34 2008 -0400"
      },
      "message": "Btrfs: update space balancing code\n\nThis patch updates the space balancing code to utilize the new\nbackref format.  Before, btrfs-vol -b would break any COW links\non data blocks or metadata.  This was slow and caused the amount\nof space used to explode if a large number of snapshots were present.\n\nThe new code can keeps the sharing of all data extents and\nmost of the tree blocks.\n\nTo maintain the sharing of data extents, the space balance code uses\na seperate inode hold data extent pointers, then updates the references\nto point to the new location.\n\nTo maintain the sharing of tree blocks, the space balance code uses\nreloc trees to relocate tree blocks in reference counted roots.\nThere is one reloc tree for each subvol, and all reloc trees share\nsame root key objectid. Reloc trees are snapshots of the latest\ncommitted roots of subvols (root-\u003ecommit_root).\n\nTo relocate a tree block referenced by a subvol, there are two steps.\nCOW the block through subvol\u0027s reloc tree, then update block pointer in\nthe subvol to point to the new block. Since all reloc trees share\nsame root key objectid, doing special handing for tree blocks\nowned by them is easy. Once a tree block has been COWed in one\nreloc tree, we can use the resulting new block directly when the\nsame block is required to COW again through other reloc trees.\nIn this way, relocated tree blocks are shared between reloc trees,\nso they are also shared between subvols.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5b21f2ed3f2947b5195b65c9fdbdd9e52904cc03",
      "tree": "9af8f539ac487c163f3207bc065767c3c8b37ae7",
      "parents": [
        "e465768938f95388723b0fd3c50a0ae48173edb9"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 26 10:05:38 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 26 10:05:38 2008 -0400"
      },
      "message": "Btrfs: extent_map and data\u003dordered fixes for space balancing\n\n* Add an EXTENT_BOUNDARY state bit to keep the writepage code\nfrom merging data extents that are in the process of being\nrelocated.  This allows us to do accounting for them properly.\n\n* The balancing code relocates data extents indepdent of the underlying\ninode.  The extent_map code was modified to properly account for\nthings moving around (invalidating extent_map caches in the inode).\n\n* Don\u0027t take the drop_mutex in the create_subvol ioctl.  It isn\u0027t\nrequired.\n\n* Fix walking of the ordered extent list to avoid races with sys_unlink\n\n* Change the lock ordering rules.  Transaction start goes outside\nthe drop_mutex.  This allows btrfs_commit_transaction to directly\ndrop the relocation trees.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e465768938f95388723b0fd3c50a0ae48173edb9",
      "tree": "0f624a9a98dedfafae902e12b384d27e1100cd3a",
      "parents": [
        "e8569813849b5da394a195c7e76b4faa452b12d1"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 26 10:04:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 26 10:04:53 2008 -0400"
      },
      "message": "Btrfs: Add shared reference cache\n\nBtrfs has a cache of reference counts in leaves, allowing it to\navoid reading tree leaves while deleting snapshots.  To reduce\ncontention with multiple subvolumes, this cache is private to each\nsubvolume.\n\nThis patch adds shared reference cache support. The new space\nbalancing code plays with multiple subvols at the same time, So\nthe old per-subvol reference cache is not well suited.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e8569813849b5da394a195c7e76b4faa452b12d1",
      "tree": "87b09cd5bfc3dda16e181c247fdd7f77b6c463ea",
      "parents": [
        "24ab9cd85c11bccacbd0cce7f8e1aebd4930404c"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 26 10:05:48 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 26 10:05:48 2008 -0400"
      },
      "message": "Btrfs: allocator fixes for space balancing update\n\n* Reserved extent accounting:  reserved extents have been\nallocated in the rbtrees that track free space but have not\nbeen allocated on disk.  They were never properly accounted for\nin the past, making it hard to know how much space was really free.\n\n* btrfs_find_block_group used to return NULL for block groups that\nhad been removed by the space balancing code.  This made it hard\nto account for space during the final stages of a balance run.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "24ab9cd85c11bccacbd0cce7f8e1aebd4930404c",
      "tree": "2ace993dd54bb6dd94fdd4c0cb03813c6bf4c6a3",
      "parents": [
        "4434c33c7f233a7ee5dcaf357fbf795818ea8861"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 24 14:51:30 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Btrfs: Raise thresholds for metadata writeback\n\nBtrfs metadata writeback is fairly expensive.  Once a tree block is written\nit must be cowed before it can be changed again.  The btree writepages\ncode has a threshold based on a count of dirty btree bytes which is\nupdated as IO is sent out.\n\nThis changes btree_writepages to skip the writeout if there are less\nthan 32MB of dirty bytes from the btrees, improving performance\nacross many workloads.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4434c33c7f233a7ee5dcaf357fbf795818ea8861",
      "tree": "76ba6f9d94368b176aff788a29449fe759512043",
      "parents": [
        "2b1f55b0f0d0d1a66470ef4ea2696cd5dd741a12"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 24 12:50:10 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Btrfs: fix sleep with spinlock held during unmount\n\nThe code to free block groups needs to drop the space info spin lock\nbefore calling btrfs_remove_free_space_cache (which can schedule).\n\nThis is safe because at unmount time, nobody else is going to play\nwith the block groups.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2b1f55b0f0d0d1a66470ef4ea2696cd5dd741a12",
      "tree": "980019fac9b0891e682bc7d9a8c8a58284b467fc",
      "parents": [
        "9b49c9b9f93e148815f2544d0c91f43b6d72eea9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 24 11:48:04 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Remove Btrfs compat code for older kernels\n\nBtrfs had compatibility code for kernels back to 2.6.18.  These have\nbeen removed, and will be maintained in a separate backport\ngit tree from now on.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9b49c9b9f93e148815f2544d0c91f43b6d72eea9",
      "tree": "2cd29ee73e641a5069128d87a668d4fff3626502",
      "parents": [
        "60582d1e933649f14f46f816bb75049058679e01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 24 11:23:25 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Btrfs: Fix allocation completions in tree log replay\n\nAfter a crash, the tree log code uses btrfs_alloc_logged_extent to\nrecord allocations of data extents that it finds in the log tree.  These\ncome in basically random order, which does not fit how\nbtrfs_remove_free_space() expects to be called.\n\nbtrfs_remove_free_space was changed to support recording an extent\nallocation in the middle of a region of free space.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "60582d1e933649f14f46f816bb75049058679e01",
      "tree": "1ebd09134e7595d3bd77d444b8d5ddd380400a27",
      "parents": [
        "b4f6c45dfbf84f47c21f73f6370ad1292b0627fd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 12:25:16 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Add Btrfs to fs/Kconfig and fs/Makefile\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4f6c45dfbf84f47c21f73f6370ad1292b0627fd",
      "tree": "a85c3a7b304e768f1f3321f39d0ae6c4402cc1ee",
      "parents": [
        "aef8755711a28bb0ecde7780ae6613fcb62cf6f7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 24 11:05:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:41:59 2008 -0400"
      },
      "message": "Update Btrfs files for in-kernel usage\n\nbtrfs had magic to put the chagneset id into a printk on module load.\nThis removes that from the Makefile and hardcodes the printk to print\n\"Btrfs\"\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aef8755711a28bb0ecde7780ae6613fcb62cf6f7",
      "tree": "407909172c536be3336e8f3c9ec39a3003c29c3f",
      "parents": [
        "72d31053f62c4bc464c2783974926969614a8649",
        "34353029534a08e41cfb8be647d734b9ce9ebff8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:32:36 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 15:33:18 2008 -0400"
      },
      "message": "Merge Btrfs into fs/btrfs\n"
    },
    {
      "commit": "34353029534a08e41cfb8be647d734b9ce9ebff8",
      "tree": "00aaf0f34c2bf5e4a11541ec5f2fff7bc5473df4",
      "parents": [
        "31840ae1a6b433ca0e6a8d341756ff478bbf959e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 23 20:19:49 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Fix race against disk_i_size updates\n\nThe code to update the on disk i_size happens before the\nordered_extent record is removed.  So, it is possible for multiple\nordered_extent completion routines to run at the same time, and to\nfind each other in the ordered tree.\n\nThe end result is they both decide not to update disk_i_size, leaving\nit too small.  This temporary fix just puts the updates inside\nthe extent_mutex.  A real solution would be stronger ordering of\ndisk_i_size updates against removing the ordered extent from the tree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "31840ae1a6b433ca0e6a8d341756ff478bbf959e",
      "tree": "9343db596aec175e9640aa2800b80f01496d7047",
      "parents": [
        "1c2308f8e7d8491467e0095af2b01500f1b70819"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Sep 23 13:14:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Full back reference support\n\nThis patch makes the back reference system to explicit record the\nlocation of parent node for all types of extents. The location of\nparent node is placed into the offset field of backref key. Every\ntime a tree block is balanced, the back references for the affected\nlower level extents are updated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1c2308f8e7d8491467e0095af2b01500f1b70819",
      "tree": "598504d248cbd8b0b2a5ea90468db6e7076c92cc",
      "parents": [
        "ce3ed71a58094544da1e1dc4723f1f553bb5b2d5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 23 13:14:13 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Add check for tree-log roots in btrfs_alloc_reserved_extents\n\nTree log blocks are only reserved, and should not ever get fully\nallocated on disk.  This check makes sure they stay out of the\nextent tree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ce3ed71a58094544da1e1dc4723f1f553bb5b2d5",
      "tree": "8622438279a58a424782a5267eac73a0983144ad",
      "parents": [
        "0f9dd46cda36b8de3b9f48bc42bd09d20b9c3b52"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 23 13:14:12 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Checksum tree blocks in the background\n\nTree blocks were using async bio submission, but the sum was still\nbeing done directly during writepage.  This moves the checksumming\ninto the worker thread.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f9dd46cda36b8de3b9f48bc42bd09d20b9c3b52",
      "tree": "2dcba11fd2fb5a4227fd8f8d2d076641f115a7b4",
      "parents": [
        "ef8bbdfe7e12dc9b4e80756f6d606c4639c65851"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Sep 23 13:14:11 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: free space accounting redo\n\n1) replace the per fs_info extent_io_tree that tracked free space with two\nrb-trees per block group to track free space areas via offset and size.  The\nreason to do this is because most allocations come with a hint byte where to\nstart, so we can usually find a chunk of free space at that hint byte to satisfy\nthe allocation and get good space packing.  If we cannot find free space at or\nafter the given offset we fall back on looking for a chunk of the given size as\nclose to that given offset as possible.  When we fall back on the size search we\nalso try to find a slot as close to the size we want as possible, to avoid\nbreaking small chunks off of huge areas if possible.\n\n2) remove the extent_io_tree that tracked the block group cache from fs_info and\nreplaced it with an rb-tree thats tracks block group cache via offset.  also\nadded a per space_info list that tracks the block group cache for the particular\nspace so we can lookup related block groups easily.\n\n3) cleaned up the allocation code to make it a little easier to read and a\nlittle less complicated.  Basically there are 3 steps, first look from our\nprovided hint.  If we couldn\u0027t find from that given hint, start back at our\noriginal search start and look for space from there.  If that fails try to\nallocate space if we can and start looking again.  If not we\u0027re screwed and need\nto start over again.\n\n4) small fixes.  there were some issues in volumes.c where we wouldn\u0027t allocate\nthe rest of the disk.  fixed cow_file_range to actually pass the alloc_hint,\nwhich has helped a good bit in making the fs_mark test I run have semi-normal\nresults as we run out of space.  Generally with data allocations we don\u0027t track\nwhere we last allocated from, so everytime we did a data allocation we\u0027d search\nthrough every block group that we have looking for free space.  Now searching a\nblock group with no free space isn\u0027t terribly time consuming, it was causing a\nslight degradation as we got more data block groups.  The alloc_hint has fixed\nthis slight degredation and made things semi-normal.\n\nThere is still one nagging problem I\u0027m working on where we will get ENOSPC when\nthere is definitely plenty of space.  This only happens with metadata\nallocations, and only when we are almost full.  So you generally hit the 85%\nmark first, but sometimes you\u0027ll hit the BUG before you hit the 85% wall.  I\u0027m\nstill tracking it down, but until then this seems to be pretty stable and make a\nsignificant performance gain.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ef8bbdfe7e12dc9b4e80756f6d606c4639c65851",
      "tree": "af8ba03fb6113dd9dfaf37f15c70595bfd8b2a92",
      "parents": [
        "f25956cc582f5954033cca3f9488c0a5d5193541"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Sep 23 13:14:11 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: fix cache_block_group error handling\n\ncache block group had a few bugs in the error handling code,\nthis makes sure paths get properly released and the correct return value\ngoes out.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f25956cc582f5954033cca3f9488c0a5d5193541",
      "tree": "0ade2c55ef8283931f947199447f7aff454c9b57",
      "parents": [
        "23a07867b78ee0f33b01466e52bb608c336b26ee"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 12 15:32:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Fix leaf overflow check in btrfs_insert_empty_items\n\nIt was incorrectly adding an extra sizeof(struct btrfs_item) and causing\nfalse positives (oops)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "23a07867b78ee0f33b01466e52bb608c336b26ee",
      "tree": "eef52f02008281b9f20e8837f2914370e88b1c0a",
      "parents": [
        "9623f9a3894ec95fe140ee5460bb840ac53bc6a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 12 08:57:47 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Fix mismerge in block header checks\n\nI had incorrectly disabled the check for the block number being correct\nin the header block.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9623f9a3894ec95fe140ee5460bb840ac53bc6a0",
      "tree": "e83d9907093f032cf4b5a4260815dd832bd5fb3f",
      "parents": [
        "d0c803c4049c5ca322d4795d8b74f28768603e0e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 17:42:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Disable the dir fsync optimization to skip logging the dir sometimes\n\nMore testing has turned up a bug, disable this for now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0c803c4049c5ca322d4795d8b74f28768603e0e",
      "tree": "b4c4f11b2f5938ad183a1771cd0b9e122709e2ff",
      "parents": [
        "31ff1cd25d376e8f499d450de177dffadc9e1c56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 16:17:57 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Record dirty pages tree-log pages in an extent_io tree\n\nThis is the same way the transaction code makes sure that all the\nother tree blocks are safely on disk.  There\u0027s an extent_io tree\nfor each root, and any blocks allocated to the tree logs are\nrecorded in that tree.\n\nAt tree-log sync, the extent_io tree is walked to flush down the\ndirty pages and wait for them.\n\nThe main benefit is less time spent walking the tree log and skipping\nclean pages, and getting sequential IO down to the drive.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "31ff1cd25d376e8f499d450de177dffadc9e1c56",
      "tree": "aa91844a70dcf0e285dd23318b5c80639c72b669",
      "parents": [
        "d00aff00139b40f2e9c60299d76aac29d72e48ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 16:17:57 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Copy into the log tree in big batches\n\nThis changes the log tree copy code to use btrfs_insert_items and\nto work in larger batches where possible.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d00aff00139b40f2e9c60299d76aac29d72e48ba",
      "tree": "3ef3d84c42dc809cd92ab6339abd968fdede357d",
      "parents": [
        "3a5f1d458ad1610a06e38f0be2fbc6ac215439c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 15:54:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Optimize tree log block allocations\n\nSince tree log blocks get freed every transaction, they never really\nneed to be written to disk.  This skips the step where we update\nmetadata to record they were allocated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3a5f1d458ad1610a06e38f0be2fbc6ac215439c0",
      "tree": "00fc015c5b494c7307d5dcae61b2d5d5ed6bf587",
      "parents": [
        "49eb7e46d47ea72a9bd2a5f8cedb04f5159cc277"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 15:53:37 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Optimize btree walking while logging inodes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "49eb7e46d47ea72a9bd2a5f8cedb04f5159cc277",
      "tree": "c3d05588c3cf73453673206214fadedc07bd79d7",
      "parents": [
        "98509cfc5a6857bddcfe4b19a9539726655ec9bd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 15:53:12 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Dir fsync optimizations\n\nDrop i_mutex during the commit\n\nDon\u0027t bother doing the fsync at all unless the dir is marked as dirtied\nand needing fsync in this transaction.  For directories, this means\nthat someone has unlinked a file from the dir without fsyncing the\nfile.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98509cfc5a6857bddcfe4b19a9539726655ec9bd",
      "tree": "187cf35f0ebd6c7ce6f17a1d0e3c6b18d0afd85a",
      "parents": [
        "8d5bf1cb35ea29795862ff0ea2f4c4d7e22727f3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 15:51:43 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Fix releasepage to properly keep dirty and writeback pages\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8d5bf1cb35ea29795862ff0ea2f4c4d7e22727f3",
      "tree": "1c9af9227dfb34a47230ebefbb0eed4f3125bcfe",
      "parents": [
        "4bef084857ab8fe71cf49eae349c25e440a49150"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 11 15:51:21 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Update the highest objectid in a root after log replay is done\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4bef084857ab8fe71cf49eae349c25e440a49150",
      "tree": "7a9a850515538421c2976f8ee4c1bea5ceced59c",
      "parents": [
        "325cd4bafeb6cfb44addd6e807a9b74170d1be31"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 08 11:18:08 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Tree logging fixes\n\n* Pin down data blocks to prevent them from being reallocated like so:\n\ntrans 1: allocate file extent\ntrans 2: free file extent\ntrans 3: free file extent during old snapshot deletion\ntrans 3: allocate file extent to new file\ntrans 3: fsync new file\n\nBefore the tree logging code, this was legal because the fsync\nwould commit the transation that did the final data extent free\nand the transaction that allocated the extent to the new file\nat the same time.\n\nWith the tree logging code, the tree log subtransaction can commit\nbefore the transaction that freed the extent.  If we crash,\nwe\u0027re left with two different files using the extent.\n\n* Don\u0027t wait in start_transaction if log replay is going on.  This\navoids deadlocks from iput while we\u0027re cleaning up link counts in the\nreplay code.\n\n* Don\u0027t deadlock in replay_one_name by trying to read an inode off\nthe disk while holding paths for the directory\n\n* Hold the buffer lock while we mark a buffer as written.  This\ncloses a race where someone is changing a buffer while we write it.\nThey are supposed to mark it dirty again after they change it, but\nthis violates the cow rules.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "325cd4bafeb6cfb44addd6e807a9b74170d1be31",
      "tree": "5c3c600bdf545a7d2152981a49fb46b1e8ddc5a0",
      "parents": [
        "6527cdbe68a27a2ee745f36d001aa32d0f46f370"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 05 16:43:54 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: properly set blocksize when adding new device.\n\n---\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6527cdbe68a27a2ee745f36d001aa32d0f46f370",
      "tree": "2525855633856050a854cabd6dc46b3c955d3b40",
      "parents": [
        "b214107eda845f9a5851ae198f5b972e0dc30c45"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 05 16:43:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Update find free objectid function for orphan cleanup code\n\nOrphan items use BTRFS_ORPHAN_OBJECTID (-5UUL) as key objectid. This\naffects the find free objectid functions, inode objectid can easily\noverflow after orphan file cleanup.\n\n---\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b214107eda845f9a5851ae198f5b972e0dc30c45",
      "tree": "9ca3127891a90b72f72477b48217d05fdfcaa83c",
      "parents": [
        "a237d2a2bd67eb2b57b87c1e1d3d802d078d4ba7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 05 16:43:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: trivial sparse fixes\n\nFix a bunch of trivial sparse complaints.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a237d2a2bd67eb2b57b87c1e1d3d802d078d4ba7",
      "tree": "86da675a6cb234c689f8b7da024d6e01164df2d1",
      "parents": [
        "ad3d81ba8f2880dfa3ee518c779a7ea09a024520"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 05 16:43:29 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "remove unused function btrfs_ilookup\n\nbtrfs_ilookup is unused, which is good because a normal filesystem\nshould never have to use ilookup anyway.  Remove it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ad3d81ba8f2880dfa3ee518c779a7ea09a024520",
      "tree": "5c22c9506faea220ba2a088811c03297211a1194",
      "parents": [
        "50ec891cc54fb865c4c40c45845e60123e0e66ca"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 05 16:43:28 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: missing endianess conversion in insert_new_root\n\nAdd two missing endianess conversions in this function, found by sparse.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "50ec891cc54fb865c4c40c45845e60123e0e66ca",
      "tree": "f428fec2622044cd6b0a3adc90f0d7be6b62b6b9",
      "parents": [
        "91c0827de247303c6dfc40a8ec9d8305e1d07986"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 05 16:43:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: cleanup d_obtain_alias useage\n\nd_obtain_alias is intended as a tailcall that can pass in errors encoded\nin the inode pointer if needed, so use it that way instead of\nduplicating the error handling.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "91c0827de247303c6dfc40a8ec9d8305e1d07986",
      "tree": "32f383b84c00f220c23968ffee258c0744b03e2f",
      "parents": [
        "e02119d5a7b4396c5a872582fddc8bd6d305a70a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 05 16:43:06 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Rev the disk format\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e02119d5a7b4396c5a872582fddc8bd6d305a70a",
      "tree": "825efe2a79dbca8d61256183f3526a5b5dc40dc6",
      "parents": [
        "a1b32a5932cfac7c38b442582285f3da2a09dfd8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 05 16:13:11 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Add a write ahead tree log to optimize synchronous operations\n\nFile syncs and directory syncs are optimized by copying their\nitems into a special (copy-on-write) log tree.  There is one log tree per\nsubvolume and the btrfs super block points to a tree of log tree roots.\n\nAfter a crash, items are copied out of the log tree and back into the\nsubvolume.  See tree-log.c for all the details.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a1b32a5932cfac7c38b442582285f3da2a09dfd8",
      "tree": "d468c51c7391ee1a0cfcc6ff1e76e11c01646efe",
      "parents": [
        "95819c05732c511338b43c115ffbcee978c02888"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 05 16:09:51 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Add debugging checks to track down corrupted metadata\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "95819c05732c511338b43c115ffbcee978c02888",
      "tree": "4622f326207c53e42e7c9e8e8d14960e17190a30",
      "parents": [
        "eaa47d8612783807ef9703ebc9bf0d0f0455bf62"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Aug 28 06:21:17 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: optimize btrget/set/removexattr\n\nbtrfs actually stores the whole xattr name, including the prefix ondisk,\nso using the generic resolver that strips off the prefix is not very\nhelpful.  Instead do the real ondisk xattrs manually and only use the\ngeneric resolver for synthetic xattrs like ACLs.\n\n(Sorry Josef for guiding you towards the wrong direction here intially)\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eaa47d8612783807ef9703ebc9bf0d0f0455bf62",
      "tree": "aae589fac6573e2974935b357bfa687dbab2e718",
      "parents": [
        "eab922ec8907b8c506e799785e7e2d16eabe50e4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Aug 28 06:21:16 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "btrfs: optmize listxattr\n\nThe -\u003elist handler is really not useful at all, because we always call\nbtrfs_xattr_generic_list anyway.  After this is done\nfind_btrfs_xattr_handler becomes unused, and it becomes obvious that the\ntemporary name buffer allocation isn\u0027t needed but we can directly copy\ninto the supplied buffer.\n\nTested with various getfattr -d calls on varying xattr lists.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eab922ec8907b8c506e799785e7e2d16eabe50e4",
      "tree": "d983401313631d24240524d40c9ef1d19ed4e5ac",
      "parents": [
        "639cb58675ce9b507eed9c3d6b3335488079b21a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Aug 28 06:21:15 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: compile when posix acl\u0027s are disabled\n\nThis patch makes btrfs so it will compile properly when acls are disabled.  I\ntested this and it worked with CONFIG_FS_POSIX_ACL off and on.\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": "9473f16c75606fe6b2e5000525fe9766114505f3",
      "tree": "93080f8a9bcf59170ce9b56b7e8b03fb4bfed8d9",
      "parents": [
        "f3f9931e3d0836509cfccdf473b34e34543a3272"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 28 06:15:24 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Throttle for async bio submits higher up the chain\n\nThe current code waits for the count of async bio submits to get below\na given threshold if it is too high right after adding the latest bio\nto the work queue.  This isn\u0027t optimal because the caller may have\nsequential adjacent bios pending they are waiting to send down the pipe.\n\nThis changeset requires the caller to wait on the async bio count,\nand changes the async checksumming submits to wait for async bios any\ntime they self throttle.\n\nThe end result is much higher sequential throughput.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f3f9931e3d0836509cfccdf473b34e34543a3272",
      "tree": "ff9b651749a432642c242317cc00712271cf9062",
      "parents": [
        "d54a83901055bb0bffca64fa09fce4d897274870"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 21 15:49:09 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Rev the disk format\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d54a83901055bb0bffca64fa09fce4d897274870",
      "tree": "1fb297e08014eaf28416f4e4fe2058d1e6bb6e1b",
      "parents": [
        "2d4d9fbd6efa858dfa009518fca1ab85a73fd848"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 19 22:33:04 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Clean up btrfs_get_parent() a little more, fix a free-after-free bug\n\nDate: Tue, 19 Aug 2008 22:33:04 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2d4d9fbd6efa858dfa009518fca1ab85a73fd848",
      "tree": "81ac4d533be6eac033b551f20e6ee0b8a57c63b9",
      "parents": [
        "615f996fb8185a0bc02812ebd72cb77ded5645f1"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 19 22:20:17 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Fix NFS exporting of subvol roots.\n\nDate: Tue, 19 Aug 2008 22:20:17 +0100\nbtrfs_lookup_fs_root() only finds subvol roots which have already been\nseen and put into the cache. For btrfs_get_dentry() we actually have to\ngo to the medium -- so use btrfs_read_fs_root_no_name() instead.\n\nIn btrfs_get_parent(), notice when we\u0027ve hit the root of the\nsubvolume and return the real root instead.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "615f996fb8185a0bc02812ebd72cb77ded5645f1",
      "tree": "0e97c4fd52b44d603e589e41c90892739e6f5a30",
      "parents": [
        "76fcef19c40328499a2f6d59d76b72fd03d2cc82"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 19 19:21:57 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Switch btrfs_name_hash() to crc32c\n\nDate: Tue, 19 Aug 2008 19:21:57 +0100\nUsing a 64-bit hash as the readdir cookie is just asking for trouble.\nAnd gets it, when we try to export the file system by NFS.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76fcef19c40328499a2f6d59d76b72fd03d2cc82",
      "tree": "1e9394a1cb42ae021f4eedac7954d69b23b062f4",
      "parents": [
        "87acb4ef9b2991e1c453b78d71bce2ef994ef1ff"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 19 16:49:35 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Reinstate \u0027-osubvol\u003d.\u0027 option to mount entire tree\n\nDate: Tue, 19 Aug 2008 16:49:35 +0100\nThis disappeared when I removed the special case for \u0027.\u0027 in btrfs_lookup()\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "87acb4ef9b2991e1c453b78d71bce2ef994ef1ff",
      "tree": "6c39d71ec4cbdf2cf95742b5b908ac1d882ea4d2",
      "parents": [
        "32d48fa1af1fe066a6a4798e6f5a50ac6a3ce4a3"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Aug 18 22:50:22 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Simplify btrfs_get_parent(), fix use-after-free bug\n\nDate: Mon, 18 Aug 2008 22:50:22 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "32d48fa1af1fe066a6a4798e6f5a50ac6a3ce4a3",
      "tree": "4af69093c91b08d05876762129157f99011aee0f",
      "parents": [
        "9d03632e26e1a0a9e4a632cf426a7c0566768a7d"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Aug 18 13:10:20 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Mask root object ID into f_fsid in btrfs_statfs()\n\nDate: Mon, 18 Aug 2008 13:10:20 +0100\nThis means that subvolumes get a different fsid, and NFS exporting them\nworks properly.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9d03632e26e1a0a9e4a632cf426a7c0566768a7d",
      "tree": "e539a220e6e824f14ca84ea8635051ade4932669",
      "parents": [
        "f2322b1c652add8bcd64b10843d76b0211ab1fc6"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Mon Aug 18 12:01:52 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Fill f_fsid field in btrfs_statfs()\n\nDate: Mon, 18 Aug 2008 12:01:52 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2322b1c652add8bcd64b10843d76b0211ab1fc6",
      "tree": "e8857d62692dc9a606b5e6b6a859ba5298377df2",
      "parents": [
        "49593bfa575b7e3fda073b6d1033ee273bdaf97c"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sun Aug 17 17:12:56 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Optimise NFS readdir hack slightly; don\u0027t call readdir() again when done\n\nDate: Sun, 17 Aug 2008 17:12:56 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "49593bfa575b7e3fda073b6d1033ee273bdaf97c",
      "tree": "c83b590a520ca5bd466d05a70c85de15a97b574d",
      "parents": [
        "5ecc7e5d1d58731b3a6a69303d69aca7fb0fe1f5"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sun Aug 17 17:08:36 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Minor cleanup of btrfs_real_readdir()\n\nDate: Sun, 17 Aug 2008 17:08:36 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5ecc7e5d1d58731b3a6a69303d69aca7fb0fe1f5",
      "tree": "89c52b97b11925f99649b8025b6d206b6a80c090",
      "parents": [
        "21af804c07141c035085f99798efaabbc7836a97"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Sun Aug 17 15:14:48 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Remove special cases for \".\" and \"..\"\n\nDate: Sun, 17 Aug 2008 15:14:48 +0100\nWe never get asked by the VFS to lookup either of them, and we can\nhandle the readdir() case a lot more simply, too.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "21af804c07141c035085f99798efaabbc7836a97",
      "tree": "b744fd22d7484be4322b0230bf110861f040fd51",
      "parents": [
        "cbdf5a2442330102c08f5a2ad3058e29e90a43a9"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Aug 12 14:13:26 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Discard sector data in __free_extent()\n\nDate: Tue, 12 Aug 2008 14:13:26 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cbdf5a2442330102c08f5a2ad3058e29e90a43a9",
      "tree": "b41e0da448591f22e00afdda4f6e68b85baad030",
      "parents": [
        "be6e8dc0ba84029997075a1ec77b4ddb863cbe15"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed Aug 06 19:42:33 2008 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Implement our own copy of the nfsd readdir hack, for older kernels\n\nDate: Wed, 6 Aug 2008 19:42:33 +0100\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "be6e8dc0ba84029997075a1ec77b4ddb863cbe15",
      "tree": "ba65e49acd8bc55bfd2719a9d6ce65a81ee037c6",
      "parents": [
        "1a54ef8c11a0eaef59ff418089f109c27f8bd48d"
      ],
      "author": {
        "name": "Balaji Rao",
        "email": "balajirrao@gmail.com",
        "time": "Mon Jul 21 02:01:56 2008 +0530"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "NFS support for btrfs - v3\n\nDate: Mon, 21 Jul 2008 02:01:56 +0530\nHere\u0027s an implementation of NFS support for btrfs. It relies on the\nfixes which are going in to 2.6.28 for the NFS readdir/lookup deadlock.\n\nThis uses the btrfs_iget helper introduced previously.\n\n[dwmw2: Tidy up a little, switch to d_obtain_alias() w/compat routine,\n\tchange fh_type,\tstore parent\u0027s root object ID where needed,\n\tfix some get_parent() and fs_to_dentry() bugs]\n\nSigned-off-by: Balaji Rao \u003cbalajirrao@gmail.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1a54ef8c11a0eaef59ff418089f109c27f8bd48d",
      "tree": "b9ac7b35bcbf2df83448820b249a72c89485399d",
      "parents": [
        "b64a2851ba25b3410a87d3d1b751155612105c8e"
      ],
      "author": {
        "name": "Balaji Rao",
        "email": "balajirrao@gmail.com",
        "time": "Mon Jul 21 02:01:04 2008 +0530"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Introduce btrfs_iget helper\n\nDate: Mon, 21 Jul 2008 02:01:04 +0530\nThis patch introduces a btrfs_iget helper to be used in NFS support.\n\nSigned-off-by: Balaji Rao \u003cbalajirrao@gmail.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b64a2851ba25b3410a87d3d1b751155612105c8e",
      "tree": "5bad12d67cfdd6657acbe1091dd1c196e5e17818",
      "parents": [
        "4d1b5fb4d7075f862848dbff8873e22382abd482"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 20 13:39:41 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Wait for async bio submissions to make some progress at queue time\n\nBefore, the btrfs bdi congestion function was used to test for too many\nasync bios.  This keeps that check to throttle pdflush, but also\nadds a check while queuing bios.\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": "7c2fe32a238eb12422beca5cbd5194a594baa559",
      "tree": "a95bada9d991780e0611e94529e63c8178f4f3be",
      "parents": [
        "902b22f341efa00be802418a0a8c57bddcd269a6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 20 08:51:50 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Fix add_extent_mapping to check for duplicates across the whole range\n\nadd_extent_mapping was allowing the insertion of overlapping extents.\nThis never used to happen because it only inserted the extents from disk\nand those were never overlapping.\n\nBut, with the data\u003dordered code, the disk and memory representations of the\nfile are not the same.  add_extent_mapping needs to ensure a new extent\ndoes not overlap before it inserts.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "902b22f341efa00be802418a0a8c57bddcd269a6",
      "tree": "e8fdfb0a33c19d615e46749217e62c974d3a3611",
      "parents": [
        "53863232ef961778aa414b700ed88a48e8e871e6"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed Aug 20 08:51:49 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Remove broken optimisations in end_bio functions.\n\nThese ended up freeing objects while they were still using them. Under\nguidance from Chris, just rip out the \u0027clever\u0027 bits and do things the\nsimple way.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\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": "4854ddd0ed0a687fc2d7c45a529c406232e31e7b",
      "tree": "6de9774969875cc30c21c96e145294727c56e73b",
      "parents": [
        "5443be45f5cb57d02fd895a0bcaf7e7d9890b1df"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:17 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Wait for kernel threads to make progress during async submission\n\nBefore this change, btrfs would use a bdi congestion function to make\nsure there weren\u0027t too many pending async checksum work items.\n\nThis change makes the process creating async work items wait instead,\nleading to fewer congestion returns from the bdi.  This improves\npdflush background_writeout scanning.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5443be45f5cb57d02fd895a0bcaf7e7d9890b1df",
      "tree": "88666dedb8b6e3fa0f693d76a11a05cba29ec13e",
      "parents": [
        "777e6bd706ee40897545463871de5b456fbc46dc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:16 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Give all the worker threads descriptive names\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "777e6bd706ee40897545463871de5b456fbc46dc",
      "tree": "cb927528e02234eb7fa6b5d1f14b9367efd755b6",
      "parents": [
        "0986fe9eac24fd186927c3b87af51d62f8ab92cd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:15 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Transaction commit: don\u0027t use filemap_fdatawait\n\nAfter writing out all the remaining btree blocks in the transaction,\nthe commit code would use filemap_fdatawait to make sure it was all\non disk.  This means it would wait for blocks written by other procs\nas well.\n\nThe new code walks the list of blocks for this transaction again\nand waits only for those required by this transaction.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0986fe9eac24fd186927c3b87af51d62f8ab92cd",
      "tree": "766cc26439f0f89fea5f45975cd2c595551e7e08",
      "parents": [
        "b720d209524fccdd33a499351f2ca880b8c0ffb4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:15 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Count async bios separately from async checksum work items\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b720d209524fccdd33a499351f2ca880b8c0ffb4",
      "tree": "81fccf72f941452ce03ca03734aea867192ad6e8",
      "parents": [
        "db69e0ebae944690de89851315404f483e6464e0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Limit the number of async bio submission kthreads to the number of devices\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db69e0ebae944690de89851315404f483e6464e0",
      "tree": "2c95462bfc86b0ab34d3ee1ab5675b060d896430",
      "parents": [
        "2db04966ae9a3eeb57f28df9aac4e77d5b287cb1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 15:34:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Init address_space-\u003ewriteback_index properly\n\nThe writeback_index field is used by write_cache_pages to pick up where\nwriteback on a given inode left off.  But, it is never set to a sane\nvalue, so writeback can often start at a random offset in the file.\n\nKernels 2.6.28 and higher will have this fixed, but for everyone else,\nwe also fill in the value in btrfs.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2db04966ae9a3eeb57f28df9aac4e77d5b287cb1",
      "tree": "12f42fdef9b5965c7e9970f875a6bf33ed5090f1",
      "parents": [
        "5036f53868ae943704ae69a192d21225dc914c35"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Thu Aug 07 11:19:43 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Change TestSetPageLocked() to trylock_page()\n\nAdd backwards compatibility in compat.h\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n---\n compat.h    |    3 +++\n extent_io.c |    3 ++-\n 2 files changed, 5 insertions(+), 1 deletions(-)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5036f53868ae943704ae69a192d21225dc914c35",
      "tree": "71d805b6f746b3bce571c8543d4972c01896b029",
      "parents": [
        "5707e3b6f77e37bb8ecc7ba9d74c8bfc38011b6d"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Aug 07 11:19:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: fix RHEL test for ClearPageFsMisc\n\nNewer RHEL5 kernels define both ClearPageFSMisc and\nClearPageChecked, so test for both before redefining.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n---\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5707e3b6f77e37bb8ecc7ba9d74c8bfc38011b6d",
      "tree": "96015abbe9ec132f0911eaf53b5609fff4373703",
      "parents": [
        "4ca8b41e3fe76cc5774fbcc6cba64259d69e0f96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 15:45:30 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Update version.sh to v0.16\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4ca8b41e3fe76cc5774fbcc6cba64259d69e0f96",
      "tree": "f3f0b47dc8a72657105eff6f6b005b8d2d3699cc",
      "parents": [
        "7ea394f1192bee1af67ea4762c88ef4b7b0487a8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 05 13:30:48 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Avoid calling into the FS for the final iput on fake root inodes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ea394f1192bee1af67ea4762c88ef4b7b0487a8",
      "tree": "e2c593d054d802bc71e86508a5b7523ff80cc1ea",
      "parents": [
        "00e4e6b33a0f78aab4b788d6d31c884fd8bf88da"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Aug 05 13:05:02 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Fix nodatacow for the new data\u003dordered mode\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "00e4e6b33a0f78aab4b788d6d31c884fd8bf88da",
      "tree": "726c1b05385f15566aa5c14ff694870f6eb6def2",
      "parents": [
        "7d2b4daa67379960477568abda62b8ba9ee3a8aa"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 05 11:18:09 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Get rid of BTRFS_I(inode)-\u003eindex and use local vars instead\n\nrename and link don\u0027t always have a lock on the source inode, and\nour use of a per-inode index variable was racy.  This changes things to\nstore the index in a local variable instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7d2b4daa67379960477568abda62b8ba9ee3a8aa",
      "tree": "aa24628bd7a0db2f827da77b86c9df94c19d6355",
      "parents": [
        "ae01a0abf343aefe923ace5c1a8c634adfbe29c5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 05 10:13:57 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Fix the multi-bio code to save the original bio for completion\n\nThe multi-bio code is responsible for duplicating blocks in raid1 and\nsingle spindle duplication.  It has counters to make sure all of\nthe locations for a given extent are properly written before io completion\nis returned to the higher layers.\n\nBut, it didn\u0027t always complete the same bio it was given, sometimes a\nclone was completed instead.  This lead to problems with the async\nwork queues because they saved a pointer to the bio in a struct off\nbi_private.\n\nThe fix is to remember the original bio and only complete that one.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ae01a0abf343aefe923ace5c1a8c634adfbe29c5",
      "tree": "b6d1fc42223b3588c8187dcd946176257872499d",
      "parents": [
        "b48652c101cce7a54379a49cc0cf854cec2c94e2"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Aug 04 23:23:47 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Update clone file ioctl\n\nThis patch updates the file clone ioctl for the tree locking and new\ndata ordered code.\n\n---\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b48652c101cce7a54379a49cc0cf854cec2c94e2",
      "tree": "13e8250b326b71fed80811e1ed3b19b00beded31",
      "parents": [
        "3de9d6b649b4cc60687be92e71cef36d7d4e8f2f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Aug 04 23:23:47 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Various small fixes.\n\nThis trivial patch contains two locking fixes and a off by one fix.\n\n---\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": "ea8c281947950fac5f78818b767821d696c9512a",
      "tree": "a30e9da5371d9a694a8f73d450231107ccad1dcb",
      "parents": [
        "d7a029a89ef370e74b63f18b81498d90d1ee3cc1"
      ],
      "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: Maintain a list of inodes that are delalloc and a way to wait on them\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d7a029a89ef370e74b63f18b81498d90d1ee3cc1",
      "tree": "455f0cede97142d447902d8ba5c16a5710649f26",
      "parents": [
        "9ca9ee09c176a814189063c8b88f75c8f8e4ad19"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 23:17:26 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Don\u0027t corrupt ram in shrink_extent_tree, leak it instead\n\nFar from the perfect fix, but these structs are small.  TODO for the\nnext release.  The block group cache structs are referenced in many\ndifferent places, and it isn\u0027t safe to just free them while resizing.\n\nA real fix will be a larger change to the allocator so that it doesn\u0027t\nhave to carry about the block group cache structs to find good places\nto search for free blocks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9ca9ee09c176a814189063c8b88f75c8f8e4ad19",
      "tree": "3092ed3f5dd472e66a61da9306dfa6839604c42c",
      "parents": [
        "3117a77370b6cb902191568e4e647cdcba083d0a"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 04 10:41:27 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: fix ioctl-initiated transactions vs wait_current_trans()\n\nCommit 597:466b27332893 (btrfs_start_transaction: wait for commits in\nprogress) breaks the transaction start/stop ioctls by making\nbtrfs_start_transaction conditionally wait for the next transaction to\nstart.  If an application artificially is holding a transaction open,\nthings deadlock.\n\nThis workaround maintains a count of open ioctl-initiated transactions in\nfs_info, and avoids wait_current_trans() if any are currently open (in\nstart_transaction() and btrfs_throttle()).  The start transaction ioctl\nuses a new btrfs_start_ioctl_transaction() that _does_ call\nwait_current_trans(), effectively pushing the join/wait decision to the\nouter ioctl-initiated transaction.\n\nThis more or less neuters btrfs_throttle() when ioctl-initiated\ntransactions are in use, but that seems like a pretty fundamental\nconsequence of wrapping lots of write()\u0027s in a transaction.  Btrfs has no\nway to tell if the application considers a given operation as part of it\u0027s\ntransaction.\n\nObviously, if the transaction start/stop ioctls aren\u0027t being used, there\nis no effect on current behavior.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n---\n ctree.h       |    1 +\n ioctl.c       |   12 +++++++++++-\n transaction.c |   18 +++++++++++++-----\n transaction.h |    2 ++\n 4 files changed, 27 insertions(+), 6 deletions(-)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3117a77370b6cb902191568e4e647cdcba083d0a",
      "tree": "89fecdbfda66d1e0c5e7442b52a9892fbdbbfe8e",
      "parents": [
        "6dab81574346c831ded96ae3ab0e8f9ca72c37ae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 11:10:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Add support for HW assisted crc32c\n\nIntel doesn\u0027t yet ship hardware to the public with this enabled, but when they\ndo, they will be ready.  Original code from:\n\nAustin Zhang \u003caustin_zhang@linux.intel.com\u003e\n\nIt is currently disabled, but edit crc32c.h to turn it on.\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": "2dd3e67b1eaec8504da7e12b8afee77323a49f38",
      "tree": "794035de0243b20cda0fdf571e2ed02f29aa962e",
      "parents": [
        "65b51a009e29e64c0951f21ea17fdc66bbb0fbd7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 08:20:15 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: More throttle tuning\n\n* Make walk_down_tree wake up throttled tasks more often\n* Make walk_down_tree call cond_resched during long loops\n* As the size of the ref cache grows, wait longer in throttle\n* Get rid of the reada code in walk_down_tree, the leaves don\u0027t get\n  read anymore, thanks to the ref cache.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "65b51a009e29e64c0951f21ea17fdc66bbb0fbd7",
      "tree": "800926527fad4c12ca64083816f33be3d716ec13",
      "parents": [
        "18e35e0ab337ec99c7e03e9ae917745a352c0bb1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 01 15:11:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "btrfs_search_slot: reduce lock contention by cowing in two stages\n\nA btree block cow has two parts, the first is to allocate a destination\nblock and the second is to copy the old bock over.\n\nThe first part needs locks in the extent allocation tree, and may need to\ndo IO.  This changeset splits that into a separate function that can be\ncalled without any tree locks held.\n\nbtrfs_search_slot is changed to drop its path and start over if it has\nto COW a contended block.  This often means that many writers will\npre-alloc a new destination for a the same contended block, but they\ncache their prealloc for later use on lower levels in the tree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "18e35e0ab337ec99c7e03e9ae917745a352c0bb1",
      "tree": "b262ecafb28e5a3e533cae2aa46214bf813bdb2b",
      "parents": [
        "f87f057b49ee52cf5c627ab27a706e3252767c9f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 01 13:11:41 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Throttle less often waiting for snapshots to delete\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f87f057b49ee52cf5c627ab27a706e3252767c9f",
      "tree": "4f8cc04e91ae836f4dd1b2151f47cbd1bd1b9367",
      "parents": [
        "492bb6deee3416ad792dcd8584ebd95c463af1a6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 01 11:27:23 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Improve and cleanup locking done by walk_down_tree\n\nWhile dropping snapshots, walk_down_tree does most of the work of checking\nreference counts and limiting tree traversal to just the blocks that\nwe are freeing.\n\nIt dropped and held the allocation mutex in strange and confusing ways,\nthis commit changes it to only hold the mutex while actually freeing a block.\n\nThe rest of the checks around reference counts should be safe without the lock\nbecause we only allow one process in btrfs_drop_snapshot at a time.  Other\nprocesses dropping reference counts should not drop it to 1 because\ntheir tree roots already have an extra ref on the block.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "492bb6deee3416ad792dcd8584ebd95c463af1a6"
}
