)]}'
{
  "commit": "a7c8ed36bf9d3b7f75faefb5bb01535eb818e260",
  "tree": "c7af18be528a2d258d780ad99b220f10955d5de2",
  "parents": [
    "8d2931dc85695e39be9db1d1cc55e0c3ca46fbe9"
  ],
  "author": {
    "name": "Eric Blake",
    "email": "eblake@redhat.com",
    "time": "Thu Jun 08 08:56:32 2023 -0500"
  },
  "committer": {
    "name": "Eric Blake",
    "email": "eblake@redhat.com",
    "time": "Wed Jul 19 15:25:27 2023 -0500"
  },
  "message": "nbd/server: Prepare for alternate-size headers\n\nUpstream NBD now documents[1] an extension that supports 64-bit effect\nlengths in requests.  As part of that extension, the size of the reply\nheaders will change in order to permit a 64-bit length in the reply\nfor symmetry[2].  Additionally, where the reply header is currently 16\nbytes for simple reply, and 20 bytes for structured reply; with the\nextension enabled, there will only be one extended reply header, of 32\nbytes, with both structured and extended modes sending identical\npayloads for chunked replies.\n\nSince we are already wired up to use iovecs, it is easiest to allow\nfor this change in header size by splitting each structured reply\nacross multiple iovecs, one for the header (which will become wider in\na future patch according to client negotiation), and the other(s) for\nthe chunk payload, and removing the header from the payload struct\ndefinitions.  Rename the affected functions with s/structured/chunk/\nto make it obvious that the code will be reused in extended mode.\n\nInterestingly, the client side code never utilized the packed types,\nso only the server code needs to be updated.\n\n[1] https://github.com/NetworkBlockDevice/nbd/blob/extension-ext-header/doc/proto.md\nas of NBD commit e6f3b94a934\n\n[2] Note that on the surface, this is because some future server might\npermit a 4G+ NBD_CMD_READ and need to reply with that much data in one\ntransaction.  But even though the extended reply length is widened to\n64 bits, for now the NBD spec is clear that servers will not reply\nwith more than a maximum payload bounded by the 32-bit\nNBD_INFO_BLOCK_SIZE field; allowing a client and server to mutually\nagree to transactions larger than 4G would require yet another\nextension.\n\nSigned-off-by: Eric Blake \u003ceblake@redhat.com\u003e\nMessage-ID: \u003c20230608135653.2918540-4-eblake@redhat.com\u003e\nReviewed-by: Vladimir Sementsov-Ogievskiy \u003cvsementsov@yandex-team.ru\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9dcb5357d150b6c92ea0ad79fe72710c3c845eb1",
      "old_mode": 33188,
      "old_path": "include/block/nbd.h",
      "new_id": "ee71af099a348f44b284d3f881df4555533c5106",
      "new_mode": 33188,
      "new_path": "include/block/nbd.h"
    },
    {
      "type": "modify",
      "old_id": "febe001a399f050b73b28637c9ee8726cf3e092a",
      "old_mode": 33188,
      "old_path": "nbd/server.c",
      "new_id": "6698ab4636570b1091b1aa2693c5802768224201",
      "new_mode": 33188,
      "new_path": "nbd/server.c"
    },
    {
      "type": "modify",
      "old_id": "b7032ca2778a2cd85bfa614ae41f14ad530872af",
      "old_mode": 33188,
      "old_path": "nbd/trace-events",
      "new_id": "50ca05a9e226ccb4337db6dac39563c985ea1a00",
      "new_mode": 33188,
      "new_path": "nbd/trace-events"
    }
  ]
}
