)]}'
{
  "log": [
    {
      "commit": "b3b4aa74b58bded927f579fff787fb6fa1c0393c",
      "tree": "30dab4ab26558992dd8b6b212bef805de11c4c29",
      "parents": [
        "ba14419264684b290f0d0b7f48d26eafb11fc0c6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 01:20:15 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:22 2011 +0200"
      },
      "message": "btrfs: drop unused parameter from btrfs_release_path\n\nparameter tree root it\u0027s not used since commit\n5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (\"Btrfs: Create extent_buffer\ninterface for large blocksizes\")\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "559af8211433b8c0b20e6c43c61409cb9c9c2996",
      "tree": "702ebd4c4f5b610daa36f65d814a518356a9a46b",
      "parents": [
        "411fc6bcef54f828a5458f4730c68abdf13c6bf0"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "message": "Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n\nThese are all the cases where a variable is set, but not read which are\nnot bugs as far as I can see, but simply leftovers.\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8929ecfa50f266163832eeacfbc3642ed5eb83b6",
      "tree": "e0177748af36d49d5f652cff0e421a8268cf7194",
      "parents": [
        "0ca1f7ceb1991099ed5273885ebcf4323948c72e"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:49:58 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:52 2010 -0400"
      },
      "message": "Btrfs: Introduce global metadata reservation\n\nReserve metadata space for extent tree, checksum tree and root tree\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "56bec294dea971335d4466b30f2d959f28f6e36d",
      "tree": "fc0b5bbf4bb6ab35582a4c7f58f5ac88f71c38bf",
      "parents": [
        "9fa8cfe706f9c20067c042a064999d5825a35330"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 13 10:10:06 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 24 16:14:25 2009 -0400"
      },
      "message": "Btrfs: do extent allocation and reference count updates in the background\n\nThe extent allocation tree maintains a reference count and full\nback reference information for every extent allocated in the\nfilesystem.  For subvolume and snapshot trees, every time\na block goes through COW, the new copy of the block adds a reference\non every block it points to.\n\nIf a btree node points to 150 leaves, then the COW code needs to go\nand add backrefs on 150 different extents, which might be spread all\nover the extent allocation tree.\n\nThese updates currently happen during btrfs_cow_block, and most COWs\nhappen during btrfs_search_slot.  btrfs_search_slot has locks held\non both the parent and the node we are COWing, and so we really want\nto avoid IO during the COW if we can.\n\nThis commit adds an rbtree of pending reference count updates and extent\nallocations.  The tree is ordered by byte number of the extent and byte number\nof the parent for the back reference.  The tree allows us to:\n\n1) Modify back references in something close to disk order, reducing seeks\n2) Significantly reduce the number of modifications made as block pointers\nare balanced around\n3) Do all of the extent insertion and back reference modifications outside\nof the performance critical btrfs_search_slot code.\n\n#3 has the added benefit of greatly reducing the btrfs stack footprint.\nThe extent allocation tree modifications are done without the deep\n(and somewhat recursive) call chains used in the past.\n\nThese delayed back reference updates must be done before the transaction\ncommits, and so the rbtree is tied to the transaction.  Throttling is\nimplemented to help keep the queue of backrefs at a reasonable size.\n\nSince there was a similar mechanism in place for the extent tree\nextents, that is removed and replaced by the delayed reference tree.\n\nYan Zheng \u003cyan.zheng@oracle.com\u003e helped review and fixup this code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4ce94de9b4d64e8ab3cf155d13653c666e22b9b",
      "tree": "ebc44a9554a50b495b091cb0979d79fd29e50fe7",
      "parents": [
        "c487685d7c18a8481900755aa5c56a7a74193101"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:25:08 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 04 09:25:08 2009 -0500"
      },
      "message": "Btrfs: Change btree locking to use explicit blocking points\n\nMost of the btrfs metadata operations can be protected by a spinlock,\nbut some operations still need to schedule.\n\nSo far, btrfs has been using a mutex along with a trylock loop,\nmost of the time it is able to avoid going for the full mutex, so\nthe trylock loop is a big performance gain.\n\nThis commit is step one for getting rid of the blocking locks entirely.\nbtrfs_tree_lock takes a spinlock, and the code explicitly switches\nto a blocking lock when it starts an operation that can schedule.\n\nWe\u0027ll be able get rid of the blocking locks in smaller pieces over time.\nTracing allows us to find the most common cause of blocking, so we\ncan start with the hot spots first.\n\nThe basic idea is:\n\nbtrfs_tree_lock() returns with the spin lock held\n\nbtrfs_set_lock_blocking() sets the EXTENT_BUFFER_BLOCKING bit in\nthe extent buffer flags, and then drops the spin lock.  The buffer is\nstill considered locked by all of the btrfs code.\n\nIf btrfs_tree_lock gets the spinlock but finds the blocking bit set, it drops\nthe spin lock and waits on a wait queue for the blocking bit to go away.\n\nMuch of the code that needs to set the blocking bit finishes without actually\nblocking a good percentage of the time.  So, an adaptive spin is still\nused against the blocking bit to avoid very high context switch rates.\n\nbtrfs_clear_lock_blocking() clears the blocking bit and returns\nwith the spinlock held again.\n\nbtrfs_tree_unlock() can be called on either blocking or spinning locks,\nit does the right thing based on the blocking bit.\n\nctree.c has a helper function to set/clear all the locked buffers in a\npath as blocking.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "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": "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": "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": "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": "e7a84565bcdb239caad29ccbe559ef978090ac7e",
      "tree": "aaeba005e713cde2030c27451d98847accff116d",
      "parents": [
        "a74a4b97b61beede185b4b3ad359d7d378b0d312"
      ],
      "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: Add btree locking to the tree defragmentation code\n\nThe online btree defragger is simplified and rewritten to use\nstandard btree searches instead of a walk up / down mechanism.\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": "0ef3e66b6700eb8f052daa8b89443ff872fbbdfc",
      "tree": "26bce57770b4f093199b6f87ab8ed3a54e951337",
      "parents": [
        "515dc3228c568f9df8b634f82b3471e20205ac16"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 24 14:04:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Allocator fix variety pack\n\n* Force chunk allocation when find_free_extent has to do a full scan\n* Record the max key at the start of defrag so it doesn\u0027t run forever\n* Block groups might not be contiguous, make a forward search for the\n  next block group in extent-tree.c\n* Get rid of extra checks for total fs size\n* Fix relocate_one_reference to avoid relocating the same file data block\n  twice when referenced by an older transaction\n* Use the open device count when allocating chunks so that we don\u0027t\n  try to allocate from devices that don\u0027t exist\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1259ab75c62462b8ffad90067b5e1f6312786a18",
      "tree": "ccc6b795e524a74b3fb9666409ca2f7f33bf98dd",
      "parents": [
        "ca7a79ad8dbe24669a8ced01f9fc0126b872745d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 12 13:39:03 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Handle write errors on raid1 and raid10\n\nWhen duplicate copies exist, writes are allowed to fail to one of those\ncopies.  This changeset includes a few changes that allow the FS to\ncontinue even when some IOs fail.\n\nIt also adds verification of the parent generation number for btree blocks.\nThis generation is stored in the pointer to a block, and it ensures\nthat missed writes to are detected.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ca7a79ad8dbe24669a8ced01f9fc0126b872745d",
      "tree": "0d53d8e6fd9ff9aece4e703581918c7817175d5d",
      "parents": [
        "188de649c51f03df3f8a601aea0110a3870815c2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 12 12:59:19 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: Pass down the expected generation number when reading tree blocks\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0999df54f850fe1aba29b10d5c869493af107478",
      "tree": "c67e0ca38e89d0872f6246093d962ce598b49ec7",
      "parents": [
        "ecbe2402cb4e4e7413544dc392c1a78d0f290292"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 01 13:48:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:01 2008 -0400"
      },
      "message": "Btrfs: Verify checksums on tree blocks found without read_tree_block\n\nChecksums were only verified by btrfs_read_tree_block, which meant the\nfunctions to probe the page cache for blocks were not validating checksums.\nNormally this is fine because the buffers will only be in cache if they\nhave already been validated.\n\nBut, there is a window while the buffer is being read from disk where\nit could be up to date in the cache but not yet verified.  This patch\nmakes sure all buffers go through checksum verification before they\nare used.\n\nThis is safer, and it prevents modification of buffers before they go\nthrough the csum code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9afbb0b752ef30a429c45b9de6706e28ad1a36e1",
      "tree": "2e1d749ced02b62282fe899237c7595ebb6add63",
      "parents": [
        "df68b8a7ad4a18c9e63f1c12015a59c3b7031adb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 15 13:19:35 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Disable tree defrag in SSD mode\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b3236e68bf86b3ae87f58984a1822369225211cb",
      "tree": "a8e1c6caa5abad5b70f81b63bcb165b8f6e9a4ee",
      "parents": [
        "6f568d35a045dbb8a13fe71bfc32e85e39a986cb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 29 16:06:37 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:00 2008 -0400"
      },
      "message": "Btrfs: Leave on the tree defragger in mount -o ssd, it still helps there\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": "7bb86316c3961d1bc401ef184fd996f999556c7f",
      "tree": "e67de3b594cf680f295010095a71ed7e825cb757",
      "parents": [
        "74493f7a59bfd4d1c7029c74ab2cd0e400612c6b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "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: Add back pointers from extents to the btree or file referencing them\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f84a8b362d9785ca1fa0598d8a90f35184bd8750",
      "tree": "5161beaf9981b793a3efb1034bef8715bc456572",
      "parents": [
        "a273208edd55463b3bcd8b77a6fe8ba54afc6940"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 06 10:26:29 2007 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Optimize allocations as we need to mix data and metadata into one group\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "081e95736d9118a96e9f6dcc5cec02dc75c9e1cb",
      "tree": "41c1b692a0ba44223cadae5d78bc3446f963dca1",
      "parents": [
        "c549228ff63498025bf0b065c5a5909a06f21647"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 06 10:26:24 2007 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Make defrag check nodes against the progress key to prevent repeating work\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5708b9591617486bf1aa5b1a97f2c0549ec87933",
      "tree": "e2d5f219c090ecda4bc9265027b41be2c70a57ad",
      "parents": [
        "18f16f7ba62a01c29e09b40ac6ad6d92a8955859"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 25 15:43:18 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:57 2008 -0400"
      },
      "message": "Btrfs: Tune the automatic defrag code\n\n1) Forced defrag wasn\u0027t working properly (btrfsctl -d) because some\ncache only checks were incorrect.\n\n2) Defrag only the leaves unless in forced defrag mode.\n\n3) Don\u0027t use complex logic to figure out if a leaf is needs defrag\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": "cf786e79e3f96f4bc037c69e1a7afb5fb85c6111",
      "tree": "5d6acee007d82cd477033d77115f4fb1362db41c",
      "parents": [
        "304fced668079ce222200d5742657d34cc44af09"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:22:11 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Defrag: only walk into nodes with the defrag bit set\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f1ebbd159baade0417f8f62f0cd6810cc950832",
      "tree": "7b973923c6ad62cd20045618819a6fad19046662",
      "parents": [
        "19c00ddcc31ad4bdfb86b57085e06d6135b9b1d7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:19:46 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Btrfs: Large block related defrag optimizations\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f82731fc56448c2733f58e1f5db6c2cbfc90652",
      "tree": "8c4d12a1c240db310becdff74e27d9aab36f1569",
      "parents": [
        "810191ff3087e8143b41a944fcf4fd8c693f00e3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 15 16:18:56 2007 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:56 2008 -0400"
      },
      "message": "Breakout BTRFS_SETGET_FUNCS into a separate C file, the inlines were too big.\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": "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": "86479a04eef8f304a13aeb8b64bcc8e506a68268",
      "tree": "cda7e66d469bcdc2f41144ea91405aeb96d1f777",
      "parents": [
        "8e21528f87854314792aaef4d279bc9e5a9be997"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 10 19:58:16 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Mon Sep 10 19:58:16 2007 -0400"
      },
      "message": "Add support for defragging files via btrfsctl -d.  Avoid OOM on extent tree\ndefrag.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2183bde1a918d338337955c8e8ba29bd8f5e7b1",
      "tree": "e27baea3779112618d2158902270c460444feeff",
      "parents": [
        "e9d0b13b5bbb58c9b840e407a8d181442f799966"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 10 14:42:37 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Fri Aug 10 14:42:37 2007 -0400"
      },
      "message": "Btrfs: Add BH_Defrag to mark buffers that are in need of defragging\n\nThis allows the tree walking code to defrag only the newly allocated\nbuffers, it seems to be a good balance between perfect defragging and the\nperformance hit of repeatedly reallocating blocks.\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": "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"
    }
  ]
}
