)]}'
{
  "commit": "7f9bb157b03d7c63786b8facd951673bf24805f7",
  "tree": "33ab10c6844db52c0e9a1685e01512558103fcd8",
  "parents": [
    "e8b5dd8a5765578fbf79a305590222140aae181b"
  ],
  "author": {
    "name": "Josef Bacik",
    "email": "jbacik@fb.com",
    "time": "Mon Sep 11 16:21:44 2017 -0400"
  },
  "committer": {
    "name": "Josef Bacik",
    "email": "jbacik@fb.com",
    "time": "Mon Sep 11 17:01:20 2017 -0400"
  },
  "message": "btrfs: track refs in a rb_tree instead of a list\n\nIf we get a significant amount of delayed refs for a single block (think\nmodifying multiple snapshots) we can end up spending an ungodly amount\nof time looping through all of the entries trying to see if they can be\nmerged.  This is because we only add them to a list, so we have O(2n)\nfor every ref head.  This doesn\u0027t make any sense as we likely have refs\nfor different roots, and so they cannot be merged.  Tracking in a tree\nwill allow us to break as soon as we hit an entry that doesn\u0027t match,\nmaking our worst case O(n).\n\nWith this we can also merge entries more easily.  Before we had to hope\nthat matching refs were on the ends of our list, but with the tree we\ncan search down to exact matches and merge them at insert time.\n\nSigned-off-by: Josef Bacik \u003cjbacik@fb.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c1408fe6c98165b86f8c59cf3d3b420f41556d52",
      "old_mode": 33188,
      "old_path": "fs/btrfs/backref.c",
      "new_id": "ca4ad1dc876080bb0ecc1c6cda939b32ea2fe7eb",
      "new_mode": 33188,
      "new_path": "fs/btrfs/backref.c"
    },
    {
      "type": "modify",
      "old_id": "da209cbc0625c36b8a1d8618ef4870b73a4eeef7",
      "old_mode": 33188,
      "old_path": "fs/btrfs/delayed-ref.c",
      "new_id": "dcddebf8b29ddb127a537f69e1493a8c856be81c",
      "new_mode": 33188,
      "new_path": "fs/btrfs/delayed-ref.c"
    },
    {
      "type": "modify",
      "old_id": "5d75f8cd08a9d2e3949288fb6791f72162296260",
      "old_mode": 33188,
      "old_path": "fs/btrfs/delayed-ref.h",
      "new_id": "918a5b1d67d8fef92cf2d8501bf4873047f76b60",
      "new_mode": 33188,
      "new_path": "fs/btrfs/delayed-ref.h"
    },
    {
      "type": "modify",
      "old_id": "b27129ea9b15da53ec099d34ffa64ff1e24d1515",
      "old_mode": 33188,
      "old_path": "fs/btrfs/disk-io.c",
      "new_id": "6a2473c772fceea990fc0bafaccc19fe14bcaf92",
      "new_mode": 33188,
      "new_path": "fs/btrfs/disk-io.c"
    },
    {
      "type": "modify",
      "old_id": "3aba8d7258facf0ab673e8e3c68fbadc9192f509",
      "old_mode": 33188,
      "old_path": "fs/btrfs/extent-tree.c",
      "new_id": "ea5235637e26d05c7e44317a6b75c60e7b356530",
      "new_mode": 33188,
      "new_path": "fs/btrfs/extent-tree.c"
    }
  ]
}
