)]}'
{
  "log": [
    {
      "commit": "aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e",
      "tree": "36acddddf6f4b50877b22e683704bc2cbaf4d3b5",
      "parents": [
        "4735fb282830c0966b301dabcccf4753fa6604bb"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Apr 13 12:28:00 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:21 2012 +0200"
      },
      "message": "Btrfs: don\u0027t call free_extent_buffer twice in iterate_irefs\n\nAvoid calling free_extent_buffer more than once when the iterator function\nreturns non-zero. The only code that uses this is scrub repair for corrupted\nnodatasum blocks.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "4735fb282830c0966b301dabcccf4753fa6604bb",
      "tree": "1749491d41f888c29dbad6de37fe3fbe81a38fc3",
      "parents": [
        "cdc6a3952558f00b1bc3b6401e1cf98797632fe2"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Apr 12 22:47:52 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:20 2012 +0200"
      },
      "message": "Btrfs: Make free_ipath() deal gracefully with NULL pointers\n\nMake free_ipath() behave like most other freeing functions in the\nkernel and gracefully do nothing when passed a NULL pointer.\n\nBesides this making the bahaviour consistent with functions such as\nkfree(), vfree(), btrfs_free_path() etc etc, it also fixes a real NULL\nderef issue in fs/btrfs/ioctl.c::btrfs_ioctl_ino_to_path(). In that\nfunction we have this code:\n\n...\n        ipath \u003d init_ipath(size, root, path);\n        if (IS_ERR(ipath)) {\n                ret \u003d PTR_ERR(ipath);\n                ipath \u003d NULL;\n                goto out;\n        }\n...\nout:\n        btrfs_free_path(path);\n        free_ipath(ipath);\n...\n\nIf we ever take the true branch of that \u0027if\u0027 statement we\u0027ll end up\npassing a NULL pointer to free_ipath() which will subsequently\ndereference it and we\u0027ll go \"Boom\" :-(\nThis patch will avoid that.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\n"
    },
    {
      "commit": "cdc6a3952558f00b1bc3b6401e1cf98797632fe2",
      "tree": "b97cf714429b439c6887b2fe0acf9065e1d09f1f",
      "parents": [
        "8e52acf70459020d7e9e9fda25066be4da520943"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 12 16:39:48 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:18 2012 +0200"
      },
      "message": "Btrfs: avoid possible use-after-free in clear_extent_bit()\n\nclear_extent_bit()\n{\n    next_node \u003d rb_next(\u0026state-\u003erb_node);\n    ...\n    clear_state_bit(state);  \u003c-- this may free next_node\n    if (next_node) {\n        state \u003d rb_entry(next_node);\n        ...\n    }\n}\n\nclear_state_bit() calls merge_state() which may free the next node\nof the passing extent_state, so clear_extent_bit() may end up\nreferencing freed memory.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8e52acf70459020d7e9e9fda25066be4da520943",
      "tree": "f6c63a909414958b3a8155fa83b17ea1c3c10525",
      "parents": [
        "871383be592ba7e819d27556591e315a0df38cee"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 12 16:39:28 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:16 2012 +0200"
      },
      "message": "Btrfs: retrurn void from clear_state_bit\n\nCurrently it returns a set of bits that were cleared, but this return\nvalue is not used at all.\n\nMoreover it doesn\u0027t seem to be useful, because we may clear the bits\nof a few extent_states, but only the cleared bits of last one is\nreturned.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "871383be592ba7e819d27556591e315a0df38cee",
      "tree": "0f0c2bc7ecf2d70a5ffa842001d70b5b0f8958d0",
      "parents": [
        "8d082fb727ac11930ea20bf1612e334ea7c2b697"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Apr 02 18:31:37 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:14 2012 +0200"
      },
      "message": "btrfs: add missing unlocks to transaction abort paths\n\nAdded in commit 49b25e0540904be0bf558b84475c69d72e4de66e\n(\"btrfs: enhance transaction abort infrastructure\")\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "8d082fb727ac11930ea20bf1612e334ea7c2b697",
      "tree": "417f84a4e3743bf0af435e0e339ef3fc54520a68",
      "parents": [
        "207a232ccac0a8cb79d304bd17298dbc96e2e082"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Tue Apr 03 09:56:53 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:13 2012 +0200"
      },
      "message": "Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE\n\nOur code is not ready to cope with a sectorsize that\u0027s not equal to PAGE_SIZE.\nIt will lead to hanging-on while writing something.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "207a232ccac0a8cb79d304bd17298dbc96e2e082",
      "tree": "baed843e078e80d04ff28054751dea22e98bea0b",
      "parents": [
        "8c9c2bf7a3c4f7e9d158c0be9c49f372fb943ad2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat Feb 25 09:09:47 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "btrfs: don\u0027t add both copies of DUP to reada extent tree\n\nNormally when there are 2 copies of a block, we add both to the\nreada extent tree and prefetch only the one that is easier to reach.\nThis way we can better utilize multiple devices.\nIn case of DUP this makes no sense as both copies reside on the\nsame device.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "8c9c2bf7a3c4f7e9d158c0be9c49f372fb943ad2",
      "tree": "6c17b4db9b39cb8eb950c21377f453df18f467c3",
      "parents": [
        "848cce0d4102b5b4b26b0987b43e1919d462afe2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat Feb 25 09:09:30 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "btrfs: fix race in reada\n\nWhen inserting into the radix tree returns EEXIST, get the existing\nentry without giving up the spinlock in between.\nThere was a race for both the zones trees and the extent tree.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "848cce0d4102b5b4b26b0987b43e1919d462afe2",
      "tree": "92f2be7324929c9b213c1fcd616b11cc1a479d20",
      "parents": [
        "d53ba47484ed6245e640ee4bfe9d21e9bfc15765"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Feb 21 17:04:28 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "Btrfs: avoid setting -\u003ed_op twice\n\nFollow those instructions, and you\u0027ll trigger a warning in the\nbeginning of d_set_d_op():\n\n  # mkfs.btrfs /dev/loop3\n  # mount /dev/loop3 /mnt\n  # btrfs sub create /mnt/sub\n  # btrfs sub snap /mnt /mnt/snap\n  # touch /mnt/snap/sub\n  touch: cannot touch `tmp\u0027: Permission denied\n\n__d_alloc() set d_op to sb-\u003es_d_op (btrfs_dentry_operations), and\nthen simple_lookup() reset it to simple_dentry_operations, which\ntriggered the warning.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.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": "4edc2ca388d62abffe38149f6ac00e749ea721c5",
      "tree": "6e31a2d72b9bb05f46960c0a8a789044f5dcf584",
      "parents": [
        "e627ee7bcd42b4e3a03ca01a8e46dcb4033c5ae0"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.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: fix use-after-free in __btrfs_end_transaction\n\n49b25e0540904be0bf558b84475c69d72e4de66e introduced a use-after-free bug\nthat caused spurious -EIO\u0027s to be returned.\n\nDo the check before we free the transaction.\n\nCc: David Sterba \u003cdsterba@suse.cz\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e627ee7bcd42b4e3a03ca01a8e46dcb4033c5ae0",
      "tree": "a6f8060dd57184e79b5c46404c941f999137030d",
      "parents": [
        "c6664b42c4e567792abdb17c958fb01c5bcfcb3a"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.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: check return value of bio_alloc() properly\n\nbio_alloc() has the possibility of returning NULL.\nSo, it is necessary to check the return value.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "b89203f74bdfcb15407d54d3f257b16a2ea19e62",
      "tree": "a0cbfbc0bf259b4382b881a9108b21dc88525389",
      "parents": [
        "d95603b262edb53d6016a8df0c150371d4d61e67"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.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: fix eof while discarding extents\n\nWe miscalculate the length of extents we\u0027re discarding, and it leads to\nan eof of device.\n\nReported-by: Daniel Blueman \u003cdaniel@quora.org\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d95603b262edb53d6016a8df0c150371d4d61e67",
      "tree": "ba8da96db0bde764935281c592c3f49a29325cc6",
      "parents": [
        "8e62c2de6e23e5c1fee04f59de51b54cc2868ca5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 15:55:15 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 15:55:15 2012 -0400"
      },
      "message": "Btrfs: fix uninit variable in repair_eb_io_failure\n\nWe\u0027d have to be passing bogus extent buffers for this uninit variable to\nactually be used, but set it to zero just in case.\n\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": "bc3f116fec194f1d7329b160c266fe16b9266a1e",
      "tree": "67f9be8d4527c37c1ad85bdcbc1b6cca7328f49c",
      "parents": [
        "e1f041e14cfb322f41f41a308bfede00f1b080cd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 17:02:47 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 17:02:47 2012 -0400"
      },
      "message": "Btrfs: update the checks for mixed block groups with big metadata blocks\n\nDave Sterba had put in patches to look for mixed data/metadata groups\nwith metadata bigger than 4KB.  But these ended up in the wrong place\nand it wasn\u0027t testing the feature flag correctly.\n\nThis updates the tests to make sure our sizes are matching\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e1f041e14cfb322f41f41a308bfede00f1b080cd",
      "tree": "8bae36b522a96948be985af03073813e3b0d851f",
      "parents": [
        "66c2689226ac322fbc9acd2e8e418b78dcd52f51"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: update to the right index of defragment\n\nWhen we use autodefrag, we forget to update the index which indicates\nthe last page we\u0027ve dirty.  And we\u0027ll set dirty flags on a same set of\npages again and again.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "66c2689226ac322fbc9acd2e8e418b78dcd52f51",
      "tree": "98da1733c2fc92e00c32c50199d1c85a43c1e6d0",
      "parents": [
        "17ce6ef8d731af5edac8c39e806db4c7e1f6956f"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: do not bother to defrag an extent if it is a big real extent\n\n$ mkfs.btrfs /dev/sdb7\n$ mount /dev/sdb7 /mnt/btrfs/ -oautodefrag\n$ dd if\u003d/dev/zero of\u003d/mnt/btrfs/foobar bs\u003d4k count\u003d10 oflag\u003ddirect 2\u003e/dev/null\n$ filefrag -v /mnt/btrfs/foobar\nFilesystem type is: 9123683e\nFile size of /mnt/btrfs/foobar is 40960 (10 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0     3072              10 eof\n/mnt/btrfs/foobar: 1 extent found\n\nNow we have a big real extent [0, 40960), but autodefrag will still defrag it.\n\n$ sync\n$ filefrag -v /mnt/btrfs/foobar\nFilesystem type is: 9123683e\nFile size of /mnt/btrfs/foobar is 40960 (10 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0     3082              10 eof\n/mnt/btrfs/foobar: 1 extent found\n\nSo if we already find a big real extent, we\u0027re ok about that, just skip it.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17ce6ef8d731af5edac8c39e806db4c7e1f6956f",
      "tree": "4a54d3c5618efff3deec03fa5d32a42c0a8fc804",
      "parents": [
        "4cb13e5d6ecc47b91b24a35f8fbc2c9f33d075fe"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: add a check to decide if we should defrag the range\n\nIf our file\u0027s layout is as follows:\n| hole | data1 | hole | data2 |\n\nwe do not need to defrag this file, because this file has holes and\ncannot be merged into one extent.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4cb13e5d6ecc47b91b24a35f8fbc2c9f33d075fe",
      "tree": "c1654f1b2f029c8cfd5385568b37f90a0b47f3c4",
      "parents": [
        "1f12bd063285b059cb63315d1424dae1ddd87a64"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: fix recursive defragment with autodefrag option\n\n$ mkfs.btrfs disk\n$ mount disk /mnt -o autodefrag\n$ dd if\u003d/dev/zero of\u003d/mnt/foobar bs\u003d4k count\u003d10 2\u003e/dev/null \u0026\u0026 sync\n$ for i in `seq 9 -2 0`; do dd if\u003d/dev/zero of\u003d/mnt/foobar bs\u003d4k count\u003d1 \\\n  seek\u003d$i conv\u003dnotrunc 2\u003e /dev/null; done \u0026\u0026 sync\n\nthen we\u0027ll get to defrag \"foobar\" again and again.\nSo does option \"-o autodefrag,compress\".\n\nReasons:\nWhen the cleaner kthread gets to fetch inodes from the defrag tree and defrag\nthem, it will dirty pages and submit them, this will comes to another DATA COW\nwhere the processing inode will be inserted to the defrag tree again.\n\nThis patch sets a rule for COW code, i.e. insert an inode when we\u0027re really\ngoing to make some defragments.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f12bd063285b059cb63315d1424dae1ddd87a64",
      "tree": "d0c9c7be653b3306f9cfb76ba9805f36c9295e37",
      "parents": [
        "ecb8bea87d05fd2d1fc0718e1e4bbf09c7c6045a"
      ],
      "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 the mismatch of page-\u003emapping\n\ncommit 600a45e1d5e376f679ff9ecc4ce9452710a6d27c\n(Btrfs: fix deadlock on page lock when doing auto-defragment)\nfixes the deadlock on page, but it also introduces another bug.\n\nA page may have been truncated after unlock \u0026 lock.\nSo we need to find it again to get the right one.\n\nAnd since we\u0027ve held i_mutex lock, inode size remains unchanged and\nwe can drop isize overflow checks.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ecb8bea87d05fd2d1fc0718e1e4bbf09c7c6045a",
      "tree": "bb95b921ade128c3d434fd244d150a0d27d47e7f",
      "parents": [
        "15d1ff8111aad85d8b40ee396758990d17a2caac"
      ],
      "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 race between direct io and autodefrag\n\nThe bug is from running xfstests 209 with autodefrag.\n\nThe race is as follows:\n       t1                       t2(autodefrag)\n   direct IO\n     invalidate pagecache\n     dio(old data)             add_inode_defrag\n     invalidate pagecache\n   endio\n\n   direct IO\n     invalidate pagecache\n                                run_defrag\n                                  readpage(old data)\n                                  set page dirty (old data)\n     dio(new data, rewrite)\n     invalidate pagecache (*)\n     endio\n\nt2(autodefrag) will get old data into pagecache via readpage and set\npagecache dirty.  Meanwhile, invalidate pagecache(*) will fail due to\ndirty flags in pages.  So the old data may be flushed into disk by\nflush thread, which will lead to data loss.\n\nAnd so does the case of user defragment progs.\n\nThe patch fixes this race by holding i_mutex when we readpage and set page dirty.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\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": "7ca4be45a0255ac8f08c05491c6add2dd87dd4f8",
      "tree": "aca39ca7f1d210138733cb3be54c408a2acf302b",
      "parents": [
        "3c4bb26b213e618473e486776483a5bad15ba6da"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:19:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:34:10 2012 -0400"
      },
      "message": "Btrfs: don\u0027t use crc items bigger than 4KB\n\nWith the big metadata blocks, we can have crc items\nthat are much bigger than a page.  There are a few\nplaces that we try to kmalloc memory to hold the\nitems during a split.\n\nItems bigger than 4KB don\u0027t really have a huge benefit\nin efficiency, but they do trigger larger order allocations.\nThis commits changes the csums to make sure they stay under\n4KB.  This is not a format change, just a #define to limit\nhuge items.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3c4bb26b213e618473e486776483a5bad15ba6da",
      "tree": "7a20f6ff0f6ec4dd9f0d7a51d787f2f65d89aa74",
      "parents": [
        "98961a7e431735c791dbaaf0337029e219a5db5a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 18:56:56 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:58 2012 -0400"
      },
      "message": "Btrfs: flush out and clean up any block device pages during mount\n\nBtrfs puts the filesystem metadata into its own address space, and\nsomehow the block device address space isn\u0027t getting onto disk properly\nbefore a mount.  The end result is that a loop of mkfs and mounting the\nfilesystem will sometimes find stale or incorrect data.\n\nThis commit should fix it by sprinkling fdatawrites and invalidate_bdev\ncalls around.  This is a short term measure to make sure it is fixed.\nThe block devices really should be flushed and cleaned up higher in the\nstack.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98961a7e431735c791dbaaf0337029e219a5db5a",
      "tree": "e045f062c01075e1f88ab758717cbfd7a7ddd4ca",
      "parents": [
        "1c691b330a19a1344df89bcb0f4cacd99e8b289a",
        "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/transaction.c\n\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": "65139ed99234d8505948cdb7a835452eb5c191f9",
      "tree": "92e2c5e62c55d19bbac1a74e1699321323e65542",
      "parents": [
        "fcd1f065daca593badb7f99d473639cf3b551795"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri Feb 17 12:26:09 2012 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:30:28 2012 -0400"
      },
      "message": "btrfs: disallow unequal data/metadata blocksize for mixed block groups\n\nWith support for bigger metadata blocks, we must avoid mounting a\nfilesystem with different block size for mixed block groups, this causes\ncorruption (found by xfstests/083).\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "fcd1f065daca593badb7f99d473639cf3b551795",
      "tree": "b4dda48c9db913270d66344a2787829149b3a2bd",
      "parents": [
        "914b20070b413ca10f832c45a58b2894990f065f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Mar 06 00:06:18 2012 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:30:28 2012 -0400"
      },
      "message": "Btrfs: enhance superblock sanity checks\n\nValidate checksum algorithm during mount and prevent BUG_ON later in\nbtrfs_super_csum_size.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "b5d67f64f9bc656970dacba245410f0faedad18e",
      "tree": "3c267dbc01ae04dc827a563dc91baafdae14582a",
      "parents": [
        "1623edebee317855c6a854366c01d1630cc537c9"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Mar 27 14:21:27 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 14:21:27 2012 -0400"
      },
      "message": "Btrfs: change scrub to support big blocks\n\nScrub used to be coded for nodesize \u003d\u003d leafsize \u003d\u003d sectorsize \u003d\u003d PAGE_SIZE.\nThis is now changed to support sizes for nodesize and leafsize which are\nN * PAGE_SIZE.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1623edebee317855c6a854366c01d1630cc537c9",
      "tree": "d2b79580ce85e26c89a257be0400c58c966ee4c6",
      "parents": [
        "94598ba8d8ff066115508fb99e593d2de1ca67e1"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "message": "Btrfs: minor cleanup in scrub\n\nJust a minor cleanup commit in preparation for the big block changes.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "94598ba8d8ff066115508fb99e593d2de1ca67e1",
      "tree": "035dcae1b60f84b5620ab1a9d42b5d1fad4b4862",
      "parents": [
        "ea466794084f55d8fcc100711cf17923bf57e962"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 14:21:26 2012 -0400"
      },
      "message": "Btrfs: introduce common define for max number of mirrors\n\nReadahead already has a define for the max number of mirrors. Scrub\nneeds such a define now, the rest of the code will need something\nlike this soon. Therefore the define was added to ctree.h and removed\nfrom the readahead code.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "213e64da90d14537cd63f7090d6c4d1fcc75d9f8",
      "tree": "c7603bcc554d033ef0521a0a7898c924930721e7",
      "parents": [
        "5eb56d2520fe16f00756ccdf8eebc277398e0f44"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:18 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:18 2012 +0300"
      },
      "message": "Btrfs: fix infinite loop in btrfs_shrink_device()\n\nIf relocate of block group 0 fails with ENOSPC we end up infinitely\nlooping because key.offset -\u003d 1 statement in that case brings us back to\nwhere we started.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "5eb56d2520fe16f00756ccdf8eebc277398e0f44",
      "tree": "ab141af79e01000ff04341502f1f42d9a1bef60a",
      "parents": [
        "e4837f8f3b5d08b8c708533a71439bfb40ede467"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:18 2012 +0300"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Mar 27 17:09:18 2012 +0300"
      },
      "message": "Btrfs: fix memory leak in resolver code\n\ninit_ipath() allocates btrfs_data_container which is never freed.  Free\nit in free_ipath() and nuke the comment for init_data_container() - we\ncan safely free it with kfree().\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "e4837f8f3b5d08b8c708533a71439bfb40ede467",
      "tree": "197f2ad55449d1141a2d938198089ad471ef013f",
      "parents": [
        "6728b198deb02c187b5e5a99eb7d1cc9c8bc65e9"
      ],
      "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: allow dup for data chunks in mixed mode\n\nGenerally we don\u0027t allow dup for data, but mixed chunks are special and\npeople seem to think this has its use cases.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "6728b198deb02c187b5e5a99eb7d1cc9c8bc65e9",
      "tree": "caf0f07250c8df5cb97551088395748eb9e753ff",
      "parents": [
        "4a5e98f5d61f698452e564e0cde34c16a6b65752"
      ],
      "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: validate target profiles only if we are going to use them\n\nDo not run sanity checks on all target profiles unless they all will be\nused.  This came up because alloc_profile_is_valid() is now more strict\nthan it used to be.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.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": "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0",
      "tree": "e93c46eb8def633533fe80032872f71b36fc03b8",
      "parents": [
        "103e976616fe9c2a3e40764c979fa1a592274da2"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:32:28 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:21 2012 +0200"
      },
      "message": "Btrfs: fix regression in scrub path resolving\n\nIn commit 4692cf58 we introduced new backref walking code for btrfs. This\nassumes we\u0027re searching live roots, which requires a transaction context.\nWhile scrubbing, however, we must not join a transaction because this could\ndeadlock with the commit path. Additionally, what scrub really wants to do\nis resolving a logical address in the commit root it\u0027s currently checking.\n\nThis patch adds support for logical to path resolving on commit roots and\nmakes scrub use that.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "103e976616fe9c2a3e40764c979fa1a592274da2",
      "tree": "77d806d5a59168e14927655dfbbe3d49bd7fbe5b",
      "parents": [
        "e565d4b962948e70f37f417603caf131a773621b"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:24:19 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:20 2012 +0200"
      },
      "message": "Btrfs: check return value of btrfs_cow_block()\n\nThe two helper functions commit_cowonly_roots() and\ncreate_pending_snapshot() failed to check the return value from\nbtrfs_cow_block(), which could at least in theory fail with -ENOSPC from\nbtrfs_alloc_free_block(). This commit adds the missing checks.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "e565d4b962948e70f37f417603caf131a773621b",
      "tree": "e29c3f956cfae30d4b455801579e20b64fd060e3",
      "parents": [
        "a175423c831ea582c06784d1e172d2ce1d79923a"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:14:20 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:17 2012 +0200"
      },
      "message": "Btrfs: actually call btrfs_init_lockdep\n\nbtrfs_init_lockdep only makes our lockdep class names look prettier, thus\nit did never hurt we forgot to actually call it. This turns our lockdep\nidentifier strings from lockdep auto-set #[id] into really pretty\n\"btrfs-fs-01\" or \"btrfs-csum-03\".\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "ea466794084f55d8fcc100711cf17923bf57e962",
      "tree": "9905d556655ff0f036936ea51f9aa214bd2cbce8",
      "parents": [
        "f3f266ab1bfe4770375d24fa8e72a03278e9450a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 21:57:36 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 21:57:36 2012 -0400"
      },
      "message": "Btrfs: deal with read errors on extent buffers differently\n\nSince we need to read and write extent buffers in their entirety we can\u0027t use\nthe normal bio_readpage_error stuff since it only works on a per page basis.  So\ninstead make it so that if we see an io error in endio we just mark the eb as\nhaving an IO error and then in btree_read_extent_buffer_pages we will manually\ntry other mirrors and then overwrite the bad mirror if we find a good copy.\nThis works with larger than page size blocks.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f3f266ab1bfe4770375d24fa8e72a03278e9450a",
      "tree": "7b3e7f79cad427e978230da6afa8d51a4aa6b58f",
      "parents": [
        "f7c79f30cb2d3883488e70cafc9e3a7edd4b9fdb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 23 10:22:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:24 2012 -0400"
      },
      "message": "Btrfs: don\u0027t use threaded IO completion helpers for metadata writes\n\nThe metadata write IO completion code is now simple enough that we\ndon\u0027t need the threaded helpers anymore.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7c79f30cb2d3883488e70cafc9e3a7edd4b9fdb",
      "tree": "784c5c878e85a7b8fa283e22767b057d6cfcfa40",
      "parents": [
        "a098d8e8eec5a46a47b1bb74390746973d913a9c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 19 15:54:38 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:24 2012 -0400"
      },
      "message": "Btrfs: adjust the write_lock_level as we unlock\n\nbtrfs_search_slot sometimes needs write locks on high levels of\nthe tree.  It remembers the highest level that needs a write lock\nand will use that for all future searches through the tree in a given\ncall.\n\nBut, very often we\u0027ll just cow the top level or the level below and we\nwon\u0027t really need write locks on the root again after that.  This patch\nchanges things to adjust the write lock requirement as it unlocks\nlevels.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a098d8e8eec5a46a47b1bb74390746973d913a9c",
      "tree": "aa93b224046b29daeca6602176a05c980d58a3c1",
      "parents": [
        "cfed81a04eb555f5606d1b6a54bdbabab0ee1ac3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 21 12:09:56 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:23 2012 -0400"
      },
      "message": "Btrfs: loop waiting on writeback\n\nlock_extent_buffer_for_io needs to loop around and make sure the\nwriteback bits are not set.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cfed81a04eb555f5606d1b6a54bdbabab0ee1ac3",
      "tree": "2a763276869693b21c0e3a14f725f642c1f27fd3",
      "parents": [
        "0b32f4bbb423f02acee6d43cd442f5f0775db7e0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Mar 03 07:40:03 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:23 2012 -0400"
      },
      "message": "Btrfs: add the ability to cache a pointer into the eb\n\nThis cuts down on the CPU time used by map_private_extent_buffer\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b32f4bbb423f02acee6d43cd442f5f0775db7e0",
      "tree": "1963e5420071e70274bf77c05373dabd43bac675",
      "parents": [
        "5df4235ea15bd39f441ef334d8329b3d46b2cc57"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Mar 13 09:38:00 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:23 2012 -0400"
      },
      "message": "Btrfs: ensure an entire eb is written at once\n\nThis patch simplifies how we track our extent buffers.  Previously we could exit\nwritepages with only having written half of an extent buffer, which meant we had\nto track the state of the pages and the state of the extent buffers differently.\nNow we only read in entire extent buffers and write out entire extent buffers,\nthis allows us to simply set bits in our bflags to indicate the state of the eb\nand we no longer have to do things like track uptodate with our iotree.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5df4235ea15bd39f441ef334d8329b3d46b2cc57",
      "tree": "119c51eff74939bcd8f1d1b3632b123fd805185d",
      "parents": [
        "3083ee2e18b701122a3b841db83448543a87a583"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 15 18:24:42 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:09 2012 -0400"
      },
      "message": "Btrfs: introduce mark_extent_buffer_accessed\n\nBecause an eb can have multiple pages we need to make sure that all pages within\nthe eb are markes as accessed, since releasepage can be called against any page\nin the eb.  This will keep us from possibly evicting hot eb\u0027s when we\u0027re doing\nlarger than pagesize eb\u0027s.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.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": "115391d2315239164e400a8259b26392afccf3bd",
      "tree": "83f6bd7698b5bfddbe3be57d6411a120eced2399",
      "parents": [
        "4f2de97acee6532b36dd6e995b858343771ad126"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 09 09:51:43 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:08 2012 -0400"
      },
      "message": "Btrfs: only use the existing eb if it\u0027s count isn\u0027t 0\n\nWe can run into a problem where we find an eb for our existing page already on\nthe radix tree but it has a ref count of 0.  It hasn\u0027t yet been removed by RCU\nyet so this can cause issues where we will use the EB after free.  So do\natomic_inc_not_zero on the exists-\u003erefs and if it is zero just do\nsynchronize_rcu() and try again.  We won\u0027t have to worry about new allocators\ncoming in since they will block on the page lock at this point.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4f2de97acee6532b36dd6e995b858343771ad126",
      "tree": "240ee16e76f2f2e4850e6fe2e90174e7cd794a9b",
      "parents": [
        "727011e07cbdf87772fcc1999cccd15cc915eb62"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Mar 07 16:20:05 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:07 2012 -0400"
      },
      "message": "Btrfs: set page-\u003eprivate to the eb\n\nWe spend a lot of time looking up extent buffers from pages when we could just\nstore the pointer to the eb the page is associated with in page-\u003eprivate.  This\npatch does just that, and it makes things a little simpler and reduces a bit of\nCPU overhead involved with doing metadata IO.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "727011e07cbdf87772fcc1999cccd15cc915eb62",
      "tree": "05405dc1e9c86d67dbb02ddf063bd0c137ce6707",
      "parents": [
        "81c9ad237c604adec79fd4d4034264c6669e0ab3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 06 13:21:20 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:50:37 2012 -0400"
      },
      "message": "Btrfs: allow metadata blocks larger than the page size\n\nA few years ago the btrfs code to support blocks lager than\nthe page size was disabled to fix a few corner cases in the\npage cache handling.  This fixes the code to properly support\nlarge metadata blocks again.\n\nSince current kernels will crash early and often with larger\nmetadata blocks, this adds an incompat bit so that older kernels\ncan\u0027t mount it.\n\nThis also does away with different blocksizes for nodes and leaves.\nYou get a single block size for all tree blocks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.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": "914b20070b413ca10f832c45a58b2894990f065f",
      "tree": "1c1f6af7f0f1243e9585a4b726065d579eebc3e9",
      "parents": [
        "79787eaab46121d4713ed03c8fc63b9ec3eaec76"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Mar 12 16:05:50 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:53:11 2012 +0100"
      },
      "message": "btrfs: Fix busyloop in transaction_kthread()\n\nWhen a filesystem got aborted due do error, transaction_kthread() will\nbusyloop.  Fix it by going to sleep in that case as well. Maybe we should\njust stop transaction_kthread() when filesystem is aborted but that would be\nmore complex.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "49b25e0540904be0bf558b84475c69d72e4de66e",
      "tree": "5a89b2f5d6e5bd8b1ff39bdb387071ec1cb2a615",
      "parents": [
        "4da35113426d16673aa1fb0613c14ca2e419e7fd"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 17:24:58 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: enhance transaction abort infrastructure\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "4da35113426d16673aa1fb0613c14ca2e419e7fd",
      "tree": "32a72e44ec480ee127b860f2dc5bcc3698a352e5",
      "parents": [
        "3acd395317f22b4346a139571cd4723408c5d4af"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:30 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: add varargs to btrfs_error\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": "3acd395317f22b4346a139571cd4723408c5d4af",
      "tree": "2ccb38cbf20effabef8ff577be03f1414a912e32",
      "parents": [
        "1dd4602fa74273c28b3577a58aa389f330e9a0dc"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.de",
        "time": "Thu Sep 08 17:40:01 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:39 2012 +0100"
      },
      "message": "btrfs: Remove BUG_ON from __finish_chunk_alloc()\n\nbtrfs_alloc_chunk() unconditionally BUGs on any error returned from\n__finish_chunk_alloc() so there\u0027s no need for two BUG_ON lines. Remove the\none from __finish_chunk_alloc().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "1dd4602fa74273c28b3577a58aa389f330e9a0dc",
      "tree": "c506007911ac9aa210a7e2b66a19ea49da72b8a5",
      "parents": [
        "2cdcecbc153c222fae1be6f8ddb320b29e3a5200"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.de",
        "time": "Thu Sep 08 17:29:00 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:39 2012 +0100"
      },
      "message": "btrfs: Remove BUG_ON from __btrfs_alloc_chunk()\n\nWe BUG_ON() error from add_extent_mapping(), but that error looks pretty\neasy to bubble back up - as far as I can tell there have not been any\npermanent modifications to fs state at that point.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "2cdcecbc153c222fae1be6f8ddb320b29e3a5200",
      "tree": "265642879131a44f72e17c6c86d8d925178d4ace",
      "parents": [
        "305a26af5b2561a66859ef05ed7eb73d3c9f0913"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.de",
        "time": "Thu Sep 08 17:14:32 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:38 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON insert errors in btrfs_alloc_dev_extent()\n\nThe only caller of btrfs_alloc_dev_extent() is __btrfs_alloc_chunk() which\nalready bugs on any error returned. We can remove the BUG_ON\u0027s in\nbtrfs_alloc_dev_extent() then since __btrfs_alloc_chunk() will \"catch\" them\nanyway.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "305a26af5b2561a66859ef05ed7eb73d3c9f0913",
      "tree": "9afdcd2ccbe2a72b7dadaf25f92a4a1ec109ecfe",
      "parents": [
        "b68dc2a93e794c8507338c91577a277efa4555d5"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Sep 01 11:27:57 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:38 2012 +0100"
      },
      "message": "btrfs: Go readonly on tree errors in balance_level\n\nbalace_level() seems to deal with missing tree nodes by BUG_ON(). Instead,\nwe can easily just set the file system readonly and bubble -EROFS back up\nthe stack.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "b68dc2a93e794c8507338c91577a277efa4555d5",
      "tree": "b4e8cbdafdd893a22abbbd7edca989ea018b6a72",
      "parents": [
        "e5df957328b18baa731307c66cfe8e7a4981df65"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Aug 29 14:30:39 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:38 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON errors from update_ref_for_cow()\n\n__btrfs_cow_block(), the only caller of update_ref_for_cow() will BUG_ON()\nany error return.  Instead, we can go read-only fs as update_ref_for_cow()\nmanipulates disk data in a way which doesn\u0027t look like it\u0027s easily rolled\nback.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "e5df957328b18baa731307c66cfe8e7a4981df65",
      "tree": "19f092c1e65c639c17a2fc0582d01b0ebfb3e3a7",
      "parents": [
        "4ed1d16e944c61cfb8a78159548672e7df168d97"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Aug 29 14:17:04 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:37 2012 +0100"
      },
      "message": "btrfs: Go readonly on bad extent refs in update_ref_for_cow()\n\nupdate_ref_for_cow() will BUG_ON() after it\u0027s call to\nbtrfs_lookup_extent_info() if no existing references are found.  Since refs\nare computed directly from disk, this should be treated as a corruption\ninstead of a logic error.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "4ed1d16e944c61cfb8a78159548672e7df168d97",
      "tree": "720c4087a8a79729701eb27a87b11518d0807a8f",
      "parents": [
        "0678b61851b510ba68341dff59cd9b47e1712e91"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Aug 10 12:32:10 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:37 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON errors in __finish_chunk_alloc()\n\nAll callers of __finish_chunk_alloc() BUG_ON() return value, so it\u0027s trivial\nfor us to always bubble up any errors caught in __finish_chunk_alloc() to be\ncaught there.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "0678b61851b510ba68341dff59cd9b47e1712e91",
      "tree": "e8e8199ee3929e508c42bea39a3eeb122246626c",
      "parents": [
        "be1a5564fd39fa2ca6adbb41c75fb08f96a1ffcb"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Fri Aug 05 15:46:16 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:37 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON kzalloc error in btrfs_lookup_csums_range()\n\nUnfortunately it isn\u0027t enough to just exit here - the kzalloc() happens in a\nloop and the allocated items are added to a linked list whose head is passed\nin from the caller.\n\nTo fix the BUG_ON() and also provide the semantic that the list passed in is\nonly modified on success, I create function-local temporary list that we add\nitems too. If no error is met, that list is spliced to the callers at the\nend of the function. Otherwise the list will be walked and all items freed\nbefore the error value is returned.\n\nI did a simple test on this patch by forcing an error at the kzalloc() point\nand verifying that when this hits (git clone seemed to exercise this), the\nfunction throws the proper error. Unfortunately but predictably, we later\nhit a BUG_ON(ret) type line that still hasn\u0027t been fixed up ;)\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "be1a5564fd39fa2ca6adbb41c75fb08f96a1ffcb",
      "tree": "de88d181ecbdcb130343116d7a6f71bbbc4a7e1a",
      "parents": [
        "ce598979be6f83549c90f42ba522a19a33727611"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Aug 08 13:20:18 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:36 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON() errors in update_ref_for_cow()\n\nThe only caller of update_ref_for_cow() is __btrfs_cow_block() which was\noriginally ignoring any return values. update_ref_for_cow() however doesn\u0027t\nlook like a candidate to become a void function - there are a few places\nwhere errors can occur.\n\nSo instead I changed update_ref_for_cow() to bubble all errors up (instead\nof BUG_ON). __btrfs_cow_block() was then updated to catch and BUG_ON() any\nerrors from update_ref_for_cow(). The end effect is that we have no change\nin behavior, but about 8 different places where a BUG_ON(ret) was removed.\n\nObviously a future patch will have to address the BUG_ON() in\n__btrfs_cow_block().\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.de\u003e\n"
    },
    {
      "commit": "ce598979be6f83549c90f42ba522a19a33727611",
      "tree": "ee3cb422fb05012b7c5ff52be720a6d68f97de03",
      "parents": [
        "2c536799f1bde905bbacf7af3aa6be3f4de66005"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 26 11:32:23 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:36 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON errors from btrfs_create_subvol_root()\n\nThis is called from only one place - create_subvol() which passes errors\nsafely back out to it\u0027s caller, btrfs_mksubvol where they are handled.\n\nAdditionally, btrfs_create_subvol_root() itself bug\u0027s needlessly from error\nreturn of btrfs_update_inode(). Since create_subvol() was fixed to catch\nerrors we can bubble this one up too.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@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": "3fbe5c02ae5a59053d779392b9a12aa8f6d6198e",
      "tree": "39b3383401c031d61b6d4cf625730511a5fe7dae",
      "parents": [
        "d0082371cf086e0ba2bbd0367b2c9920532df24f"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: split extent_state ops\n\n set_extent_bit can do exclusive locking but only when called by lock_extent*,\n\n Drop the exclusive bits argument except when called by lock_extent.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\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": "ffd7b33944f4573a063af7a55f8a5199c8185665",
      "tree": "bb7b3b2293bedc58b0d09f146ef68d0614432072",
      "parents": [
        "355808c296c6923db6705f43639969a80b16d15d"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:15 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: __add_reloc_root error push-up\n\nThis patch pushes kmalloc errors up to the caller and BUGs in the caller.\n\nThe BUG_ON for duplicate reloc tree root insertion is replaced with a\npanic explaining the issue.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "355808c296c6923db6705f43639969a80b16d15d",
      "tree": "c8f7e1877935fcbfdb0937fea7cd2b29dc474f71",
      "parents": [
        "3444a97255de907f32562741fb6d104620b9fce3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:14 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: -\u003esubmit_bio_hook error push-up\n\nThis pushes failures from the submit_bio_hook callbacks,\nbtrfs_submit_bio_hook and btree_submit_bio_hook into the callers, including\ncallers of submit_one_bio where it catches the failures with BUG_ON.\n\nIt also pushes up through the -\u003ereadpage_io_failed_hook to\nend_bio_extent_writepage where the error is already caught with BUG_ON.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "3444a97255de907f32562741fb6d104620b9fce3",
      "tree": "6ef2b2cb582a6331e30175ce0d4da7503059f88f",
      "parents": [
        "0417341e6bd93e2a2ceac0e57409706803b335e5"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:13 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:33 2012 +0100"
      },
      "message": "btrfs: Factor out tree-\u003eops-\u003emerge_bio_hook call\n\nIn submit_extent_page, there\u0027s a visually noisy if statement that, in\nthe midst of other conditions, does the tree dependency for tree-\u003eops\nand tree-\u003eops-\u003emerge_bio_hook before calling it, and then another\ncondition afterwards. If an error is returned from merge_bio_hook,\nthere\u0027s no way to catch it. It\u0027s considered a routine \"1\" return\nvalue instead of a failure.\n\nThis patch factors out the dependency check into a new local merge_bio\nroutine and BUG\u0027s on an error. The if statement is less noisy as a side-\neffect.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "0417341e6bd93e2a2ceac0e57409706803b335e5",
      "tree": "718f160e8b4edaa31d1747b6996fc60623903227",
      "parents": [
        "b45a9d8b48e5ce534bd222007c43cbf374544f0b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:12 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:33 2012 +0100"
      },
      "message": "btrfs: Simplify btrfs_submit_bio_hook\n\nbtrfs_submit_bio_hook currently calls btrfs_bio_wq_end_io in either case\nof an if statement that determines one of the arguments.\n\nThis patch moves the function call outside of the if statement and uses it\nto only determine the different argument. This allows us to catch an\nerror in one place in a more visually obvious way.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "b45a9d8b48e5ce534bd222007c43cbf374544f0b",
      "tree": "dd08cdb5dd7657a2b6f285246415e777d19e5b86",
      "parents": [
        "200a5c17677e1ee8b78382046f3748c9f5816281"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:44 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:33 2012 +0100"
      },
      "message": "btrfs: btrfs_update_root error push-up\n\nbtrfs_update_root BUG\u0027s when it can\u0027t alloc a path, yet it can recover\nfrom a search error. This patch returns -ENOMEM instead.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "200a5c17677e1ee8b78382046f3748c9f5816281",
      "tree": "aca0964b50af798d919ca3b710cfcd9c69498170",
      "parents": [
        "6763af84a69f23c1c79f00720982e74fcff4d1f3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:43 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:32 2012 +0100"
      },
      "message": "btrfs: find_and_setup_root error push-up\n\nfind_and_setup_root BUGs when it encounters an error from\nbtrfs_find_last_root, which can occur if a path can\u0027t be allocated.\n\nThis patch pushes it up to its callers where it is already handled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "6763af84a69f23c1c79f00720982e74fcff4d1f3",
      "tree": "ca39d3a71fcabd89cce6586abee422edf50e1291",
      "parents": [
        "538042801a479ebd316582ad10a9c3156b5b7548"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:29 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:32 2012 +0100"
      },
      "message": "btrfs: Remove set bits return from clear_extent_bit\n\nThere is only one caller of clear_extent_bit that checks the return value\nand it only checks if it\u0027s negative. Since there are no users of the\nreturned bits functionality of clear_extent_bit, stop returning it\nand avoid complicating error handling.\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": "d5c13f927fe77b11a67f79559808c68b26474c77",
      "tree": "4725c8b83309fa8431fea85bf9acc99b8e015291",
      "parents": [
        "d16cb050e5b1c3a9d754fed7098eefb8237877d1"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:27 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:31 2012 +0100"
      },
      "message": "btrfs: clean_tree_block should panic on observed memory corruption and return void\n\n The only error condition in clean_tree_block is an accounting bug.\n Returning without modifying dirty_metadata_bytes and as if the cleaning\n as been performed may cause problems later so it should panic instead.\n\n It should probably be a BUG_ON but we have btrfs_panic now.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d16cb050e5b1c3a9d754fed7098eefb8237877d1",
      "tree": "f6b4f8cb5d15c28676a6f6416e6c7b6ca0f72a8a",
      "parents": [
        "cddcd800189bc03745d576f913dc57692c6f439a"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:34 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:31 2012 +0100"
      },
      "message": "btrfs: Simplify btrfs_insert_root\n\nbtrfs_insert_root is just a wrapper for btrfs_insert_item. Just return\nthe error directly.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "cddcd800189bc03745d576f913dc57692c6f439a",
      "tree": "361ed5f8c26a9820608de6d0a74f546729c90970",
      "parents": [
        "43c04fb1b8c9f45d971bb53d7cbbcda8ee85716b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:23 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:30 2012 +0100"
      },
      "message": "btrfs: Fix kfree of member instead of structure\n\nCorrectness fix: The kfree calls in the add_delayed_* functions free\nthe node that\u0027s passed into it, but the node is a member of another\nstructure. It works because it\u0027s always the first member of the\ncontaining structure, but it should really be using the containing\nstructure itself.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "43c04fb1b8c9f45d971bb53d7cbbcda8ee85716b",
      "tree": "18a5a3d5958348f7dbc6c5ca267aab982f02f13d",
      "parents": [
        "c2d904e086b6f707b73bf065e4d18ded4b86ae9e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:33 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:30 2012 +0100"
      },
      "message": "btrfs: Panic on bad rbtree operations\n\nThe ordered data and relocation trees have BUG_ONs to protect against\nbad tree operations.\n\nThis patch replaces them with a panic that will report the problem.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "c2d904e086b6f707b73bf065e4d18ded4b86ae9e",
      "tree": "44ab2acff4eaefca2abd3273bd31fbc74f73f96c",
      "parents": [
        "8c3429300181be44b30f9f017d53dc717da56caa"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:32 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:30 2012 +0100"
      },
      "message": "btrfs: Catch locking failures in {set,clear,convert}_extent_bit\n\nThe *_state functions can only return 0 or -EEXIST. This patch addresses\nthe cases where those functions returning -EEXIST represent a locking\nfailure. It handles them by panicking with an appropriate error message.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "8c3429300181be44b30f9f017d53dc717da56caa",
      "tree": "76d2b3155bfff43ac4c96df7d6ccb723849c6e9f",
      "parents": [
        "c16fa4f2ad19908a47c63d8fa436a1178438c7e7"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:31 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:29 2012 +0100"
      },
      "message": "btrfs: Add btrfs_panic()\n\nAs part of the effort to eliminate BUG_ON as an error handling\ntechnique, we need to determine which errors are actual logic errors,\nwhich are on-disk corruption, and which are normal runtime errors\ne.g. -ENOMEM.\n\nAnnotating these error cases is helpful to understand and report them.\n\nThis patch adds a btrfs_panic() routine that will either panic\nor BUG depending on the new -ofatal_errors\u003d{panic,bug} mount option.\nSince there are still so many BUG_ONs, it defaults to BUG for now but I\nexpect that to change once the error handling effort has made\nsignificant progress.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "c16fa4f2ad19908a47c63d8fa436a1178438c7e7",
      "tree": "0f06ac618a5b12cfd11088fbc8c541e6012fbf5f",
      "parents": [
        "93dc6107a76daed81c07f50215fa6ae77691634f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 18 16:15:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 18 16:15:34 2012 -0700"
      },
      "message": "Linux 3.3\n"
    },
    {
      "commit": "93dc6107a76daed81c07f50215fa6ae77691634f",
      "tree": "b104aeb2798f60f06fd9f7abda5ae9ef5219e0bb",
      "parents": [
        "c579bc7e316e7e3f3b56df5e17f623325caa9783"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Mar 16 16:34:03 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 18 12:25:04 2012 -0700"
      },
      "message": "Don\u0027t limit non-nested epoll paths\n\nCommit 28d82dc1c4ed (\"epoll: limit paths\") that I did to limit the\nnumber of possible wakeup paths in epoll is causing a few applications\nto longer work (dovecot for one).\n\nThe original patch is really about limiting the amount of epoll nesting\n(since epoll fds can be attached to other fds). Thus, we probably can\nallow an unlimited number of paths of depth 1. My current patch limits\nit at 1000. And enforce the limits on paths that have a greater depth.\n\nThis is captured in: https://bugzilla.redhat.com/show_bug.cgi?id\u003d681578\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c579bc7e316e7e3f3b56df5e17f623325caa9783",
      "tree": "fd057d71e237552436fb98f4bfb435b5c8e45787",
      "parents": [
        "96ee0499c59810736dc2e56784d061dc6a1d98e8",
        "a16a1647fa6b6783c2e91623e72e86f0c2adac5e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 17 19:22:24 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 17 19:22:24 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\nPull networking changes from David Miller:\n \"1) icmp6_dst_alloc() returns NULL instead of ERR_PTR() leading to\n     crashes, particularly during shutdown.  Reported by Dave Jones and\n     fixed by Eric Dumazet.\n\n  2) hyperv and wimax/i2400m return NETDEV_TX_BUSY when they have\n     already freed the SKB, which causes crashes as to the caller this\n     means requeue the packet.  Fixes from Eric Dumazet.\n\n  3) usbnet driver doesn\u0027t allocate the right amount of headroom on\n     fresh RX SKBs, fix from Eric Dumazet.\n\n  4) Fix regression in ip6_mc_find_dev_rcu(), as an RCU lookup it\n     abolutely should not take a reference to \u0027dev\u0027, this leads to\n     leaks.  Fix from RonQing Li.\n\n  5) Fix netfilter ctnetlink race between delete and timeout expiration.\n     From Pablo Neira Ayuso.\n\n  6) Revert SFQ change which causes regressions, specifically queueing\n     to tail can lead to unavoidable flow starvation.  From Eric\n     Dumazet.\n\n  7) Fix a memory leak and a crash on corrupt firmware files in bnx2x,\n     from Michal Schmidt.\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:\n  netfilter: ctnetlink: fix race between delete and timeout expiration\n  ipv6: Don\u0027t dev_hold(dev) in ip6_mc_find_dev_rcu.\n  wimax/i2400m: fix erroneous NETDEV_TX_BUSY use\n  net/hyperv: fix erroneous NETDEV_TX_BUSY use\n  net/usbnet: reserve headroom on rx skbs\n  bnx2x: fix memory leak in bnx2x_init_firmware()\n  bnx2x: fix a crash on corrupt firmware file\n  sch_sfq: revert dont put new flow at the end of flows\n  ipv6: fix icmp6_dst_alloc()\n"
    },
    {
      "commit": "96ee0499c59810736dc2e56784d061dc6a1d98e8",
      "tree": "ee558fa2917f7331ba9bed30ee49977418d6e141",
      "parents": [
        "cb1ecf25a84aec8c9d1fc6ad0c78adf4fd8335de",
        "89c5bd08df5841326abbf167d136bcf14cf759ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 17 09:54:16 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 17 09:54:16 2012 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf fixes from Ingo Molnar.\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  perf tools, x86: Build perf on older user-space as well\n  perf tools: Use scnprintf where applicable\n  perf tools: Incorrect use of snprintf results in SEGV\n"
    },
    {
      "commit": "a16a1647fa6b6783c2e91623e72e86f0c2adac5e",
      "tree": "949b73345b860aec586d67243eab4a9944a158ad",
      "parents": [
        "c577923756b7fe9071f28a76b66b83b306d1d001"
      ],
      "author": {
        "name": "Pablo Neira Ayuso",
        "email": "pablo@netfilter.org",
        "time": "Fri Mar 16 02:00:34 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Mar 17 01:47:08 2012 -0700"
      },
      "message": "netfilter: ctnetlink: fix race between delete and timeout expiration\n\nKerin Millar reported hardlockups while running `conntrackd -c\u0027\nin a busy firewall. That system (with several processors) was\nacting as backup in a primary-backup setup.\n\nAfter several tries, I found a race condition between the deletion\noperation of ctnetlink and timeout expiration. This patch fixes\nthis problem.\n\nTested-by: Kerin Millar \u003ckerframil@gmail.com\u003e\nReported-by: Kerin Millar \u003ckerframil@gmail.com\u003e\nSigned-off-by: Pablo Neira Ayuso \u003cpablo@netfilter.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c577923756b7fe9071f28a76b66b83b306d1d001",
      "tree": "3cdb24e829bf58f5a319c9e9dca491ce295276e1",
      "parents": [
        "b8fbaef586176f6abe0eb7887ddae66e99898b79"
      ],
      "author": {
        "name": "RongQing.Li",
        "email": "roy.qing.li@gmail.com",
        "time": "Thu Mar 15 22:54:14 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Mar 16 21:56:42 2012 -0700"
      },
      "message": "ipv6: Don\u0027t dev_hold(dev) in ip6_mc_find_dev_rcu.\n\nip6_mc_find_dev_rcu() is called with rcu_read_lock(), so don\u0027t\nneed to dev_hold().\nWith dev_hold(), not corresponding dev_put(), will lead to leak.\n\n[ bug introduced in 96b52e61be1 (ipv6: mcast: RCU conversions) ]\n\nSigned-off-by: RongQing.Li \u003croy.qing.li@gmail.com\u003e\nAcked-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ],
  "next": "cb1ecf25a84aec8c9d1fc6ad0c78adf4fd8335de"
}
