)]}'
{
  "log": [
    {
      "commit": "d68fc57b7e3245cfacf2e3b47acfed1946a11786",
      "tree": "c2572fcd935017440c8370c8a12ceb49a7fc4f1f",
      "parents": [
        "8929ecfa50f266163832eeacfbc3642ed5eb83b6"
      ],
      "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: Metadata reservation for orphan inodes\n\nreserve metadata space for handling orphan inodes\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\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": "0ca1f7ceb1991099ed5273885ebcf4323948c72e",
      "tree": "10758d6a55c529aced177da3f6bf45cf26361913",
      "parents": [
        "a22285a6a32390195235171b89d157ed1a1fe932"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:48:47 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:51 2010 -0400"
      },
      "message": "Btrfs: Update metadata reservation for delayed allocation\n\nIntroduce metadata reservation context for delayed allocation\nand update various related functions.\n\nThis patch also introduces EXTENT_FIRST_DELALLOC control bit for\nset/clear_extent_bit. It tells set/clear_bit_hook whether they\nare processing the first extent_state with EXTENT_DELALLOC bit\nset. This change is important if set/clear_extent_bit involves\nmultiple extent_state.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a22285a6a32390195235171b89d157ed1a1fe932",
      "tree": "3fabc88a029e1af4f2fdcc708e7b62ef3cf3703a",
      "parents": [
        "f0486c68e4bd9a06a5904d3eeb3a0d73a83befb8"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:48:46 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:50 2010 -0400"
      },
      "message": "Btrfs: Integrate metadata reservation with start_transaction\n\nBesides simplify the code, this change makes sure all metadata\nreservation for normal metadata operations are released after\ncommitting transaction.\n\nChanges since V1:\n\nAdd code that check if unlink and rmdir will free space.\n\nAdd ENOSPC handling for clone ioctl.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "18e41da89d55014d25b9a24502ee92b7f50599f9",
      "tree": "5ce8ebd7456f377e4cfbff0ae83e84295617a4a8",
      "parents": [
        "43aa7ac736a4e21aae4882bd8f7c67403aed45b8",
        "5dc6416414fb3ec6e2825fd4d20c8bf1d7fe0395"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 12:55:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 12:55:31 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: check for read permission on src file in the clone ioctl\n"
    },
    {
      "commit": "5dc6416414fb3ec6e2825fd4d20c8bf1d7fe0395",
      "tree": "e15101a2d1302ff6f2830f282197b34060ec963c",
      "parents": [
        "9f680ce04ea19dabbbafe01b57b61930a9b70741"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "dan.j.rosenberg@gmail.com",
        "time": "Sat May 15 11:27:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 15 12:05:50 2010 -0400"
      },
      "message": "Btrfs: check for read permission on src file in the clone ioctl\n\nThe existing code would have allowed you to clone a file that was\nonly open for writing\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "795d580baec0d5386b83a8b557df47c20810e86b",
      "tree": "d0387c37562e9e27a4f43cf7ae425319cbdad359",
      "parents": [
        "449cedf099b23a250e7d61982e35555ccb871182",
        "109f6aef5fc436f355ad027f4d97bd696df2049a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 05 13:21:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 05 13:21:15 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: add check for changed leaves in setup_leaf_for_split\n  Btrfs: create snapshot references in same commit as snapshot\n  Btrfs: fix small race with delalloc flushing waitqueue\u0027s\n  Btrfs: use add_to_page_cache_lru, use __page_cache_alloc\n  Btrfs: fix chunk allocate size calculation\n  Btrfs: kill max_extent mount option\n  Btrfs: fail to mount if we have problems reading the block groups\n  Btrfs: check btrfs_get_extent return for IS_ERR()\n  Btrfs: handle kmalloc() failure in inode lookup ioctl\n  Btrfs: dereferencing freed memory\n  Btrfs: Simplify num_stripes\u0027s calculation logical for __btrfs_alloc_chunk()\n  Btrfs: Add error handle for btrfs_search_slot() in btrfs_read_chunk_tree()\n  Btrfs: Remove unnecessary finish_wait() in wait_current_trans()\n  Btrfs: add NULL check for do_walk_down()\n  Btrfs: remove duplicate include in ioctl.c\n\nFix trivial conflict in fs/btrfs/compression.c due to slab.h include\ncleanups.\n"
    },
    {
      "commit": "6cf8bfbf5e88edfb09a2bf0631a067060f534592",
      "tree": "70cc8040189bcd623e72ab1f09c6dc4fb40741e5",
      "parents": [
        "c2b96929e2ca6914cf4a66cd8fe2a34c4a98277f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 20 11:22:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 30 21:19:09 2010 -0400"
      },
      "message": "Btrfs: check btrfs_get_extent return for IS_ERR()\n\nbtrfs_get_extent() never returns NULL, only a valid pointer or ERR_PTR()\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c2b96929e2ca6914cf4a66cd8fe2a34c4a98277f",
      "tree": "acfc0f7c28305f2057e6eed88ffd8b34441ba2e1",
      "parents": [
        "683be16eb6e19a35aca2473668652259ed074094"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 20 11:24:15 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 30 21:19:09 2010 -0400"
      },
      "message": "Btrfs: handle kmalloc() failure in inode lookup ioctl\n\nReturn -ENOMEM if kmalloc() fails.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "683be16eb6e19a35aca2473668652259ed074094",
      "tree": "e6ed753b392a576999140ab9758db9c58dc60926",
      "parents": [
        "f3eae7e8a5ed124bbc781e18ea10c21856017322"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 20 11:24:48 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 30 21:19:09 2010 -0400"
      },
      "message": "Btrfs: dereferencing freed memory\n\nThe original code dereferenced range on the next line.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2f3014fc2ab1e25c36531e19164c48182c168995",
      "tree": "84a906ae0d4c963377d768d8ec80a308122a4687",
      "parents": [
        "8ad6fcab564c5bc956bdc3dfa440ab152b6e780f"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Mar 25 17:22:45 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 30 21:19:08 2010 -0400"
      },
      "message": "Btrfs: remove duplicate include in ioctl.c\n\nfs/btrfs/ioctl.c: ctree.h is included more than once.\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "8ad6fcab564c5bc956bdc3dfa440ab152b6e780f",
      "tree": "38670d63e5315650f3e6efe2a2a8025e945b4743",
      "parents": [
        "1b53ac4d1b75b23bdc2b54ace787b8f718a987ef"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:23:10 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:23:10 2010 -0400"
      },
      "message": "Btrfs: fix the inode ref searches done by btrfs_search_path_in_tree\n\nThis is used by the inode lookup ioctl to follow all the backrefs up\nto the subvol root.  But the search being done would sometimes land one\npast the last item in the leaf instead of finding the backref.\n\nThis changes the search to look for the highest possible backref and hop\nback one item.  It also fixes a leaked path on failure to find the root.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b53ac4d1b75b23bdc2b54ace787b8f718a987ef",
      "tree": "4ba3bf8dc5159d4b382b1e44306eef1875203c6a",
      "parents": [
        "90fdde147fd32d18a20be5b498d5f26e56cca8a3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:17:05 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:17:05 2010 -0400"
      },
      "message": "Btrfs: allow treeid\u003d\u003d0 in the inode lookup ioctl\n\nWhen a root id of 0 is sent to the inode lookup ioctl, it will\nuse the root of the file we\u0027re ioctling and pass the root id\nback to userland along with the results.\n\nThis allows userland to do searches based on that root later on.\n\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "90fdde147fd32d18a20be5b498d5f26e56cca8a3",
      "tree": "ab861e9190145df710345bb1e54c5f3f1d77d296",
      "parents": [
        "abc6e1341bda974e2d0eddb75f57a20ac18e9b33"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:14:54 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:14:54 2010 -0400"
      },
      "message": "Btrfs: return keys for large items to the search ioctl\n\nThe search ioctl was skipping large items entirely (ones that are too\nbig for the results buffer).  This changes things to at least copy\nthe item header so that we can send information about the item back to\nuserland.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "abc6e1341bda974e2d0eddb75f57a20ac18e9b33",
      "tree": "399e587e8e94dd4ec2894f52f377a189a21ece2a",
      "parents": [
        "7fde62bffb576d384ea49a3aed3403d5609ee5bc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:10:08 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 18 12:10:08 2010 -0400"
      },
      "message": "Btrfs: fix key checks and advance in the search ioctl\n\nThe search ioctl was working well for finding tree roots, but using it for\ngeneric searches requires a few changes to how the keys are advanced.\nThis treats the search control min fields for objectid, type and offset\nmore like a key, where we drop the offset to zero once we bump the type,\netc.\n\nThe downside of this is that we are changing the min_type and min_offset\nfields during the search, and so the ioctl caller needs extra checks to make sure\nthe keys in the result are the ones it wanted.\n\nThis also changes key_in_sk to use btrfs_comp_cpu_keys, just to make\nthings more readable.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7fde62bffb576d384ea49a3aed3403d5609ee5bc",
      "tree": "0fc0be615e657ed385835b56741c3a62c2c76fff",
      "parents": [
        "ce769a2904bf5a9110ef534a7702397e38e2b3e9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 16 15:40:10 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 16 15:40:10 2010 -0400"
      },
      "message": "Btrfs: buffer results in the space_info ioctl\n\nThe space_info ioctl was using copy_to_user inside rcu_read_lock.  This\ncommit changes things to copy into a buffer first and then dump the\nresult down to userland.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "854d2c3531e6d32e76b94ca5e096ea54c7497e40",
      "tree": "50775c23fe46b586b24294217e4eb81fbc0e8365",
      "parents": [
        "ef5780c018ed169a77b623f87c4ba52faa8ad0fe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 00:02:25 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 16 14:24:27 2010 -0400"
      },
      "message": "Btrfs: fix search_ioctl key advance\n\nkey-\u003etype is u8, not u64.\n\nfs/btrfs/ioctl.c: In function \u0027copy_to_sk\u0027:\nfs/btrfs/ioctl.c:1024: warning: comparison is always true due to limited range of data type\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "91748467a5c5884e44ad5cf58630c0c28474f1f6",
      "tree": "593f2449e069e34fe96ba0e59efa8bf71242ad46",
      "parents": [
        "1406e4327be3a533a2b18582f715ce2cfbcf6804"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Sun Feb 28 10:59:11 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:14 2010 -0400"
      },
      "message": "btrfs: use memparse\n\nUse memparse() instead of its own private implementation.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: linux-btrfs@vger.kernel.org\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1406e4327be3a533a2b18582f715ce2cfbcf6804",
      "tree": "40cafa639095b1a652cd013746394b7a77e52b69",
      "parents": [
        "2ac55d41b5d6bf49e76bc85db5431240617e2f8f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 13 18:19:06 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:14 2010 -0400"
      },
      "message": "Btrfs: add a \"df\" ioctl for btrfs\n\ndf is a very loaded question in btrfs.  This gives us a way to get the per-space\nusage information so we can tell exactly what is in use where.  This will help\nus figure out ENOSPC problems, and help users better understand where their disk\nspace is going.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2ac55d41b5d6bf49e76bc85db5431240617e2f8f",
      "tree": "ee8e2a716ef0b50388ef5e4a86387ec0499bca89",
      "parents": [
        "5a1a3df1f6c86926cfe8657e6f9b4b4c2f467d60"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Feb 03 19:33:23 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:13 2010 -0400"
      },
      "message": "Btrfs: cache the extent state everywhere we possibly can V2\n\nThis patch just goes through and fixes everybody that does\n\nlock_extent()\nblah\nunlock_extent()\n\nto use\n\nlock_extent_bits()\nblah\nunlock_extent_cached()\n\nand pass around a extent_state so we only have to do the searches once per\nfunction.  This gives me about a 3 mb/s boots on my random write test.  I have\nnot converted some things, like the relocation and ioctl\u0027s, since they aren\u0027t\nheavily used and the relocation stuff is in the middle of being re-written.  I\nalso changed the clear_extent_bit() to only unset the cached state if we are\nclearing EXTENT_LOCKED and related stuff, so we can do things like this\n\nlock_extent_bits()\nclear delalloc bits\nunlock_extent_cached()\n\nwithout losing our cached state.  I tested this thoroughly and turned on\nLEAK_DEBUG to make sure we weren\u0027t leaking extent states, everything worked out\nfine.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1e701a3292e25a6c4939cad9f24951dc6b6ad853",
      "tree": "899887a99aae82fe113bffedccb90a76e5473f8b",
      "parents": [
        "940100a4a7b78b27e60a3e72340fb9b5397dcdb2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 11 09:42:04 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:10 2010 -0400"
      },
      "message": "Btrfs: add new defrag-range ioctl.\n\nThe btrfs defrag ioctl was limited to doing the entire file.  This\ncommit adds a new interface that can defrag a specific range inside\nthe file.\n\nIt can also force compression on the file, allowing you to selectively\ncompress individual files after they were created, even when mount -o\ncompress isn\u0027t turned on.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "940100a4a7b78b27e60a3e72340fb9b5397dcdb2",
      "tree": "8eec3d4a95cbc530ddaa82f0d2848e14519eec2a",
      "parents": [
        "51684082b11c304829ea22193d4d96a5b1663b97"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 10 10:52:59 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:10 2010 -0400"
      },
      "message": "Btrfs: be more selective in the defrag ioctl\n\nThe btrfs defrag ioctl had some bugs around delalloc accounting, and it\nwasn\u0027t properly skipping pages that were not in the mapping.\n\nIt wasn\u0027t properly clearing the page checked flag, which could make the\nwriteback code ignore the page forever while pinning it as dirty.\n\nThis commit fixes those problems and makes defrag a little smarter.  It\nskips holes and it doesn\u0027t waste time defragging large extents.  If a\ntiny extent comes before a very large extent, it will defrag both of\nthem to make sure the tiny extent ends up next to something big.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6ef5ed0d386be5c43ec66d6f2999919c0893558b",
      "tree": "7ec391a0525506eb03bcbb0b5e19709f530b0b74",
      "parents": [
        "73f73415caddbc01d9f10c03e0a677d5b3d11569"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 11 21:11:29 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:08 2010 -0400"
      },
      "message": "Btrfs: add ioctl and incompat flag to set the default mount subvol\n\nThis patch needs to go along with my previous patch.  This lets us set the\ndefault dir item\u0027s location to whatever root we want to use as our default\nmounting subvol.  With this we don\u0027t have to use mount -o subvol\u003d\u003ctree id\u003e\nanymore to mount a different subvol, we can just set the new one and it will\njust magically work.  I\u0027ve done some moderate testing with this, mostly just\nswitching the default mount around, mounting subvols and the default mount at\nthe same time and such, everything seems to work.  Thanks,\n\nOlder kernels would generally be able to still mount the filesystem with the\ndefault subvolume set, but it would result in a different volume being mounted,\nwhich could be an even more unpleasant suprise for users.  So if you set your\ndefault subvolume, you can\u0027t go back to older kernels.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ac8e9819d71f907a0532b01b22c26b56bbbcbd21",
      "tree": "5bdebf68182139e664b59286f6f7071e3ada2b18",
      "parents": [
        "98d377a0894e6bcca44eafd4d2eee74e8af4db83"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 28 15:39:26 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 10:55:10 2010 -0400"
      },
      "message": "Btrfs: add search and inode lookup ioctls\n\nThe search ioctl is a generic tool for doing btree searches from\nuserland applications.  The first user of the search ioctl is a\nsubvolume listing feature, but we\u0027ll also use it to find new\nfiles in a subvolume.\n\nThe search ioctl allows you to specify min and max keys to search for,\nalong with min and max transid.  It returns the items along with a\nheader that includes the item key.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98d377a0894e6bcca44eafd4d2eee74e8af4db83",
      "tree": "02b1b926812a8852397c7c6cd274943c59c65f4b",
      "parents": [
        "da495ecc0fb096b383754952a1c152147bc95b52"
      ],
      "author": {
        "name": "TARUISI Hiroaki",
        "email": "taruishi.hiroak@jp.fujitsu.com",
        "time": "Wed Nov 18 05:42:14 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 10:55:09 2010 -0400"
      },
      "message": "Btrfs: add a function to lookup a directory path by following backrefs\n\nThis will be used by the inode lookup ioctl.\n\nSigned-off-by: TARUISI Hiroaki \u003ctaruishi.hiroak@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "86b9f2eca5e0984145e3c7698a7cd6dd65c2a93f",
      "tree": "75dd0a52848b6f5396023f811f1a602f62b9d34e",
      "parents": [
        "55ef68990029fcd8d04d42fc184aa7fb18cf309e"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Nov 12 09:36:50 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 17 12:33:35 2009 -0500"
      },
      "message": "Btrfs: Fix per root used space accounting\n\nThe bytes_used field in root item was originally planned to\ntrace the amount of used data and tree blocks. But it never\nworked right since we can\u0027t trace freeing of data accurately.\nThis patch changes it to only trace the amount of tree blocks.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2e4bfab97055aa6acdd0637913bd705c2d6506d6",
      "tree": "2c07c3668c8d13ee1e2076d32a728c60eaa8f4ed",
      "parents": [
        "c71bf099abddf3e0fdc27f251ba76fca1461d49a"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Nov 12 09:37:02 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 17 12:33:33 2009 -0500"
      },
      "message": "Btrfs: Avoid orphan inodes cleanup during committing transaction\n\nbtrfs_lookup_dentry may trigger orphan cleanup, so it\u0027s not good\nto call it while committing a transaction.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "920bbbfb05c9fce22e088d20eb9dcb8f96342de9",
      "tree": "b972b3f39ebefb9c026300c1981d18cad769e431",
      "parents": [
        "ad48fd754676bfae4139be1a897b1ea58f9aaf21"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Nov 12 09:34:08 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 15 21:24:52 2009 -0500"
      },
      "message": "Btrfs: Rewrite btrfs_drop_extents\n\nRewrite btrfs_drop_extents by using btrfs_duplicate_item, so we can\navoid calling lock_extent within transaction.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0",
      "tree": "8f0e073af940b1bdfb134b945a03a1b43b614352",
      "parents": [
        "e9061e214810c9534381a705a1b46533e09f2676"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "message": "Btrfs: fix file clone ioctl for bookend extents\n\nThe file clone ioctl was incorrectly taking the offset into the\nextent on disk into account when calculating the length of the\ncloned extent.\n\nThe length never changes based on the offset into the physical extent.\n\nTest case:\n\nfallocate -l 1g image\nmke2fs image\nbcp image image2\ne2fsck -f image2\n\n(errors on image2)\n\nThe math bug ends up wrapping the length of the extent, and things\ngo wrong from there.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "efefb1438be269897585934fc6c05deb4dfa01ce",
      "tree": "41d3bf63789bc656421dfbd651bf38caf580ec03",
      "parents": [
        "ff782e0a131c7f669445c07fe5c7ba91e043b7ed"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "message": "Btrfs: remove negative dentry when deleting subvolumne\n\nThe use of btrfs_dentry_delete is removing dentries from the\ndcache when deleting subvolumne. btrfs_dentry_delete ignores\nnegative dentries. This is incorrect since if we don\u0027t remove\nthe negative dentry, its parent dentry can\u0027t be removed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1ab86aedbc7845a946b4ba4edf37762629970708",
      "tree": "1a3ad19d12a807d76d5700abc6415e1535c88312",
      "parents": [
        "3baf0bed0a5adab95c7599d2f27124c74692ef28"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "message": "Btrfs: fix error cases for ioctl transactions\n\nFix leak of vfsmount write reference and open_ioctl_trans reference on\nENOMEM.  Clean up the error paths while we\u0027re at it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9ed74f2dba6ebf9f30b80554290bfc73cc3ef083",
      "tree": "763d58a4a11ceca26dcdaedefb1fd662c4e2fa8b",
      "parents": [
        "c65ddb52dc412c9b67681b1aa16cd1bac8434e24"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:12:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 28 16:29:42 2009 -0400"
      },
      "message": "Btrfs: proper -ENOSPC handling\n\nAt the start of a transaction we do a btrfs_reserve_metadata_space() and\nspecify how many items we plan on modifying.  Then once we\u0027ve done our\nmodifications and such, just call btrfs_unreserve_metadata_space() for\nthe same number of items we reserved.\n\nFor keeping track of metadata needed for data I\u0027ve had to add an extent_io op\nfor when we merge extents.  This lets us track space properly when we are doing\nsequential writes, so we don\u0027t end up reserving way more metadata space than\nwhat we need.\n\nThe only place where the metadata space accounting is not done is in the\nrelocation code.  This is because Yan is going to be reworking that code in the\nnear future, so running btrfs-vol -b could still possibly result in a ENOSPC\nrelated panic.  This patch also turns off the metadata_ratio stuff in order to\nallow users to more efficiently use their disk space.\n\nThis patch makes it so we track how much metadata we need for an inode\u0027s\ndelayed allocation extents by tracking how many extents are currently\nwaiting for allocation.  It introduces two new callbacks for the\nextent_io tree\u0027s, merge_extent_hook and split_extent_hook.  These help\nus keep track of when we merge delalloc extents together and split them\nup.  Reservations are handled prior to any actually dirty\u0027ing occurs,\nand then we unreserve after we dirty.\n\nbtrfs_unreserve_metadata_for_delalloc() will make the appropriate\nunreservations as needed based on the number of reservations we\ncurrently have and the number of extents we currently have.  Doing the\nreservation outside of doing any of the actual dirty\u0027ing lets us do\nthings like filemap_flush() the inode to try and force delalloc to\nhappen, or as a last resort actually start allocation on all delalloc\ninodes in the fs.  This has survived dbench, fs_mark and an fsx torture\ntest.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1fb58a6051cd904a9f8e0344b22e31921d6b5a4d",
      "tree": "2f8c1a89b3e4f119590e89cebe1a5be1a02f487a",
      "parents": [
        "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "message": "Btrfs: fix arithmetic error in clone ioctl\n\nFix an arithmetic error that was breaking extents cloned via the clone\nioctl starting in the second half of a file.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918",
      "tree": "f5ca46ec89d4ae2c762952d5f35e2c6f95ac046a",
      "parents": [
        "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "message": "Btrfs: add snapshot/subvolume destroy ioctl\n\nThis patch adds snapshot/subvolume destroy ioctl.  A subvolume that isn\u0027t being\nused and doesn\u0027t contains links to other subvolumes can be destroyed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9",
      "tree": "2008f348d28c6c19e31924ae4fb414ca929a01f1",
      "parents": [
        "13a8a7c8c47e542b3cdb45bec3f431f96af79361"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "message": "Btrfs: change how subvolumes are organized\n\nbtrfs allows subvolumes and snapshots anywhere in the directory tree.\nIf we snapshot a subvolume that contains a link to other subvolume\ncalled subvolA, subvolA can be accessed through both the original\nsubvolume and the snapshot. This is similar to creating hard link to\ndirectory, and has the very similar problems.\n\nThe aim of this patch is enforcing there is only one access point to\neach subvolume. Only the first directory entry (the one added when\nthe subvolume/snapshot was created) is treated as valid access point.\nThe first directory entry is distinguished by checking root forward\nreference. If the corresponding root forward reference is missing,\nwe know the entry is not the first one.\n\nThis patch also adds snapshot/subvolume rename support, the code\nallows rename subvolume link across subvolumes.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "83ebade34bc1a90d0c3f77b87b940f336d075fda",
      "tree": "99b6366c52e6bec88119ae995399c985fc61e900",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657",
        "93c82d575055f1bd0277acae6f966bebafd80dd5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n"
    },
    {
      "commit": "a1ed835e1ab5795f91b198d08c43e2f56848dcf3",
      "tree": "ac3b370823fa76c5be7698e3663306badbbd622d",
      "parents": [
        "8b62b72b26bcd72082c4a69d179dd906bcc22200"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:27:37 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: Fix extent replacment race\n\nData COW means that whenever we write to a file, we replace any old\nextent pointers with new ones.  There was a window where a readpage\nmight find the old extent pointers on disk and cache them in the\nextent_map tree in ram in the middle of a given write replacing them.\n\nEven though both the readpage and the write had their respective bytes\nin the file locked, the extent readpage inserts may cover more bytes than\nit had locked down.\n\nThis commit closes the race by keeping the new extent pinned in the extent\nmap tree until after the on-disk btree is properly setup with the new\nextent pointers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8a894d77de4a1e0a544577fd4eabc9aacd453a8",
      "tree": "536f2a4d775f3b4180a85d4192bae92fbd38347b",
      "parents": [
        "f597bb19ccd034cbcf05e1194238e2c8d9505a8a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 27 21:07:03 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 02 13:41:16 2009 -0400"
      },
      "message": "Btrfs: fix the file clone ioctl for preallocated extents\n"
    },
    {
      "commit": "0b4dcea579a1b6f4d249d61f5bc8adeaa7c895d8",
      "tree": "2d8c0a56d853516136fcf9ff43672aca9f011057",
      "parents": [
        "067c28adc53807514ac0c6ebb6af3243cbd071fa"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jun 11 11:13:35 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jun 11 11:13:35 2009 -0400"
      },
      "message": "Btrfs: fix oops when btrfs_inherit_iflags called with a NULL dir\n\nThis happens during subvol creation.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6cbff00f4632c8060b06bfc9585805217f11e12e",
      "tree": "1886c4c855662172b84be2bfbd2aa5ac6a5c429d",
      "parents": [
        "c289811cc096c57ff35550ee8132793a4f9b5b59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Apr 17 10:37:41 2009 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 10 11:29:52 2009 -0400"
      },
      "message": "Btrfs: implement FS_IOC_GETFLAGS/SETFLAGS/GETVERSION\n\nAdd support for the standard attributes set via chattr and read via\nlsattr.  Currently we store the attributes in the flags value in\nthe btrfs inode, but I wonder whether we should split it into two so\nthat we don\u0027t have to keep converting between the two formats.\n\nRemove the btrfs_clear_flag/btrfs_set_flag/btrfs_test_flag macros\nas they were confusing the existing code and got in the way of the\nnew additions.\n\nAlso add the FS_IOC_GETVERSION ioctl for getting i_generation as it\u0027s\ntrivial.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5d4f98a28c7d334091c1b7744f48a1acdd2a4ae0",
      "tree": "c611d7d824cbcdb777dd2d8e33e2ed1c5df8a9c6",
      "parents": [
        "5c939df56c3ea018b58e5aa76181284c2053d699"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Jun 10 10:45:14 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jun 10 11:29:46 2009 -0400"
      },
      "message": "Btrfs: Mixed back reference  (FORWARD ROLLING FORMAT CHANGE)\n\nThis commit introduces a new kind of back reference for btrfs metadata.\nOnce a filesystem has been mounted with this commit, IT WILL NO LONGER\nBE MOUNTABLE BY OLDER KERNELS.\n\nWhen a tree block in subvolume tree is cow\u0027d, the reference counts of all\nextents it points to are increased by one.  At transaction commit time,\nthe old root of the subvolume is recorded in a \"dead root\" data structure,\nand the btree it points to is later walked, dropping reference counts\nand freeing any blocks where the reference count goes to 0.\n\nThe increments done during cow and decrements done after commit cancel out,\nand the walk is a very expensive way to go about freeing the blocks that\nare no longer referenced by the new btree root.  This commit reduces the\ntransaction overhead by avoiding the need for dead root records.\n\nWhen a non-shared tree block is cow\u0027d, we free the old block at once, and the\nnew block inherits old block\u0027s references. When a tree block with reference\ncount \u003e 1 is cow\u0027d, we increase the reference counts of all extents\nthe new block points to by one, and decrease the old block\u0027s reference count by\none.\n\nThis dead tree avoidance code removes the need to modify the reference\ncounts of lower level extents when a non-shared tree block is cow\u0027d.\nBut we still need to update back ref for all pointers in the block.\nThis is because the location of the block is recorded in the back ref\nitem.\n\nWe can solve this by introducing a new type of back ref. The new\nback ref provides information about pointer\u0027s key, level and in which\ntree the pointer lives. This information allow us to find the pointer\nby searching the tree. The shortcoming of the new back ref is that it\nonly works for pointers in tree blocks referenced by their owner trees.\n\nThis is mostly a problem for snapshots, where resolving one of these\nfuzzy back references would be O(number_of_snapshots) and quite slow.\nThe solution used here is to use the fuzzy back references in the common\ncase where a given tree block is only referenced by one root,\nand use the full back references when multiple roots have a reference\non a given block.\n\nThis commit adds per subvolume red-black tree to keep trace of cached\ninodes. The red-black tree helps the balancing code to find cached\ninodes whose inode numbers within a given range.\n\nThis commit improves the balancing code by introducing several data\nstructures to keep the state of balancing. The most important one\nis the back ref cache. It caches how the upper level tree blocks are\nreferenced. This greatly reduce the overhead of checking back ref.\n\nThe improved balancing code scales significantly better with a large\nnumber of snapshots.\n\nThis is a very large commit and was written in a number of\npieces.  But, they depend heavily on the disk format change and were\nsquashed together to make sure git bisect didn\u0027t end up in a\nbad state wrt space balancing or the format change.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5732c468495effd3089c1c893f3eba9a8a1d373c",
      "tree": "6cb79b79acde60efd82af296fd312569034d5a58",
      "parents": [
        "45d447406a19cbfd42720f066f156f4eb9d68801",
        "9f55684c2d9869e8cc53595a3fee679958511cfb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 14 19:18:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 14 19:18:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: Spelling fix in btrfs_lookup_first_block_group comments\n  Btrfs: make show_options result match actual option names\n  Btrfs: remove outdated comment in btrfs_ioctl_resize()\n  Btrfs: remove some WARN_ONs in the IO failure path\n  Btrfs: Don\u0027t loop forever on metadata IO failures\n  Btrfs: init inode ordered_data_close flag properly\n"
    },
    {
      "commit": "5d847a8ed970d17e2734ff9e07a74fe36cceb24e",
      "tree": "3712028cb17a52b773ee626bda51ba6dc349d2a5",
      "parents": [
        "cc7b0c9b701a079016183f3546b4d720194b367f"
      ],
      "author": {
        "name": "Li Hong",
        "email": "lihong.hi@gmail.com",
        "time": "Thu May 14 13:52:21 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 14 14:00:33 2009 -0400"
      },
      "message": "Btrfs: remove outdated comment in btrfs_ioctl_resize()\n\nIn Li Zefan\u0027s commit dae7b665cf6d6e6e733f1c9c16cf55547dd37e33,\na combination call of kmalloc() and copy_from_user() is replaced by\nmemdup_user(). So btrfs_ioctl_resize() doesn\u0027t use GFP_NOFS any more.\n\nSigned-off-by: Li Hong \u003clihong.hi@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4ebf66233798347a73b01da5d30d5d2c0ef39f56",
      "tree": "3aae053ccbf3b6206fe6d17e62172559d35a7711",
      "parents": [
        "14b6084daa61bfd4da926f63e6e8bd0b6de87ad9",
        "46a53cca826e71effe59e3cb4f383622c33ebdcb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 27 11:16:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 27 11:16:33 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: look for acls during btrfs_read_locked_inode\n  Btrfs: fix acl caching\n  Btrfs: Fix a bunch of printk() warnings.\n  Btrfs: Fix a trivial warning using max() of u64 vs ULL.\n  Btrfs: remove unused btrfs_bit_radix slab\n  Btrfs: ratelimit IO error printks\n  Btrfs: remove #if 0 code\n  Btrfs: When shrinking, only update disk size on success\n  Btrfs: fix deadlocks and stalls on dead root removal\n  Btrfs: fix fallocate deadlock on inode extent lock\n  Btrfs: kill btrfs_cache_create\n  Btrfs: don\u0027t export symbols\n  Btrfs: simplify makefile\n  Btrfs: try to keep a healthy ratio of metadata vs data block groups\n"
    },
    {
      "commit": "21380931eb4da4e29ac663d0221581282cbba208",
      "tree": "fa8c2155784ccb0ee996e52e75d1e04b79cf2560",
      "parents": [
        "e63b6a6c0ffa2ebd8617cc1a10969000296831aa"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue Apr 21 12:38:29 2009 -0700"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 27 08:37:49 2009 -0400"
      },
      "message": "Btrfs: Fix a bunch of printk() warnings.\n\nJust happened to notice a bunch of %llu vs u64 warnings.  Here\u0027s a patch\nto cast them all.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e980b50cda1610f1c17978d9b7fd311a9dd93877",
      "tree": "a5ab72fa4b791758e25fd6ece6f1aedd29954e7b",
      "parents": [
        "9601e3f6336f6ca66929f451b1f66085e68e36e3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 24 14:39:24 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 24 15:46:05 2009 -0400"
      },
      "message": "Btrfs: fix fallocate deadlock on inode extent lock\n\nThe btrfs fallocate call takes an extent lock on the entire range\nbeing fallocated, and then runs through insert_reserved_extent on each\nextent as they are allocated.\n\nThe problem with this is that btrfs_drop_extents may decide to try\nand take the same extent lock fallocate was already holding.  The solution\nused here is to push down knowledge of the range that is already locked\ngoing into btrfs_drop_extents.\n\nIt turns out that at least one other caller had the same bug.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dae7b665cf6d6e6e733f1c9c16cf55547dd37e33",
      "tree": "ab7f9fc54bcf735c7f331f78858ec0db7f634cdd",
      "parents": [
        "3939fcde24473dc09ce16e922c88df9b3bee45d9"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 08 15:06:54 2009 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:02:50 2009 -0400"
      },
      "message": "btrfs: use memdup_user()\n\nRemove open-coded memdup_user().\n\nNote this changes some GFP_NOFS to GFP_KERNEL, since copy_from_user() may\ncause pagefault, it\u0027s pointless to pass GFP_NOFS to kmalloc().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6a63209fc02d5483371f07e4913ee8abad608051",
      "tree": "7595e0df452928b677b66a64baf0cb3b7ec53dfc",
      "parents": [
        "2cfbd50b536c878e58ab3681c4e944fa3d99b415"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Fri Feb 20 11:00:09 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 20 11:00:09 2009 -0500"
      },
      "message": "Btrfs: add better -ENOSPC handling\n\nThis is a step in the direction of better -ENOSPC handling.  Instead of\nchecking the global bytes counter we check the space_info bytes counters to\nmake sure we have enough space.\n\nIf we don\u0027t we go ahead and try to allocate a new chunk, and then if that fails\nwe return -ENOSPC.  This patch adds two counters to btrfs_space_info,\nbytes_delalloc and bytes_may_use.\n\nbytes_delalloc account for extents we\u0027ve actually setup for delalloc and will\nbe allocated at some point down the line. \n\nbytes_may_use is to keep track of how many bytes we may use for delalloc at\nsome point.  When we actually set the extent_bit for the delalloc bytes we\nsubtract the reserved bytes from the bytes_may_use counter.  This keeps us from\nnot actually being able to allocate space for any delalloc bytes.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n\n\n\n"
    },
    {
      "commit": "7eaebe7d503c3ef240ac7b3efc5433fe647c0298",
      "tree": "6e54b7766559555d3a4e205a0524a4df02f6cf5b",
      "parents": [
        "070604040b86511cc2df0f25f98e26c5529bd928"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Wed Jan 21 10:49:16 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 21 10:49:16 2009 -0500"
      },
      "message": "Btrfs: removed unused #include \u003cversion.h\u003e\u0027s\n\nRemoved unused #include \u003cversion.h\u003e\u0027s in btrfs\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\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": "e441d54de4fd97dd381f3e73636f5ba51ff4c7d9",
      "tree": "b0d664ffaa89cec80e6aaac11977c7f6aa92ff63",
      "parents": [
        "b34b086c1c1d934c5314d46ba25ccfa9acc471ae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 16:57:23 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 16:57:23 2009 -0500"
      },
      "message": "Btrfs: add permission checks to the ioctls\n\nOnly root can add/remove devices\nOnly root can defrag subtrees\nOnly files open for writing can be defragged\nOnly files open for writing can be the destination for a clone\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ab67b7c1f780a8a321fe7ee49117775009350fb3",
      "tree": "35a7ac2e5f641d8f11d472d7f84601d16f4fcddc",
      "parents": [
        "b16281c30c841c6d999ff36c8d903f42a69315f2"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 19 10:58:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 10:58:39 2008 -0500"
      },
      "message": "Btrfs: Add missing mnt_drop_write in ioctl.c\n\nThis patch adds the missing mnt_drop_write to match\nmnt_want_write in btrfs_ioctl_defrag and btrfs_ioctl_clone\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": "cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06",
      "tree": "51c204175bf806abc180badd691aa909e2d61fcf",
      "parents": [
        "0403e47ee26f26e960ee9038552bc89df4a1fb3d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 11 16:30:06 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 11 16:30:06 2008 -0500"
      },
      "message": "Btrfs: mnt_drop_write in ioctl_trans_end\n\nAdd missing mnt_drop_write to match the mnt_want_write in\nbtrfs_ioctl_trans_start.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "d20f7043fa65659136c1a7c3c456eeeb5c6f431f",
      "tree": "05d1031cadec6d440a97221e3a32adb504a51699",
      "parents": [
        "c99e905c945c462085c6d64646dc5af0c0a16815"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "message": "Btrfs: move data checksumming into a dedicated tree\n\nBtrfs stores checksums for each data block.  Until now, they have\nbeen stored in the subvolume trees, indexed by the inode that is\nreferencing the data block.  This means that when we read the inode,\nwe\u0027ve probably read in at least some checksums as well.\n\nBut, this has a few problems:\n\n* The checksums are indexed by logical offset in the file.  When\ncompression is on, this means we have to do the expensive checksumming\non the uncompressed data.  It would be faster if we could checksum\nthe compressed data instead.\n\n* If we implement encryption, we\u0027ll be checksumming the plain text and\nstoring that on disk.  This is significantly less secure.\n\n* For either compression or encryption, we have to get the plain text\nback before we can verify the checksum as correct.  This makes the raid\nlayer balancing and extent moving much more expensive.\n\n* It makes the front end caching code more complex, as we have touch\nthe subvolume and inodes as we cache extents.\n\n* There is potentitally one copy of the checksum in each subvolume\nreferencing an extent.\n\nThe solution used here is to store the extent checksums in a dedicated\ntree.  This allows us to index the checksums by phyiscal extent\nstart and length.  It means:\n\n* The checksum is against the data stored on disk, after any compression\nor encryption is done.\n\n* The checksum is stored in a central location, and can be verified without\nfollowing back references, or reading inodes.\n\nThis makes compression significantly faster by reducing the amount of\ndata that needs to be checksummed.  It will also allow much faster\nraid management code in general.\n\nThe checksums are indexed by a key with a fixed objectid (a magic value\nin ctree.h) and offset set to the starting byte of the extent.  This\nallows us to copy the checksum items into the fsync log tree directly (or\nany other tree), without having to invent a second format for them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "607d432da0542e84ddcd358adfddac6f68500e3d",
      "tree": "44425bf1fe8378022bc1b84425ca4ba9d0176566",
      "parents": [
        "c6e2bac1a52ffc36dd10769b594dfa3994e95f77"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "message": "Btrfs: add support for multiple csum algorithms\n\nThis patch gives us the space we will need in order to have different csum\nalgorithims at some point in the future.  We save the csum algorithim type\nin the superblock, and use those instead of define\u0027s.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "7a865e8ac3a8ead776ea2c8c74fa2b2d00a2c9cf",
      "tree": "e7b425f7857f3643e911d268c779b61777d3e854",
      "parents": [
        "4bcabaa30a63a156fc50026f972377dada66452c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 09:52:24 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:52:24 2008 -0500"
      },
      "message": "Btrfs: btrfs: pass void __user * to btrfs_ioctl_clone_range\n\nCleans the code up a little and also avoids a sparse warning due to the\nincorrect cast in the current version of the code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "4bcabaa30a63a156fc50026f972377dada66452c",
      "tree": "4f6575aca5209748a716eeac2c3fb0bb0263daa5",
      "parents": [
        "97288f2c71e46965a2010baea10548fcb5f3af73"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "message": "Btrfs: clean up btrfs_ioctl a little bit\n\nProvide a void __user *argp pointer so that we can avoid duplicating\nthe cast for various sub-command calls.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "b2950863c61bc24cf0f63bc05947d9d50663c4c0",
      "tree": "3005a034713fe86db2d64ab1b21fe8762f6a4b0c",
      "parents": [
        "1ffa4f426c002161b7dbd58b297f5d0680e7dd6a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "message": "Btrfs: make things static and include the right headers\n\nShut up various sparse warnings about symbols that should be either\nstatic or have their declarations in scope.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "1ffa4f426c002161b7dbd58b297f5d0680e7dd6a",
      "tree": "5839170f90f7929f4c96453c74f808648c006318",
      "parents": [
        "6e3ad88729103c4d19703311253fab8a49669fa8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 02 09:53:09 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:53:09 2008 -0500"
      },
      "message": "Btrfs: remove unneeded btrfs_start_delalloc_inodes call\n\nIt is called by btrfs_sync_fs.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "4b4e25f2a6ddb070bab7f7dd2bd2926fb8db9e04",
      "tree": "b4417e03a187efd6a88da75a41a94020a2bb76ac",
      "parents": [
        "79683f2d685cfb6ef9c97c5194e3ce3319e80cac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:22:27 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:22:27 2008 -0500"
      },
      "message": "Btrfs: compat code fixes\n\nThe btrfs git kernel trees is used to build a standalone tree for\ncompiling against older kernels.  This commit makes the standalone tree\nwork with 2.6.27\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ea9e8b11bd1252dcbc23afefcf1a52ec6aa3c113",
      "tree": "3573c8d79e1936e8c921a3be77abda35124e0d78",
      "parents": [
        "0660b5af3f7ac0fac69de975914e1f4a3a586fb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:14:24 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:14:24 2008 -0500"
      },
      "message": "Btrfs: prevent loops in the directory tree when creating snapshots\n\nFor a directory tree:\n\n/mnt/subvolA/subvolB\n\nbtrfsctl -s /mnt/subvolA/subvolB /mnt\n\nWill create a directory loop with subvolA under subvolB.  This\ncommit uses the forward refs for each subvol and snapshot to error out\nbefore creating the loop.\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": "2b82032c34ec40515d3c45c36cd1961f37977de8",
      "tree": "fbdfe7b13dd51983dfca4aeb75983b37ee186ff9",
      "parents": [
        "c146afad2c7fea6a366d4945c1bab9b03880f526"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Nov 17 21:11:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:11:30 2008 -0500"
      },
      "message": "Btrfs: Seed device support\n\nSeed device is a special btrfs with SEEDING super flag\nset and can only be mounted in read-only mode. Seed\ndevices allow people to create new btrfs on top of it.\n\nThe new FS contains the same contents as the seed device,\nbut it can be mounted in read-write mode.\n\nThis patch does the following:\n\n1) split code in btrfs_alloc_chunk into two parts. The first part does makes\nthe newly allocated chunk usable, but does not do any operation that modifies\nthe chunk tree. The second part does the the chunk tree modifications. This\ndivision is for the bootstrap step of adding storage to the seed device.\n\n2) Update device management code to handle seed device.\nThe basic idea is: For an FS grown from seed devices, its\nseed devices are put into a list. Seed devices are\nopened on demand at mounting time. If any seed device is\nmissing or has been changed, btrfs kernel module will\nrefuse to mount the FS.\n\n3) make btrfs_find_block_group not return NULL when all\nblock groups are read-only.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "c146afad2c7fea6a366d4945c1bab9b03880f526",
      "tree": "dd217139525a521895125843ca31f61cfbb49dca",
      "parents": [
        "f3465ca44e2a51fd647c167045768a8ab5a96603"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Nov 12 14:34:12 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:34:12 2008 -0500"
      },
      "message": "Btrfs: mount ro and remount support\n\nThis patch adds mount ro and remount support. The main\nchanges in patch are: adding btrfs_remount and related\nhelper function; splitting the transaction related code\nout of close_ctree into btrfs_commit_super; updating\nallocator to properly handle read only block group.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "c5c9cd4d1b827fe545ed2a945e91e3a6909f3886",
      "tree": "5dae28d8cd871952b105cdc2822ef4e54f1f02f3",
      "parents": [
        "2ed6d66408527be0d1c6131d44cec7e86008ba26"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 12 14:32:25 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:32:25 2008 -0500"
      },
      "message": "Btrfs: allow clone of an arbitrary file range\n\nThis patch adds an additional CLONE_RANGE ioctl to clone an arbitrary \n(block-aligned) file range to another file.  The original CLONE ioctl \nbecomes a special case of cloning the entire file range.  The logic is a \nbit more complex now since ranges may be cloned to different offsets, and \nbecause we may only be cloning the beginning or end of a particular extent \nor checksum item.\n\nAn additional sanity check ensures the source and destination files aren\u0027t \nthe same (which would previously deadlock), although eventually this could \nbe extended to allow the duplication of file data at a different offset \nwithin the same file.\n\nAny extents within the destination range in the target file are dropped.\n\nWe currently do not cope with the case where a compressed inline extent \nneeds to be split.  This will probably require decompressing the extent \ninto a temporary address_space, and inserting just the cloned portion as a \nnew compressed inline extent.  For now, just return -EINVAL in this case.  \nNote that this never comes up in the more common case of cloning an entire \nfile.\n    \nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "d899e05215178fed903ad0e7fc1cb4d8e0cc0a88",
      "tree": "2969e3558f5c50ec0f9ac4201099c0d5d1d6e2c2",
      "parents": [
        "80ff385665b7fca29fefe358a60ab0d09f9b8e87"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Oct 30 14:25:28 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 30 14:25:28 2008 -0400"
      },
      "message": "Btrfs: Add fallocate support v2\nThis patch updates btrfs-progs for fallocate support.\n\nfallocate is a little different in Btrfs because we need to tell the\nCOW system that a given preallocated extent doesn\u0027t need to be\ncow\u0027d as long as there are no snapshots of it.  This leverages the\n-o nodatacow checks.\n \nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\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": "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": "a3dddf3fc82a1f5942c0928abfd114e9a8c0d0c8",
      "tree": "a9330f97905176833ccf75f127f31822205929c7",
      "parents": [
        "cb8e70901d36f32017614f16d2cf7cc089544574"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 10 10:23:22 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 10 10:23:22 2008 -0400"
      },
      "message": "Btrfs: Don\u0027t call security_inode_mkdir during subvol creation\n\nSubvol creation already requires privs, and security_inode_mkdir isn\u0027t\nexported.  For now we don\u0027t need it.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "cb8e70901d36f32017614f16d2cf7cc089544574",
      "tree": "bc31116dcb5bcdd6f2677a0c83b824e77c1ef097",
      "parents": [
        "833023e46c2a0180ff07d90252c24cb3fdea811d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Oct 09 13:39:39 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 09 13:39:39 2008 -0400"
      },
      "message": "Btrfs: Fix subvolume creation locking rules\n\nCreating a subvolume is in many ways like a normal VFS -\u003emkdir, and we\nreally need to play with the VFS topology locking rules.  So instead of\njust creating the snapshot on disk and then later getting rid of\nconfliting aliases do it correctly from the start.  This will become\nespecially important once we allow for subvolumes anywhere in the tree,\nand not just below a hidden root.\n\nNote that snapshots will need the same treatment, but do to the delay\nin creating them we can\u0027t do it currently.  Chris promised to fix that\nissue, so I\u0027ll wait on that.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n\n"
    },
    {
      "commit": "3bb1a1bc42f2ae9582c28adf620484efcd4da38d",
      "tree": "4e65ee859e73ea9558e33a02ba10e1d9d54756f3",
      "parents": [
        "a76a3cd40c1127ca199d4f7f37bf0d541bf44eb2"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Oct 09 11:46:24 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 09 11:46:24 2008 -0400"
      },
      "message": "Btrfs: Remove offset field from struct btrfs_extent_ref\n\nThe offset field in struct btrfs_extent_ref records the position\ninside file that file extent is referenced by. In the new back\nreference system, tree leaves holding references to file extent\nare recorded explicitly. We can scan these tree leaves very quickly, so the\noffset field is not required.\n\nThis patch also makes the back reference system check the objectid\nwhen extents are in deleting.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "a76a3cd40c1127ca199d4f7f37bf0d541bf44eb2",
      "tree": "a91e91d9f67ce8bd314cebdacc458315d3e54275",
      "parents": [
        "a62b940160d8125016e85046e68ae621c99e751f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Oct 09 11:46:29 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 09 11:46:29 2008 -0400"
      },
      "message": "Btrfs: Count space allocated to file in bytes\n\nThis patch makes btrfs count space allocated to file in bytes instead\nof 512 byte sectors.\n\nEverything else in btrfs uses a byte count instead of sector sizes or\nblocks sizes, so this fits better.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "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": "31840ae1a6b433ca0e6a8d341756ff478bbf959e",
      "tree": "9343db596aec175e9640aa2800b80f01496d7047",
      "parents": [
        "1c2308f8e7d8491467e0095af2b01500f1b70819"
      ],
      "author": {
        "name": "Zheng Yan",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Sep 23 13:14:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: Full back reference support\n\nThis patch makes the back reference system to explicit record the\nlocation of parent node for all types of extents. The location of\nparent node is placed into the offset field of backref key. Every\ntime a tree block is balanced, the back references for the affected\nlower level extents are updated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b214107eda845f9a5851ae198f5b972e0dc30c45",
      "tree": "9ca3127891a90b72f72477b48217d05fdfcaa83c",
      "parents": [
        "a237d2a2bd67eb2b57b87c1e1d3d802d078d4ba7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Sep 05 16:43:31 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:07 2008 -0400"
      },
      "message": "Btrfs: trivial sparse fixes\n\nFix a bunch of trivial sparse complaints.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "ae01a0abf343aefe923ace5c1a8c634adfbe29c5",
      "tree": "b6d1fc42223b3588c8187dcd946176257872499d",
      "parents": [
        "b48652c101cce7a54379a49cc0cf854cec2c94e2"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Aug 04 23:23:47 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Update clone file ioctl\n\nThis patch updates the file clone ioctl for the tree locking and new\ndata ordered code.\n\n---\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ea8c281947950fac5f78818b767821d696c9512a",
      "tree": "a30e9da5371d9a694a8f73d450231107ccad1dcb",
      "parents": [
        "d7a029a89ef370e74b63f18b81498d90d1ee3cc1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 04 23:17:27 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Maintain a list of inodes that are delalloc and a way to wait on them\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "f87f057b49ee52cf5c627ab27a706e3252767c9f",
      "tree": "4f8cc04e91ae836f4dd1b2151f47cbd1bd1b9367",
      "parents": [
        "492bb6deee3416ad792dcd8584ebd95c463af1a6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 01 11:27:23 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:06 2008 -0400"
      },
      "message": "Btrfs: Improve and cleanup locking done by walk_down_tree\n\nWhile dropping snapshots, walk_down_tree does most of the work of checking\nreference counts and limiting tree traversal to just the blocks that\nwe are freeing.\n\nIt dropped and held the allocation mutex in strange and confusing ways,\nthis commit changes it to only hold the mutex while actually freeing a block.\n\nThe rest of the checks around reference counts should be safe without the lock\nbecause we only allow one process in btrfs_drop_snapshot at a time.  Other\nprocesses dropping reference counts should not drop it to 1 because\ntheir tree roots already have an extra ref on the block.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5516e5957f4b99b19fffffa53bf9fbe7cc793249",
      "tree": "d5d0b0d3850fc37093300920a672b3b051c86a82",
      "parents": [
        "9652480bf48500885a30754b4a5c436b5b34456d"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 24 12:20:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Null terminate strings passed in from userspace\n\nThe \u0027char name[BTRFS_PATH_NAME_MAX]\u0027 member of struct btrfs_ioctl_vol_args\nis passed directly to strlen() after being copied from user. I haven\u0027t\nverified this, but in theory a userspace program could pass in an\nunterminated string and cause a kernel crash as strlen walks off the end of\nthe array.\n\nThis patch terminates the -\u003ename string in all btrfs ioctl functions which\ncurrently use a \u0027struct btrfs_ioctl_vol_args\u0027. Since the string is now\nproperly terminated, it\u0027s length will never be longer than\nBTRFS_PATH_NAME_MAX so that error check has been removed.\n\nBy the way, it might be better overall to just have the ioctl pass an\nunterminated string + length structure but I didn\u0027t bother with that since\nit\u0027d change the kernel/user interface.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8e8a1e31f2780b7865d40a8c5142a04f2bcdcb86",
      "tree": "6fe03f25b1cc33f2c881ffd5e54b7e82335c9098",
      "parents": [
        "7b1287662304c3cb05cb38f5e3e2d69f386e8f10"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Jul 24 12:17:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Fix a few functions that exit without stopping their transaction\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": "3eaa2885276fd6dac7b076a793932428b7168e74",
      "tree": "b06382bec68bf1755597a74ac8225f3bcddda5e5",
      "parents": [
        "64f26f745084872b916cd1bef6054e21b15c5784"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jul 24 11:57:52 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:05 2008 -0400"
      },
      "message": "Btrfs: Fix the defragmention code and the block relocation code for data\u003dordered\n\nBefore setting an extent to delalloc, the code needs to wait for\npending ordered extents.\n\nAlso, the relocation code needs to wait for ordered IO before scanning\nthe block group again.  This is because the extents are not removed\nuntil the IO for the new extents is finished\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7d9eb12c8739e7dc80c78c6b3596f912ecd8f941",
      "tree": "000608285b44920f22e0888753b36299bc762cef",
      "parents": [
        "a7a16fd772620605c76e8ac8bdbc8ccc9e3df1a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 08 14:19:17 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:04 2008 -0400"
      },
      "message": "Btrfs: Add locking around volume management (device add/remove/balance)\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": "df5b5520b21d8a2554ede65c09b288833c77144d",
      "tree": "6f4e2876c263b0b359cd3bba92bbf80fe139064d",
      "parents": [
        "f46b5a66b3316ef2f8febfe4c56e2d555e2c3979"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 11 21:53:58 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "BTRFS_IOC_TRANS_START should be privilegued\n\nAs mentioned in the comment next to it btrfs_ioctl_trans_start can\ndo bad damage to filesystems and thus should be limited to privilegued\nusers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f46b5a66b3316ef2f8febfe4c56e2d555e2c3979",
      "tree": "dc3a5898d323539728576df50f8be621936d6f04",
      "parents": [
        "9d2423c5c3fbb0f110ac0b6cdc5a8e4d64729483"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 11 21:53:53 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: split out ioctl.c\n\nSplit the ioctl handling out of inode.c into a file of it\u0027s own.\nAlso fix up checkpatch.pl warnings for the moved code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ]
}
