)]}'
{
  "log": [
    {
      "commit": "c6e308713a47527f88a277ee95b7c5d1db80f77b",
      "tree": "0a890bb3ac2ae1bb8733cf8679d1441e1b85eb81",
      "parents": [
        "57506d50ed6db7b0e7ddc9845e86e81f140983d5"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Wed Jan 21 10:59:08 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 10:59:08 2009 -0500"
      },
      "message": "Btrfs: simplify iteration codes\n\nMerge list_for_each* and list_entry to list_for_each_entry*\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "180591bcfed1a2cec048abb21d3dab840625caab",
      "tree": "9bd247570ef8f3ed33afcb25bb365ccd707c8a73",
      "parents": [
        "9ca03b997f71787e345951e6267fbd8eba14d49f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "message": "Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation\n\nSnapshot creation happens at a specific time during transaction commit.  We\nneed to make sure the code called by snapshot creation doesn\u0027t wait\nfor the running transaction to commit.\n\nThis changes btrfs_delete_inode and finish_pending_snaps to use\nbtrfs_join_transaction instead of btrfs_start_transaction to avoid deadlocks.\n\nIt would be better if btrfs_delete_inode didn\u0027t use the join, but the\ncall path that triggers it is:\n\nbtrfs_commit_transaction-\u003ecreate_pending_snapshots-\u003e\ncreate_pending_snapshot-\u003ebtrfs_lookup_dentry-\u003e\nfixup_tree_root_location-\u003ebtrfs_read_fs_root-\u003e\nbtrfs_read_fs_root_no_name-\u003ebtrfs_orphan_cleanup-\u003eiput\n\nThis will be fixed in a later patch by moving the orphan cleanup to the\ncleaner thread.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "d397712bcc6a759a560fd247e6053ecae091f958",
      "tree": "9da8daebb870d8b8b1843507c4621715e23dd31a",
      "parents": [
        "1f3c79a28c8837e8572b98f6d14142d9a6133c56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "message": "Btrfs: Fix checkpatch.pl warnings\n\nThere were many, most are fixed now.  struct-funcs.c generates some warnings\nbut these are bogus.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "52c2617990fed072220708d6b771dc10f37547b0",
      "tree": "6f97a07b56927bc96fabb0669cd31d0d0d28273a",
      "parents": [
        "e441d54de4fd97dd381f3e73636f5ba51ff4c7d9"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Jan 05 15:43:43 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:43 2009 -0500"
      },
      "message": "Btrfs: update directory\u0027s size when creating subvol/snapshot\n\nMake sure directory\u0027s size properly updated when creating\nsubvol/snapshot.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "d2fb3437e4d8d12c73c587615ad187d5288547ec",
      "tree": "894e4c698970dd35226b2614b8a38fb8a96580e7",
      "parents": [
        "cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "message": "Btrfs: fix leaking block group on balance\n\nThe block group structs are referenced in many different\nplaces, and it\u0027s not safe to free while balancing.  So, those block\ngroup structs were simply leaked instead.\n\nThis patch replaces the block group pointer in the inode with the starting byte\noffset of the block group and adds reference counting to the block group\nstruct.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "a512bbf855ff0af474257475f2e6da7acd854f52",
      "tree": "1b2cfcf4152e09f32a6cb0bcbd798d5dab2f5490",
      "parents": [
        "d20f7043fa65659136c1a7c3c456eeeb5c6f431f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Dec 08 16:46:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:46:26 2008 -0500"
      },
      "message": "Btrfs: superblock duplication\n\nThis patch implements superblock duplication. Superblocks\nare stored at offset 16K, 64M and 256G on every devices.\nSpaces used by superblocks are preserved by the allocator,\nwhich uses a reverse mapping function to find the logical\naddresses that correspond to superblocks. Thank you,\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "6e3ad88729103c4d19703311253fab8a49669fa8",
      "tree": "4dfbc656de0b8956fd90226b5a03d35c076b9d34",
      "parents": [
        "641f5219f2ea0dfd1c024c91021ddc83f50bf1ce"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "message": "Btrfs: remove unneeded total_trans\n\nRemove unneeded debugging sanity check.  It gets corrupted anyway when\nmultiple btrfs file systems are mounted, throwing bad warnings along the\nway.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "105d931d482b7d1b1b2dd4b0ea30365db8630b9f",
      "tree": "e3c8ba5bc5cb5fcbf6ac33b08c701e1e8cdabf10",
      "parents": [
        "73e9f5beb16f568f797bba87f082556fac18dede"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 12:13:12 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 12:13:12 2008 -0500"
      },
      "message": "Btrfs: switch back to wait_on_page_writeback to wait on metadata writes\n\nThe extent based waiting was using more CPU, and other fixes have helped\nwith the unplug storm problems.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "0660b5af3f7ac0fac69de975914e1f4a3a586fb3",
      "tree": "5e911dfad23df29f1815fbbc76d38ffff7fe36d8",
      "parents": [
        "3394e1607eaf870ebba37d303fbd590a4c569908"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:37:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:37:39 2008 -0500"
      },
      "message": "Btrfs: Add backrefs and forward refs for subvols and snapshots\n\nSubvols and snapshots can now be referenced from any point in the directory\ntree.  We need to maintain back refs for them so we can find lost\nsubvols.\n\nForward refs are added so that we know all of the subvols and\nsnapshots referenced anywhere in the directory tree of a single subvol.  This\ncan be used to do recursive snapshotting (but they aren\u0027t yet) and it is\nalso used to detect and prevent directory loops when creating new snapshots.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3394e1607eaf870ebba37d303fbd590a4c569908",
      "tree": "7833927ae6137122bea670544147be6a69f804ad",
      "parents": [
        "3de4586c5278a28107030c336956381f69ff7a9d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:42:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:42:26 2008 -0500"
      },
      "message": "Btrfs: Give each subvol and snapshot their own anonymous devid\n\nEach subvolume has its own private inode number space, and so we need\nto fill in different device numbers for each subvolume to avoid confusing\napplications.\n\nThis commit puts a struct super_block into struct btrfs_root so it can\ncall set_anon_super() and get a different device number generated for\neach root.\n\nbtrfs_rename is changed to prevent renames across subvols.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3de4586c5278a28107030c336956381f69ff7a9d",
      "tree": "d636e3806cd5ecff71927d0300e46526fa23de1a",
      "parents": [
        "4ce4cb526f67775c1cce3e3fa01c292672ba874e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:02:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:02:50 2008 -0500"
      },
      "message": "Btrfs: Allow subvolumes and snapshots anywhere in the directory tree\n\nBefore, all snapshots and subvolumes lived in a single flat directory.  This\nwas awkward and confusing because the single flat directory was only writable\nwith the ioctls.\n\nThis commit changes the ioctls to create subvols and snapshots at any\npoint in the directory tree.  This requires making separate ioctls for\nsnapshot and subvol creation instead of a combining them into one.\n\nThe subvol ioctl does:\n\nbtrfsctl -S subvol_name parent_dir\n\nAfter the ioctl is done subvol_name lives inside parent_dir.\n\nThe snapshot ioctl does:\n\nbtrfsctl -s path_for_snapshot root_to_snapshot\n\npath_for_snapshot can be an absolute or relative path.  btrfsctl breaks it up\ninto directory and basename components.\n\nroot_to_snapshot can be any file or directory in the FS.  The snapshot\nis taken of the entire root where that file lives.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f2cc086ccab27ac5252b3883ac004347860b4c7",
      "tree": "5d9d1a5ebce044fabf6491e454af60289895bba5",
      "parents": [
        "42e70e7a2f9d96fd843723fa46d5121cb3e551d0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 07 18:22:45 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 07 18:22:45 2008 -0500"
      },
      "message": "Btrfs: Avoid unplug storms during commit\n\nWhile doing a commit, btrfs makes sure all the metadata blocks\nwere properly written to disk, calling wait_on_page_writeback for\neach page.  This writeback happens after allowing another transaction\nto start, so it competes for the disk with other processes in the FS.\n\nIf the page writeback bit is still set, each wait_on_page_writeback might\ntrigger an unplug, even though the page might be waiting for checksumming\nto finish or might be waiting for the async work queue to submit the\nbio.\n\nThis trades wait_on_page_writeback for waiting on the extent writeback\nbits.  It won\u0027t trigger any unplugs and substantially improves performance\nin a number of workloads.\n\nThis also changes the async bio submission to avoid requeueing if there\nis only one device.  The requeue just wastes CPU time because there are\nno other devices to service.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "80ff385665b7fca29fefe358a60ab0d09f9b8e87",
      "tree": "8a801d3f268d289b62f8dac87df8b757fb3b19d4",
      "parents": [
        "6643558db29006825dbb10012b3f8890aca4bcd5"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Oct 30 14:20:02 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 30 14:20:02 2008 -0400"
      },
      "message": "Btrfs: update nodatacow code v2\n\nThis patch simplifies the nodatacow checker. If all references\nwere created after the latest snapshot, then we can avoid COW\nsafely. This patch also updates run_delalloc_nocow to do more\nfine-grained checking.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "87ef2bb46bfc4be0b40799e68115cbe28d80a1bd",
      "tree": "8060158d9adee7ad2fc591c47ad1354b07237020",
      "parents": [
        "09fde3c9ba360926ce021c184a1ee343f4d8fa19"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 30 11:23:27 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 30 11:23:27 2008 -0400"
      },
      "message": "Btrfs: prevent looping forever in finish_current_insert and del_pending_extents\n\nfinish_current_insert and del_pending_extents process extent tree modifications\nthat build up while we are changing the extent tree.  It is a confusing\nbit of code that prevents recursion.\n\nBoth functions run through a list of pending operations and both funcs\nadd to the list of pending operations.  If you have two procs in either\none of them, they can end up looping forever making more work for each other.\n\nThis patch makes them walk forward through the list of pending changes instead\nof always trying to process the entire list.  At transaction commit\ntime, we catch any changes that were left over.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "84234f3a1f7c532e4afeba03cc8e7e4a8a5277ea",
      "tree": "c41f249b448f28b648b21c3898d0763b9c67ca6a",
      "parents": [
        "2517920135b0d29e70453e5b03d70d7b94207df3"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "message": "Btrfs: Add root tree pointer transaction ids\n\nThis patch adds transaction IDs to root tree pointers.\nTransaction IDs in tree pointers are compared with the\ngeneration numbers in block headers when reading root\nblocks of trees. This can detect some types of IO errors.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n\n"
    },
    {
      "commit": "2517920135b0d29e70453e5b03d70d7b94207df3",
      "tree": "e0c526faa5c2c7bc3add340e5b7e8df26924dca9",
      "parents": [
        "80eb234af09dbe6c97b2e3d60a13ec391e98fbba"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "message": "Btrfs: nuke fs wide allocation mutex V2\n\nThis patch removes the giant fs_info-\u003ealloc_mutex and replaces it with a bunch\nof little locks.\n\nThere is now a pinned_mutex, which is used when messing with the pinned_extents\nextent io tree, and the extent_ins_mutex which is used with the pending_del and\nextent_ins extent io trees.\n\nThe locking for the extent tree stuff was inspired by a patch that Yan Zheng\nwrote to fix a race condition, I cleaned it up some and changed the locking\naround a little bit, but the idea remains the same.  Basically instead of\nholding the extent_ins_mutex throughout the processing of an extent on the\nextent_ins or pending_del trees, we just hold it while we\u0027re searching and when\nwe clear the bits on those trees, and lock the extent for the duration of the\noperations on the extent.\n\nAlso to keep from getting hung up waiting to lock an extent, I\u0027ve added a\ntry_lock_extent so if we cannot lock the extent, move on to the next one in the\ntree and we\u0027ll come back to that one.  I have tested this heavily and it does\nnot appear to break anything.  This has to be applied on top of my\nfind_free_extent redo patch.\n\nI tested this patch on top of Yan\u0027s space reblancing code and it worked fine.\nThe only thing that has changed since the last version is I pulled out all my\ndebugging stuff, apparently I forgot to run guilt refresh before I sent the\nlast patch out.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n\n"
    },
    {
      "commit": "f82d02d9d8222183b7945e893111a6d1bf67ae4a",
      "tree": "70be1bb231f4cc2e673920774e759359f3dcf1a5",
      "parents": [
        "c8b978188c9a0fd3d535c13debd19d522b726f1f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 29 14:49:05 2008 -0400"
      },
      "message": "Btrfs: Improve space balancing code\n\nThis patch improves the space balancing code to keep more sharing\nof tree blocks. The only case that breaks sharing of tree blocks is\ndata extents get fragmented during balancing. The main changes in\nthis patch are:\n\nAdd a \u0027drop sub-tree\u0027 function. This solves the problem in old code\nthat BTRFS_HEADER_FLAG_WRITTEN check breaks sharing of tree block.\n\nRemove relocation mapping tree. Relocation mappings are stored in\nstruct btrfs_ref_path and updated dynamically during walking up/down\nthe reference path. This reduces CPU usage and simplifies code.\n\nThis patch also fixes a bug. Root items for reloc trees should be\nupdated in btrfs_free_reloc_root.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "37d1aeee3990385e9bb436c50c2f7e120a668df6",
      "tree": "6fc0e7beba7161e0400e743b31030b8cbbe29885",
      "parents": [
        "47ac14fa0f5306c6b97203f4f086bf1fa21dfddb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 31 10:48:37 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Throttle tuning\n\nThis avoids waiting for transactions with pages locked by breaking out\nthe code to wait for the current transaction to close into a function\ncalled by btrfs_throttle.\n\nIt also lowers the limits for where we start throttling.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bcc63abbf3e9bf948a1b0129b3e6120ec7d7f698",
      "tree": "1c66dc210f948f79c86786368d2c75b57482875d",
      "parents": [
        "33958dc6d38fb4ca7e62273855fcb2db7e616263"
      ],
      "author": {
        "name": "Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Jul 30 16:29:20 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: implement memory reclaim for leaf reference cache\n\nThe memory reclaiming issue happens when snapshot exists. In that\ncase, some cache entries may not be used during old snapshot dropping,\nso they will remain in the cache until umount.\n\nThe patch adds a field to struct btrfs_leaf_ref to record create time. Besides,\nthe patch makes all dead roots of a given snapshot linked together in order of\ncreate time. After a old snapshot was completely dropped, we check the dead\nroot list and remove all cache entries created before the oldest dead root in\nthe list.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f321e4910398cf7922265d269fb17fd26f312571",
      "tree": "8430f004991351e48a4b3f9441fe0cbbcf70eddb",
      "parents": [
        "3bf10418675cb424724b5cb9d7725b234defe1fd"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Jul 30 09:26:11 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Update and fix mount -o nodatacow\n\nTo check whether a given file extent is referenced by multiple snapshots, the\nchecker walks down the fs tree through dead root and checks all tree blocks in\nthe path.\n\nWe can easily detect whether a given tree block is directly referenced by other\nsnapshot. We can also detect any indirect reference from other snapshot by\nchecking reference\u0027s generation. The checker can always detect multiple\nreferences, but can\u0027t reliably detect cases of single reference. So btrfs may\ndo file data cow even there is only one reference.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ab78c84de1ce4db1b2a2cef361625ad80abbab3f",
      "tree": "a9726645832b50da1da9a9690c4200c0f198ce7d",
      "parents": [
        "1a3f5d0400d786aec41ede15fec5710ad1a1d18b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 29 16:15:18 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Throttle operations if the reference cache gets too large\n\nA large reference cache is directly related to a lot of work pending\nfor the cleaner thread.  This throttles back new operations based on\nthe size of the reference cache so the cleaner thread will be able to keep\nup.\n\nOverall, this actually makes the FS faster because the cleaner thread will\nbe more likely to find things in cache.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "017e5369eb353559d68a11d4a718faa634533821",
      "tree": "c339f2f4a59e403c7f9bfa8d137663c6bf260537",
      "parents": [
        "31153d81284934601d08110ac7698fd9a535e4c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jul 28 15:32:51 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Leaf reference cache update\n\nThis changes the reference cache to make a single cache per root\ninstead of one cache per transaction, and to key by the byte number\nof the disk block instead of the keys inside.\n\nThis makes it much less likely to have cache misses if a snapshot\nor something has an extra reference on a higher node or a leaf while\nthe first transaction that added the leaf into the cache is dropping.\n\nSome throttling is added to functions that free blocks heavily so they\nwait for old transactions to drop.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "31153d81284934601d08110ac7698fd9a535e4c0",
      "tree": "38f873fea3012a58d2a8f4d439a9546443617878",
      "parents": [
        "3a115f520f391b4ab14041bdd6eedb370d944fa6"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Jul 28 15:32:19 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Add a leaf reference cache\n\nMuch of the IO done while dropping snapshots is done looking up\nleaves in the filesystem trees to see if they point to any extents and\nto drop the references on any extents found.\n\nThis creates a cache so that IO isn\u0027t required.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aec7477b3b0e8ec93f6d274f25ba40b0665134d4",
      "tree": "2f689681e2f1b48d1c42b2242e21cbf456ec4c55",
      "parents": [
        "3eaa2885276fd6dac7b076a793932428b7168e74"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Jul 24 12:12:38 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Implement new dir index format\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed98b56a6393c5e150fd5095b9eb7fd7d3cfb041",
      "tree": "1e69d882a08d089d083132b2b10fcf385d857620",
      "parents": [
        "c286ac48ed7aaf53586f575af6053ae2a0f8554a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 22 23:06:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Take the csum mutex while reading checksums\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f421950f86bf96a11fef932e167ab2e70d4c43a0",
      "tree": "a2b62b942b023e37b6aae39891c2b314d8d8a3fb",
      "parents": [
        "a61e6f29dc7c9d56a776a518eed92bbc61848263"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 22 11:18:09 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Fix some data\u003dordered related data corruptions\n\nStress testing was showing data checksum errors, most of which were caused\nby a lookup bug in the extent_map tree.  The tree was caching the last\npointer returned, and searches would check the last pointer first.\n\nBut, search callers also expect the search to return the very first\nmatching extent in the range, which wasn\u0027t always true with the last\npointer usage.\n\nFor now, the code to cache the last return value is just removed.  It is\neasy to fix, but I think lookups are rare enough that it isn\u0027t required anymore.\n\nThis commit also replaces do_sync_mapping_range with a local copy of the\nrelated functions.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f9295749388f82c8d2f485e99c72cd7c7876a99b",
      "tree": "5089b0f723583d262116775b8b9fb5b4b8d291e0",
      "parents": [
        "dbe674a99c8af088faa4c95eddaeb271a3140ab6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 17 12:54:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "btrfs_start_transaction: wait for commits in progress to finish\n\nbtrfs_commit_transaction has to loop waiting for any writers in the\ntransaction to finish before it can proceed.  btrfs_start_transaction\nshould be polite and not join a transaction that is in the process\nof being finished off.\n\nThere are a few places that can\u0027t wait, basically the ones doing IO that\nmight be needed to finish the transaction.  For them, btrfs_join_transaction\nis added.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e6dcd2dc9c489108648e2ed543315dd134d50a9a",
      "tree": "cddf6f588b65e28c5feb8bff89b22d8ff70f8a50",
      "parents": [
        "77a41afb7d0dd0f27b6f2f1a5bc701929c7034de"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 17 12:53:50 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: New data\u003dordered implementation\n\nThe old data\u003dordered code would force commit to wait until\nall the data extents from the transaction were fully on disk.  This\nintroduced large latencies into the commit and stalled new writers\nin the transaction for a long time.\n\nThe new code changes the way data allocations and extents work:\n\n* When delayed allocation is filled, data extents are reserved, and\n  the extent bit EXTENT_ORDERED is set on the entire range of the extent.\n  A struct btrfs_ordered_extent is allocated an inserted into a per-inode\n  rbtree to track the pending extents.\n\n* As each page is written EXTENT_ORDERED is cleared on the bytes corresponding\n  to that page.\n\n* When all of the bytes corresponding to a single struct btrfs_ordered_extent\n  are written, The previously reserved extent is inserted into the FS\n  btree and into the extent allocation trees.  The checksums for the file\n  data are also updated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "77a41afb7d0dd0f27b6f2f1a5bc701929c7034de",
      "tree": "8ab63007cf6532100a9443ff7a81f2145fa204c7",
      "parents": [
        "7d9eb12c8739e7dc80c78c6b3596f912ecd8f941"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 08 14:32:12 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: Drop some verbose printks\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3f157a2fd2ad731e1ed9964fecdc5f459f04a4a4",
      "tree": "df9421e7b1d0c06d5efb8659f4317438d3d511d7",
      "parents": [
        "1b1e2135dc1e4efbcf25ac9ac9979316d4e1193e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: Online btree defragmentation fixes\n\nThe btree defragger wasn\u0027t making forward progress because the new key wasn\u0027t\nbeing saved by the btrfs_search_forward function.\n\nThis also disables the automatic btree defrag, it wasn\u0027t scaling well to\nhuge filesystems.  The auto-defrag needs to be done differently.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b1e2135dc1e4efbcf25ac9ac9979316d4e1193e",
      "tree": "2af53ed5d4c368bbefd9de94f0adc2902a785468",
      "parents": [
        "079899c2384023cd8efcd3806680b4f1d2abbd54"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: Add a per-inode csum mutex to avoid races creating csum items\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a74a4b97b61beede185b4b3ad359d7d378b0d312",
      "tree": "49ce5e7698f08e84d0ad2f65768e9f34b64d79c5",
      "parents": [
        "89ce8a63d0c761fbb02089850605360f389477d8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Replace the transaction work queue with kthreads\n\nThis creates one kthread for commits and one kthread for\ndeleting old snapshots.  All the work queues are removed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "89ce8a63d0c761fbb02089850605360f389477d8",
      "tree": "a509b1daf6e41f7768eaf49235c573690f12ef9b",
      "parents": [
        "333db94cdde9e6dfdedab9290d04d812f83e0922"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Add btrfs_end_transaction_throttle to force writers to wait for pending commits\n\nThe existing throttle mechanism was often not sufficient to prevent\nnew writers from coming in and making a given transaction run forever.\nThis adds an explicit wait at the end of most operations so they will\nallow the current transaction to close.\n\nThere is no wait inside file_write, inode updates, or cow filling, all which\nhave different deadlock possibilities.\n\nThis is a temporary measure until better asynchronous commit support is\nadded.  This code leads to stalls as it waits for data\u003dordered\nwriteback, and it really needs to be fixed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a213501153fd66e2359e091b1612841305ba6551",
      "tree": "1f4c316c9d3cad0eb6d9be14cb0e67e46e815dce",
      "parents": [
        "925baeddc5b0764a53f2214a1253251bab0e0324"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:30 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Replace the big fs_mutex with a collection of other locks\n\nExtent alloctions are still protected by a large alloc_mutex.\nObjectid allocations are covered by a objectid mutex\nOther btree operations are protected by a lock on individual btree nodes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "925baeddc5b0764a53f2214a1253251bab0e0324",
      "tree": "0e069bf9cc1c4ecd17c812fd1fb81bf807909ee6",
      "parents": [
        "1cc127b5d1b71453091859301de4a7dd6ee96fa8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 25 16:01:30 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Start btree concurrency work.\n\nThe allocation trees and the chunk trees are serialized via their own\ndedicated mutexes.  This means allocation location is still not very\nfine grained.\n\nThe main FS btree is protected by locks on each block in the btree.  Locks\nare taken top / down, and as processing finishes on a given level of the\ntree, the lock is released after locking the lower level.\n\nThe end result of a search is now a path where only the lowest level\nis locked.  Releasing or freeing the path drops any locks held.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3b96362cc8d314c935c335d5c3c42eb93c23166b",
      "tree": "6d69302c9589d64ccb76f61b833f1a7151f9c841",
      "parents": [
        "48ec2cf8738b0db53dc8361026cb7a328f7ad386"
      ],
      "author": {
        "name": "Sven Wegener",
        "email": "sven.wegener@stealer.net",
        "time": "Mon Jun 09 21:57:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Invalidate dcache entry after creating snapshot and\n\nWe need to invalidate an existing dcache entry after creating a new\nsnapshot or subvolume, because a negative dache entry will stop us from\naccessing the new snapshot or subvolume.\n\n---\n  ctree.h       |   23 +++++++++++++++++++++++\n  inode.c       |    4 ++++\n  transaction.c |    4 ++++\n  3 files changed, 31 insertions(+)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "48ec2cf8738b0db53dc8361026cb7a328f7ad386",
      "tree": "adcb56cf494b67c578a5032b3454203c21171419",
      "parents": [
        "e1b81e6761bd8419146d4bbe0aadd8b2d348a01c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 09 09:35:50 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Fix race in running_transaction checks\n\nWhen a new transaction was started, the code would incorrectly\nset the pointer in fs_info before all the data structures were setup.\nfsync heavy workloads hit races on the setup of the ordered inode spinlock\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a061fc8da7b990faa41ca503e66faef3ecdeead0",
      "tree": "0d3b5b6e4d2164d507d9a16d5b38d373592a5c8f",
      "parents": [
        "5d9cd9ecbf40b8bd5045a3c2f1feb35db6a12266"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed May 07 11:43:44 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Add support for online device removal\n\nThis required a few structural changes to the code that manages bdev pointers:\n\nThe VFS super block now gets an anon-bdev instead of a pointer to the\nlowest bdev.  This allows us to avoid swapping the super block bdev pointer\naround at run time.\n\nThe code to read in the super block no longer goes through the extent\nbuffer interface.  Things got ugly keeping the mapping constant.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d6bfde8765668c8687de72f7a40f52acdf4f2f19",
      "tree": "2e05fc608da861dd0935dedf88d94627f13a18b3",
      "parents": [
        "2fff734fafa742236aecbdcdc8b1ff4d221cbaca"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 30 13:59:35 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Fixes for 2.6.18 enterprise kernels\n\n2.6.18 seems to get caught in an infinite loop when\ncancel_rearming_delayed_workqueue is called more than once, so this switches\nto cancel_delayed_work, which is arguably more correct.\n\nAlso, balance_dirty_pages can run into problems with 2.6.18 based kernels\nbecause it doesn\u0027t have the per-bdi dirty limits.  This avoids calling\nbalance_dirty_pages on the btree inode unless there is actually something\nto balance, which is a good optimization in general.\n\nFinally there\u0027s a compile fix for ordered-data.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81d7ed29ff6bdec903c36c26b386e16c014993b2",
      "tree": "561f6d5b85c9af14acc97ec45b6ce6622c3ec3f4",
      "parents": [
        "bce4eae9864e6b6ebde5d7f05576ff0a6c3724d0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 25 08:51:48 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Throttle file_write when data\u003dordered is flushing the inode\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ce9adaa5a792c2099a83246265eb4055bc38b6b8",
      "tree": "3ac03bb73cd3aad0c0b194d387cbb5b136c92fa7",
      "parents": [
        "728131d8e40c2a47c59ca91a806299c4708029f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Apr 09 16:28:12 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:01 2008 -0400"
      },
      "message": "Btrfs: Do metadata checksums for reads via a workqueue\n\nBefore, metadata checksumming was done by the callers of read_tree_block,\nwhich would set EXTENT_CSUM bits in the extent tree to show that a given\nrange of pages was already checksummed and didn\u0027t need to be verified\nagain.\n\nBut, those bits could go away via try_to_releasepage, and the end\nresult was bogus checksum failures on pages that never left the cache.\n\nThe new code validates checksums when the page is read.  It is a little\ntricky because metadata blocks can span pages and a single read may\nend up going via multiple bios.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b86a832a1f38abec695864ec2eaedc9d2383f1b",
      "tree": "8ec0db0b55f77eb6a23fe7db3c1064d298db55c1",
      "parents": [
        "7f93bf8d27653726e3721c01fefc523487ecf2af"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 24 15:01:56 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Add support for multiple devices per filesystem\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "80b6794d1153ed91a040d873396efb9bd60969fd",
      "tree": "7e0d6d3eb92c08c494c8fb1438cc4dec7a115e18",
      "parents": [
        "ae9d12853b44f4e0c06732166e8e3399ec01a680"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 01 16:35:04 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Lower stack usage in transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4529ba495c6fd0d79247784d0df55ae6512fa883",
      "tree": "92e42dce09b7509894ee4e163f06006e19a46b3e",
      "parents": [
        "b0c68f8bed058d9f2023b067b16ed06a8c439544"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 31 16:45:07 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Add data block hints to SSD mode too\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d1310b2e0cd98eb1348553e69b73827b436dca7b",
      "tree": "f55e9c380df0f3a7e9fb792b2308b52b632b90aa",
      "parents": [
        "5f56406aabdf5444d040c5955effc665b1d0dbaf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 24 16:13:08 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Split the extent_map code into two parts\n\nThere is now extent_map for mapping offsets in the file to disk and\nextent_io for state tracking, IO submission and extent_bufers.\n\nThe new extent_map code shifts from [start,end] pairs to [start,len], and\npushes the locking out into the caller.  This allows a few performance\noptimizations and is easier to use.\n\nA number of extent_map usage bugs were fixed, mostly with failing\nto remove extent_map entries when changing the file.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e18e4809b10e6c9efb5fe10c1ddcb4ebb690d517",
      "tree": "c8419f7fde6690cd352252af89295511650e3707",
      "parents": [
        "04005cc7a1feef94237204566ccac38571af7991"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 18 10:54:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Add mount -o ssd, which includes optimizations for seek free storage\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4d5e74bc0aec3f54b7e429d77b7c35de042c507d",
      "tree": "bba22e2a9cfbe5663a2489c5404fff72639b5277",
      "parents": [
        "2da98f003f4788b0a72c5f87bc55b061f65f30fa"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 16 16:09:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Fix data\u003dordered vs wait_on_inode deadlock on older kernels\n\nUsing ilookup5 during data\u003dordered writeback could deadlock on I_LOCK.  This\nsaves a pointer to the inode instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2da98f003f4788b0a72c5f87bc55b061f65f30fa",
      "tree": "e94832937031f347168aaec4e50ab2ced8331ccb",
      "parents": [
        "9cce6c3bfca85bf92e8c9358542a18dfa6c232be"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 16 11:44:43 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Run igrab on data\u003dordered inodes to prevent deadlocks during writeout\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cee36a03e8f7c6e14aefd497d3acf01bcd3ef153",
      "tree": "14195245463be27ab4314da6eb943b146e6c8591",
      "parents": [
        "61295eb8665e723e77af91d0a1e655a4bd28344f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 15 08:40:48 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Rework btrfs_drop_inode to avoid scheduling\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e2008b61401ecb467a8ce1788fcd2116ae1cfbc1",
      "tree": "8f13935108abaca29c894ca1f9309c9813c9e194",
      "parents": [
        "3063d29f2a4d4a4e9fa1ec77c124514f287c6da7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 08 15:46:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Add some simple throttling to wait for data\u003dordered and snapshot deletion\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3063d29f2a4d4a4e9fa1ec77c124514f287c6da7",
      "tree": "61aa53d18c6684a327b6166764eecbea9d0e6b5b",
      "parents": [
        "dc17ff8f11d129db9e83ab7244769e4eae05e14d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 08 15:46:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Move snapshot creation to commit time\n\nIt is very difficult to create a consistent snapshot of the btree when\nother writers may update the btree before the commit is done.\n\nThis changes the snapshot creation to happen during the commit, while\nno other updates are possible.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dc17ff8f11d129db9e83ab7244769e4eae05e14d",
      "tree": "622e70100d6082e371a6ca62b02fd57e0c37f8dc",
      "parents": [
        "e4204dedbbaa3a614605cb83cc0ac5161af6b4e6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 08 15:46:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:59 2008 -0400"
      },
      "message": "Btrfs: Add data\u003dordered support\n\nThis forces file data extents down the disk along with the metadata that\nreferences them.  The current implementation is fairly simple, and just\nwrites out all of the dirty pages in an inode before the commit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4313b3994d719fcdeb7e661473019ca3d62e829b",
      "tree": "1a18dca96a9f54e8444c4c06c9beda3694bc25d3",
      "parents": [
        "56b453c92fdf51fd3283a2dc2dfbedf36f516031"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 03 09:08:48 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:58 2008 -0400"
      },
      "message": "Btrfs: Reduce stack usage in the resizer, fix 32 bit compiles\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6da6abae027e2dbc59bca5f4168b0760f25068c7",
      "tree": "a1e9c70c930e8b01baead984b706042067148788",
      "parents": [
        "c59f8951d48c5eb000926935f3ab063d8181d1ee"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 18 16:15:09 2007 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:58 2008 -0400"
      },
      "message": "Btrfs: Back port to 2.6.18-el kernels\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17636e03f42a1a42fed3834859de4702bd655fd1",
      "tree": "3a93f7c2f7c2f8e3d3c8c08426a0f3752de4c888",
      "parents": [
        "9691975dd663b255fa52404dc7de4b18892bf244"
      ],
      "author": {
        "name": "Christian Hesse",
        "email": "list@eworm.de",
        "time": "Tue Dec 11 09:25:06 2007 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:58 2008 -0400"
      },
      "message": "Btrfs: section mismatch warnings\n\n--Boundary-00\u003d_CcOWHFYK4T+JwSj\nContent-Type: text/plain;\n  charset\u003d\"iso-8859-1\"\nContent-Transfer-Encoding: 7bit\nContent-Disposition: inline\n\nHello everybody,\n\ncompiling btrfs into the kernel results in section mismatch warnings. __exit\nfunctions are called where they are not allowed to. The attached patch fixes\nthis for me. Not sure if it is correct though.\n\nSigned-off-by: Christian Hesse \u003cmail@earthworm.de\u003e\n--\nRegards,\nChris\n\n--Boundary-00\u003d_CcOWHFYK4T+JwSj\nContent-Type: text/x-diff; charset\u003d\"iso-8859-1\";\n\tname\u003d\"btrfs-section_mismatches.patch\"\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment;\n\tfilename\u003d\"btrfs-section_mismatches.patch\"\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "35ebb934bd7fcc7ca991b155b7980c3c4ff9f1a5",
      "tree": "ce2980aac2b06a75b18b0c523aa0d859f09c8fad",
      "parents": [
        "2ff3e9b61d02b03e3157f7d43ba20ee1452814de"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 30 16:56:53 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Fix PAGE_CACHE_SHIFT shifts on 32 bit machines\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a6b6e75e096f436f0cc56edf5bca96301e194491",
      "tree": "03751594c29a7d70d317689fd6b5e44ee023633e",
      "parents": [
        "ff79f8190b6e955ff7a71faf804a3017d526e657"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:22:39 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Defrag only leaves, and only when the parent node has a single objectid\n\nThis allows us to defrag huge directories, but skip the expensive defrag\ncase in more common usage, where it does not help as much.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4dc119046d0d8501afa4346472917fb05586ad9c",
      "tree": "712c98f8f66aa1e83020574a19d015df88c5024e",
      "parents": [
        "e19caa5f0e34b571ed0c2617554af5c43cb124d1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:18:14 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Add an extent buffer LRU to reduce radix tree hits\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6b80053d02be41886344b5007d04e345311ec0b5",
      "tree": "c935b3f2f4a582697167c52f57b0985137a95206",
      "parents": [
        "09e71a326341f40111400c88aaf0498ef622824b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:17:34 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Add back the online defragging code\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db94535db75e67fab12ccbb7f5ee548e33fed891",
      "tree": "1ad7dfc82b003294a94ee87d7329b24b902b369f",
      "parents": [
        "1a5bc167f6707542b79a55452075525620ed43f5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:15:53 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Allow tree blocks larger than the page size\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1a5bc167f6707542b79a55452075525620ed43f5",
      "tree": "9f87d9351928af0c5cffa057ed2df95c895d57d2",
      "parents": [
        "96b5179d0d9b6368c203856f2ad6e8e12a8b2a2c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:15:26 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Change the remaining radix trees used by extent-tree.c to extent_map trees\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f510cfecfc98759d75283823cfccf0cc0d59a4c6",
      "tree": "dfc2f788df4e2a437d976f78a2a2a675375f7134",
      "parents": [
        "ae5252bd51a252b7b8b02289337c36774835101c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:14:48 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Fix extent_buffer and extent_state leaks\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f39d397dfbe140a14edecd4e73c34ce23c4f9ee",
      "tree": "280561e4b68d573590557dd27df656869eed8023",
      "parents": [
        "50b78c24d594e6985f36a9a8d8e2fb74e1664e90"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:14:19 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Create extent_buffer interface for large blocksizes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d3c2fdcf7b79079f60ac64e61d886964d4647910",
      "tree": "146379e460b1209fef52635bf8e581c68864a452",
      "parents": [
        "7d7d6068bee9d8004ea7cc8a2ebda2c99a57caec"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 17 10:58:06 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:00:48 2008 -0400"
      },
      "message": "Btrfs: Use balance_dirty_pages_nr on btree blocks\n\nbtrfs_btree_balance_dirty is changed to pass the number of pages dirtied\nfor more accurate dirty throttling.  This lets the VM make better decisions\nabout when to force some writeback.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5ce14bbcdd1b5d9233d26a1e89faf3a26c820c58",
      "tree": "6e2a2964e9b01c03dd1b4d58c976d76664747b64",
      "parents": [
        "0e2752a72cb37075b24899f01e9bc6a589de3b6c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 11 11:15:39 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Sep 11 11:15:39 2007 -0400"
      },
      "message": "Btrfs: Find and remove dead roots the first time a root is loaded.\n\nDead roots are trees left over after a crash, and they were either in the\nprocess of being removed or were waiting to be removed when the box crashed.\nBefore, a search of the entire tree of root pointers was done on mount\nlooking for dead roots.  Now, the search is done the first time we load\na root.\n\nThis makes mount faster when there are a large number of snapshots, and it\nenables the block accounting code to properly update the block counts on\nthe latest root as old versions of the root are reaped after a crash.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "58176a9604c5db1784d2c979aea472b3be40b6f0",
      "tree": "a0d887c81b2f174de619dfefca19674a43756971",
      "parents": [
        "b888db2bd7b67f190b32934e6a86181f262ac3ec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Aug 29 15:47:34 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Aug 29 15:47:34 2007 -0400"
      },
      "message": "Btrfs: Add per-root block accounting and sysfs entries\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "15ee9bc7ed171248d1405df5854da5fa91bfdc39",
      "tree": "5f29f51e1c14a6b35b2019a2ada5bb80fb97e2bd",
      "parents": [
        "f2183bde1a918d338337955c8e8ba29bd8f5e7b1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jwhiter@redhat.com",
        "time": "Fri Aug 10 16:22:09 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Aug 10 16:22:09 2007 -0400"
      },
      "message": "Btrfs: delay commits during fsync to allow more writers\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e9d0b13b5bbb58c9b840e407a8d181442f799966",
      "tree": "d51a7e111a824e883c347c83745109400231de1c",
      "parents": [
        "409eb95d7f6632d5af32b795244ce68a29e49319"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 10 14:06:19 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Aug 10 14:06:19 2007 -0400"
      },
      "message": "Btrfs: Btree defrag on the extent-mapping tree as well\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "409eb95d7f6632d5af32b795244ce68a29e49319",
      "tree": "d652da6d5c5055a5f090e3327e512d752d430279",
      "parents": [
        "26b8003f10569a9155b7539ef5a7379ee0c6b050"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 08 20:17:12 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Aug 08 20:17:12 2007 -0400"
      },
      "message": "Btrfs: Further reduce the concurrency penalty of defrag and drop_snapshot\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "26b8003f10569a9155b7539ef5a7379ee0c6b050",
      "tree": "22d788e74199629ca4deb2d5774fd3e5b9ef748a",
      "parents": [
        "f4468e94c86c2031f447788c4bfe7dfd2fcdc93a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 08 20:17:12 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Aug 08 20:17:12 2007 -0400"
      },
      "message": "Btrfs: Replace extent tree preallocation code with some bit radix magic.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f4468e94c86c2031f447788c4bfe7dfd2fcdc93a",
      "tree": "984a0751f69524cada1113d5504875a0fb5cec35",
      "parents": [
        "37fa704640059d515cb2c7c6eaa5eb82901b95ac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 08 10:08:58 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Aug 08 10:08:58 2007 -0400"
      },
      "message": "Btrfs: Let some locks go during defrag and snapshot dropping\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6702ed490ca0bb44e17131818a5a18b773957c5a",
      "tree": "f6bc4b77e58506a68f1ab539ca6c96854f39f92d",
      "parents": [
        "3c69faecb8d83cb2ef085a98b196a3fecea67725"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 07 16:15:09 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Aug 07 16:15:09 2007 -0400"
      },
      "message": "Btrfs: Add run time btree defrag, and an ioctl to force btree defrag\n\nThis adds two types of btree defrag, a run time form that tries to\ndefrag recently allocated blocks in the btree when they are still in ram,\nand an ioctl that forces defrag of all btree blocks.\n\nFile data blocks are not defragged yet, but this can make a huge difference\nin sequential btree reads.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9f3a742736cecda5a8778be70faa2f779458839f",
      "tree": "500ef3701521e63254dbe82e5c71e7ccff746275",
      "parents": [
        "8578f0f1fda41f8429a1037022b720275102ca65"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 07 15:52:19 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Aug 07 15:52:19 2007 -0400"
      },
      "message": "Btrfs: Do snapshot deletion in smaller chunks.\n\nBefore, snapshot deletion was a single atomic unit.  This caused considerable\nlock contention and required an unbounded amount of space.  Now,\nthe drop_progress field in the root item is used to indicate how far along\nsnapshot deletion is, and to resume where it left off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ec6b910fb330f29e169c9f502c3ac209515af8d1",
      "tree": "1b9854ebbc2f3cae4e8fb43dde53527bc7d7eb09",
      "parents": [
        "f2fdf02406de9273ad27c3b73f70aee745173f7b"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Jul 11 10:00:37 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Wed Jul 11 10:00:37 2007 -0400"
      },
      "message": "Btrfs: trivial include fixups\n\nAlmost none of the files including module.h need to do so,\nremove them.\n\nInclude sched.h in extent-tree.c to silence a warning about cond_resched()\nbeing undeclared.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ccd467d60e81b48cdbecae93532b66bcdedca91d",
      "tree": "7c8c74ca8c6c058fc2e3c90c0082e796b7c1e92e",
      "parents": [
        "f2654de42a759127cb1f1e8a626ec94178732e20"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jun 28 15:57:36 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu Jun 28 15:57:36 2007 -0400"
      },
      "message": "Btrfs: crash recovery fixes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4b52dff6d371b9b93bc99f64c32831ea9a8ec3ac",
      "tree": "160a5fb1d8ab8e593775962aedac6ef770da7f3c",
      "parents": [
        "79c44584ea346024e929ac0f2a3577aac33b7b3f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 26 10:06:50 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 26 10:06:50 2007 -0400"
      },
      "message": "Btrfs: Fix super block updates during transaction commit\n\nThe super block written during commit was not consistent with the state of\nthe trees.  This change adds an in-memory copy of the super so that we can\nmake sure to write out consistent data during a commit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "22bb92f376b38154dc0c3688a01a16525b4caab0",
      "tree": "424bf0a5ba92a4cf3e80497a6c0471a23d7cd2b2",
      "parents": [
        "5eda7b5e9b0bed864dd18284c7df9b3c8207dad7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 22 14:49:31 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Jun 22 14:49:31 2007 -0400"
      },
      "message": "Btrfs: Documentation update\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5eda7b5e9b0bed864dd18284c7df9b3c8207dad7",
      "tree": "9efe48de46e77f2b7b97a2ce3ee93c9da6451671",
      "parents": [
        "54aa1f4dfdacd60a19c4471220b24e581be6f774"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "message": "Btrfs: Add the ability to find and remove dead roots after a crash.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "54aa1f4dfdacd60a19c4471220b24e581be6f774",
      "tree": "1462277822cc63c00ad31b522457363a5c6be6ab",
      "parents": [
        "11bd143fc8243cf48c934dc1c4479a5aacf58ce3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Jun 22 14:16:25 2007 -0400"
      },
      "message": "Btrfs: Audit callers and return codes to make sure -ENOSPC gets up the stack\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8c2383c3dd2cb5bb39598ce4fa97154bc591020a",
      "tree": "68a9c491bfa19d572dca6b41e5dde7f05165c270",
      "parents": [
        "9ebefb180bad4914a31c4e1748ba187a30e1e990"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jun 18 09:57:58 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Jun 18 09:57:58 2007 -0400"
      },
      "message": "Subject: Rework btrfs_file_write to only allocate while page locks are held\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "340887809d92a4dd6c71caa97d658cef32c098c3",
      "tree": "4767f84fa4b066ac57c5df15741bda47766fe8ce",
      "parents": [
        "6cbd55707802b98843f953d1ae6d8f5bcd9a76c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 11:36:58 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 11:36:58 2007 -0400"
      },
      "message": "Btrfs: i386 fixes from axboe\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6cbd55707802b98843f953d1ae6d8f5bcd9a76c0",
      "tree": "5c2d9de53ab948c7aae31660dbabfb5a9fb649b5",
      "parents": [
        "8a712645c3fbbf43293af8640af337b7cf1fef01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "message": "Btrfs: add GPLv2\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0cf6c620176a294bdf1bedddc492f6ae857e0019",
      "tree": "44d3a6cb53a966bce73db711dbcf031b89388e11",
      "parents": [
        "ad693af684757478e5fcb225aef319cab7ba6c75"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 09 09:22:25 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Sat Jun 09 09:22:25 2007 -0400"
      },
      "message": "Btrfs: remove device tree\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ad693af684757478e5fcb225aef319cab7ba6c75",
      "tree": "10340bc4d3c10d500487aa337ac58eef60808739",
      "parents": [
        "facda1e787d43191a3368c322f682054991c41b8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 09 08:19:57 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Sat Jun 09 08:19:57 2007 -0400"
      },
      "message": "Btrfs: reap dead roots right after commit\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "facda1e787d43191a3368c322f682054991c41b8"
}
