)]}'
{
  "commit": "8d122fe6156d38206d3e84999a9a87f52dbe9447",
  "tree": "7debb9861af8091fd45822a61cb23e29717b62b8",
  "parents": [
    "7b272d42d201d1b60392badf94e4f258adaf72b5"
  ],
  "author": {
    "name": "Josef Bacik",
    "email": "josef@toxicpanda.com",
    "time": "Thu Feb 27 16:35:20 2020 -0500"
  },
  "committer": {
    "name": "Josef Bacik",
    "email": "josef@toxicpanda.com",
    "time": "Fri Feb 28 16:47:13 2020 -0500"
  },
  "message": "btrfs: hold a ref on the root-\u003ereloc_root\n\nWe previously were relying on root-\u003ereloc_root to be cleaned up by the\ndrop snapshot, or the error handling.  However if btrfs_drop_snapshot()\nfailed it wouldn\u0027t drop the ref for the root.  Also we sort of depend on\nthe right thing to happen with moving reloc roots between lists and the\nfs root they belong to, which makes it hard to figure out who owns the\nreference.\n\nFix this by explicitly holding a reference on the reloc root for\nroo-\u003ereloc_root.  This means that we hold two references on reloc roots,\none for whichever reloc_roots list it\u0027s attached to, and the\nroot-\u003ereloc_root we\u0027re on.\n\nThis makes it easier to reason out who owns a reference on the root, and\nwhen it needs to be dropped.\n\nSigned-off-by: Josef Bacik \u003cjosef@toxicpanda.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "acd21c156378ac06c59603129dbfa46a33c3fba7",
      "old_mode": 33188,
      "old_path": "fs/btrfs/relocation.c",
      "new_id": "c8ff289306779c725c207676e17e43419ad3c270",
      "new_mode": 33188,
      "new_path": "fs/btrfs/relocation.c"
    }
  ]
}
