)]}'
{
  "log": [
    {
      "commit": "3301958b7c1dae8f0f5ded63aa881e0b71e78464",
      "tree": "11d1c098981a65bcbe11f4be594d6e9855f55448",
      "parents": [
        "95a06077f7edbd00d32612562be4d857a5b7df54"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 18:05:21 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:53:08 2012 +0200"
      },
      "message": "Btrfs: add inodes before dropping the extent lock in find_all_leafs\n\nWe must build up the inode list with the extent lock held after following\nindirect refs.\n\nThis also requires an extension to ulists, which allows to modify the stored\naux value in case a key already exists in the list.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "8445f61cad927b6efffdd4e042a51a783ff8853f",
      "tree": "4f3b0c3172376fe73c3a296f47e0f38388015944",
      "parents": [
        "5d9e75c41d11ca79b1d1ff6ed17c88c9047d1fea"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 18:36:03 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:34 2012 +0200"
      },
      "message": "Btrfs: use the tree modification log for backref resolving\n\nThis enables backref resolving on life trees while they are changing. This\nis a prerequisite for quota groups and just nice to have for everything\nelse.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13",
      "tree": "77d53f8b40ea6a1692fbf93bdc2bbc0daf01e85c",
      "parents": [
        "d5c88b735fdf2ef796bb937396dd58dac84e8407"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 17 16:43:03 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:52 2012 +0200"
      },
      "message": "Btrfs: look into the extent during find_all_leafs\n\nBefore this patch we called find_all_leafs for a data extent, then called\nfind_all_roots and then looked into the extent to grab the information\nwe were seeking. This was done without holding the leaves locked to avoid\ndeadlocks. However, this can obviouly race with concurrent tree\nmodifications.\n\nInstead, we now look into the extent while we\u0027re holding the lock during\nfind_all_leafs and store this information together with the leaf list.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "d5c88b735fdf2ef796bb937396dd58dac84e8407",
      "tree": "791a9d9f670bacfd153680f9ef992f40099734bd",
      "parents": [
        "dadcaf78b51e239d93f5ec9aac736de99081ee74"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 15 17:55:51 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:51 2012 +0200"
      },
      "message": "Btrfs: bugfix: ignore the wrong key for indirect tree block backrefs\n\nThe key we store with a tree block backref is only a hint. It is set when\nthe ref is created and can remain correct for a long time. As the tree is\nrebalanced, however, eventually the key no longer points to the correct\ndestination.\n\nWith this patch, we change find_parent_nodes to no longer add keys unless it\nknows for sure they\u0027re correct (e.g. because they\u0027re for an extent data\nbackref). Then when we later encounter a backref ref with no parent and no\nkey set, we grab the block and take the first key from the block itself.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "dadcaf78b51e239d93f5ec9aac736de99081ee74",
      "tree": "d4c9e78136621f901300c5e8e0846babc59daea3",
      "parents": [
        "cd1b413c5c863a96bfdeab8e91b1fb3a52665e42"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 22 13:43:25 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:51 2012 +0200"
      },
      "message": "Btrfs: bugfix in btrfs_find_parent_nodes\n\nThat one has been around since the addition of backref.c. Due to the way we\ncalculate our slot numbers, after adding inline refs we\u0027re missing one keyed\nref unless it\u0027s located at the beginning of a new leaf.\n\nReported-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "cd1b413c5c863a96bfdeab8e91b1fb3a52665e42",
      "tree": "a433c13c530c487f2d7e209402ef72ec67e48647",
      "parents": [
        "b9fab919b748c7b39c19ff236ed6c5682c266dde"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 22 14:56:50 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:49 2012 +0200"
      },
      "message": "Btrfs: ulist realloc bugfix\n\nulist_next gets the pointer to the previously returned element to find the\nnext element from there. However, when we call ulist_add while iteration\nwith ulist_next is in progress (ulist explicitly supports this), we can\nrealloc the ulist internal memory, which makes the pointer to the previous\nelement useless.\n\nInstead, we now use an iterator parameter that\u0027s independent from the\ninternal pointers.\n\nReported-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "b916a59adfdc875381b68ced258694b434cf43ae",
      "tree": "7c73c9326cd558e9a5ae34381a6450e354a65a9d",
      "parents": [
        "aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Apr 13 12:28:08 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:23 2012 +0200"
      },
      "message": "Btrfs: add missing read locks in backref.c\n\niref_to_path and iterate_irefs both increment the eb\u0027s refcount to use it\nafter releasing the path. Both depend on consistent data remaining in the\nextent buffer and need a read lock to protect it.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "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": "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": "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": "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": "d3b010640e5c59b98d3b11229ba4cc2838dc7cbf",
      "tree": "adaa412e6603430b04e104dbafb4ed3e3d32a455",
      "parents": [
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sat Mar 03 07:41:15 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Mar 03 07:41:15 2012 -0500"
      },
      "message": "btrfs: fix locking issues in find_parent_nodes()\n\n- We might unlock head-\u003emutex while it was not locked\n- We might leave the function without unlocking delayed_refs-\u003elock\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8f24b49688281a77e8331894ed407f0cfe732303",
      "tree": "22d5c69f57713ee25a4a3e38404d675c488a91cf",
      "parents": [
        "941b2ddf71987ef369389517a7e215dd505fe01e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Feb 08 16:01:01 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: avoid positive number with ERR_PTR\n\ninode_ref_info() returns 1 when the element wasn\u0027t found and \u003c 0 on error,\njust like btrfs_search_slot(). In iref_to_path() it\u0027s an error when the\ninode ref can\u0027t be found, thus we return ERR_PTR(ret) in that case. In order\nto avoid ERR_PTR(1), we now set ret to -ENOENT in that case.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "b1375d64c539c5b76794be759b62d3f178e67c32",
      "tree": "da4f29173700701bc1aa0ad17fdb436305fd3513",
      "parents": [
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: fix uninit warning in backref.c\n\nAdded initialization with the declaration of ret. It isn\u0027t set later on the\nswitch-default branch (which should never be taken).\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4692cf58aa7b81f721c1653d48db99ea41421d58",
      "tree": "0a5bf889142252d91bcc8df33a9c63c18024fe70",
      "parents": [
        "8da6d5815c592b713ecaf4f4f8b631f8359c96c4"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Dec 02 14:56:41 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 10:49:43 2012 +0100"
      },
      "message": "Btrfs: new backref walking code\n\nThe old backref iteration code could only safely be used on commit roots.\nBesides this limitation, it had bugs in finding the roots for these\nreferences. This commit replaces large parts of it by btrfs_find_all_roots()\nwhich a) really finds all roots and the correct roots, b) works correctly\nunder heavy file system load, c) considers delayed refs.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "8da6d5815c592b713ecaf4f4f8b631f8359c96c4",
      "tree": "1dac6f55dd37193eee821b9d29ff59ee61edb853",
      "parents": [
        "a168650c08300434e1456abe7b6451f1448230d3"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Nov 23 18:55:04 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:26:38 2012 +0100"
      },
      "message": "Btrfs: added btrfs_find_all_roots()\n\nThis function gets a byte number (a data extent), collects all the leafs\npointing to it and walks up the trees to find all fs roots pointing to those\nleafs. It also returns the list of all leafs pointing to that extent.\n\nIt does proper locking for the involved trees, can be used on busy file\nsystems and honors delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "745c4d8e160afaf6c75e887c27ea4b75c8142b26",
      "tree": "b1e5b3725654f4119f06346cef3a1c94d34accf8",
      "parents": [
        "387125fc722a8ed432066b85a552917343bdafca"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun Nov 20 07:31:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:13 2011 -0500"
      },
      "message": "btrfs: Fix up 32/64-bit compatibility for new ioctls\n\n This patch casts to unsigned long before casting to a pointer and fixes\n the following warnings:\nfs/btrfs/extent_io.c:2289:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2933:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2937:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/ioctl.c:3020:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/scrub.c:275:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/backref.c:686:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "740c3d226cbba6cd6a32adfb66809c94938f3e57",
      "tree": "375a5d2ee3bdc66f29e69e99c3691c3200407820",
      "parents": [
        "806468f8bf76a3cb2b626dd282946a6c9c0a50f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 02 15:48:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:08:49 2011 -0500"
      },
      "message": "Btrfs: fix the new inspection ioctls for 32 bit compat\n\nThe new ioctls to follow backrefs are not clean for 32/64 bit\ncompat.  This reworks them for u64s everywhere.  They are brand new, so\nthere are no problems with changing the interface now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a542ad1bafc7df9fc16de8a6894b350a4df75572",
      "tree": "ece4cabbed85ceea326233735134863b2feec0e6",
      "parents": [
        "0a7a0519d1789f3a222849421dbe91b6bddb88f5"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 19:52:59 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:27 2011 +0200"
      },
      "message": "btrfs: added helper functions to iterate backrefs\n\nThese helper functions iterate back references and call a function for each\nbackref. There is also a function to resolve an inode to a path in the\nfile system.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    }
  ]
}
