)]}'
{
  "log": [
    {
      "commit": "1e20932a23578bb1ec59107843574e259b96193f",
      "tree": "844ae54293c4414fc4c232a36d0e4d4939dc35aa",
      "parents": [
        "cfc442b69696b593cb442f09997dcb4cb5748171",
        "c31931088fd6cf953bd0868a2647b6c3928e6c96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:50:28 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:49:53 2012 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/ulist.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "72ac3c0d7921f943d92d1ef42a549fb52e56817d",
      "tree": "c8825a2b3848f201a2b67b3a2ec0aaf9669f9ed3",
      "parents": [
        "cd023e7b17fe86c530475da210b3348421c40e5f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 14:13:11 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:36 2012 -0400"
      },
      "message": "Btrfs: convert the inode bit field to use the actual bit operations\n\nMiao pointed this out while I was working on an orphan problem that messing\nwith a bitfield where different ranges are protected by different locks\ndoesn\u0027t work out right.  Turns out we\u0027ve been doing this forever where we\nhave different parts of the bit field protected by either no lock at all or\ndifferent locks which could cause all sorts of weird problems including the\nissue I was hitting.  So instead make a runtime_flags thing that we use the\nnormal bit operations on that are all atomic so we can keep having our\nno/different locking for the different flags and then make force_compress\nit\u0027s own thing so it can be treated normally.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5581a51a59a1f5f51ac3d4bacafb738d35e0350b",
      "tree": "d7e291e139d08f2be7870c9da602658df8f51ce8",
      "parents": [
        "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:04:52 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:53 2012 +0200"
      },
      "message": "Btrfs: don\u0027t set for_cow parameter for tree block functions\n\nThree callers of btrfs_free_tree_block or btrfs_alloc_tree_block passed\nparameter for_cow \u003d 1. In fact, these two functions should never mark\ntheir tree modification operations as for_cow, because they can change\nthe number of blocks referenced by a tree.\n\nHence, we remove the extra for_cow parameter from these functions and\nmake them pass a zero down.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "a25c75d5ad04df0a7abd09585231b4021a91a358",
      "tree": "699256c4426baa4648bba4faa2f69bda393c75c8",
      "parents": [
        "e06baab4184509bdfddd294efc6cae7a410c6f07"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Apr 18 09:59:29 2012 +0300"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:41 2012 -0400"
      },
      "message": "Btrfs: cleanup: use consistent lock naming\n\nIt confuses Smatch that we use two names for the same lock.  Plus the\nshorter name is nicer.  This doesn\u0027t change how the code works, it\u0027s\njust a cleanup.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n"
    },
    {
      "commit": "b9fab919b748c7b39c19ff236ed6c5682c266dde",
      "tree": "49e5a6f8041a7f0a9be0c1a39cd9088e3faa1df2",
      "parents": [
        "ea9947b4395fa34666086b2fa6f686e94903e047"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "message": "Btrfs: avoid sleeping in verify_parent_transid while atomic\n\nverify_parent_transid needs to lock the extent range to make\nsure no IO is underway, and so it can safely clear the\nuptodate bits if our checks fail.\n\nBut, a few callers are using it with spinlocks held.  Most\nof the time, the generation numbers are going to match, and\nwe don\u0027t want to switch to a blocking lock just for the error\ncase.  This adds an atomic flag to verify_parent_transid,\nand changes it to return EAGAIN if it needs to block to\nproperly verifiy things.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f699d38b6556c393ac80f1c23c2053502a51631",
      "tree": "9ba8e3c95cc044461eab17dfba50515535ca2a25",
      "parents": [
        "1daf3540fa77faea2f91d96bcaf07ce48ee827be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Apr 27 12:41:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:14 2012 -0400"
      },
      "message": "Btrfs: fix block_rsv and space_info lock ordering\n\nmay_commit_transaction() calls\n        spin_lock(\u0026space_info-\u003elock);\n        spin_lock(\u0026delayed_rsv-\u003elock);\nand update_global_block_rsv() calls\n        spin_lock(\u0026block_rsv-\u003elock);\n        spin_lock(\u0026sinfo-\u003elock);\n\nLockdep complains about this at run time.\nEverywhere except in update_global_block_rsv(), the space_info lock is\nthe outer lock, therefore the locking order in update_global_block_rsv()\nis changed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b9688bb8459b67e42327de6420edb405a9188775",
      "tree": "90f1b5be9f4829463082e24357f5c9a5677797f3",
      "parents": [
        "253beebd5a255e07d6a8b65515491f33664e82a2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Apr 18 10:27:16 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:33 2012 +0200"
      },
      "message": "btrfs: don\u0027t return EINTR\n\nIt is basically a good thing if we are interruptible when waiting for\nfree space, but the generality in which it is implemented currently\nleads to system calls being interruptible that are not documented this\nway. For example git can\u0027t handle interrupted unlink(), leading to\ncorrupt repos under space pressure.\nInstead we raise the bar to only be interruptible by SIGKILL.\nThanks to David Sterba for suggesting this.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "253beebd5a255e07d6a8b65515491f33664e82a2",
      "tree": "9bc6b5f567b7683df4b2a8d46ecdc6d8dd139d1e",
      "parents": [
        "5cf1ab56133ad7b712673c071b439d4a555a2d1e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Apr 18 09:59:03 2012 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:31 2012 +0200"
      },
      "message": "Btrfs: double unlock bug in error handling\n\nThe caller expects this function to return with the lock held and\nreleases it immediately on error.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n"
    },
    {
      "commit": "d53ba47484ed6245e640ee4bfe9d21e9bfc15765",
      "tree": "12bcb989f0e210f25770a72441eb8b947fd2fad3",
      "parents": [
        "4edc2ca388d62abffe38149f6ac00e749ea721c5"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Apr 12 16:03:57 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 20:54:01 2012 -0400"
      },
      "message": "Btrfs: use commit root when loading free space cache\n\nA user reported that booting his box up with btrfs root on 3.4 was way\nslower than on 3.3 because I removed the ideal caching code.  It turns out\nthat we don\u0027t load the free space cache if we\u0027re in a commit for deadlock\nreasons, but since we\u0027re reading the cache and it hasn\u0027t changed yet we are\nsafe reading the inode and free space item from the commit root, so do that\nand remove all of the deadlock checks so we don\u0027t unnecessarily skip loading\nthe free space cache.  The user reported this fixed the slowness.  Thanks,\n\nTested-by: Calvin Walton \u003ccalvin.walton@kepstin.ca\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c6664b42c4e567792abdb17c958fb01c5bcfcb3a",
      "tree": "41a5f7e6f6507db58103ed3d96f3154e0fe04331",
      "parents": [
        "b89203f74bdfcb15407d54d3f257b16a2ea19e62"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Thu Apr 12 16:03:56 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 16:03:56 2012 -0400"
      },
      "message": "Btrfs: remove lock assert from get_restripe_target()\n\nThis fixes a regression introduced by fc67c450.  spin_is_locked() always\nreturns 0 on UP kernels, which caused assert in get_restripe_target() to\nbe fired on every call from btrfs_reduce_alloc_profile() on UP systems.\nRemove it completely for now, it\u0027s not clear if it\u0027s going to be needed\nin future.\n\nReported-by: Bobby Powers \u003cbobbypowers@gmail.com\u003e\nReported-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nTested-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8e62c2de6e23e5c1fee04f59de51b54cc2868ca5",
      "tree": "a67d4c8b0cfb0a8db86d451fbe6462c3fcf4b021",
      "parents": [
        "bc3f116fec194f1d7329b160c266fe16b9266a1e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 13:46:48 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 13:46:48 2012 -0400"
      },
      "message": "Revert \"Btrfs: increase the global block reserve estimates\"\n\nThis reverts commit 5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf.\n\nWe\u0027ve had a number of complaints of early enospc that bisect down\nto this patch.  We\u0027ll hae to fix the reservations differently.\n\nCC: stable@kernel.org\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "15d1ff8111aad85d8b40ee396758990d17a2caac",
      "tree": "5258905b649150abae0a8aa010bbaa7ef1077e97",
      "parents": [
        "2bcc0328c3a043880796a602c75fbeb1537aa1e1"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "message": "Btrfs: fix deadlock during allocating chunks\n\nThis deadlock comes from xfstests 251.\n\nWe\u0027ll hold the chunk_mutex throughout the whole of a chunk allocation.\nBut if we find that we\u0027ve used up system chunk space, we need to allocate a\nnew system chunk, but this will lead to a recursion of chunk allocation and end\nup with a deadlock on chunk_mutex.\nSo instead we need to allocate the system chunk first if we find we\u0027re in ENOSPC.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2bcc0328c3a043880796a602c75fbeb1537aa1e1",
      "tree": "ed18c3244abeda587b56498ca5da5609f3555d99",
      "parents": [
        "7ca4be45a0255ac8f08c05491c6add2dd87dd4f8"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "message": "Btrfs: show useful info in space reservation tracepoint\n\no For space info, the type of space info is useful for debug.\no For transaction handle, its transid is useful.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1c691b330a19a1344df89bcb0f4cacd99e8b289a",
      "tree": "b3143a9875a773d33b9b8f60e98c7e5fae003b6a",
      "parents": [
        "1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225",
        "213e64da90d14537cd63f7090d6c4d1fcc75d9f8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:32:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:32:46 2012 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://github.com/idryomov/btrfs-unstable into for-linus\n"
    },
    {
      "commit": "1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225",
      "tree": "a7dde6312ec24eb6368cad7a3efedbf368a5a70c",
      "parents": [
        "b5d67f64f9bc656970dacba245410f0faedad18e",
        "65139ed99234d8505948cdb7a835452eb5c191f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "message": "Merge branch \u0027error-handling\u0027 into for-linus\n\nConflicts:\n\tfs/btrfs/ctree.c\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/inode.c\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4a5e98f5d61f698452e564e0cde34c16a6b65752",
      "tree": "d65c346e8763380a1afac2984abc12533ecf15b7",
      "parents": [
        "7738a53a3a3aa8d82350280ff4bc7df9c3094123"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "message": "Btrfs: improve the logic in btrfs_can_relocate()\n\nCurrently if we don\u0027t have enough space allocated we go ahead and loop\nthough devices in the hopes of finding enough space for a chunk of the\n*same* type as the one we are trying to relocate.  The problem with that\nis that if we are trying to restripe the chunk its target type can be\nmore relaxed than the current one (eg require less devices or less\nspace).  So, when restriping, run checks against the target profile\ninstead of the current one.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "7738a53a3a3aa8d82350280ff4bc7df9c3094123",
      "tree": "f51ea4f52ba5bc6688b43737567d6a991235da28",
      "parents": [
        "fc67c450837ec034174060a25889a55eed741a1d"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "message": "Btrfs: add __get_block_group_index() helper\n\nAdd __get_block_group_index() helper to be able to derive block group\nindex from an arbitary set of flags.  Implement get_block_group_index()\nin terms of it.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "fc67c450837ec034174060a25889a55eed741a1d",
      "tree": "0b3fb00d025427057a5171ed848c06ad0fa15222",
      "parents": [
        "0c460c0d70e10463e44bdf1d406e9c5ec03b1af6"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "message": "Btrfs: add get_restripe_target() helper\n\nAdd get_restripe_target() helper and switch everybody to use it.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "0c460c0d70e10463e44bdf1d406e9c5ec03b1af6",
      "tree": "8c28962481b64a3dcabb2294094435832a23516d",
      "parents": [
        "e8920a640be5d4ebe3fee0670639a81d4ffc904c"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "message": "Btrfs: move alloc_profile_is_valid() to volumes.c\n\nHeader file is not a good place to define functions.  This also moves a\ncall to alloc_profile_is_valid() down the stack and removes a redundant\ncheck from __btrfs_alloc_chunk() - alloc_profile_is_valid() takes it\ninto account.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "e8920a640be5d4ebe3fee0670639a81d4ffc904c",
      "tree": "0c999adbdce223ac0365ca98c008da8db7bb7cb3",
      "parents": [
        "899c81eac890bcfa5f3636f4c43f68e8393ac1f8"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:17 2012 +0300"
      },
      "message": "Btrfs: make profile_is_valid() check more strict\n\n\"0\" is a valid value for an on-disk chunk profile, but it is not a valid\nextended profile.  (We have a separate bit for single chunks in extended\ncase)\n\nAlso rename it to alloc_profile_is_valid() for clarity.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "899c81eac890bcfa5f3636f4c43f68e8393ac1f8",
      "tree": "f2a202c25edd6a58a4c0018db03617b6b0c46fc8",
      "parents": [
        "e3176ca2769e420f64eba4b093bbddea6d7a89c3"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:16 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:16 2012 +0300"
      },
      "message": "Btrfs: add wrappers for working with alloc profiles\n\nAdd functions to abstract the conversion between chunk and extended\nallocation profile formats and switch everybody to use them.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "e3176ca2769e420f64eba4b093bbddea6d7a89c3",
      "tree": "efed61bf174579bdbef9dd8f0a88942286ca57ac",
      "parents": [
        "ea466794084f55d8fcc100711cf17923bf57e962"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:16 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:16 2012 +0300"
      },
      "message": "Btrfs: stop silently switching single chunks to raid0 on balance\n\nThis has been causing a lot of confusion for quite a while now and a lot\nof users were surprised by this (some of them were even stuck in a\nENOSPC situation which they couldn\u0027t easily get out of).  The addition\nof restriper gives users a clear choice between raid0 and drive concat\nsetup so there\u0027s absolutely no excuse for us to keep doing this.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "3083ee2e18b701122a3b841db83448543a87a583",
      "tree": "0265021499da54e5b4667a041f8b82c6d1a8667e",
      "parents": [
        "115391d2315239164e400a8259b26392afccf3bd"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 09 16:01:49 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:08 2012 -0400"
      },
      "message": "Btrfs: introduce free_extent_buffer_stale\n\nBecause btrfs cow\u0027s we can end up with extent buffers that are no longer\nnecessary just sitting around in memory.  So instead of evicting these pages, we\ncould end up evicting things we actually care about.  Thus we have\nfree_extent_buffer_stale for use when we are freeing tree blocks.  This will\nmake it so that the ref for the eb being in the radix tree is dropped as soon as\npossible and then is freed when the refcount hits 0 instead of waiting to be\nreleased by releasepage.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "81c9ad237c604adec79fd4d4034264c6669e0ab3",
      "tree": "673fe5a1c491d43fae6f4309aa699b4e328d534e",
      "parents": [
        "285ff5af6ce358e73f53b55c9efadd4335f4c2ff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 18 10:56:06 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 14:42:51 2012 -0400"
      },
      "message": "Btrfs: remove search_start and search_end from find_free_extent and callers\n\nWe have been passing nothing but (u64)-1 to find_free_extent for search_end in\nall of the callers, so it\u0027s completely useless, and we\u0027ve always been passing 0\nin as search_start, so just remove them as function arguments and move\nsearch_start into find_free_extent.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "285ff5af6ce358e73f53b55c9efadd4335f4c2ff",
      "tree": "32dde2d070ed85bc9b886e7fbb242df30e851f2a",
      "parents": [
        "c16fa4f2ad19908a47c63d8fa436a1178438c7e7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 15:27:45 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 14:42:51 2012 -0400"
      },
      "message": "Btrfs: remove the ideal caching code\n\nThis is a relic from before we had the disk space cache and it was to make\nbootup times when you had btrfs as root not be so damned slow.  Now that we have\nthe disk space cache this isn\u0027t a problem anymore and really having this code\ncasues uneeded fragmentation and complexity, so just remove it.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "2c536799f1bde905bbacf7af3aa6be3f4de66005",
      "tree": "54f306bf4320d97e73f9728268a99910b234d048",
      "parents": [
        "3fbe5c02ae5a59053d779392b9a12aa8f6d6198e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:41 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:36 2012 +0100"
      },
      "message": "btrfs: btrfs_drop_snapshot should return int\n\nCommit cb1b69f4 (Btrfs: forced readonly when btrfs_drop_snapshot() fails)\nmade btrfs_drop_snapshot return void because there were no callers checking\nthe return value. That is the wrong order to handle error propogation since\nthe caller will have no idea that an error has occured and continue on\nas if nothing went wrong.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "538042801a479ebd316582ad10a9c3156b5b7548",
      "tree": "06582e3ca9e4d8a7c0c4117ee448bfda67b73092",
      "parents": [
        "d5c13f927fe77b11a67f79559808c68b26474c77"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:28 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:32 2012 +0100"
      },
      "message": "btrfs: avoid NULL deref in btrfs_reserve_extent with DEBUG_ENOSPC\n\n __find_space_info can return NULL but we don\u0027t check it before calling\n dump_space_info().\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "e77266e4c4be6f9dc91bf688bce015a8babd5fe0",
      "tree": "9ad1f7fa246188ac2f12088a8a1e354ffea63799",
      "parents": [
        "5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 24 10:39:05 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 24 10:39:05 2012 -0500"
      },
      "message": "Btrfs: fix compiler warnings on 32 bit systems\n\nThe enospc tracing code added some interesting uses of\nu64 pointer casts.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf",
      "tree": "e09399d4a56fcbad38765fd24c7c6e8782f438de",
      "parents": [
        "506531905296d6aee84480c879b25ea98c3f9db6"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 23 10:49:04 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:49:04 2012 -0500"
      },
      "message": "Btrfs: increase the global block reserve estimates\n\nWhen doing IO with large amounts of data fragmentation, the global block\nreserve calulations are too low.  This increases them to avoid\nENOSPC crashes.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d9b0218f6cb682aa6a4ada2bfc5a25fdf3018563",
      "tree": "ea325470025698b1f9bfd8ff034d0d54ee89bb59",
      "parents": [
        "9d47c7671dc555e198c7347a173ed37316e0c4c1"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 16 18:34:39 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:18 2012 +0100"
      },
      "message": "Btrfs: fix a bug on overcommit stuff\n\nWhen overcommitting, we should check the sum of pinned space and\nbytes for delayed item.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "2cac13e41bf5b99ffc426bd28dfd2248df1dfa67",
      "tree": "b74e7e863b7d7c2e116dc6754d8faf701c0aa3c9",
      "parents": [
        "6af021d8fc3bcce790e7fbb391e39c5920fa3f71"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 09 18:17:41 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: fix trim 0 bytes after a device delete\n\nA user reported a bug of btrfs\u0027s trim, that is we will trim 0 bytes\nafter a device delete.\n\nThe reproducer:\n\n$ mkfs.btrfs disk1\n$ mkfs.btrfs disk2\n$ mount disk1 /mnt\n$ fstrim -v /mnt\n$ btrfs device add disk2 /mnt\n$ btrfs device del disk1 /mnt\n$ fstrim -v /mnt\n\nThis is because after we delete the device, the block group may start from\na non-zero place, which will confuse trim to discard nothing.\n\nReported-by: Lutz Euler \u003clutz.euler@freenet.de\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "9e622d6bea0202e9fe267955362c01918562c09b",
      "tree": "75b73fbfec2c56ba9ccbe909586cf0f27aba96e1",
      "parents": [
        "7ec31b548a17f773ab6289e795ed3a6820e8b56e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: fix enospc error caused by wrong checks of the chunk\n\nWhen we did sysbench test for inline files, enospc error happened easily though\nthere was lots of free disk space which could be allocated for new chunks.\n\nReproduce steps:\n # mkfs.btrfs -b $((2 * 1024 * 1024 * 1024)) \u003ctest partition\u003e\n # mount \u003ctest partition\u003e /mnt\n # ulimit -n 102400\n # cd /mnt\n # sysbench --num-threads\u003d1 --test\u003dfileio --file-num\u003d81920 \\\n \u003e --file-total-size\u003d80M --file-block-size\u003d1K --file-io-mode\u003dsync \\\n \u003e --file-test-mode\u003dseqwr prepare\n # sysbench --num-threads\u003d1 --test\u003dfileio --file-num\u003d81920 \\\n \u003e --file-total-size\u003d80M --file-block-size\u003d1K --file-io-mode\u003dsync \\\n \u003e --file-test-mode\u003dseqwr run\n \u003csoon later, BUG_ON() was triggered by enospc error\u003e\n\nThe reason of this bug is:\nNow, we can reserve space which is larger than the free space in the chunks if\nwe have enough free disk space which can be used for new chunks. By this way,\nthe space allocator should allocate a new chunk by force if there is no free\nspace in the free space cache. But there are two wrong checks which break this\noperation.\n\nOne is\n\tif (ret \u003d\u003d -ENOSPC \u0026\u0026 num_bytes \u003e min_alloc_size)\nin btrfs_reserve_extent(), it is wrong, we should try to allocate a new chunk\neven we fail to allocate free space by minimum allocable size.\n\nThe other is\n\tif (space_info-\u003eforce_alloc)\n\t\tforce \u003d space_info-\u003eforce_alloc;\nin do_chunk_alloc(). It makes the allocator ignore CHUNK_ALLOC_FORCE If someone\nsets -\u003eforce_alloc to CHUNK_ALLOC_LIMITED, and makes the enospc error happen.\n\nFix these two wrong checks. Especially the second one, we fix it by changing\nthe value of CHUNK_ALLOC_LIMITED and CHUNK_ALLOC_FORCE, and make\nCHUNK_ALLOC_FORCE greater than CHUNK_ALLOC_LIMITED since CHUNK_ALLOC_FORCE has\nhigher priority. And if the value which is passed in by the caller is greater\nthan -\u003eforce_alloc, use the passed value.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "96bdc7dc61fb1b1e8e858dafb13abee8482ba064",
      "tree": "eddbfc7a931c7063ded4505c99d11d1702117064",
      "parents": [
        "f248679e86fead40cc78e724c7181d6bec1a2046"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 08:13:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:38:24 2012 -0500"
      },
      "message": "Btrfs: use larger system chunks\n\nsystem chunks by default are very small.  This makes them slightly\nlarger and also fixes the conditional checks to make sure we don\u0027t\nallocate a billion of them at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f248679e86fead40cc78e724c7181d6bec1a2046",
      "tree": "88abeee0b2a87c0f0377509525c92d3c9ec15a15",
      "parents": [
        "8c2a3ca20f6233677ac3222c6506174010eb414f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 12:09:22 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: add a delalloc mutex to inodes for delalloc reservations\n\nI was using i_mutex for this, but we\u0027re getting bogus lockdep warnings by doing\nthat and theres no real way to get rid of those, so just stop using i_mutex to\nprotect delalloc metadata reservations and use a delalloc mutex instead.  This\nshouldn\u0027t be contended often at all, only if you are writing and mmap writing to\nthe file at the same time.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8c2a3ca20f6233677ac3222c6506174010eb414f",
      "tree": "88d1105c665d355b363929557ed0c5489795e348",
      "parents": [
        "90290e19820e3323ce6b9c2888eeb68bf29c278b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 10 10:31:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: space leak tracepoints\n\nThis in addition to a script in my btrfs-tracing tree will help track down space\nleaks when we\u0027re getting space left over in block groups on umount.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3f7de037fb3727b20bc27332cdcf2488b702394c",
      "tree": "7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2",
      "parents": [
        "45a8090e626ab470c91142954431a93846030b0d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 08:29:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: add allocator tracepoints\n\nI used these tracepoints when figuring out what the cluster stuff was doing, so\nadd them to mainline in case we need to profile this stuff again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "d756bd2d9339447c29bde950910586df8f8941ec",
      "tree": "f96aeb682bcc4fdcf75d080f260c809b9fbc4a1a",
      "parents": [
        "27263e28321db438bc43dc0c0be432ce91526224",
        "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://repo.or.cz/linux-btrfs-devel into integration\n\nConflicts:\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "27263e28321db438bc43dc0c0be432ce91526224",
      "tree": "b7571dd52d6c1d48528e383d273b330da94439bd",
      "parents": [
        "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
        "19a39dce3b9bf0244d19a446718ad6f7605ff099"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "message": "Merge branch \u0027restriper\u0027 of git://github.com/idryomov/btrfs-unstable into integration\n"
    },
    {
      "commit": "e4d8ec0f65b91bfb4984a4927632ded95f9825ad",
      "tree": "4727c977803093ec5cdf93da4fcab34cc8de8ecf",
      "parents": [
        "70922617b0099f420deceb53d5dc7f4fb30d08d0"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: implement online profile changing\n\nProfile changing is done by launching a balance with\nBTRFS_BALANCE_CONVERT bits set and target fields of respective\nbtrfs_balance_args structs initialized.  Profile reducing code in this\ncase will pick restriper\u0027s target profile if it\u0027s available instead of\ndoing a blind reduce.  If target profile is not yet available it goes\nback to a plain reduce.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "70922617b0099f420deceb53d5dc7f4fb30d08d0",
      "tree": "6353dff7355863b92b48001e76c3f00bf180916b",
      "parents": [
        "ea67176ae8c024f64d85ec33873e5eadf1af7247"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: do not reduce profile in do_chunk_alloc()\n\nEvery caller of do_chunk_alloc() feeds it the reduced allocation\nprofile, so stop trying to reduce it one more time.  Instead check the\nvalidity of the passed profile.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "10ea00f55a07f8f9536d9112b95108a86f700bab",
      "tree": "83887f41d8a876d919f74f83cda26eb18b10deca",
      "parents": [
        "a46d11a8b06dd0431a3888fbc4856ea13a8e634f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: make avail_*_alloc_bits fields dynamic\n\nCurrently when new chunks are created respective avail_alloc_bits field\nis updated to reflect profiles of all chunks present in the system.\nHowever when chunks are removed profile bits are never cleared.\n\nThis patch clears profile bit of respective avail_alloc_bits field when\nthe last chunk with that profile is removed.  Restriper needs this to\nproperly operate when \"downgrading\".\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a46d11a8b06dd0431a3888fbc4856ea13a8e634f",
      "tree": "2aebc4d3ef2318a08cb067bb4a597a51e2455a65",
      "parents": [
        "52ba692972532f8d652080214b6599ece3dd51b9"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit\n\nRight now on-disk BTRFS_BLOCK_GROUP_* profile bits are used for\navail_{data,metadata,system}_alloc_bits fields, which gather info about\navailable allocation profiles in the FS.  When chunk is created or read\nfrom disk, its profile is OR\u0027ed with the corresponding avail_alloc_bits\nfield.  Since SINGLE is denoted by 0 in the on-disk format, currently\nthere is no way to tell when such chunks become avaialble.  Restriper\nneeds that information, so add a separate bit for SINGLE profile.\n\nThis bit is going to be in-memory only, it should never be written out\nto disk, so it\u0027s not a disk format change.  However to avoid remappings\nin future, reserve corresponding on-disk bit.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "52ba692972532f8d652080214b6599ece3dd51b9",
      "tree": "d4c60bad0a7813d964988c7c40aeceadfb54cc1d",
      "parents": [
        "6fef8df1dcb9b586268caff66df1d71ce8610132"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: introduce masks for chunk type and profile\n\nChunk\u0027s type and profile are encoded in u64 flags field.  Introduce\nmasks to easily access them.  Also fix the type of BTRFS_BLOCK_GROUP_*\nconstants, it should be ULL.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "6fef8df1dcb9b586268caff66df1d71ce8610132",
      "tree": "03488bc99771dda6354a3cb3113bee96f55aac47",
      "parents": [
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: get rid of *_alloc_profile fields\n\n{data,metadata,system}_alloc_profile fields have been unused for a long\ntime now.  Get rid of them.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "c7c144db531fda414e532adac56e965ce332e2a5",
      "tree": "8dc29815a0821e7441ebaa41f15adba0699ef730",
      "parents": [
        "7fe1e641502616220437079258506196bc4d8cbf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 07 10:39:22 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:52 2012 +0800"
      },
      "message": "Btrfs: update global block_rsv when creating a new block group\n\nA bug was triggered while using seed device:\n\n    # mkfs.btrfs /dev/loop1\n    # btrfstune -S 1 /dev/loop1\n    # mount -o /dev/loop1 /mnt\n    # btrfs dev add /dev/loop2 /mnt\n\nbtrfs: block rsv returned -28\n------------[ cut here ]------------\nWARNING: at fs/btrfs/extent-tree.c:5969 btrfs_alloc_free_block+0x166/0x396 [btrfs]()\n...\nCall Trace:\n...\n[\u003cf7b7c31c\u003e] btrfs_cow_block+0x101/0x147 [btrfs]\n[\u003cf7b7eaa6\u003e] btrfs_search_slot+0x1b8/0x55f [btrfs]\n[\u003cf7b7f844\u003e] btrfs_insert_empty_items+0x42/0x7f [btrfs]\n[\u003cf7b7f8c1\u003e] btrfs_insert_item+0x40/0x7e [btrfs]\n[\u003cf7b8ac02\u003e] btrfs_make_block_group+0x243/0x2aa [btrfs]\n[\u003cf7bb3f53\u003e] __btrfs_alloc_chunk+0x672/0x70e [btrfs]\n[\u003cf7bb41ff\u003e] init_first_rw_device+0x77/0x13c [btrfs]\n[\u003cf7bb5a62\u003e] btrfs_init_new_device+0x664/0x9fd [btrfs]\n[\u003cf7bbb65a\u003e] btrfs_ioctl+0x694/0xdbe [btrfs]\n[\u003cc04f55f7\u003e] do_vfs_ioctl+0x496/0x4cc\n[\u003cc04f5660\u003e] sys_ioctl+0x33/0x4f\n[\u003cc07b9edf\u003e] sysenter_do_call+0x12/0x38\n---[ end trace 906adac595facc7d ]---\n\nSince seed device is readonly, there\u0027s no usable space in the filesystem.\nAfterwards we add a sprout device to it, and the kernel creates a METADATA\nblock group and a SYSTEM block group where comes free space we can reserve,\nbut we still get revervation failure because the global block_rsv hasn\u0027t\nbeen updated accordingly.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "125ccb0ae6806dbec31abf4a85448971df3b4e39",
      "tree": "f530e85bea0639379997000a37e914d180e9e5b4",
      "parents": [
        "4da6f1a332f6c16b6594c7892f13c31459b9b1c8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 08 15:07:24 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:42 2012 +0800"
      },
      "message": "Btrfs: don\u0027t pass a trans handle unnecessarily in volumes.c\n\nSome functions never use the transaction handle passed to them.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "fc7c1077ceb99c35e5f9d0ce03dc7740565bb2bf",
      "tree": "ae10e2989f33b45529c2474a5668b5cecc65bf08",
      "parents": [
        "a5f6f719a5cd7caeee8ed8137cf3f94c3bbebc65"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Mon Nov 28 12:36:17 2011 -0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jan 07 19:15:14 2012 -0500"
      },
      "message": "Btrfs: don\u0027t set up allocation result twice\n\nWe store the allocation start and length twice in ins, once right\nafter the other, but with intervening calls that may prevent the\nduplicate from being optimized out by the compiler.  Remove one of the\nassignments.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a5f6f719a5cd7caeee8ed8137cf3f94c3bbebc65",
      "tree": "622a4a4399eae8e81b152670aa71c621d31b1878",
      "parents": [
        "1100373f8aa69e377386499350496e3d8565605f"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Mon Dec 12 04:48:19 2011 -0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:48:21 2012 -0500"
      },
      "message": "Btrfs: test free space only for unclustered allocation\n\nSince the clustered allocation may be taking extents from a different\nblock group, there\u0027s no point in spin-locking and testing the current\nblock group free space before attempting to allocate space from a\ncluster, even more so when we might refrain from even trying the\ncluster in the current block group because, after the cluster was set\nup, not enough free space remained.  Furthermore, cluster creation\nattempts fail fast when the block group doesn\u0027t have enough free\nspace, so the test was completely superfluous.\n\nI\u0027ve move the free space test past the cluster allocation attempt,\nwhere it is more useful, and arranged for a cluster in the current\nblock group to be released before trying an unclustered allocation,\nwhen we reach the LOOP_NO_EMPTY_SIZE stage, so that the free space in\nthe cluster stands a chance of being combined with additional free\nspace in the block group so as to succeed in the allocation attempt.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cf1d72c9ceec391d34c48724da57282e97f01122",
      "tree": "addcb347d4c00d724f86d309ad26b75438b7a814",
      "parents": [
        "203bf287cb01a5dc26c20bd3737cecf3aeba1d48"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:41:34 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:41:34 2012 -0500"
      },
      "message": "Btrfs: lower the bar for chunk allocation\n\nThe chunk allocation code has tried to keep a pretty tight lid on creating new\nmetadata chunks.  This is partially because in the past the reservation\ncode didn\u0027t give us an accurate idea of how much space was being used.\n\nThe new code is much more accurate, so we\u0027re able to get rid of some of these\nchecks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "203bf287cb01a5dc26c20bd3737cecf3aeba1d48",
      "tree": "f9ce9d7c82360bd6059b5ef16166cf79d16b1380",
      "parents": [
        "c1111b1fcee6359922ad8e5f6d72ed43815ad8f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:23:57 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:23:57 2012 -0500"
      },
      "message": "Btrfs: run chunk allocations while we do delayed refs\n\nBtrfs tries to batch extent allocation tree changes to improve performance\nand reduce metadata trashing.  But it doesn\u0027t allocate new metadata chunks\nwhile it is doing allocations for the extent allocation tree.\n\nThis commit changes the delayed refence code to do chunk allocations if we\u0027re\ngetting low on room.  It prevents crashes and improves performance.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a168650c08300434e1456abe7b6451f1448230d3",
      "tree": "addddb060b018eb569e97c11e1a1451feef11c7a",
      "parents": [
        "d1270cd91f308c9d22b2804720c36ccd32dbc35e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Dec 12 16:10:07 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:12:48 2012 +0100"
      },
      "message": "Btrfs: add waitqueue instead of doing busy waiting for more delayed refs\n\nNow that we may be holding back delayed refs for a limited period, we\nmight end up having no runnable delayed refs. Without this commit, we\u0027d\ndo busy waiting in that thread until another (runnable) ref arives.\nInstead, we\u0027re detecting this situation and use a waitqueue, such that\nwe only try to run more refs after\n\ta) another runnable ref was added  or\n\tb) delayed refs are no longer held back\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "d1270cd91f308c9d22b2804720c36ccd32dbc35e",
      "tree": "3dfa3109f7df9983ce88dad5bcb4515f7d4b26b5",
      "parents": [
        "00f04b88791ff49dc64ada18819d40a5b0671709"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Sep 13 15:16:43 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:12:45 2012 +0100"
      },
      "message": "Btrfs: put back delayed refs that are too new\n\nWhen processing a delayed ref, first check if there are still old refs in\nthe process of being added. If so, put this ref back to the tree. To avoid\nlooping on this ref, choose a newer one in the next loop.\nbtrfs_find_ref_cluster has to take care of that.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "66d7e7f09f77456fe68683247d77721032a00ee5",
      "tree": "bbf7df3933ed47aa202d60d835864543d25df82d",
      "parents": [
        "c7d22a3c3cdb73d8a0151e2ccc8cf4a48c48310b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon Sep 12 15:26:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 22 16:22:27 2011 +0100"
      },
      "message": "Btrfs: mark delayed refs as for cow\n\nAdd a for_cow parameter to add_delayed_*_ref and pass the appropriate value\nfrom every call site. The for_cow parameter will later on be used to\ndetermine if a ref will change anything with respect to qgroups.\n\nDelayed refs coming from relocation are always counted as for_cow, as they\ndon\u0027t change subvol quota.\n\nAlso pass in the fs_info for later use.\n\nbtrfs_find_all_roots() will use this as an optimization, as changes that are\nfor_cow will not change anything with respect to which root points to a\ncertain leaf. Thus, we don\u0027t need to add the current sequence number to\nthose delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "c9a7fe9672612c0b595633d2945f52257ad92b20",
      "tree": "df251545a12fdbb895c07ec9dccde10163624b7f",
      "parents": [
        "2cfab8d74ebfbe06ce2947117945c4f45a5915ec",
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
        "142349f541d0bb6bc3e0d4563268105aada42b0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "message": "Merge branches \u0027for-linus\u0027 and \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: unplug every once and a while\n  Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n  Btrfs: only set cache_generation if we setup the block group\n  Btrfs: don\u0027t panic if orphan item already exists\n  Btrfs: fix leaked space in truncate\n  Btrfs: fix how we do delalloc reservations and how we free reservations on error\n  Btrfs: deal with enospc from dirtying inodes properly\n  Btrfs: fix num_workers_starting bug and other bugs in async thread\n  BTRFS: Establish i_ops before calling d_instantiate\n  Btrfs: add a cond_resched() into the worker loop\n  Btrfs: fix ctime update of on-disk inode\n  btrfs: keep orphans for subvolume deletion\n  Btrfs: fix inaccurate available space on raid0 profile\n  Btrfs: fix wrong disk space information of the files\n  Btrfs: fix wrong i_size when truncating a file to a larger size\n  Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\n* \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: lower the dirty balance poll interval\n"
    },
    {
      "commit": "e65cbb94e036058128a5dec6398be2fd64cf88ba",
      "tree": "1ad4bba788cc283545d1e240c529eadeab7155aa",
      "parents": [
        "ee4d89f0c4967c624c92516fcc37b41069bfdc23"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Dec 13 16:04:54 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:24 2011 -0500"
      },
      "message": "Btrfs: only set cache_generation if we setup the block group\n\nA user reported a problem booting into a new kernel with the old format inodes.\nHe was panicing in cow_file_range while writing out the inode cache.  This is\nbecause if the block group is not cached we\u0027ll just skip writing out the cache,\nhowever if it gets dirtied again in the same transaction and it finished caching\nwe\u0027d go ahead and write it out, but since we set cache_generation to the transid\nwe think we\u0027ve already truncated it and will just carry on, running into\ncow_file_range and blowing up.  We need to make sure we only set\ncache_generation if we\u0027ve done the truncate.  The user tested this patch and\nverified that the panic no longer occured.  Thanks,\n\nReported-and-Tested-by: Klaus Bitto \u003cklaus.bitto@gmail.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "660d3f6cde552323578b85fc5a09a6742f1fe804",
      "tree": "7273af0b2a6fe7f9be685cb0586534802c807924",
      "parents": [
        "22c44fe65adacd20a174f3f54686509ee94ef7be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 11:18:51 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:22 2011 -0500"
      },
      "message": "Btrfs: fix how we do delalloc reservations and how we free reservations on error\n\nRunning xfstests 269 with some tracing my scripts kept spitting out errors about\nreleasing bytes that we didn\u0027t actually have reserved.  This took me down a huge\nrabbit hole and it turns out the way we deal with reserved_extents is wrong,\nwe need to only be setting it if the reservation succeeds, otherwise the free()\nmethod will come in and unreserve space that isn\u0027t actually reserved yet, which\ncan lead to other warnings and such.  The math was all working out right in the\nend, but it caused all sorts of other issues in addition to making my scripts\nyell and scream and generally make it impossible for me to track down the\noriginal issue I was looking for.  The other problem is with our error handling\nin the reservation code.  There are two cases that we need to deal with\n\n1) We raced with free.  In this case free won\u0027t free anything because csum_bytes\nis modified before we dro the lock in our reservation path, so free rightly\ndoesn\u0027t release any space because the reservation code may be depending on that\nreservation.  However if we fail, we need the reservation side to do the free at\nthat point since that space is no longer in use.  So as it stands the code was\ndoing this fine and it worked out, except in case #2\n\n2) We don\u0027t race with free.  Nobody comes in and changes anything, and our\nreservation fails.  In this case we didn\u0027t reserve anything anyway and we just\nneed to clean up csum_bytes but not free anything.  So we keep track of\ncsum_bytes before we drop the lock and if it hasn\u0027t changed we know we can just\ndecrement csum_bytes and carry on.\n\nBecause of the case where we can race with free()\u0027s since we have to drop our\nspin_lock to do the reservation, I\u0027m going to serialize all reservations with\nthe i_mutex.  We already get this for free in the heavy use paths, truncate and\nfile write all hold the i_mutex, just needed to add it to page_mkwrite and\nvarious ioctl/balance things.  With this patch my space leak scripts no longer\nscream bloody murder.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "fb38f9b8fe98a9c1f6b1e57d1b08b1102b293929",
      "tree": "81282b9875595ece0c3d61a4ea1741aecba0191a",
      "parents": [
        "8bd1c8815fc23fa4db2376bf667ef885827b48c9",
        "1cf4ffdb3289624a6462c94f2ce05545b32ef736"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 08 13:18:59 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 08 13:18:59 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: drop spin lock when memory alloc fails\n  Btrfs: check if the to-be-added device is writable\n  Btrfs: try cluster but don\u0027t advance in search list\n  Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE\n"
    },
    {
      "commit": "274bd4fb3ed6b72c1d77ef8850511f09fc6b8e4d",
      "tree": "c9a637653e547f24ed488d0d5956b314b4257597",
      "parents": [
        "062c05c46bd4358aad7a0e0cb5ffeb98ab935286"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Dec 07 20:08:40 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 08 08:55:40 2011 -0500"
      },
      "message": "Btrfs: try cluster but don\u0027t advance in search list\n\nWhen we find an existing cluster, we switch to its block group as the\ncurrent block group, possibly skipping multiple blocks in the process.\nFurthermore, under heavy contention, multiple threads may fail to\nallocate from a cluster and then release just-created clusters just to\nproceed to create new ones in a different block group.\n\nThis patch tries to allocate from an existing cluster regardless of its\nblock group, and doesn\u0027t switch to that group, instead proceeding to\ntry to allocate a cluster from the group it was iterating before the\nattempt.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "062c05c46bd4358aad7a0e0cb5ffeb98ab935286",
      "tree": "1d5b9a84d299fab9345f811b6e246d935200a39b",
      "parents": [
        "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Dec 07 19:50:42 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 07 19:50:42 2011 -0500"
      },
      "message": "Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE\n\nIf we reach LOOP_NO_EMPTY_SIZE, we won\u0027t even try to use a cluster that\nothers might have set up.  Odds are that there won\u0027t be one, but if\nsomeone else succeeded in setting it up, we might as well use it, even\nif we don\u0027t try to set up a cluster again.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b930c26416c4ea6855726fd977145ccea9afbdda",
      "tree": "ae18b550c5918ba36f92d0971cc7f2cc8918a05d",
      "parents": [
        "11d814a20166461358e1cefaf6bcd425698b8460",
        "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: fix meta data raid-repair merge problem\n  Btrfs: skip allocation attempt from empty cluster\n  Btrfs: skip block groups without enough space for a cluster\n  Btrfs: start search for new cluster at the beginning\n  Btrfs: reset cluster\u0027s max_size when creating bitmap\n  Btrfs: initialize new bitmaps\u0027 list\n  Btrfs: fix oops when calling statfs on readonly device\n  Btrfs: Don\u0027t error on resizing FS to same size\n  Btrfs: fix deadlock on metadata reservation when evicting a inode\n  Fix URL of btrfs-progs git repository in docs\n  btrfs scrub: handle -ENOMEM from init_ipath()\n"
    },
    {
      "commit": "be064d113906f04ea13088a8260e1e68ae0a4050",
      "tree": "0adeb137e165fbcc5c9ed66d00189ef3194781f4",
      "parents": [
        "425d83156ca27f74e2cc3f370138038c3c8947f8"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: skip allocation attempt from empty cluster\n\nIf we don\u0027t have a cluster, don\u0027t bother trying to allocate from it,\njumping right away to the attempt to allocate a new cluster.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "425d83156ca27f74e2cc3f370138038c3c8947f8",
      "tree": "67b452d423dc64aa3896078a2f90066922bbf384",
      "parents": [
        "1b22bad779be7fe07242be04749ec969164528b8"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: skip block groups without enough space for a cluster\n\nWe test whether a block group has enough free space to hold the\nrequested block, but when we\u0027re doing clustered allocation, we can\nsave some cycles by testing whether it has enough room for the cluster\nupfront, otherwise we end up attempting to set up a cluster and\nfailing.  Only in the NO_EMPTY_SIZE loop do we attempt an unclustered\nallocation, and by then we\u0027ll have zeroed the cluster size, so this\npatch won\u0027t stop us from using the block group as a last resort.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b22bad779be7fe07242be04749ec969164528b8",
      "tree": "08f8974f216e609a43119c4285844033775f6f7f",
      "parents": [
        "b78d09bceb524ee6481c21b77bda22d766b10e6a"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: start search for new cluster at the beginning\n\nInstead of starting at zero (offset is always zero), request a cluster\nstarting at search_start, that denotes the beginning of the current\nblock group.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aa38a711a893accf5b5192f3d705a120deaa81e0",
      "tree": "59dbb3bca55b7141ba0e0fda1031452ae87a6935",
      "parents": [
        "b52f75a595e8a70ee453bd6fb8023ee294f7a729"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Nov 18 17:43:00 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:03 2011 +0100"
      },
      "message": "Btrfs: fix deadlock on metadata reservation when evicting a inode\n\nWhen I ran the xfstests, I found the test tasks was blocked on meta-data\nreservation.\n\nBy debugging, I found the reason of this bug:\n   start transaction\n        |\n\tv\n   reserve meta-data space\n\t|\n\tv\n   flush delay allocation -\u003e iput inode -\u003e evict inode\n\t^\t\t\t\t\t|\n\t|\t\t\t\t\tv\n   wait for delay allocation flush \u003c- reserve meta-data space\n\nAnd besides that, the flush on evicting inode will block the thread, which\nis reclaiming the memory, and make oom happen easily.\n\nFix this bug by skipping the flush step when evicting inode.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "af36d15f58a3560617f1497ae011c3192049e40e",
      "tree": "f754dd93f4b14745c5e7b8caf52349716f7f7652",
      "parents": [
        "8ba8ed54de4dd79bb88ab6cd7dbf2e83d58d6d57",
        "24a70313969fc3fc440216b40babdb42564acff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: remove free-space-cache.c WARN during log replay\n  Btrfs: sectorsize align offsets in fiemap\n  Btrfs: clear pages dirty for io and set them extent mapped\n  Btrfs: wait on caching if we\u0027re loading the free space cache\n  Btrfs: prefix resize related printks with btrfs:\n  btrfs: fix stat blocks accounting\n  Btrfs: avoid unnecessary bitmap search for cluster setup\n  Btrfs: fix to search one more bitmap for cluster setup\n  btrfs: mirror_num should be int, not u64\n  btrfs: Fix up 32/64-bit compatibility for new ioctls\n  Btrfs: fix barrier flushes\n  Btrfs: fix tree corruption after multi-thread snapshots and inode_cache flush\n"
    },
    {
      "commit": "291c7d2f577428f896daa5002e784959328a80aa",
      "tree": "e18fdbc7bd0d8764444615a8efb1a3f74386204a",
      "parents": [
        "5bb1468238e20b15921909e9f9601e945f03bac7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 14 13:52:14 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:16 2011 -0500"
      },
      "message": "Btrfs: wait on caching if we\u0027re loading the free space cache\n\nWe\u0027ve been hitting panics when running xfstest 13 in a loop for long periods of\ntime.  And actually this problem has always existed so we\u0027ve been hitting these\nthings randomly for a while.  Basically what happens is we get a thread coming\ninto the allocator and reading the space cache off of disk and adding the\nentries to the free space cache as we go.  Then we get another thread that comes\nin and tries to allocate from that block group.  Since block_group-\u003ecached !\u003d\nBTRFS_CACHE_NO it goes ahead and tries to do the allocation.  We do this because\nif we\u0027re doing the old slow way of caching we don\u0027t want to hold people up and\nwait for everything to finish.  The problem with this is we could end up\ndiscarding the space cache at some arbitrary point in the future, which means we\ncould very well end up allocating space that is either bad, or when the real\ncaching happens it could end up thinking the space isn\u0027t in use when it really\nis and cause all sorts of other problems.\n\nThe solution is to add a new flag to indicate we are loading the free space\ncache from disk, and always try to cache the block group if cache-\u003ecached !\u003d\nBTRFS_CACHE_FINISHED.  That way if we are loading the space cache anybody else\nwho tries to allocate from the block group will have to wait until it\u0027s finished\nto make sure it completes successfully.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "c1f4246716392ec8693c23cffb969bd73c1b0910",
      "tree": "6160ac2507b28cf7625be79dd539a286c9fe4e43",
      "parents": [
        "fe10e6f4b24ef8ca12cb4d2368deb4861ab1861b",
        "8965593e41dd2d0e2a2f1e6f245336005ea94a2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: rename the option to nospace_cache\n  Btrfs: handle bio_add_page failure gracefully in scrub\n  Btrfs: fix deadlock caused by the race between relocation\n  Btrfs: only map pages if we know we need them when reading the space cache\n  Btrfs: fix orphan backref nodes\n  Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}\n  Btrfs: fix unreleased path in btrfs_orphan_cleanup()\n  Btrfs: fix no reserved space for writing out inode cache\n  Btrfs: fix nocow when deleting the item\n  Btrfs: tweak the delayed inode reservations again\n  Btrfs: rework error handling in btrfs_mount()\n  Btrfs: close devices on all error paths in open_ctree()\n  Btrfs: avoid null dereference and leaks when bailing from open_ctree()\n  Btrfs: fix subvol_name leak on error in btrfs_mount()\n  Btrfs: fix memory leak in btrfs_parse_early_options()\n  Btrfs: fix our reservations for updating an inode when completing io\n  Btrfs: fix oops on NULL trans handle in btrfs_truncate\n  btrfs: fix double-free \u0027tree_root\u0027 in \u0027btrfs_mount()\u0027\n"
    },
    {
      "commit": "61b520a9d0083b9b361638e456af45fd75150c87",
      "tree": "9545d5f0a2e606bef5702437a7c4c3eca9f12db4",
      "parents": [
        "3254c87618354e58fa2a7b375c6664f567480c33"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}\n\nbtrfs_block_rsv_add{, _noflush}() have similar code, so abstract that code.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7fd2ae21a42d178982679b86086661292b4afe4a",
      "tree": "236c22d807ca5f2419a1b0394bd1092aab730cde",
      "parents": [
        "917c16b2b69fc2eeb432eabca73258f08c58361e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "message": "Btrfs: fix our reservations for updating an inode when completing io\n\nPeople have been reporting ENOSPC crashes in finish_ordered_io.  This is because\nwe try to steal from the delalloc block rsv to satisfy a reservation to update\nthe inode.  The problem with this is we don\u0027t explicitly save space for updating\nthe inode when doing delalloc.  This is kind of a problem and we\u0027ve gotten away\nwith this because way back when we just stole from the delalloc reserve without\nany questions, and this worked out fine because generally speaking the leaf had\nbeen modified either by the mtime update when we did the original write or\nbecause we just updated the leaf when we inserted the file extent item, only on\nrare occasions had the leaf not actually been modified, and that was still ok\nbecause we\u0027d just use a block or two out of the over-reservation that is\ndelalloc.\n\nThen came the delayed inode stuff.  This is amazing, except it wants a full\nreservation for updating the inode since it may do it at some point down the\nroad after we\u0027ve written the blocks and we have to recow everything again.  This\nworked out because the delayed inode stuff just stole from the global reserve,\nthat is until recently when I changed that because it caused other problems.\n\nSo here we are, we\u0027re doing everything right and being screwed for it.  So take\nan extra reservation for the inode at delalloc reservation time and carry it\nthrough the life of the delalloc reservation.  If we need it we can steal it in\nthe delayed inode stuff.  If we have already stolen it try and do a normal\nmetadata reservation.  If that fails try to steal from the delalloc reservation.\nIf _that_ fails we\u0027ll get a WARN_ON() so I can start thinking of a better way to\nsolve this and in the meantime we\u0027ll steal from the global reserve.\n\nWith this patch I ran xfstests 13 in a loop for a couple of hours and didn\u0027t see\nany problems.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6a6662ced4153f6dbcfc40d7225c3cc45416039c",
      "tree": "77ad5d577333f02cd854e44827a407dd0388d4eb",
      "parents": [
        "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
        "7c7e82a77fe3d89ae50824aa7c897454675eb4c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (114 commits)\n  Btrfs: check for a null fs root when writing to the backup root log\n  Btrfs: fix race during transaction joins\n  Btrfs: fix a potential btrfs_bio leak on scrub fixups\n  Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n  Btrfs: stop leaking btrfs_bios on readahead\n  Btrfs: stop the readahead threads on failed mount\n  Btrfs: fix extent_buffer leak in the metadata IO error handling\n  Btrfs: fix the new inspection ioctls for 32 bit compat\n  Btrfs: fix delayed insertion reservation\n  Btrfs: ClearPageError during writepage and clean_tree_block\n  Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n  Btrfs: make a delayed_block_rsv for the delayed item insertion\n  Btrfs: add a log of past tree roots\n  btrfs: separate superblock items out of fs_info\n  Btrfs: use the global reserve when truncating the free space cache inode\n  Btrfs: release metadata from global reserve if we have to fallback for unlink\n  Btrfs: make sure to flush queued bios if write_cache_pages waits\n  Btrfs: fix extent pinning bugs in the tree log\n  Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n  Btrfs: don\u0027t wait as long for more batches during SSD log commit\n  ...\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c06a0e120a4e381a1c291c1fce3c6155c5791cae",
      "tree": "a9d1c44610b37c701d25e439b005dacfa0f823c1",
      "parents": [
        "bf0da8c183a15656eee63c54f334c3794320872a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 04 19:56:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:20 2011 -0500"
      },
      "message": "Btrfs: fix delayed insertion reservation\n\nWe all keep getting those stupid warnings from use_block_rsv when running\nstress.sh, and it\u0027s because the delayed insertion stuff is being stupid.  It\u0027s\nnot the delayed insertion stuffs fault, it\u0027s all just stupid.  When marking an\ninode dirty for oh say updating the time on it, we just do a\nbtrfs_join_transaction, which doesn\u0027t reserve any space.  This is stupid because\nwe\u0027re going to have to have space reserve to make this change, but we do it\nbecause it\u0027s fast because chances are we\u0027re going to call it over and over again\nand it doesn\u0027t matter.  Well thanks to the delayed insertion stuff this is\nmostly the case, so we do actually need to make this reservation.  So if\ntrans-\u003ebytes_reserved is 0 then try to do a normal reservation.  If not return\nENOSPC which will make the btrfs_dirty_inode start a proper transaction which\nwill let it do the whole ENOSPC dance and reserve enough space for the delayed\ninsertion to steal the reservation from the transaction.\n\nThe other stupid thing we do is not reserve space for the inode when writing to\nthe thing.  Usually this is ok since we have to update the time so we\u0027d have\nalready done all this work before we get to the endio stuff, so it doesn\u0027t\nmatter.  But this is stupid because we could write the data after the\ntransaction commits where we changed the mtime of the inode so we have to cow\nall the way down to the inode anyway.  This used to be masked by the delalloc\nreservation stuff, but because we delay the update it doesn\u0027t get masked in this\ncase.  So again the delayed insertion stuff bites us in the ass.  So if our\ntrans-\u003eblock_rsv is delalloc, just steal the reservation from the delalloc\nreserve.  Hopefully this won\u0027t bite us in the ass, but I\u0027ve said that before.\n\nWith this patch stress.sh no longer spits out those stupid warnings (famous last\nwords).  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "663350ac38c67ca388acea6e876dc6d668c232b0",
      "tree": "d111c306c5dfd622c04a0568efde089bdc4577b3",
      "parents": [
        "6d668dda0caec537fbf28c4d91e6d18181af3cff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 03 22:54:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:19 2011 -0500"
      },
      "message": "Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n\nBecause of the overcommit stuff I had to make it so that we committed the\ntransaction all the time in reserve_metadata_bytes in case we had overcommitted\nbecause of delayed items.  This was because previously we had no way of knowing\nhow much space was reserved for delayed items.  Now that we have the\ndelayed_block_rsv we can check it to see if committing the transaction would get\nus anywhere.  This patch breaks out the committing logic into a helper function\nthat will check to see if committing the transaction would free enough space for\nus to get anything done.  With this patch xfstests 83 goes from taking 445\nseconds to taking 28 seconds on my box.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6d668dda0caec537fbf28c4d91e6d18181af3cff",
      "tree": "bfc4afce43435e0dc354e58150745fcf2c6072f0",
      "parents": [
        "af31f5e5b84b5bf2bcec464153a5130b170b2770"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 03 22:54:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:18 2011 -0500"
      },
      "message": "Btrfs: make a delayed_block_rsv for the delayed item insertion\n\nI\u0027ve been hitting warnings in use_block_rsv when running the delayed insertion\nstuff.  It\u0027s because we will readjust global block rsv based on what is in use,\nwhich means we could end up discarding reservations that are for the delayed\ninsertion stuff.  So instead create a seperate block rsv for the delayed\ninsertion stuff.  This will also make it easier to debug problems with the\ndelayed insertion reservations since we will know that only the delayed\ninsertion code touches this block_rsv.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "e688b7252f784c2479d559f9f70ca8354752c5e7",
      "tree": "3934b0a9c348b2900e08e8fc9c0e6819e80d0fff",
      "parents": [
        "1eae31e918972bbeefc119d23c1d67674f49a301"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 31 20:52:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:48 2011 -0500"
      },
      "message": "Btrfs: fix extent pinning bugs in the tree log\n\nThe tree log had two important bugs that could cause corruptions after a\ncrash.  Sometimes we were allowing tree log blocks to be reused after\nthe tree log was committed but before the transaction commit was done.\n\nThis allowed a future metadata write to overwrite the tree log data.  It\nis fixed by adding a new variant of freeing reserved extents that always\npins them.  Credit goes to Stefan Behrens and Arne Jansen for many many\nhours spent tracking this bug down.\n\nDuring tree log replay, we do a pass through the tree log and pin all\nthe extents we find.  This makes sure the replay code won\u0027t go in and\nuse any of those blocks for new allocations during replay.  The problem\nis the free space cache isn\u0027t honoring these pinned extents.  So the\nallocator can end up handing them out, leading to all kinds of problems\nduring replay.\n\nThe fix here is to force any free space cache to load while we pin the\nextents, and then to make sure we remove the pinned extents from the\nfree space rbtree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "0e175a1835ffc979e55787774e58ec79e41957d7",
      "tree": "6ec4b65a8de4e9d1c12d26a1079079ed81d79450",
      "parents": [
        "ad4e38dd6a33bb3a4882c487d7abe621e583b982"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 07 21:54:10 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Oct 31 00:33:36 2011 +0800"
      },
      "message": "writeback: Add a \u0027reason\u0027 to wb_writeback_work\n\nThis creates a new \u0027reason\u0027 field in a wb_writeback_work\nstructure, which unambiguously identifies who initiates\nwriteback activity.  A \u0027wb_reason\u0027 enumeration has been\nadded to writeback.h, to enumerate the possible reasons.\n\nThe \u0027writeback_work_class\u0027 and tracepoint event class and\n\u0027writeback_queue_io\u0027 tracepoints are updated to include the\nsymbolic \u0027reason\u0027 in all trace events.\n\nAnd the \u0027writeback_inodes_sbXXX\u0027 family of routines has had\na wb_stats parameter added to them, so callers can specify\nwhy writeback is being started.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "dff51cd1c60856c28f5d22a571294c2b70b6b322",
      "tree": "fe310f20368175086107460a247d5e6aa6d82e36",
      "parents": [
        "a81d3b1ba2f5faae28ba7a092c7598673fa02ac2"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Jun 14 12:52:17 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:48:00 2011 +0200"
      },
      "message": "btrfs: ratelimit WARN_ON in use_block_rsv\n\nThe WARN_ON under some circumstances heavily polute log and slow down\nthe machine. This is just a safety, as the warning should be fixed by\nanother patch, nevertheless, it still pops up during testing.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "60d2adbb1e7fee1cb4bc67f70bd0bd8ace7b6c3c",
      "tree": "9a3e5f57204cf41bbf998a1873e870110c2ff5f8",
      "parents": [
        "cfbffc39ac89dbd5197cbeec2599a1128eb928f8"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Sep 09 17:34:35 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:49 2011 +0200"
      },
      "message": "Btrfs: fix race between multi-task space allocation and caching space\n\nThe task may fail to get free space though it is enough when multi-task\nspace allocation and caching space happen at the same time.\n\n\tTask1\t\t\tCaching Thread\t\tTask2\n\t------------------------------------------------------------------------\n\tfind_free_extent\n\t  The space has not\n\t  be cached, and start\n\t  caching thread. And\n\t  wait for it.\n\t\t\t\tcache space, if\n\t\t\t\tthe space is \u003e 2MB\n\t\t\t\twake up Task1\n\t\t\t\t\t\t\tfind_free_extent\n\t\t\t\t\t\t\t  get all the space that\n\t\t\t\t\t\t\t  is cached.\n\t  try to allocate space,\n\t  but there is no space\n\t  now.\n\ttrigger BUG_ON()\n\nThe message is following:\nbtrfs allocation failed flags 1, wanted 4096\nspace_info has 1040187392 free, is not full\nspace_info total\u003d1082130432, used\u003d4096, pinned\u003d41938944, reserved\u003d0, may_use\u003d40828928, readonly\u003d0\nblock group 12582912 has 8388608 bytes, 0 used 8388608 pinned 0 reserved\nblock group has cluster?: no\n0 blocks of free space at or bigger than bytes is\nblock group 1103101952 has 1073741824 bytes, 4096 used 33550336 pinned 0 reserved\nblock group has cluster?: no\n0 blocks of free space at or bigger than bytes is\n------------[ cut here ]------------\nkernel BUG at fs/btrfs/inode.c:835!\n [\u003cffffffffa031261b\u003e] __extent_writepage+0x1bf/0x5ce [btrfs]\n [\u003cffffffff810cbcb8\u003e] ? __set_page_dirty_nobuffers+0xfe/0x108\n [\u003cffffffffa02f8ada\u003e] ? wait_current_trans+0x23/0xec [btrfs]\n [\u003cffffffff810c3fbf\u003e] ? find_get_pages_tag+0x73/0xe2\n [\u003cffffffffa0312d12\u003e] extent_write_cache_pages.clone.0+0x176/0x29a [btrfs]\n [\u003cffffffffa0312e74\u003e] extent_writepages+0x3e/0x53 [btrfs]\n [\u003cffffffff8110ad2c\u003e] ? do_sync_write+0xc6/0x103\n [\u003cffffffffa0302d6e\u003e] ? btrfs_submit_direct+0x414/0x414 [btrfs]\n [\u003cffffffff811380fa\u003e] ? fsnotify+0x236/0x266\n [\u003cffffffffa02fc930\u003e] btrfs_writepages+0x22/0x24 [btrfs]\n [\u003cffffffff810cc215\u003e] do_writepages+0x1c/0x25\n [\u003cffffffff810c4958\u003e] __filemap_fdatawrite_range+0x4e/0x50\n [\u003cffffffff810c4982\u003e] filemap_write_and_wait_range+0x28/0x51\n [\u003cffffffffa0306b2e\u003e] btrfs_sync_file+0x7d/0x198 [btrfs]\n [\u003cffffffff8110aa26\u003e] ? fsnotify_modify+0x5d/0x65\n [\u003cffffffff8112d150\u003e] vfs_fsync_range+0x18/0x21\n [\u003cffffffff8112d170\u003e] vfs_fsync+0x17/0x19\n [\u003cffffffff8112d316\u003e] do_fsync+0x29/0x3e\n [\u003cffffffff8112d348\u003e] sys_fsync+0xb/0xf\n [\u003cffffffff81468352\u003e] system_call_fastpath+0x16/0x1b\n[SNIP]\nRIP  [\u003cffffffffa02fe08c\u003e] cow_file_range+0x1c4/0x32b [btrfs]\n\nWe fix this bug by trying to allocate the space again if there are block groups\nin caching.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "10b2f34d6e7fbe07f498cb2006272e9a561f5e60",
      "tree": "157a5cd82158e1b9a21423e06e8f074e4654b456",
      "parents": [
        "fee187d9d9ddc382c81370a9a280391132dea2e1"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Sun Oct 02 13:56:53 2011 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:46 2011 +0200"
      },
      "message": "Btrfs: pass the correct root to lookup_free_space_inode()\n\nFree space items are located in tree of tree roots, not in the extent\ntree.  It didn\u0027t pop up because lookup_free_space_inode() grabs the\ninode all the time instead of actually searching the tree.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "7e355b83efa80e5f5821591c13c17649594d82ac",
      "tree": "978b21df0e2a77a16fe8383be28a82378a7d662d",
      "parents": [
        "36ba022ac0b748dd543f43430b03198e899426c9"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 18 13:07:31 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:13:00 2011 -0400"
      },
      "message": "Btrfs: if we have a lot of pinned space, commit the transaction\n\nMitch kept hitting a panic because he was getting ENOSPC.  One of my previous\npatches makes it so we are much better at not allocating new metadata chunks.\nUnfortunately coupled with the overcommit patch this works us into a bit of a\nproblem if we are removing a bunch of space and end up chewing up all of our\nspace with pinned extents.  We can allocate chunks fine and overflow is ok, but\nthe only way to reclaim this space is to commit the transaction.  So if we go to\novercommit, first check and see how much pinned space we have.  If we have more\nthan 80% of the free space chewed up with pinned extents, just commit the\ntransaction, this will free up enough space for our reservation and we won\u0027t\nhave this problem anymore.  With this patch Mitch\u0027s test doesn\u0027t blow up\nanymore.  Thanks,\n\nReported-and-tested-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "36ba022ac0b748dd543f43430b03198e899426c9",
      "tree": "3175872760ac769cde046b3ac43900fc42856bb8",
      "parents": [
        "3880a1b46d87a6b030c31889875befc745d95dff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 18 12:15:48 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:59 2011 -0400"
      },
      "message": "Btrfs: seperate out btrfs_block_rsv_check out into 2 different functions\n\nCurrently btrfs_block_rsv_check does 2 things, it will either refill a block\nreserve like in the truncate or refill case, or it will check to see if there is\nenough space in the global reserve and possibly refill it.  However because of\novercommit we could be well overcommitting ourselves just to try and refill the\nglobal reserve, when really we should just be committing the transaction.  So\nbreack this out into btrfs_block_rsv_refill and btrfs_block_rsv_check.  Refill\nwill try to reserve more metadata if it can and btrfs_block_rsv_check will not,\nit will only tell you if the factor of the total space is still reserved.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b24e03db0df3e9164c9649db12fecc8c2d81b0d1",
      "tree": "e7742796bf98c1211babe8d1bdc464ad3e3a98a1",
      "parents": [
        "877da174301dde9062b915da4c8103048be49702"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 14 14:40:17 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:58 2011 -0400"
      },
      "message": "Btrfs: release trans metadata bytes before flushing delayed refs\n\nWe started setting trans-\u003eblock_rsv \u003d NULL to allow the delayed refs flushing\nstuff to use the right block_rsv and then just made\nbtrfs_trans_release_metadata() unconditionally use the trans block rsv.  The\nproblem with this is we need to reserve some space in the transaction and then\nmigrate it to the global block rsv, so we need to be able to free that out\nproperly.  So instead just move btrfs_trans_release_metadata() before the\ndelayed ref flushing and use trans-\u003eblock_rsv for the freeing.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "877da174301dde9062b915da4c8103048be49702",
      "tree": "d7110b64088d6e14e86cfeb02c483dd48c303c56",
      "parents": [
        "f104d044376aadcee74605d66b8d9dc2e145782c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 14 14:02:10 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:58 2011 -0400"
      },
      "message": "Btrfs: allow shrink_delalloc flush the needed reclaimed pages\n\nCurrently we only allow a maximum of 2 megabytes of pages to be flushed at a\ntime.  This was ok before, but now we have overcommit which will screw us in a\nheartbeat if we are quickly filling the disk.  So instead pick either 2\nmegabytes or the number of pages we need to reclaim to be safe again, which ever\nis larger.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f104d044376aadcee74605d66b8d9dc2e145782c",
      "tree": "b993ee1cae8bd523455f1679f9db4d7e5a004f70",
      "parents": [
        "bbb495c2ed9d34894cb3d6d366866fc92a2e1adc"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 14 13:56:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:57 2011 -0400"
      },
      "message": "Btrfs: wait for ordered extents if we\u0027re in trouble when shrinking delalloc\n\nThe only way we actually reclaim delalloc space is waiting for the IO to\ncompletely finish.  Usually we kick off a bunch of IO and wait for a little bit\nand hope we can make our reservation, and usually this works out pretty well.\nWith overcommit however we can get seriously underwater if we\u0027re filling up the\ndisk quickly, so we need to be able to force the delalloc shrinker to wait for\nthe ordered IO to finish to give us a better chance of actually reclaiming\nenough space to get our reservation.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "bbb495c2ed9d34894cb3d6d366866fc92a2e1adc",
      "tree": "862620d1c80d3b46758c04c9f6a0b8b9be202140",
      "parents": [
        "ed3ee9f44ba55eb6acfbfc8caa881e0253710d2a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 14 13:37:45 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:56 2011 -0400"
      },
      "message": "Btrfs: don\u0027t check bytes_pinned to determine if we should commit the transaction\n\nBefore the only reason to commit the transaction to recover space in\nreserve_metadata_bytes() was if there were enough pinned_bytes to satisfy our\nreservation.  But now we have the delayed inode stuff which will hold it\u0027s\nreservations until we commit the transaction.  So say we max out our reservation\nby creating a bunch of files but don\u0027t have any pinned bytes we will ENOSPC out\nearly even though we could commit the transaction and get that space back.  So\nnow just unconditionally commit the transaction since currently there is no way\nto know how much metadata space is being reserved by delayed inode stuff.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4b91c14f913f649d4302b3677b85c4ce87a3d8e7",
      "tree": "3c0c0ce1655985e05ab66440c1b9db7890c3a52a",
      "parents": [
        "5b0e95bf607ddd59b39f52d3d55e6581c817b530"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 07 11:55:34 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:55 2011 -0400"
      },
      "message": "Btrfs: wait for ordered extents if we didn\u0027t reclaim enough\n\nI noticed recently that my overcommit patch was causing one of my enospc tests\nto fail 25% of the time with early ENOSPC.  This is because my overcommit patch\nwas letting us go way over board, but it wasn\u0027t waiting long enough to let the\ndelalloc shrinker do it\u0027s job.  The problem is we just start writeback and wait\na little bit hoping we flush enough, but we only free up delalloc space by\nhaving the writes complete all the way.  We do this by waiting for ordered\nextents, which we do but only if we already free\u0027d enough for the reservation,\nwhich isn\u0027t right, we should flush ordered extents if we didn\u0027t reclaim enough\nin case that will push us over the edge.  With this patch I\u0027ve not seen a\nfailure in this enospc test after running it in a loop for an hour.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5b0e95bf607ddd59b39f52d3d55e6581c817b530",
      "tree": "da248f5492908ce8b9402beee68c6ee98aa3caed",
      "parents": [
        "9a82ca659d8bfd99afc0e89bbde2202322df5755"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 06 08:58:24 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:54 2011 -0400"
      },
      "message": "Btrfs: inline checksums into the disk free space cache\n\nYeah yeah I know this is how we used to do it and then I changed it, but damnit\nI\u0027m changing it back.  The fact is that writing out checksums will modify\nmetadata, which could cause us to dirty a block group we\u0027ve already written out,\nso we have to truncate it and all of it\u0027s checksums and re-write it which will\nwrite new checksums which could dirty a blockg roup that has already been\nwritten and you see where I\u0027m going with this?  This can cause unmount or really\nanything that depends on a transaction to commit to take it\u0027s sweet damned time\nto happen.  So go back to the way it was, only this time we\u0027re specifically\nsetting NODATACOW because we can\u0027t go through the COW pathway anyway and we\u0027re\ndoing our own built-in cow\u0027ing by truncating the free space cache.  The other\nnew thing is once we truncate the old cache and preallocate the new space, we\ndon\u0027t need to do that song and dance at all for the rest of the transaction, we\ncan just overwrite the existing space with the new cache if the block group\nchanges for whatever reason, and the NODATACOW will let us do this fine.  So\nkeep track of which transaction we last cleared our cache in and if we cleared\nit in this transaction just say we\u0027re all setup and carry on.  This survives\nxfstests and stress.sh.\n\nThe inode cache will continue to use the normal csum infrastructure since it\nonly gets written once and there will be no more modifications to the fs tree in\na transaction commit.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9a82ca659d8bfd99afc0e89bbde2202322df5755",
      "tree": "965b34fb6e1133d3a198954aa1d97ede017f993a",
      "parents": [
        "549b4fdb8f3c0708bbc0ee12ff955cd206c0f60c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 05 16:35:28 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:53 2011 -0400"
      },
      "message": "Btrfs: take overflow into account in reserving space\n\nMy overcommit stuff can be a little racy when we\u0027re filling up the disk with\nfs_mark and we overcommit into things that quickly get used up for data.  So use\nnum_bytes to see if we have enough available space so we\u0027re less likely to\novercommit ourselves out of the ability to make reservations.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "73bc187680f94bed498f8a669103cad290e41180",
      "tree": "e4e8c9a6baa656dbeb470032956657b294610c61",
      "parents": [
        "e27425d614d68daa08f60735982a7c3a0230e855"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Oct 03 14:07:49 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:51 2011 -0400"
      },
      "message": "Btrfs: introduce mount option no_space_cache\n\nSome users have requested this and I\u0027ve found I needed a way to disable cache\nloading without actually clearing the cache, so introduce the no_space_cache\noption.  Before we check the super blocks cache generation field and if it was\npopulated we always turned space caching on.  Now we check this and set the\nspace cache option on, and then parse the mount options so that if we want it\noff it get\u0027s turned off.  Then we check the mount option all the places we do\nthe caching work instead of checking the super\u0027s cache generation.  This makes\nthings more consistent and lets us turn space caching off.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2bf64758fd6290797a5ce97d4b9c698a4ed1cbad",
      "tree": "61c7cedc6d7870d288c11333596da6ec673fae95",
      "parents": [
        "8f6d7f4f45f18a5b669dbbf068c74b3d5be59dbf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Sep 26 17:12:22 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:50 2011 -0400"
      },
      "message": "Btrfs: allow us to overcommit our enospc reservations\n\nOne of the things that kills us is the fact that our ENOSPC reservations are\nhorribly over the top in most normal cases.  There isn\u0027t too much that can be\ndone about this because when we are completely full we really need them to work\nlike this so we don\u0027t under reserve.  However if there is plenty of unallocated\nchunks on the disk we can use that to gauge how much we can overcommit.  So this\npatch adds chunk free space accounting so we always know how much unallocated\nspace we have.  Then if we fail to make a reservation within our allocated\nspace, check to see if we can overcommit.  In the normal flushing case (like\nwith delalloc metadata reservations) we\u0027ll take the free space and divide it by\n2 if our metadata profile is setup for DUP or any of those, and then divide it\nby 8 to make sure we don\u0027t overcommit too much.  Then if we\u0027re in a non-flushing\ncase (we really need this reservation now!) we only limit ourselves to half of\nthe free space.  This makes this fio test\n\n[torrent]\nfilename\u003dtorrent-test\nrw\u003drandwrite\nsize\u003d4g\nioengine\u003dsync\ndirectory\u003d/mnt/btrfs-test\n\ngo from taking around 45 minutes to 10 seconds on my freshly formatted 3 TiB\nfile system.  This doesn\u0027t seem to break my other enospc tests, but could really\nuse some more testing as this is a super scary change.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "ef3be45722317f8c2fb0e861065df0c3830ff9ac",
      "tree": "961c8bd9a36943c08d0302dd77b8bb512387956a",
      "parents": [
        "a8c9e5769718d47e87cce40c9b84cab421804797"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Sep 22 14:30:02 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:47 2011 -0400"
      },
      "message": "Btrfs: check unused against how much space we actually want\n\nThere is a bug that may lead to early ENOSPC in our reservation code.  We\u0027ve\nbeen checking against num_bytes which may be above and beyond what we want to\nactually reserve, which could give us a false ENOSPC.  Fix this by making sure\nthe unused space is above how much we want to reserve and not how much we\u0027re\ntrying to flush.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "455757c322cc0a0f2a692c5625dd88aaf6a7b889",
      "tree": "1efe7eccd221b1afdaf406293102022775f68558",
      "parents": [
        "9c8d86db9aee6f85866d480e0f9b37817264814c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Sep 19 12:26:24 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:45 2011 -0400"
      },
      "message": "Btrfs: delay iput when deleting a block group\n\nI kept getting warnings from evict because we were calling\nbtrfs_start_transaction() with a transaction already started when doing a\nbalance.  This is because we remove a block group which requires a transaction,\nand the put the last reference on the cache inode.  Instead of doing this we\nneed to delay the iput so it is done not within a transaction having started.\nThis gets rid of our warnings.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4a92b1b8d2810db4ea0c34616b94c0b3810fa027",
      "tree": "dd01cff1987b8178be84f8b750951497b7f525a7",
      "parents": [
        "d02c9955ded7fc56dd1edc987558b084ccb03eb4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 12:34:28 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:44 2011 -0400"
      },
      "message": "Btrfs: stop passing a trans handle all around the reservation code\n\nThe only thing that we need to have a trans handle for is in\nreserve_metadata_bytes and thats to know how much flushing we can do.  So\ninstead of passing it around, just check current-\u003ejournal_info for a\ntrans_handle so we know if we can commit a transaction to try and free up space\nor not.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d02c9955ded7fc56dd1edc987558b084ccb03eb4",
      "tree": "ec7c62af5acfa3d8675aeeaa03facfd4f46fcaf3",
      "parents": [
        "4c13d758b7e79c14a0026c1f783f0c79e339b7bb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 11:40:48 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:43 2011 -0400"
      },
      "message": "Btrfs: don\u0027t get the block_rsv in btrfs_free_tree_block\n\nSince the durable block rsv stuff has been killed there is no need to get the\nblock_rsv in btrfs_free_tree_block anymore.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4c13d758b7e79c14a0026c1f783f0c79e339b7bb",
      "tree": "d1510daf164457d433b5f6219e5d48f2f6720a31",
      "parents": [
        "c09544e07f8cdc455ed8615d4c067d694c33bd18"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 11:31:29 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:42 2011 -0400"
      },
      "message": "Btrfs: use the transactions block_rsv for the csum root\n\nThe alloc warnings everybody has been seeing is because we have been reserving\nspace for csums, but we weren\u0027t actually using that space.  So make\nget_block_rsv() return the trans-\u003eblock_rsv if we\u0027re modifying the csum root.\nAlso set the trans-\u003eblock_rsv to NULL so that if we modify the csum root when\nrunning delayed ref\u0027s that comes out of the global reserve like it\u0027s supposed\nto.  With this patch I\u0027m not seeing those alloc warnings anymore.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "c09544e07f8cdc455ed8615d4c067d694c33bd18",
      "tree": "c9943e56457ac64e2223396841e043e4514462e0",
      "parents": [
        "300e4f8a56f263797568c95b71c949f9f02e4534"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 10:19:10 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:42 2011 -0400"
      },
      "message": "Btrfs: handle enospc accounting for free space inodes\n\nSince free space inodes now use normal checksumming we need to make sure to\naccount for their metadata use.  So reserve metadata space, and then if we fail\nto write out the metadata we can just release it, otherwise it will be freed up\nwhen the io completes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    }
  ],
  "next": "7f70150896ebd1169d9c43484c8c424f755353c4"
}
