)]}'
{
  "commit": "2a92d379a90524242fba279874cf0dd7e8fb8175",
  "tree": "7aecc182f9472a012877985cda3ec85f6e2e1a09",
  "parents": [
    "46ecd0d4d5ceff32f55db03233f98cb5809ad01c"
  ],
  "author": {
    "name": "Josef Bacik",
    "email": "jbacik@fb.com",
    "time": "Fri May 18 06:52:50 2018 -0700"
  },
  "committer": {
    "name": "Josef Bacik",
    "email": "jbacik@fb.com",
    "time": "Tue May 22 10:34:53 2018 -0700"
  },
  "message": "btrfs: always wait on ordered extents at fsync time\n\nThere\u0027s a priority inversion that exists currently with btrfs fsync.  In\nsome cases we will collect outstanding ordered extents onto a list and\nonly wait on them at the very last second.  However this \"very last\nsecond\" falls inside of a transaction handle, so if we are in a lower\npriority cgroup we can end up holding the transaction open for longer\nthan needed, so if a high priority cgroup is also trying to fsync()\nit\u0027ll see latency.\n\nFix this by getting rid of all of the logged extents magic and simply\nwait on ordered extent before we star the tree log stuff.  This code has\nchanged a lot since I first wrote it and really isn\u0027t the performance\nwin it was originally because of the things we had to do around getting\nthe right checksums.  Killing all of this makes our lives easier and\ngets rid of the priority inversion.\n\nSigned-off-by: Josef Bacik \u003cjbacik@fb.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5772f0cbedefcee80478ae5ec660369e94cca321",
      "old_mode": 33188,
      "old_path": "fs/btrfs/file.c",
      "new_id": "2b1c36612384e68703d35b17cb481de0ed5f8799",
      "new_mode": 33188,
      "new_path": "fs/btrfs/file.c"
    },
    {
      "type": "modify",
      "old_id": "6db8bb2f2c28ea07a87ebdcbb8e983af7623baff",
      "old_mode": 33188,
      "old_path": "fs/btrfs/ordered-data.c",
      "new_id": "88f858baf87d626d31e973e3064062c734e4258d",
      "new_mode": 33188,
      "new_path": "fs/btrfs/ordered-data.c"
    },
    {
      "type": "modify",
      "old_id": "3be443fb30016227a7f02227f9ba2e8880b3db65",
      "old_mode": 33188,
      "old_path": "fs/btrfs/ordered-data.h",
      "new_id": "b2d3f6a091f71ea88d86b12b9c619f9a854648c1",
      "new_mode": 33188,
      "new_path": "fs/btrfs/ordered-data.h"
    },
    {
      "type": "modify",
      "old_id": "43758e30aa7a97cb240c7b12146f040f5ce8d3d9",
      "old_mode": 33188,
      "old_path": "fs/btrfs/tree-log.c",
      "new_id": "ab9461a07fc6ce65a783a89cf6e95818797e8898",
      "new_mode": 33188,
      "new_path": "fs/btrfs/tree-log.c"
    },
    {
      "type": "modify",
      "old_id": "29f9b14412ad72d526881a7a57edfd95420c87d7",
      "old_mode": 33188,
      "old_path": "include/trace/events/btrfs.h",
      "new_id": "b3c246353f8ef28dac89c72dcd9ebe6447d07dfa",
      "new_mode": 33188,
      "new_path": "include/trace/events/btrfs.h"
    }
  ]
}
