)]}'
{
  "commit": "6906046169ffa9d829beeeaafe1fadeba51669fb",
  "tree": "0d079e9809a4b1bc403d8e1e5c9a52d26120b6a5",
  "parents": [
    "395071a76328189f50c778f4dee6dabb90503dd9"
  ],
  "author": {
    "name": "Jeff Cody",
    "email": "jcody@redhat.com",
    "time": "Tue May 13 10:00:52 2014 -0400"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Mon May 19 11:36:48 2014 +0200"
  },
  "message": "block: vhdx - account for identical header sections\n\nThe VHDX spec v1.00 declares that \"a header is current if it is the only\nvalid header or if it is valid and its SequenceNumber field is greater\nthan the other header’s SequenceNumber field. The parser must only use\ndata from the current header. If there is no current header, then the\nVHDX file is corrupt.\"\n\nHowever, the Disk2VHD tool from Microsoft creates a VHDX image file that\nhas 2 identical headers, including matching checksums and matching\nsequence numbers.  Likely, as a shortcut the tool is just writing the\nheader twice, for the active and inactive headers, during the image\ncreation.  Technically, this should be considered a corrupt VHDX file\n(at least per the 1.00 spec, and that is how we currently treat it).\n\nBut in order to accomodate images created with Disk2VHD, we can safely\ncreate an exception for this case.  If we find identical sequence\nnumbers, then we check the VHDXHeader-sized chunks of each 64KB header\nsections (we won\u0027t rely just on the crc32c to indicate the headers are\nthe same).  If they are identical, then we go ahead and use the first\none.\n\nReported-by: Nerijus Baliūnas \u003cnerijus@users.sourceforge.net\u003e\nSigned-off-by: Jeff Cody \u003cjcody@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "509baaf484fc18fb5cad6e2c80133a45c1692a39",
      "old_mode": 33188,
      "old_path": "block/vhdx.c",
      "new_id": "353c74d35ff76b5eed17580ce8a839ff8b26eec7",
      "new_mode": 33188,
      "new_path": "block/vhdx.c"
    }
  ]
}
