)]}'
{
  "commit": "8802d1fdd4b73e02ce13fb3a233c64c1913634ab",
  "tree": "30492b35aea065cd13d6ce18073049d7d3435057",
  "parents": [
    "64ca6aee4f06a3af869e5e09f0afeb6721966875"
  ],
  "author": {
    "name": "Jeff Cody",
    "email": "jcody@redhat.com",
    "time": "Tue Feb 28 15:54:06 2012 -0500"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Wed Feb 29 15:48:33 2012 +0100"
  },
  "message": "qapi: Introduce blockdev-group-snapshot-sync command\n\nThis is a QAPI/QMP only command to take a snapshot of a group of\ndevices. This is similar to the blockdev-snapshot-sync command, except\nblockdev-group-snapshot-sync accepts a list devices, filenames, and\nformats.\n\nIt is attempted to keep the snapshot of the group atomic; if the\ncreation or open of any of the new snapshots fails, then all of\nthe new snapshots are abandoned, and the name of the snapshot image\nthat failed is returned.  The failure case should not interrupt\nany operations.\n\nRather than use bdrv_close() along with a subsequent bdrv_open() to\nperform the pivot, the original image is never closed and the new\nimage is placed \u0027in front\u0027 of the original image via manipulation\nof the BlockDriverState fields.  Thus, once the new snapshot image\nhas been successfully created, there are no more failure points\nbefore pivoting to the new snapshot.\n\nThis allows the group of disks to remain consistent with each other,\neven across snapshot failures.\n\nSigned-off-by: Jeff Cody \u003cjcody@redhat.com\u003e\nAcked-by: Luiz Capitulino \u003clcapitulino@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f23eccccd6d229a832f8d0c9abd4d32ecf33db7e",
      "old_mode": 33188,
      "old_path": "block.c",
      "new_id": "52ffe1494a2326549960187021aa5278b5b0313b",
      "new_mode": 33188,
      "new_path": "block.c"
    },
    {
      "type": "modify",
      "old_id": "bbc38300e1889f2fef9e7379b65c9562a86fb199",
      "old_mode": 33188,
      "old_path": "block.h",
      "new_id": "48d0bf35927299c7e873360224adfa6c9506a2ad",
      "new_mode": 33188,
      "new_path": "block.h"
    },
    {
      "type": "modify",
      "old_id": "bd86af00a2addd15a8263eb491fe9618e5f97272",
      "old_mode": 33188,
      "old_path": "block_int.h",
      "new_id": "b460c369ca1ab06372418223c746e72624442036",
      "new_mode": 33188,
      "new_path": "block_int.h"
    },
    {
      "type": "modify",
      "old_id": "2c132a308bc1d1ff3104ae25e1798281043e91a2",
      "old_mode": 33188,
      "old_path": "blockdev.c",
      "new_id": "d78aa51af5b2b277bc161f7201cd2e8804a81134",
      "new_mode": 33188,
      "new_path": "blockdev.c"
    },
    {
      "type": "modify",
      "old_id": "d0b6792e3cc565d7cd85321a215d8b10d5720821",
      "old_mode": 33188,
      "old_path": "qapi-schema.json",
      "new_id": "5f293c44036c77d2ea060d2c243b4300dc3f0242",
      "new_mode": 33188,
      "new_path": "qapi-schema.json"
    }
  ]
}
