)]}'
{
  "commit": "175face2ba31025b0dcd6da4e711fca7764287fa",
  "tree": "8da146e3a923614defe47d78e0e262a1671b7f1a",
  "parents": [
    "e766d7b55e10f93c7bab298135a4e90dcc46620d"
  ],
  "author": {
    "name": "Alex Elder",
    "email": "elder@inktank.com",
    "time": "Fri Mar 08 13:35:36 2013 -0600"
  },
  "committer": {
    "name": "Sage Weil",
    "email": "sage@inktank.com",
    "time": "Wed May 01 21:17:02 2013 -0700"
  },
  "message": "libceph: let osd ops determine request data length\n\nThe length of outgoing data in an osd request is dependent on the\nosd ops that are embedded in that request.  Each op is encoded into\na request message using osd_req_encode_op(), so that should be used\nto determine the amount of outgoing data implied by the op as it\nis encoded.\n\nHave osd_req_encode_op() return the number of bytes of outgoing data\nimplied by the op being encoded, and accumulate and use that in\nceph_osdc_build_request().\n\nAs a result, ceph_osdc_build_request() no longer requires its \"len\"\nparameter, so get rid of it.\n\nUsing the sum of the op lengths rather than the length provided is\na valid change because:\n    - The only callers of osd ceph_osdc_build_request() are\n      rbd and the osd client (in ceph_osdc_new_request() on\n      behalf of the file system).\n    - When rbd calls it, the length provided is only non-zero for\n      write requests, and in that case the single op has the\n      same length value as what was passed here.\n    - When called from ceph_osdc_new_request(), (it\u0027s not all that\n      easy to see, but) the length passed is also always the same\n      as the extent length encoded in its (single) write op if\n      present.\n\nThis resolves:\n    http://tracker.ceph.com/issues/4406\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "04cd5fdfc8f3325bf3d81d803295346e815926a0",
      "old_mode": 33188,
      "old_path": "drivers/block/rbd.c",
      "new_id": "dea4401c4f77247459f8aea9fab77f362974d35e",
      "new_mode": 33188,
      "new_path": "drivers/block/rbd.c"
    },
    {
      "type": "modify",
      "old_id": "a8016dfbfdbaa0a2c994c4868dbf733ce9c4f8d8",
      "old_mode": 33188,
      "old_path": "include/linux/ceph/osd_client.h",
      "new_id": "bcf3f72ec3f828aea8f04b35ae7dc2e0569dfa0b",
      "new_mode": 33188,
      "new_path": "include/linux/ceph/osd_client.h"
    },
    {
      "type": "modify",
      "old_id": "37d89614a61b8cca96ff1ba4676ed03e5b349bdd",
      "old_mode": 33188,
      "old_path": "net/ceph/osd_client.c",
      "new_id": "ce34faaa453f14faa03b49cbcab5bbd7c8cba80d",
      "new_mode": 33188,
      "new_path": "net/ceph/osd_client.c"
    }
  ]
}
