)]}'
{
  "commit": "3697fc61ed4e9cc199cb98cc3acc4c752be933ff",
  "tree": "f082e696ada4af29f3e51034ab376689ed62739d",
  "parents": [
    "e1afa36e0e69e01eeb2289e5ee3dc83426f3623b"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Mon Dec 18 11:21:38 2017 -0500"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Wed Dec 20 13:37:08 2017 -0500"
  },
  "message": "epoll: Split out the guts of ctl_add and ctl_del\n\nThis way we don\u0027t do sock lookups when we know they will fail.\nPreviously, whenever we recursively called __epoll_ctl_add() on the listen\nFD, that sock lookup would always fail.\n\nIt\u0027s a little hard to see from the diff, but this only moves the actual\nctl_add and ctl_del functionality into separate helpers.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8890eb1f993bda07e2c670769181454741d22da4",
      "old_mode": 33188,
      "old_path": "user/iplib/epoll.c",
      "new_id": "f415cb2cb7408a7ce0a4ccee4c2e55f1c3e43dc8",
      "new_mode": 33188,
      "new_path": "user/iplib/epoll.c"
    }
  ]
}
