)]}'
{
  "log": [
    {
      "commit": "ea8efc74bd0402b4d5f663d007b4e25fa29ea778",
      "tree": "ad3f19c4281877767f6dce99f0e003284a159e71",
      "parents": [
        "31339acd07b4ba687906702085127895a56eb920"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 08 11:54:40 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 08 11:58:09 2011 -0500"
      },
      "message": "Btrfs: make sure not to return overlapping extents to fiemap\n\nThe btrfs fiemap code was incorrectly returning duplicate or overlapping\nextents in some cases.  cp was blindly trusting this result and we would\nend up with a destination file that was bigger than the original because\nsome bytes were copied twice.\n\nThe fix here adjusts our offsets to make sure we\u0027re always moving\nforward in the fiemap results.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "31339acd07b4ba687906702085127895a56eb920",
      "tree": "c1f2d464acfc97e8c5faecf57e644578cccce94d",
      "parents": [
        "b1bf862e9dad431175a1174379476299dbfdc017"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 11:10:24 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 11:10:24 2011 -0500"
      },
      "message": "Btrfs: deal with short returns from copy_from_user\n\nWhen copy_from_user is only able to copy some of the bytes we requested,\nwe may end up creating a partially up to date page.  To avoid garbage in\nthe page, we need to treat a partial copy as a zero length copy.\n\nThis makes the rest of the file_write code drop the page and\nretry the whole copy instead of marking the partially up to\ndate page as dirty.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "b1bf862e9dad431175a1174379476299dbfdc017",
      "tree": "a53811b2112fbe2a0106e3ac051fffc63872d317",
      "parents": [
        "ec29ed5b407d618a8128f5942aade9e1758aa14b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 28 09:52:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 10:42:27 2011 -0500"
      },
      "message": "Btrfs: fix regressions in copy_from_user handling\n\nCommit 914ee295af418e936ec20a08c1663eaabe4cd07a fixed deadlocks in\nbtrfs_file_write where we would catch page faults on pages we had\nlocked.\n\nBut, there were a few problems:\n\n1) The x86-32 iov_iter_copy_from_user_atomic code always fails to copy\ndata when the amount to copy is more than 4K and the offset to start\ncopying from is not page aligned.  The result was btrfs_file_write\nlooping forever retrying the iov_iter_copy_from_user_atomic\n\nWe deal with this by changing btrfs_file_write to drop down to single\npage copies when iov_iter_copy_from_user_atomic starts returning failure.\n\n2) The btrfs_file_write code was leaking delalloc reservations when\niov_iter_copy_from_user_atomic returned zero.  The looping above would\nresult in the entire filesystem running out of delalloc reservations and\nconstantly trying to flush things to disk.\n\n3) btrfs_file_write will lock down page cache pages, make sure\nany writeback is finished, do the copy_from_user and then release them.\nBefore the loop runs we check the first and last pages in the write to\nsee if they are only being partially modified.  If the start or end of\nthe write isn\u0027t aligned, we make sure the corresponding pages are\nup to date so that we don\u0027t introduce garbage into the file.\n\nWith the copy_from_user changes, we\u0027re allowing the VM to reclaim the\npages after a partial update from copy_from_user, but we\u0027re not\nmaking sure the page cache page is up to date when we loop around to\nresume the write.\n\nWe deal with this by pushing the up to date checks down into the page\nprep code.  This fits better with how the rest of file_write works.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "ec29ed5b407d618a8128f5942aade9e1758aa14b",
      "tree": "19b3c13f15504cf9de116f0bd55045ebcf0d0cfc",
      "parents": [
        "fb01aa85b8b29c1a4e1f4a28ea54175de6bf7559"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 23 16:23:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 23 16:23:20 2011 -0500"
      },
      "message": "Btrfs: fix fiemap bugs with delalloc\n\nThe Btrfs fiemap code wasn\u0027t properly returning delalloc extents,\nso applications that trust fiemap to decide if there are holes in the\nfile see holes instead of delalloc.\n\nThis reworks the btrfs fiemap code, adding a get_extent helper that\nsearches for delalloc ranges and also adding a helper for extent_fiemap\nthat skips past holes in the file.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fb01aa85b8b29c1a4e1f4a28ea54175de6bf7559",
      "tree": "af7fc0623980c03c3f808f9ec157341d8549133d",
      "parents": [
        "9b3517e9136824346227b7b04f8f7ea1f3a726cc"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Feb 15 18:12:57 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 16:34:00 2011 -0500"
      },
      "message": "Btrfs: set FMODE_EXCL in btrfs_device-\u003emode\n\nThis fixes a bug introduced in d4d77629, where the device added online\n(and therefore initialized via btrfs_init_new_device()) would be left\nwith the positive bdev-\u003ebd_holders after unmount.  Since d4d77629 we no\nlonger OR FMODE_EXCL explicitly on blkdev_put(), set it in\nbtrfs_device-\u003emode.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9b3517e9136824346227b7b04f8f7ea1f3a726cc",
      "tree": "b317f5ed612c5adae478a7acd48f6d8096a1656d",
      "parents": [
        "ca9b688c1c9a21635cfc8af8b68565b154185196"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Feb 15 18:14:25 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:37:59 2011 -0500"
      },
      "message": "Btrfs: make btrfs_rm_device() fail gracefully\n\nIf shrinking done as part of the online device removal fails add that\ndevice back to the allocation list and increment the rw_devices counter.\nThis fixes two bugs:\n\n1) we could have a perfectly good device out of alloc list for no good\nreason;\n\n2) in the btrfs consisting of two devices, failure in btrfs_rm_device()\ncould lead to a situation where it was impossible to remove any of the\ndevices because of the \"unable to remove the only writeable device\"\nerror.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ca9b688c1c9a21635cfc8af8b68565b154185196",
      "tree": "bfc9eed8a9099503645b467733707246b246ed19",
      "parents": [
        "b4dc2b8c694ead005b828f5fb7fa1134db5b6275"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Feb 16 06:06:41 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:37:58 2011 -0500"
      },
      "message": "Btrfs: Avoid accessing unmapped kernel address\n\nWhen decompressing a chunk of data, we\u0027ll copy the data out to\na working buffer if the data is stored in more than one page,\notherwise we\u0027ll use the mapped page directly to avoid memory\ncopy.\n\nIn the latter case, we\u0027ll end up accessing the kernel address\nafter we\u0027ve unmapped the page in a corner case.\n\nReported-by: Juan Francisco Cantero Hurtado \u003ciam@juanfra.info\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4dc2b8c694ead005b828f5fb7fa1134db5b6275",
      "tree": "ba01c2bb5381ab9a34c4152ed4dd83c1797f780c",
      "parents": [
        "c87f08ca44e83b2c8d28f63f9c33f3a270a04bbe"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Feb 16 06:06:34 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:37:58 2011 -0500"
      },
      "message": "Btrfs: Fix BTRFS_IOC_SUBVOL_SETFLAGS ioctl\n\n- Check user-specified flags correctly\n- Check the inode owership\n- Search root item in root tree but not fs tree\n\nReported-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c87f08ca44e83b2c8d28f63f9c33f3a270a04bbe",
      "tree": "05cebe37380861a89faaea50c1ccb360ffb0f975",
      "parents": [
        "91435650c233b93e0da389db74f4b2c11c5ad2d4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 13:57:04 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:28:47 2011 -0500"
      },
      "message": "Btrfs: allow balance to explicitly allocate chunks as it relocates\n\nBtrfs device shrinking and balancing ends up reallocating all the blocks\nin order to allow COW to move them to new destinations.  It is somewhat\nawkward in terms of ENOSPC because most of the enospc code is built\naround the idea that some operation on a reference counted tree triggers\nallocations in the non-reference counted trees.\n\nThis commit changes the balancing code to deal with enospc by trying to\nallocate a new chunk.  If that allocation succeeds, we go ahead and\nretry whatever failed due to enospc.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "91435650c233b93e0da389db74f4b2c11c5ad2d4",
      "tree": "c4f8fef1348a0ac188dca47020d86b206ed5d41f",
      "parents": [
        "c26a920373a983b52223eed5a13b97404d8b4158"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 13:10:41 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:28:36 2011 -0500"
      },
      "message": "Btrfs: put ENOSPC debugging under a mount option\n\nENOSPC in btrfs is getting to the point where the extra debugging isn\u0027t\nrequired.  I\u0027ve put it under mount -o enospc_debug just in case someone\nis having difficult problems.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c26a920373a983b52223eed5a13b97404d8b4158",
      "tree": "a7f76fe1b0cecbc712f0b152ff537805f126b113",
      "parents": [
        "67100f255dba284bcbb5ce795355dad1cff35658"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Feb 14 00:45:29 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:21:37 2011 -0500"
      },
      "message": "Btrfs: check return value of alloc_extent_map()\n\nI add the check on the return value of alloc_extent_map() to several places.\nIn addition, alloc_extent_map() returns only the address or NULL.\nTherefore, check by IS_ERR() is unnecessary. So, I remove IS_ERR() checking.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "67100f255dba284bcbb5ce795355dad1cff35658",
      "tree": "f343a1c2bb24b4a4cc965933b41e6d0271fe05fb",
      "parents": [
        "51788b1bdd0d68345bab0af4301e7fa429277228"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Sun Feb 06 19:58:21 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:21:31 2011 -0500"
      },
      "message": "Btrfs - Fix memory leak in btrfs_init_new_device()\n\nMemory allocated by calling kstrdup() should be freed.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "51788b1bdd0d68345bab0af4301e7fa429277228",
      "tree": "52895ef3c348c2dfa1f1ef2c4557d9f7515dfc3b",
      "parents": [
        "6848ad6461e551849ba3c32d945d4f45e96453a6"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Mon Feb 14 16:04:23 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:04:23 2011 -0500"
      },
      "message": "btrfs: prevent heap corruption in btrfs_ioctl_space_info()\n\nCommit bf5fc093c5b625e4259203f1cee7ca73488a5620 refactored\nbtrfs_ioctl_space_info() and introduced several security issues.\n\nspace_args.space_slots is an unsigned 64-bit type controlled by a\npossibly unprivileged caller.  The comparison as a signed int type\nallows providing values that are treated as negative and cause the\nsubsequent allocation size calculation to wrap, or be truncated to 0.\nBy providing a size that\u0027s truncated to 0, kmalloc() will return\nZERO_SIZE_PTR.  It\u0027s also possible to provide a value smaller than the\nslot count.  The subsequent loop ignores the allocation size when\ncopying data in, resulting in a heap overflow or write to ZERO_SIZE_PTR.\n\nThe fix changes the slot count type and comparison typecast to u64,\nwhich prevents truncation or signedness errors, and also ensures that we\ndon\u0027t copy more data than we\u0027ve allocated in the subsequent loop.  Note\nthat zero-size allocations are no longer possible since there is already\nan explicit check for space_args.space_slots being 0 and truncation of\nthis value is no longer an issue.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6848ad6461e551849ba3c32d945d4f45e96453a6",
      "tree": "86ab53a68e0b3181594808b43ef9fec333ea61f2",
      "parents": [
        "e3f24cc521cb7ba60ac137abd1939e4e03435e80"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Mon Feb 14 16:00:03 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:00:03 2011 -0500"
      },
      "message": "Btrfs: Fix balance panic\n\nMark the cloned backref_node as checked in clone_backref_node()\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e3f24cc521cb7ba60ac137abd1939e4e03435e80",
      "tree": "e054136e5b2cf6a2bc9a62dd616393676cd316dd",
      "parents": [
        "eb14ab8ed24a0405fd056068b28c33a1cd846024"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 12:52:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 13:04:01 2011 -0500"
      },
      "message": "Btrfs: don\u0027t release pages when we can\u0027t clear the uptodate bits\n\nBtrfs tracks uptodate state in an rbtree as well as in the\npage bits.  This is supposed to enable us to use block sizes other than\nthe page size, but there are a few parts still missing before that\ncompletely works.\n\nBut, our readpage routine trusts this additional range based tracking\nof uptodateness, much in the same way the buffer head up to date bits\nare trusted for the other filesystems.\n\nThe problem is that sometimes we need to allocate memory in order to\nsplit records in the rbtree, even when we are just clearing bits.  This\ncan be difficult when our clearing function is called GFP_ATOMIC, which\ncan happen in the releasepage path.\n\nSo, what happens today looks like this:\n\nreleasepage called with GFP_ATOMIC\nbtrfs_releasepage calls clear_extent_bit\nclear_extent_bit fails to allocate ram, leaving the up to date bit set\nbtrfs_releasepage returns success\n\nThe end result is the page being gone, but btrfs thinking the range is\nup to date.   Later on if someone tries to read that same page, the\nbtrfs readpage code will return immediately thinking the page is already\nup to date.\n\nThis commit fixes things to fail the releasepage when we can\u0027t clear the\nextent state bits.  It covers both data pages and metadata tree blocks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eb14ab8ed24a0405fd056068b28c33a1cd846024",
      "tree": "1451cad453a3ff66bc5369dc83daf7e3a50c4897",
      "parents": [
        "3a90983dbdcb2f4f48c0d771d8e5b4d88f27fae6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 10 12:35:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 13:03:52 2011 -0500"
      },
      "message": "Btrfs: fix page-\u003eprivate races\n\nThere is a race where btrfs_releasepage can drop the\npage-\u003eprivate contents just as alloc_extent_buffer is setting\nup pages for metadata.  Because of how the Btrfs page flags work,\nthis results in us skipping the crc on the page during IO.\n\nThis patch sovles the race by waiting until after the extent buffer\nis inserted into the radix tree before it sets page private.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3a90983dbdcb2f4f48c0d771d8e5b4d88f27fae6",
      "tree": "3179f5e834e482cc3f782e709a53b08591416c76",
      "parents": [
        "8e4eef7a60eeca0fe7503e5cbd3b24ff4941c732"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Tue Jan 18 13:34:40 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 07 14:13:51 2011 -0500"
      },
      "message": "Btrfs: Fix page count calculation\n\ntake offset of start position into account when calculating page count.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8e4eef7a60eeca0fe7503e5cbd3b24ff4941c732",
      "tree": "63c578ff52407f073f89342780a48c95b17ac1ea",
      "parents": [
        "554233a6e0e8557e8e81e54cc70628d101291122"
      ],
      "author": {
        "name": "Alexey Charkov",
        "email": "alchark@gmail.com",
        "time": "Wed Feb 02 21:15:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 06 07:19:19 2011 -0500"
      },
      "message": "btrfs: Drop __exit attribute on btrfs_exit_compress\n\nAs this function is called in some error paths while not\nremoving the module, the __exit attribute prevents the kernel\nimage from linking when btrfs is compiled in statically.\n\nSigned-off-by: Alexey Charkov \u003calchark@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "554233a6e0e8557e8e81e54cc70628d101291122",
      "tree": "9cd7c8fe5dddbdd7255192468daa9cc9a48ea208",
      "parents": [
        "3c14874acc71180553fb5aba528e3cf57c5b958b"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Feb 03 03:16:25 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 06 07:17:45 2011 -0500"
      },
      "message": "btrfs: cleanup error handling in btrfs_unlink_inode()\n\nWhen btrfs_alloc_path() fails, btrfs_free_path() need not be called.\nTherefore, it changes the branch ahead.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3c14874acc71180553fb5aba528e3cf57c5b958b",
      "tree": "6fe93b4c4d0048cbabf6b7887f33020fd89f46b1",
      "parents": [
        "13dbc08987f25d9dba488a34b44b43e3844b027c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Feb 02 15:53:47 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 06 07:17:44 2011 -0500"
      },
      "message": "Btrfs: exclude super blocks when we read in block groups\n\nThis has been resulting in a BUT_ON(ret) after btrfs_reserve_extent in\nbtrfs_cow_file_range.  The reason is we don\u0027t actually calculate the bytes_super\nfor a block group until we go to cache it, which means that the space_info can\nhand out reservations for space that it doesn\u0027t actually have, and we can run\nout of data space.  This is also a problem if you are using space caching since\nwe don\u0027t ever calculate bytes_super for the block groups.  So instead everytime\nwe read a block group call exclude_super_stripes, which calculates the\nbytes_super for the block group so it can be left out of the space_info.  Then\nwhenever caching completes we just call free_excluded_extents so that the super\nexcluded extents are freed up.  Also if we are unmounting and we hit any block\ngroups that haven\u0027t been cached we still need to call free_excluded_extents to\nmake sure things are cleaned up properly.  Thanks,\n\nReported-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "13dbc08987f25d9dba488a34b44b43e3844b027c",
      "tree": "f1ccabbf2c8bc676be0dacacc3da86c62cf1b19f",
      "parents": [
        "98d5dc13e7e74b77ca3b4c3cbded9f48d2dbbbb7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Feb 03 02:39:52 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 06 07:13:12 2011 -0500"
      },
      "message": "Btrfs: make sure search_bitmap finds something in remove_from_bitmap\n\nWhen we\u0027re cleaning up the tree log we need to be able to remove free space from\nthe block group.  The problem is if that free space spans bitmaps we would not\nfind the space since we\u0027re looking for too many bytes.  So make sure the amount\nof bytes we search for is limited to either the number of bytes we want, or the\nnumber of bytes left in the bitmap.  This was tested by a user who was hitting\nthe BUG() after search_bitmap.  With this patch he can now mount his fs.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98d5dc13e7e74b77ca3b4c3cbded9f48d2dbbbb7",
      "tree": "8e75f67b28b5b0d909483a06bb5258e0ba0c9789",
      "parents": [
        "5df67083488ccbad925f583b698ab38f8629a016"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Jan 20 06:19:37 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Feb 01 07:17:27 2011 -0500"
      },
      "message": "btrfs: fix return value check of btrfs_start_transaction()\n\nThe error check of btrfs_start_transaction() is added, and the mistake\nof the error check on several places is corrected.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5df67083488ccbad925f583b698ab38f8629a016",
      "tree": "ec428f27f1b72c4d8e284831d4bef8894b2b8457",
      "parents": [
        "c87fb6fdcaf7560940b31a0c78c3e6370e3433cf"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Feb 01 09:17:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Feb 01 07:16:37 2011 -0500"
      },
      "message": "btrfs: checking NULL or not in some functions\n\nBecause NULL is returned when the memory allocation fails,\nit is checked whether it is NULL.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c87fb6fdcaf7560940b31a0c78c3e6370e3433cf",
      "tree": "2a3282ae70ca1da55281bba13e6a1f7216e49d3b",
      "parents": [
        "b31eabd86eb68d3c217e6821078249bc045e698a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 31 19:54:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 31 20:33:37 2011 -0500"
      },
      "message": "Btrfs: avoid uninit variable warnings in ordered-data.c\n\nThis one isn\u0027t really an uninit variable, but for pretty\nobscure reasons.  Let\u0027s make it clearly correct.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b31eabd86eb68d3c217e6821078249bc045e698a",
      "tree": "a6453484e1404ab2f92affad0225b3929dff5df6",
      "parents": [
        "b1953bcec95c189b1eea690a08e89646d7750bda"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 31 16:48:24 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 31 16:48:24 2011 -0500"
      },
      "message": "Btrfs: catch errors from btrfs_sync_log\n\nbtrfs_sync_log returns -EAGAIN when we need full transaction commits\ninstead of small log commits, but sometimes we were dropping the return\nvalue.\n\nIn practice, we check for this a few different ways, but this is still a\nbug that can leave off full log commits when we really need them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b1953bcec95c189b1eea690a08e89646d7750bda",
      "tree": "be7906f6568daecc6196433053ff0ea785b3d175",
      "parents": [
        "7adf5dfbb3af65a00e20b3ead224c3a1b40e4ec4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 21 21:10:01 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 31 16:27:28 2011 -0500"
      },
      "message": "Btrfs: make shrink_delalloc a little friendlier\n\nXfstests 224 will just sit there and spin for ever until eventually we give up\nflushing delalloc and exit.  On my box this took several hours.  I could not\ninterrupt this process either, even though we use INTERRUPTIBLE.  So do 2 things\n\n1) Keep us from looping over and over again without reclaiming anything\n2) If we get interrupted exit the loop\n\nI tested this and the test now exits in a reasonable amount of time, and can be\ninterrupted with ctrl+c.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7adf5dfbb3af65a00e20b3ead224c3a1b40e4ec4",
      "tree": "5723e9679a7926ea744c242cc8351e64ce7503e4",
      "parents": [
        "ad0397a7a97f55fd7f70998ec208c5d8b90310ff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 25 22:11:54 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:42:34 2011 -0500"
      },
      "message": "Btrfs: handle no memory properly in prepare_pages\n\nInstead of doing a BUG_ON(1) in prepare_pages if grab_cache_page() fails, just\nloop through the pages we\u0027ve already grabbed and unlock and release them, then\nreturn -ENOMEM like we should.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ad0397a7a97f55fd7f70998ec208c5d8b90310ff",
      "tree": "dbebfe94a571155d4f376e265026c9a1ca1e2f2f",
      "parents": [
        "68a82277b8619e6d0f2738b1d9b160b627e81e92"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 28 18:44:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:42:34 2011 -0500"
      },
      "message": "Btrfs: do error checking in btrfs_del_csums\n\nGot a report of a box panicing because we got a NULL eb in read_extent_buffer.\nHis fs was borked and btrfs_search_path returned EIO, but we don\u0027t check for\nerrors so the box paniced.  Yes I know this will just make something higher up\nthe stack panic, but that\u0027s a problem for future Josef.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "68a82277b8619e6d0f2738b1d9b160b627e81e92",
      "tree": "91d0f86f009cbbd8bf16643e41fb090a08e859a7",
      "parents": [
        "e9e22899de661af94cb9995885fd04e4c738838b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jan 24 21:43:20 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "Btrfs: use the global block reserve if we cannot reserve space\n\nWe call use_block_rsv right before we make an allocation in order to make sure\nwe have enough space.  Now normally people have called btrfs_start_transaction()\nwith the appropriate amount of space that we need, so we just use some of that\npre-reserved space and move along happily.  The problem is where people use\nbtrfs_join_transaction(), which doesn\u0027t actually reserve any space.  So we try\nand reserve space here, but we cannot flush delalloc, so this forces us to\nreturn -ENOSPC when in reality we have plenty of space.  The most common symptom\nis seeing a bunch of \"couldn\u0027t dirty inode\" messages in syslog.  With\nxfstests 224 we end up falling back to start_transaction and then doing all the\nflush delalloc stuff which causes to hang for a very long time.\n\nSo instead steal from the global reserve, which is what this is meant for\nanyway.  With this patch and the other 2 I have sent xfstests 224 now passes\nsuccessfully.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e9e22899de661af94cb9995885fd04e4c738838b",
      "tree": "3932040f0c5416e6ecbf508fa5d99b50eefbbc18",
      "parents": [
        "dedefd7215d3ec451291ca393e5c8e4c1882c8c6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jan 24 21:43:19 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "Btrfs: do not release more reserved bytes to the global_block_rsv than we need\n\nWhen we do btrfs_block_rsv_release, if global_block_rsv is not full we will\nrelease all the extra bytes to global_block_rsv, even if it\u0027s only a little\nshort of the amount of space that we need to reserve.  This causes us to starve\nourselves of reservable space during the transaction which will force us to\nshrink delalloc bytes and commit the transaction more often than we should.  So\ninstead just add the amount of bytes we need to add to the global reserve so\nreserved \u003d\u003d size, and then add the rest back into the space_info for general\nuse.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dedefd7215d3ec451291ca393e5c8e4c1882c8c6",
      "tree": "45ab482f3fa6896fc63051c356399d45e5ea8140",
      "parents": [
        "abd30bb0af9d4671506502278e8631bed9e3c35c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jan 24 21:43:18 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "Btrfs: fix check_path_shared so it returns the right value\n\nWhen running xfstests 224 I kept getting ENOSPC when trying to remove the files,\nand this is because we were returning ret from check_path_shared while it was\nuninitalized, which isn\u0027t right.  Fix this to return 0 properly, and now\nxfstests 224 doesn\u0027t freak out when it tries to clean itself up.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "abd30bb0af9d4671506502278e8631bed9e3c35c",
      "tree": "73e00f8712c8e4460647dd889cc32503fb56c21b",
      "parents": [
        "3612b49598c303cfb22a4b609427f829828e2427"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Jan 24 00:57:10 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "btrfs: check return value of btrfs_start_ioctl_transaction() properly\n\nbtrfs_start_ioctl_transaction() returns ERR_PTR(), not NULL.\nSo, it is necessary to use IS_ERR() to check the return value.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3612b49598c303cfb22a4b609427f829828e2427",
      "tree": "d0e9eabb176777ab80af5d78eab0555044172370",
      "parents": [
        "34d19bada00f4825588b338a8ee193820f9ceeb0"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Jan 25 02:51:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "btrfs: fix return value check of btrfs_join_transaction()\n\nThe error check of btrfs_join_transaction()/btrfs_join_transaction_nolock()\nis added, and the mistake of the error check in several places is\ncorrected.\n\nFor more stable Btrfs, I think that we should reduce BUG_ON().\nBut, I think that long time is necessary for this.\nSo, I propose this patch as a short-term solution.\n\nWith this patch:\n - To more stable Btrfs, the part that should be corrected is clarified.\n - The panic isn\u0027t done by the NULL pointer reference etc. (even if\n   BUG_ON() is increased temporarily)\n - The error code is returned in the place where the error can be easily\n   returned.\n\nAs a long-term plan:\n - BUG_ON() is reduced by using the forced-readonly framework, etc.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "34d19bada00f4825588b338a8ee193820f9ceeb0",
      "tree": "878be53a548cfc3b2bf653ab33f4431691ca9646",
      "parents": [
        "333e8105445d4f51101fc3d23199a919d66730b3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Jan 24 19:55:19 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "fs/btrfs/inode.c: Add missing IS_ERR test\n\nAfter the conditional that precedes the following code, inode may be an\nERR_PTR value.  This can eg result from a memory allocation failure via the\ncall to btrfs_iget, and thus does not imply that root is different than\nsub_root.  Thus, an IS_ERR check is added to ensure that there is no\ndereference of inode in this case.\n\nThe semantic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r@\nidentifier f;\n@@\nf(...) { ... return ERR_PTR(...); }\n\n@@\nidentifier r.f, fld;\nexpression x;\nstatement S1,S2;\n@@\n x \u003d f(...)\n ... when !\u003d IS_ERR(x)\n(\n if (IS_ERR(x) ||...) S1 else S2\n|\n*x-\u003efld\n)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "333e8105445d4f51101fc3d23199a919d66730b3",
      "tree": "135a6c38d0c58aad8de5b9b552a9158671d3ab0f",
      "parents": [
        "2a29edc6b60a5248ccab588e7ba7dad38cef0235"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jan 26 06:22:33 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "btrfs: fix missing break in switch phrase\n\nThere is a missing break in switch, fix it.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a29edc6b60a5248ccab588e7ba7dad38cef0235",
      "tree": "45a7939e9e061cb2f06b09ae5f48aa79853e1250",
      "parents": [
        "6b82ce8d824bd46053e46a895876cde39d9026e4"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jan 26 06:22:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:36 2011 -0500"
      },
      "message": "btrfs: fix several uncheck memory allocations\n\nTo make btrfs more stable, add several missing necessary memory allocation\nchecks, and when no memory, return proper errno.\n\nWe\u0027ve checked that some of those -ENOMEM errors will be returned to\nuserspace, and some will be catched by BUG_ON() in the upper callers,\nand none will be ignored silently.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6b82ce8d824bd46053e46a895876cde39d9026e4",
      "tree": "756e869f3fc9a7baa320ca671d0174c5430c091a",
      "parents": [
        "eab49bec41136460b12ac0fbeceeb88386d538c7"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jan 26 06:21:39 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:36 2011 -0500"
      },
      "message": "btrfs: fix uncheck memory allocation in btrfs_submit_compressed_read\n\nbtrfs_submit_compressed_read() is lack of memory allocation checks and\ncorresponding error route.\n\nAfter this fix, if it comes to \"no memory\" case, errno will be returned\nto userland step by step, and tell users this operation cannot go on.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eab49bec41136460b12ac0fbeceeb88386d538c7",
      "tree": "d2ad3e163407d7779d53fdaa0dedcc3b934106de",
      "parents": [
        "acce952b0263825da32cf10489413dec78053347",
        "4d728ec7aefdca5419d2ebfb28c147e81a4b59f4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "message": "Merge branch \u0027bug-fixes\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "4d728ec7aefdca5419d2ebfb28c147e81a4b59f4",
      "tree": "19dc56836d053c04d796ddca126dd60232175bb0",
      "parents": [
        "b897abec032deb7cc3ce67392a1f544ac965ddea"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 26 14:10:43 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:11:18 2011 +0800"
      },
      "message": "Btrfs: Fix file clone when source offset is not 0\n\nSuppose:\n- the source extent is: [0, 100]\n- the src offset is 10\n- the clone length is 90\n- the dest offset is 0\n\nThis statement:\n\n\tnew_key.offset \u003d key.offset + destoff - off\n\nwill produce such an extent for the dest file:\n\n\t[ino, BTRFS_EXTENT_DATA_KEY, -10]\n\n, which is obviously wrong.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "b897abec032deb7cc3ce67392a1f544ac965ddea",
      "tree": "9014f850ad04b51953ae010713605a758bd1bb63",
      "parents": [
        "d0f69686c2ae775529aadc7a8acc6f13ad41de66"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 26 16:19:22 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:10:30 2011 +0800"
      },
      "message": "Btrfs: Fix memory leak in writepage fixup work\n\nfixup, which is allocated when starting page write to fix up the\nextent without ORDERED bit set, should be freed after this work\nis done.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "d0f69686c2ae775529aadc7a8acc6f13ad41de66",
      "tree": "a7db405db82bd5acc3f51cb010dc306f402931ac",
      "parents": [
        "3f3d0bc0df041236fad4ffa82188a6e4ef9af75e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Jan 25 15:46:17 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:16 2011 +0800"
      },
      "message": "Btrfs: Don\u0027t return acl info when mounting with noacl option\n\nSteps to reproduce:\n\n  # mkfs.btrfs /dev/sda2\n  # mount /dev/sda2 /mnt\n  # touch /mnt/file0\n  # setfacl -m \u0027u:root:x,g::x,o::x\u0027 /mnt/file0\n  # umount /mnt\n  # mount /dev/sda2 -o noacl /mnt\n  # getfacl /mnt/file0\n  ...\n  user::rw-\n  user:root:--x\n  group::--x\n  mask::--x\n  other::--x\n\nThe output should be:\n\n  user::rw-\n  group::--x\n  other::--x\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "3f3d0bc0df041236fad4ffa82188a6e4ef9af75e",
      "tree": "b27b210a3c48e08e63d1ee69c9b4b7e86709e360",
      "parents": [
        "bdc924bb4cdac92b945945c3149ab8191c92d75d"
      ],
      "author": {
        "name": "Tero Roponen",
        "email": "tero.roponen@gmail.com",
        "time": "Mon Dec 27 16:43:13 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:11 2011 +0800"
      },
      "message": "Btrfs: Free correct pointer after using strsep\n\nWe must save and free the original kstrdup()\u0027ed pointer\nbecause strsep() modifies its first argument.\n\nSigned-off-by: Tero Roponen \u003ctero.roponen@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "bdc924bb4cdac92b945945c3149ab8191c92d75d",
      "tree": "906e0ae44bff82d3bdc03efbf5e42144b5e941ac",
      "parents": [
        "83a4d54840c88a4a45c49670f044b8c7ddeaa8c7"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Dec 27 16:33:15 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:07 2011 +0800"
      },
      "message": "Btrfs: Fix memory leak on finding existing super\n\nWe missed a memory deallocation in commit 450ba0ea.\n\nIf an existing super block is found at mount and there is no\nerror condition then the pre-allocated tree_root and fs_info\nare no not used and are not freeded.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "83a4d54840c88a4a45c49670f044b8c7ddeaa8c7",
      "tree": "a2a9290eb6dec1dd7d0bcb51a4006a363e203b99",
      "parents": [
        "f333adb5d64bc1c4d6099072fc341c3c8f84e0cf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 27 16:19:53 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:02 2011 +0800"
      },
      "message": "Btrfs: Fix memory leak at umount\n\nfs_info, which is allocated in open_ctree(), should be freed\nin close_ctree().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "f333adb5d64bc1c4d6099072fc341c3c8f84e0cf",
      "tree": "abf1c214113a9c2dec3d42a9e0ee14e1863fe0a1",
      "parents": [
        "120d66eec0dcb966fbd03f743598b2ff2513436b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:57:39 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:57 2011 +0800"
      },
      "message": "btrfs: Check mergeable free space when removing a cluster\n\nAfter returing extents from a cluster to the block group, some\nextents in the block group may be mergeable.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "120d66eec0dcb966fbd03f743598b2ff2513436b",
      "tree": "fc2b1d1e9555f2f9de847ba4134d827613c66e73",
      "parents": [
        "5e71b5d5ec07e4b3fb4c78c4e4b108ff667f123f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:56:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:50 2011 +0800"
      },
      "message": "btrfs: Add a helper try_merge_free_space()\n\nWhen adding a new extent, we\u0027ll firstly see if we can merge\nthis extent to the left or/and right extent. Extract this as\na helper try_merge_free_space().\n\nAs a side effect, we fix a small bug that if the new extent\nhas non-bitmap left entry but is unmergeble, we\u0027ll directly\nlink the extent without trying to drop it into bitmap.\n\nThis also prepares for the next patch.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "5e71b5d5ec07e4b3fb4c78c4e4b108ff667f123f",
      "tree": "4fdb07b18c010f132d10b074bff60226b6517a08",
      "parents": [
        "70b7da304f9f9bbf1566085155895e32e775a745"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:55:34 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:46 2011 +0800"
      },
      "message": "btrfs: Update stats when allocating from a cluster\n\nWhen allocating extent entry from a cluster, we should update\nthe free_space and free_extents fields of the block group.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "70b7da304f9f9bbf1566085155895e32e775a745",
      "tree": "74c6de5ac85b7944292f2486b25946754d57989d",
      "parents": [
        "edf6e2d1ddbac7f326b34a27adbca71ece53ccce"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:51:45 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:41 2011 +0800"
      },
      "message": "btrfs: Free fully occupied bitmap in cluster\n\nIf there\u0027s no more free space in a bitmap, we should free it.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "edf6e2d1ddbac7f326b34a27adbca71ece53ccce",
      "tree": "71df1880c22a88a5f81560ab574bb19f61c83eb9",
      "parents": [
        "8eb2d829ffea3677c21bd038f19e5d8ca6b43e36"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:50:07 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:37 2011 +0800"
      },
      "message": "btrfs: Add helper function free_bitmap()\n\nRemove some duplicated code.\n\nThis prepares for the next patch.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8eb2d829ffea3677c21bd038f19e5d8ca6b43e36",
      "tree": "fc96e4d61125b703df38ee133a3d031f1c85d4a2",
      "parents": [
        "65e5341b9a0c39767ae1fecc727d70eda0dd6d83"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:48:01 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:31 2011 +0800"
      },
      "message": "btrfs: Fix threshold calculation for block groups smaller than 1GB\n\nIf a block group is smaller than 1GB, the extent entry threadhold\ncalculation will always set the threshold to 0.\n\nSo as free space gets fragmented, btrfs will switch to use bitmap\nto manage free space, but then will never switch back to extents\ndue to this bug.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "acce952b0263825da32cf10489413dec78053347",
      "tree": "d934881f247484d7b6917bebc40828600bb6b76c",
      "parents": [
        "6f88a4403def422bd8e276ddf6863d6ac71435d2"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 06 19:30:25 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 17 15:13:08 2011 -0500"
      },
      "message": "Btrfs: forced readonly mounts on errors\n\nThis patch comes from \"Forced readonly mounts on errors\" ideas.\n\nAs we know, this is the first step in being more fault tolerant of disk\ncorruptions instead of just using BUG() statements.\n\nThe major content:\n- add a framework for generating errors that should result in filesystems\n  going readonly.\n- keep FS state in disk super block.\n- make sure that all of resource will be freed and released at umount time.\n- make sure that fter FS is forced readonly on error, there will be no more\n  disk change before FS is corrected. For this, we should stop write operation.\n\nAfter this patch is applied, the conversion from BUG() to such a framework can\nhappen incrementally.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6f88a4403def422bd8e276ddf6863d6ac71435d2",
      "tree": "8fe01d61977e0113cc0a4fa77b7df7f8dfeecad9",
      "parents": [
        "f690efb1aa2a961dd6655529c1797fcac60ad6d9"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Wed Dec 29 14:55:03 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Require CAP_SYS_ADMIN for filesystem rebalance\n\nFilesystem rebalancing (BTRFS_IOC_BALANCE) affects the entire\nfilesystem and may run uninterruptibly for a long time.  This does not\nseem to be something that an unprivileged user should be able to do.\n\nReported-by: Aron Xu \u003chappyaron.xu@gmail.com\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f690efb1aa2a961dd6655529c1797fcac60ad6d9",
      "tree": "29b2faa25ff19a3c374b6bb60eb4507657c6dfa9",
      "parents": [
        "5e540f7715b8cd83b8e60beaaa525b125cc122de"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 12 21:04:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "Btrfs: don\u0027t warn if we get ENOSPC in btrfs_block_rsv_check\n\nIf we run low on space we could get a bunch of warnings out of\nbtrfs_block_rsv_check, but this is mostly just called via the transaction code\nto see if we need to end the transaction, it expects to see failures, so let\u0027s\nnot WARN and freak everybody out for no reason.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5e540f7715b8cd83b8e60beaaa525b125cc122de",
      "tree": "93ce1b3e22354c8d8e477ee56b925a44e7b9713e",
      "parents": [
        "91ca338d776e0cefb255bf2979b6448febd880f5"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Dec 27 06:53:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Fix memory leak in btrfs_read_fs_root_no_radix()\n\nIn btrfs_read_fs_root_no_radix(), \u0027root\u0027 is not freed if\nbtrfs_search_slot() returns error.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "91ca338d776e0cefb255bf2979b6448febd880f5",
      "tree": "5d1d344d6ed565faf5612b5c695f00c04e6f01d8",
      "parents": [
        "ff175d57f057f77d2d3031d674c2af9167a4af02"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Jan 05 02:32:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: check NULL or not\n\nShould check if functions returns NULL or not.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff175d57f057f77d2d3031d674c2af9167a4af02",
      "tree": "ff04961d44566d7abc3ea4aab888900d40561c3e",
      "parents": [
        "20b450773d17e325190c158e10bfdb25dc21d2d6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sat Dec 25 21:22:30 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Don\u0027t pass NULL ptr to func that may deref it.\n\nHi,\n\nIn fs/btrfs/inode.c::fixup_tree_root_location() we have this code:\n\n...\n \t\tif (!path) {\n \t\t\terr \u003d -ENOMEM;\n \t\t\tgoto out;\n \t\t}\n...\n \tout:\n \t\tbtrfs_free_path(path);\n \t\treturn err;\n\nbtrfs_free_path() passes its argument on to other functions and some of\nthem end up dereferencing the pointer.\nIn the code above that pointer is clearly NULL, so btrfs_free_path() will\neventually cause a NULL dereference.\n\nThere are many ways to cut this cake (fix the bug). The one I chose was to\nmake btrfs_free_path() deal gracefully with NULL pointers. If you\ndisagree, feel free to come up with an alternative patch.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "20b450773d17e325190c158e10bfdb25dc21d2d6",
      "tree": "c99c3d8cedbf8fb5f01ed42d7d3c5b5bd5fd9d69",
      "parents": [
        "42838bb265b9cff3de9587fcacc398b5112dc2d9"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Sat Jan 08 10:09:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: mount failure return value fix\n\nI happened to pass swap partition as root partition in cmdline,\nthen kernel panic and tell me about \"Cannot open root device\".\nIt is not correct, in fact it is a fs type mismatch instead of \u0027no device\u0027.\n\nEventually I found btrfs mounting failed with -EIO, it should be -EINVAL.\nThe logic in init/do_mounts.c:\n        for (p \u003d fs_names; *p; p +\u003d strlen(p)+1) {\n                int err \u003d do_mount_root(name, p, flags, root_mount_data);\n                switch (err) {\n                        case 0:\n                                goto out;\n                        case -EACCES:\n                                flags |\u003d MS_RDONLY;\n                                goto retry;\n                        case -EINVAL:\n                                continue;\n                }\n\t\tprint \"Cannot open root device\"\n\t\tpanic\n\t}\nSO fs type after btrfs will have no chance to mount\n\nHere fix the return value as -EINVAL\n\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42838bb265b9cff3de9587fcacc398b5112dc2d9",
      "tree": "4c0cfbe4f41004b096917ddf75ed7d74743a4af3",
      "parents": [
        "6d07bcec969af335d4e35b3921131b7929bd634e"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jan 06 21:45:21 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: Mem leak in btrfs_get_acl()\n\nIt seems to me that we leak the memory allocated to \u0027value\u0027 in\nbtrfs_get_acl() if the call to posix_acl_from_xattr() fails.\nHere\u0027s a patch that attempts to correct that problem.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6d07bcec969af335d4e35b3921131b7929bd634e",
      "tree": "2d1e0bb5f69bdf9dafa2862b6cad965184d67c84",
      "parents": [
        "b2117a39fa96cf4814e7cab8c11494149ba6f29d"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:31 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong free space information of btrfs\n\nWhen we store data by raid profile in btrfs with two or more different size\ndisks, df command shows there is some free space in the filesystem, but the\nuser can not write any data in fact, df command shows the wrong free space\ninformation of btrfs.\n\n # mkfs.btrfs -d raid1 /dev/sda9 /dev/sda10\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 28.00KB\n \tdevid    1 size 5.01GB used 2.03GB path /dev/sda9\n \tdevid    2 size 10.00GB used 2.01GB path /dev/sda10\n # btrfs device scan /dev/sda9 /dev/sda10\n # mount /dev/sda9 /mnt\n # dd if\u003d/dev/zero of\u003dtmpfile0 bs\u003d4K count\u003d9999999999\n   (fill the filesystem)\n # sync\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t5.4G\t62%\t/mnt\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 3.99GB\n \tdevid    1 size 5.01GB used 5.01GB path /dev/sda9\n \tdevid    2 size 10.00GB used 4.99GB path /dev/sda10\n\nIt is because btrfs cannot allocate chunks when one of the pairing disks has\nno space, the free space on the other disks can not be used for ever, and should\nbe subtracted from the total space, but btrfs doesn\u0027t subtract this space from\nthe total. It is strange to the user.\n\nThis patch fixes it by calcing the free space that can be used to allocate\nchunks.\n\nImplementation:\n1. get all the devices free space, and align them by stripe length.\n2. sort the devices by the free space.\n3. check the free space of the devices,\n   3.1. if it is not zero, and then check the number of the devices that has\n        more free space than this device,\n        if the number of the devices is beyond the min stripe number, the free\n        space can be used, and add into total free space.\n        if the number of the devices is below the min stripe number, we can not\n        use the free space, the check ends.\n   3.2. if the free space is zero, check the next devices, goto 3.1\n\nThis implementation is just likely fake chunk allocation.\n\nAfter appling this patch, df can show correct space information:\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t0\t100%\t/mnt\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b2117a39fa96cf4814e7cab8c11494149ba6f29d",
      "tree": "9327d1332d68f91931767ee7bc6233251ab41565",
      "parents": [
        "7bfc837df935d850fe996dfe92ef48975cd4170a"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:28 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: make the chunk allocator utilize the devices better\n\nWith this patch, we change the handling method when we can not get enough free\nextents with default size.\n\nImplementation:\n1. Look up the suitable free extent on each device and keep the search result.\n   If not find a suitable free extent, keep the max free extent\n2. If we get enough suitable free extents with default size, chunk allocation\n   succeeds.\n3. If we can not get enough free extents, but the number of the extent with\n   default size is \u003e\u003d min_stripes, we just change the mapping information\n   (reduce the number of stripes in the extent map), and chunk allocation\n   succeeds.\n4. If the number of the extent with default size is \u003c min_stripes, sort the\n   devices by its max free extent\u0027s size descending\n5. Use the size of the max free extent on the (num_stripes - 1)th device as the\n   stripe size to allocate the device space\n\nBy this way, the chunk allocator can allocate chunks as large as possible when\nthe devices\u0027 space is not enough and make full use of the devices.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7bfc837df935d850fe996dfe92ef48975cd4170a",
      "tree": "8ca5f83c0c43e505b872368877504fa95c6276ab",
      "parents": [
        "1974a3b42d8cf7a9c74f1e0310c593023617037a"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:26 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: restructure find_free_dev_extent()\n\n- make it return the start position and length of the max free space when it can\n  not find a suitable free space.\n- make it more readability\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1974a3b42d8cf7a9c74f1e0310c593023617037a",
      "tree": "73d7eb8dc071a095fbe424776ab7610dbc897c16",
      "parents": [
        "d52a5b5f1fa40804f681cf9868d4a8f90661bdf3"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:24 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong calculation of stripe size\n\nThere are two tiny problem:\n- One is When we check the chunk size is greater than the max chunk size or not,\n  we should take mirrors into account, but the original code didn\u0027t.\n- The other is btrfs shouldn\u0027t use the size of the residual free space as the\n  length of of a dup chunk when doing chunk allocation. It is because the device\n  space that a dup chunk needs is twice as large as the chunk size, if we use\n  the size of the residual free space as the length of a dup chunk, we can not\n  get enough free space. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d52a5b5f1fa40804f681cf9868d4a8f90661bdf3",
      "tree": "93ae0faf84163748353d1edb6c5247483762f2df",
      "parents": [
        "299a08b1c34f9397797946a0fa215c5fd145c5cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:18 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: try to reclaim some space when chunk allocation fails\n\nWe cannot write data into files when when there is tiny space in the filesystem.\n\nReproduce steps:\n # mkfs.btrfs /dev/sda1\n # mount /dev/sda1 /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile0 bs\u003d4K count\u003d1\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile1 bs\u003d4K count\u003d99999999999999\n   (fill the filesystem)\n # umount /mnt\n # mount /dev/sda1 /mnt\n # rm -f /mnt/tmpfile0\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile0 bs\u003d4K count\u003d1\n   (failed with nospec)\n\nBut if we do the last step again, we can write data successfully. The reason of\nthe problem is that btrfs didn\u0027t try to commit the current transaction and\nreclaim some space when chunk allocation failed.\n\nThis patch fixes it by committing the current transaction to reclaim some\nspace when chunk allocation fails.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "299a08b1c34f9397797946a0fa215c5fd145c5cf",
      "tree": "beace30f71e49e4ac6428b33916288695c06539f",
      "parents": [
        "f580eb0931fbcb6dc3916f094f471671facd1daa"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:15 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong data space statistics\n\nJosef has implemented mixed data/metadata chunks, we must add those chunks\u0027\nspace just like data chunks.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f580eb0931fbcb6dc3916f094f471671facd1daa",
      "tree": "456f97b04cfcfb5b1c19b6b5fca225e8d92ab06b",
      "parents": [
        "f892436eb2c3223fecda614a64d51f36f6ec2245"
      ],
      "author": {
        "name": "Stefan Schmidt",
        "email": "stefan@datenfreihafen.org",
        "time": "Wed Jan 12 09:30:42 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "fs/btrfs: Fix build of ctree\n\nCC [M]  fs/btrfs/ctree.o\nIn file included from fs/btrfs/ctree.c:21:0:\nfs/btrfs/ctree.h:1003:17: error: field \u003c91\u003esuper_kobj\u003c92\u003e has incomplete type\nfs/btrfs/ctree.h:1074:17: error: field \u003c91\u003eroot_kobj\u003c92\u003e has incomplete type\nmake[2]: *** [fs/btrfs/ctree.o] Error 1\nmake[1]: *** [fs/btrfs] Error 2\nmake: *** [fs] Error 2\n\nWe need to include kobject.h here.\n\nReported-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nFix-suggested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Stefan Schmidt \u003cstefan@datenfreihafen.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f892436eb2c3223fecda614a64d51f36f6ec2245",
      "tree": "75001db8c8b7fad547cbd4e99494727287598c1c",
      "parents": [
        "26c79f6ba0ccdc4bbc8ef8721406d37e9178e30b",
        "3a39c18d63fec35f49df577d4b2a4e29c2212f22"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:25:54 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:25:54 2011 -0500"
      },
      "message": "Merge branch \u0027lzo-support\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "26c79f6ba0ccdc4bbc8ef8721406d37e9178e30b",
      "tree": "c5bcbf8f605afdae1a89ea2617f29052ac8c6f18",
      "parents": [
        "65e5341b9a0c39767ae1fecc727d70eda0dd6d83",
        "0caa102da82799efaba88e234484786a9591c797"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:24:45 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:24:45 2011 -0500"
      },
      "message": "Merge branch \u0027readonly-snapshots\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "65e5341b9a0c39767ae1fecc727d70eda0dd6d83",
      "tree": "09f54177bfb8c93b2320d84317705bec6dcc42a6",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 24 06:41:52 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 04 16:41:39 2011 -0500"
      },
      "message": "Btrfs: fix off by one while setting block groups readonly\n\nWhen we read in block groups, we\u0027ll set non-redundant groups\nreadonly if we find a raid1, DUP or raid10 group.  But the\nro code has an off by one bug in the math around testing to\nmake sure out accounting doesn\u0027t go wrong.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0caa102da82799efaba88e234484786a9591c797",
      "tree": "748bb0d8054bb85256904ffe29913277e5b80684",
      "parents": [
        "b83cc9693f39689490970c19f6c5b866f6719a70"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 16:30:25 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:19 2010 +0800"
      },
      "message": "Btrfs: Add BTRFS_IOC_SUBVOL_GETFLAGS/SETFLAGS ioctls\n\nThis allows us to set a snapshot or a subvolume readonly or writable\non the fly.\n\nUsage:\n\nSet BTRFS_SUBVOL_RDONLY of btrfs_ioctl_vol_arg_v2-\u003eflags, and then\ncall ioctl(BTRFS_IOCTL_SUBVOL_SETFLAGS);\n\nChangelog for v3:\n\n- Change to pass __u64 as ioctl parameter.\n\nChangelog for v2:\n\n- Add _GETFLAGS ioctl.\n- Check if the passed fd is the root of a subvolume.\n- Change the name from _SNAP_SETFLAGS to _SUBVOL_SETFLAGS.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "b83cc9693f39689490970c19f6c5b866f6719a70",
      "tree": "b86d09884015fce195a4ac5ff1e8ec5f6ec00677",
      "parents": [
        "fa0d2b9bd717340e0bc4850a80ac0eb344e9a7fb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 16:04:08 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:17 2010 +0800"
      },
      "message": "Btrfs: Add readonly snapshots support\n\nUsage:\n\nSet BTRFS_SUBVOL_RDONLY of btrfs_ioctl_vol_arg_v2-\u003eflags, and call\nioctl(BTRFS_I0CTL_SNAP_CREATE_V2).\n\nImplementation:\n\n- Set readonly bit of btrfs_root_item-\u003eflags.\n- Add readonly checks in btrfs_permission (inode_permission),\nbtrfs_setattr, btrfs_set/remove_xattr and some ioctls.\n\nChangelog for v3:\n\n- Eliminate btrfs_root-\u003ereadonly, but check btrfs_root-\u003eroot_item.flags.\n- Rename BTRFS_ROOT_SNAP_RDONLY to BTRFS_ROOT_SUBVOL_RDONLY.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "fa0d2b9bd717340e0bc4850a80ac0eb344e9a7fb",
      "tree": "f17b1e86d602236e7be49821ed8f9109819e29fb",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 15:53:28 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:15 2010 +0800"
      },
      "message": "Btrfs: Refactor btrfs_ioctl_snap_create()\n\nSplit it into two functions for two different ioctls, since they\nshare no common code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "3a39c18d63fec35f49df577d4b2a4e29c2212f22",
      "tree": "78b8c032e18e2231c18e89ac3f8f5746abdb119c",
      "parents": [
        "1a419d85a76853d7d04e9b6280a80e96770bf3e3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Nov 08 15:22:19 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:50 2010 +0800"
      },
      "message": "btrfs: Extract duplicate decompress code\n\nAdd a common function to copy decompressed data from working buffer\nto bio pages.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "1a419d85a76853d7d04e9b6280a80e96770bf3e3",
      "tree": "01535c5571208561af5d475eaa151e1c2f936f57",
      "parents": [
        "a6fa6fae40ec336c7df6155255ae64ebef43a8bc"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:12:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:48 2010 +0800"
      },
      "message": "btrfs: Allow to specify compress method when defrag\n\nUpdate defrag ioctl, so one can choose lzo or zlib when turning\non compression in defrag operation.\n\nChangelog:\n\nv1 -\u003e v2\n- Add incompability flag.\n- Fix to check invalid compress type.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "a6fa6fae40ec336c7df6155255ae64ebef43a8bc",
      "tree": "6cda8aa6a60967206614a941f034249e3017913e",
      "parents": [
        "261507a02ccba9afda919852263b6bc1581ce1ef"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:12:26 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:47 2010 +0800"
      },
      "message": "btrfs: Add lzo compression support\n\nLzo is a much faster compression algorithm than gzib, so would allow\nmore users to enable transparent compression, and some users can\nchoose from compression ratio and speed for different applications\n\nUsage:\n\n # mount -t btrfs -o compress[\u003d\u003czlib,lzo\u003e] dev /mnt\nor\n # mount -t btrfs -o compress-force[\u003d\u003czlib,lzo\u003e] dev /mnt\n\n\"-o compress\" without argument is still allowed for compatability.\n\nCompatibility:\n\nIf we mount a filesystem with lzo compression, it will not be able be\nmounted in old kernels. One reason is, otherwise btrfs will directly\ndump compressed data, which sits in inline extent, to user.\n\nPerformance:\n\nThe test copied a linux source tarball (~400M) from an ext4 partition\nto the btrfs partition, and then extracted it.\n\n(time in second)\n           lzo        zlib        nocompress\ncopy:      10.6       21.7        14.9\nextract:   70.1       94.4        66.6\n\n(data size in MB)\n           lzo        zlib        nocompress\ncopy:      185.87     108.69      394.49\nextract:   193.80     132.36      381.21\n\nChangelog:\n\nv1 -\u003e v2:\n- Select LZO_COMPRESS and LZO_DECOMPRESS in btrfs Kconfig.\n- Add incompability flag.\n- Fix error handling in compress code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "261507a02ccba9afda919852263b6bc1581ce1ef",
      "tree": "c16bc657ff4e29a87042ceb379487f24dff01035",
      "parents": [
        "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 17 14:21:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:45 2010 +0800"
      },
      "message": "btrfs: Allow to add new compression algorithm\n\nMake the code aware of compression type, instead of always assuming\nzlib compression.\n\nAlso make the zlib workspace function as common code for all\ncompression types.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3",
      "tree": "116285c40ed2fa30e91d164e2e16e0d82ae450f9",
      "parents": [
        "8844355df7f4e091b03cc131e1549631238b397b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 08:27:27 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:43 2010 +0800"
      },
      "message": "btrfs: Fix error handling in zlib\n\nReturn failure if alloc_page() fails to allocate memory,\nand the upper code will just give up compression.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8844355df7f4e091b03cc131e1549631238b397b",
      "tree": "90568648b57f05265def659b7dbf8f45baaaeb65",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:11:43 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:41 2010 +0800"
      },
      "message": "btrfs: Fix bugs in zlib workspace\n\n- Fix a race that can result in alloc_workspace \u003e cpus.\n- Fix to check num_workspace after wakeup.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "83a50de97fe96aca82389e061862ed760ece2283",
      "tree": "95421594f180c32cca1ff7f6881f4cf272cf2b5c",
      "parents": [
        "cd02dca56442e1504fd6bc5b96f7f1870162b266"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 15:06:46 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:07:01 2010 -0500"
      },
      "message": "Btrfs: prevent RAID level downgrades when space is low\n\nThe extent allocator has code that allows us to fill\nallocations from any available block group, even if it doesn\u0027t\nmatch the raid level we\u0027ve requested.\n\nThis was put in because adding a new drive to a filesystem\nmade with the default mkfs options actually upgrades the metadata from\nsingle spindle dup to full RAID1.\n\nBut, the code also allows us to allocate from a raid0 chunk when we\nreally want a raid1 or raid10 chunk.  This can cause big trouble because\nmkfs creates a small (4MB) raid0 chunk for data and metadata which then\ngoes unused for raid1/raid10 installs.\n\nThe allocator will happily wander in and allocate from that chunk when\nthings get tight, which is not correct.\n\nThe fix here is to make sure that we provide duplication when the\ncaller has asked for it.  It does all the dups to be any raid level,\nwhich preserves the dup-\u003eraid1 upgrade abilities.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cd02dca56442e1504fd6bc5b96f7f1870162b266",
      "tree": "1a38d99fc581974ba6d8136c42ca81f3b1216ea3",
      "parents": [
        "68433b73b104bff388aac376631d32abbbd872b0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:56:23 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:06:52 2010 -0500"
      },
      "message": "Btrfs: account for missing devices in RAID allocation profiles\n\nWhen we mount in RAID degraded mode without adding a new device to\nreplace the failed one, we can end up using the wrong RAID flags for\nallocations.\n\nThis results in strange combinations of block groups (raid1 in a raid10\nfilesystem) and corruptions when we try to allocate blocks from single\nspindle chunks on drives that are actually missing.\n\nThe first device has two small 4MB chunks in it that mkfs creates and\nthese are usually unused in a raid1 or raid10 setup.  But, in -o degraded,\nthe allocator will fall back to these because the mask of desired raid groups\nisn\u0027t correct.\n\nThe fix here is to count the missing devices as we build up the list\nof devices in the system.  This count is used when picking the\nraid level to make sure we continue using the same levels that were\nin place before we lost a drive.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "68433b73b104bff388aac376631d32abbbd872b0",
      "tree": "b08c8c07f2f77e3d840b316a66a47af1210ab349",
      "parents": [
        "3dd1462e82bcab7625cec129952f26dae7a8b742"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "message": "Btrfs: EIO when we fail to read tree roots\n\nIf we just get a plain IO error when we read tree roots, the code\nwasn\u0027t properly sending that error up the chain.  This allowed mounts to\ncontinue when they should failed, and allowed operations\non partially setup root structs.  The end result was usually oopsen\non spinlocks that hadn\u0027t been spun up correctly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3dd1462e82bcab7625cec129952f26dae7a8b742",
      "tree": "0e4da87e5de3c71613ab6a6470b5c16d03c793a4",
      "parents": [
        "fdfb1e4f6c61477a61890b64974d65cdc3a98702"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Dec 07 14:54:09 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: fix compiler warnings\n\n... regarding an unused function when !MIGRATION, and regarding a\nprintk() format string vs argument mismatch.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fdfb1e4f6c61477a61890b64974d65cdc3a98702",
      "tree": "2bb65569dfbcfe12e4d54449d018abeebf88e89d",
      "parents": [
        "914ee295af418e936ec20a08c1663eaabe4cd07a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 10 06:41:56 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: Make async snapshot ioctl more generic\n\nIf we had reserved some bytes in struct btrfs_ioctl_vol_args, we\nwouldn\u0027t have to create a new structure for async snapshot creation.\n\nHere we convert async snapshot ioctl to use a more generic ABI, as\nwe\u0027ll add more ioctls for snapshots/subvolumes in the future, readonly\nsnapshots for example.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "914ee295af418e936ec20a08c1663eaabe4cd07a",
      "tree": "2e880ea913b8cbadf22b2288b5c278c2e5eadb60",
      "parents": [
        "f106e82caaa0d943e47cacc184f5b40d538e0044"
      ],
      "author": {
        "name": "Xin Zhong",
        "email": "xin.zhong@intel.com",
        "time": "Thu Dec 09 09:30:14 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n\nThis problem is found in meego testing:\nhttp://bugs.meego.com/show_bug.cgi?id\u003d6672\nA file in btrfs is mmaped and the mmaped buffer is passed to pwrite to write to the same page\nof the same file. In btrfs_file_aio_write(), the pages is locked by prepare_pages(). So when\nbtrfs_copy_from_user() is called, page fault happens and the same page needs to be locked again\nin filemap_fault(). The fix is to move iov_iter_fault_in_readable() before prepage_pages() to make page\nfault happen before pages are locked. And also disable page fault in critical region in\nbtrfs_copy_from_user().\n\nReviewed-by: Yan, Zheng\u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Zhong, Xin \u003cxin.zhong@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f106e82caaa0d943e47cacc184f5b40d538e0044",
      "tree": "5e8b6c5e0b0b35c65ed509029cda85bd54a8aab8",
      "parents": [
        "75eaa0e22c055e38982df267d0f84cc510ba38bf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Dec 07 01:51:26 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: Fix a crash when mounting a subvolume\n\nWe should drop dentry before deactivating the superblock, otherwise\nwe can hit this bug:\n\nBUG: Dentry f349a690{i\u003d100,n\u003d/} still in use (1) [unmount of btrfs loop1]\n...\n\nSteps to reproduce the bug:\n\n  # mount /dev/loop1 /mnt\n  # mkdir save\n  # btrfs subvolume snapshot /mnt save/snap1\n  # umount /mnt\n  # mount -o subvol\u003dsave/snap1 /dev/loop1 /mnt\n  (crash)\n\nReported-by: Michael Niederle \u003cmniederle@gmx.at\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75eaa0e22c055e38982df267d0f84cc510ba38bf",
      "tree": "073828ec809c95dbae9368b7f83a3734dad82b45",
      "parents": [
        "24ae63656a165c870c0d69fcc8aac1dc35e25e34"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 10 00:36:28 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: fix sync subvol/snapshot creation\n\nWe were incorrectly taking the async path even for the sync ioctls by\npassing in \u0026transid unconditionally.\n\nThere\u0027s ample room for further cleanup here, but this keeps the fix simple.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "24ae63656a165c870c0d69fcc8aac1dc35e25e34",
      "tree": "8833bfeba51ef45e0acc42f3a23838f528e6a37e",
      "parents": [
        "84cd948cb11041f205242de457e680b9bb872a36"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Mon Dec 06 07:02:36 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:09 2010 -0500"
      },
      "message": "Btrfs: Fix page leak in compressed writeback path\n\n\"start + num_bytes \u003e\u003d actual_end\" can happen when compressed page writeback races\nwith file truncation. In that case we need unlock and release pages past the end\nof file.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "84cd948cb11041f205242de457e680b9bb872a36",
      "tree": "479ac0dc057044a8b399c8c32f1c78641bd33740",
      "parents": [
        "7e1fea731da8c1b5fcf5d8e157befd389b030760"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:24:01 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:04 2010 -0500"
      },
      "message": "Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n\nNot being able to delete an orphan item isn\u0027t a horrible thing.  The worst that\nhappens is the next time around we try and do the orphan cleanup and we can\u0027t\nfind the referenced object and just delete the item and move on.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7e1fea731da8c1b5fcf5d8e157befd389b030760",
      "tree": "85800034e3b0f8262dd51e128264bec5ce30aed2",
      "parents": [
        "b8399dee478db7939cd0d6fda8ecacddf2facd03"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:22:34 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:15 2010 -0500"
      },
      "message": "Btrfs: fixup return code for btrfs_del_orphan_item\n\nIf the orphan item doesn\u0027t exist, we return 1, which doesn\u0027t make any sense to\nthe callers.  Instead return -ENOENT if we didn\u0027t find the item.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b8399dee478db7939cd0d6fda8ecacddf2facd03",
      "tree": "418a67d8d2de13739f3b14518917c8aaadafe3b8",
      "parents": [
        "2b20982e3154266106573beac2a4d4ba57a2789a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 09:15:11 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:13 2010 -0500"
      },
      "message": "Btrfs: do not do fast caching if we are allocating blocks for tree_root\n\nSince the fast caching uses normal tree locking, we can possibly deadlock if we\nget to the caching via a btrfs_search_slot() on the tree_root.  So just check to\nsee if the root we are on is the tree root, and just don\u0027t do the fast caching.\n\nReported-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2b20982e3154266106573beac2a4d4ba57a2789a",
      "tree": "13539703ccb713385b4c7ff7eac508bb8f3b1e18",
      "parents": [
        "955256f2c3e25c94ad373c43fbc38d2ac8af2a71"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 03 13:17:53 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:12 2010 -0500"
      },
      "message": "Btrfs: deal with space cache errors better\n\nCurrently if the space cache inode generation number doesn\u0027t match the\ngeneration number in the space cache header we will just fail to load the space\ncache, but we won\u0027t mark the space cache as an error, so we\u0027ll keep getting that\nerror each time somebody tries to cache that block group until we actually clear\nthe thing.  Fix this by marking the space cache as having an error so we only\nget the message once.  This patch also makes it so that we don\u0027t try and setup\nspace cache for a block group that isn\u0027t cached, since we won\u0027t be able to write\nit out anyway.  None of these problems are actual problems, they are just\nannoying and sub-optimal.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "955256f2c3e25c94ad373c43fbc38d2ac8af2a71",
      "tree": "f8a6074a34e988e613eb308d4aeb91fd8fb2e968",
      "parents": [
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 09:41:10 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:10 2010 -0500"
      },
      "message": "Btrfs: fix use after free in O_DIRECT\n\nThis fixes a bug where we use dip after we have freed it.  Instead just use the\nfile_offset that was passed to the function.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5a92bc88cef279261d3f138e25850c122df67045",
      "tree": "22bc186bda2d2a61343bed473c3e606b43a49a18",
      "parents": [
        "163cf09c2a0ee5cac6285f9347975bd1e97725da"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "message": "Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n\nFixes compile error\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "163cf09c2a0ee5cac6285f9347975bd1e97725da",
      "tree": "5a83cd42d57fcc4d92d12965b5eafdb472e89b02",
      "parents": [
        "450ba0ea06b6ed3612d27f2b7127a9de4160f285"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "message": "Btrfs: deal with DIO bios that span more than one ordered extent\n\nThe new DIO bio splitting code has problems when the bio\nspans more than one ordered extent.  This will happen as the\ngeneric DIO code merges our get_blocks calls together into\na bigger single bio.\n\nThis fixes things by walking forward in the ordered extent\ncode finding all the overlapping ordered extents and completing them\nall at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "450ba0ea06b6ed3612d27f2b7127a9de4160f285",
      "tree": "2276ddbcb65d7656416cdce69432a5858b35c413",
      "parents": [
        "975f84fee2e8a77ee5f41bfe7c5682bf29366b10"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 14:59:15 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:51 2010 -0500"
      },
      "message": "Btrfs: setup blank root and fs_info for mount time\n\nThere is a problem with how we use sget, it searches through the list of supers\nattached to the fs_type looking for a super with the same fs_devices as what\nwe\u0027re trying to mount.  This depends on sb-\u003es_fs_info being filled, but we don\u0027t\nfill that in until we get to btrfs_fill_super, so we could hit supers on the\nfs_type super list that have a null s_fs_info.  In order to fix that we need to\ngo ahead and setup a blank root with a blank fs_info to hold fs_devices, that\nway our test will work out right and then we can set s_fs_info in\nbtrfs_set_super, and then open_ctree will simply use our pre-allocated root and\nfs_info when setting everything up.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "975f84fee2e8a77ee5f41bfe7c5682bf29366b10",
      "tree": "e7e20e775fa4c126273c28d0c7f0ee05b5bb7f5b",
      "parents": [
        "619c8c763928841b1112e1d417f88bc1d44daecb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:36:57 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:50 2010 -0500"
      },
      "message": "Btrfs: fix fiemap\n\nThere are two big problems currently with FIEMAP\n\n1) We return extents for holes.  This isn\u0027t supposed to happen, we just don\u0027t\nreturn extents for holes and then userspace interprets the lack of an extent as\na hole.\n\n2) We sometimes don\u0027t set FIEMAP_EXTENT_LAST properly.  This is because we wait\nto see a EXTENT_FLAG_VACANCY flag on the em, but this won\u0027t happen if say we ask\nfiemap to map up to the last extent in a file, and there is nothing but holes up\nto the i_size.  To fix this we need to lookup the last extent in this file and\nsave the logical offset, so if we happen to try and map that extent we can be\nsure to set FIEMAP_EXTENT_LAST.\n\nWith this patch we now pass xfstest 225, which we never have before.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "619c8c763928841b1112e1d417f88bc1d44daecb",
      "tree": "23fc73cf043faac2cdb15a0b22e6e9e29a69797a",
      "parents": [
        "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Nov 22 02:21:38 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:44 2010 -0500"
      },
      "message": "Btrfs - fix race between btrfs_get_sb() and umount\n\nWhen mounting a btrfs file system btrfs_test_super() may attempt to\nuse sb-\u003es_fs_info, the btrfs root, of a super block that is going away\nand that has had the btrfs root set to NULL in its -\u003eput_super(). But\nif the super block is going away it cannot be an existing super block\nso we can return false in this case.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d",
      "tree": "af17fcd439f67eafc534e894168b397c563e2366",
      "parents": [
        "0ed42a63f3edb144b091d9528401fce95c3c4d8d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:50:59 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: update inode ctime when using links\n\nCurrently we fail xfstest 236 because we\u0027re not updating the inode ctime on\nlink.  This is a simple fix, and makes it so we pass 236 now.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0ed42a63f3edb144b091d9528401fce95c3c4d8d",
      "tree": "d98573473d916eecbeb949d45f8ac9b530440080",
      "parents": [
        "55a61d1d06a3dc443d0db8aaa613365dcb83b98a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:55:39 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: make sure new inode size is ok in fallocate\n\nWe have been failing xfstest 228 forever, because we don\u0027t check to make sure\nthe new inode size is acceptable as far as RLIMIT is concerned.  Just check to\nmake sure it\u0027s ok to create a inode with this new size and error out if not.\nWith this patch we now pass 228.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "55a61d1d06a3dc443d0db8aaa613365dcb83b98a",
      "tree": "39f59ec200674081b086f9e25393401d08848ffd",
      "parents": [
        "45f49bce99d008d6864a20324548f35936ba46fb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:50:32 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 12:59:16 2010 -0500"
      },
      "message": "Btrfs: fix typo in fallocate to make it honor actual size\n\nThere is a typo in __btrfs_prealloc_file_range() where we set the i_size to\nactual_len/cur_offset, and then just set it to cur_offset again, and do the same\nwith btrfs_ordered_update_i_size().  This fixes it back to keeping i_size in a\nlocal variable and then updating i_size properly.  Tested this with\n\nxfs_io -F -f -c \"falloc 0 1\" -c \"pwrite 0 1\" foo\n\nstat\u0027ing foo gives us a size of 1 instead of 4096 like it was.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45f49bce99d008d6864a20324548f35936ba46fb",
      "tree": "9bae14a5fa0b68573758dcc1aaaa176f4a62c6b8",
      "parents": [
        "a1b075d28da563c5e2325577f282c042494254ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "message": "Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n\nIf we fail to find a pointer in the radix tree, don\u0027t try\nto deref the NULL one we do have.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "a1b075d28da563c5e2325577f282c042494254ba"
}
