)]}'
{
  "commit": "8dfb790b15e779232d5d4e3f0102af2bea21ca55",
  "tree": "7208241fc93d39f769dcec0c227c8582f117dfce",
  "parents": [
    "fed41f7d039bad02f94cad9059e4b14cd81d13f2",
    "64f77566e1c84990d6c448bb3960f899521c0b7d"
  ],
  "author": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Oct 10 13:52:05 2016 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Mon Oct 10 13:52:05 2016 -0700"
  },
  "message": "Merge tag \u0027ceph-for-4.9-rc1\u0027 of git://github.com/ceph/ceph-client\n\nPull Ceph updates from Ilya Dryomov:\n \"The big ticket item here is support for rbd exclusive-lock feature,\n  with maintenance operations offloaded to userspace (Douglas Fuller,\n  Mike Christie and myself). Another block device bullet is a series\n  fixing up layering error paths (myself).\n\n  On the filesystem side, we\u0027ve got patches that improve our handling of\n  buffered vs dio write races (Neil Brown) and a few assorted fixes from\n  Zheng. Also included a couple of random cleanups and a minor CRUSH\n  update\"\n\n* tag \u0027ceph-for-4.9-rc1\u0027 of git://github.com/ceph/ceph-client: (39 commits)\n  crush: remove redundant local variable\n  crush: don\u0027t normalize input of crush_ln iteratively\n  libceph: ceph_build_auth() doesn\u0027t need ceph_auth_build_hello()\n  libceph: use CEPH_AUTH_UNKNOWN in ceph_auth_build_hello()\n  ceph: fix description for rsize and rasize mount options\n  rbd: use kmalloc_array() in rbd_header_from_disk()\n  ceph: use list_move instead of list_del/list_add\n  ceph: handle CEPH_SESSION_REJECT message\n  ceph: avoid accessing / when mounting a subpath\n  ceph: fix mandatory flock check\n  ceph: remove warning when ceph_releasepage() is called on dirty page\n  ceph: ignore error from invalidate_inode_pages2_range() in direct write\n  ceph: fix error handling of start_read()\n  rbd: add rbd_obj_request_error() helper\n  rbd: img_data requests don\u0027t own their page array\n  rbd: don\u0027t call rbd_osd_req_format_read() for !img_data requests\n  rbd: rework rbd_img_obj_exists_submit() error paths\n  rbd: don\u0027t crash or leak on errors in rbd_img_obj_parent_read_full_callback()\n  rbd: move bumping img_request refcount into rbd_obj_request_submit()\n  rbd: mark the original request as done if stat request fails\n  ...\n",
  "tree_diff": []
}
