)]}'
{
  "commit": "124e68e74099090e28da5518f73fda878e7e8232",
  "tree": "392c4861271b7c5ea1049832828c42a4c6ec9916",
  "parents": [
    "2817b000b02c5f0c05af67c01fb2684e1381d6ef"
  ],
  "author": {
    "name": "Sage Weil",
    "email": "sage@newdream.net",
    "time": "Tue Oct 06 11:31:08 2009 -0700"
  },
  "committer": {
    "name": "Sage Weil",
    "email": "sage@newdream.net",
    "time": "Tue Oct 06 11:31:08 2009 -0700"
  },
  "message": "ceph: file operations\n\nFile open and close operations, and read and write methods that ensure\nwe have obtained the proper capabilities from the MDS cluster before\nperforming IO on a file.  We take references on held capabilities for\nthe duration of the read/write to avoid prematurely releasing them\nback to the MDS.\n\nWe implement two main paths for read and write: one that is buffered\n(and uses generic_aio_{read,write}), and one that is fully synchronous\nand blocking (operating either on a __user pointer or, if O_DIRECT,\ndirectly on user pages).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1bd57c8953bf5662e89818bf6216ba926f20ced6",
      "new_mode": 33188,
      "new_path": "fs/ceph/file.c"
    }
  ]
}
