| --- Preparing image & VM --- | 
 |  | 
 |  | 
 | --- Adding preliminary bitmaps A & B --- | 
 |  | 
 | {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapA", "node": "drive0"}} | 
 | {"return": {}} | 
 | {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmapB", "node": "drive0"}} | 
 | {"return": {}} | 
 |  | 
 | --- Emulating writes --- | 
 |  | 
 | write -P0x5d 0 64k | 
 | {"return": ""} | 
 | write -P0xd5 1M 64k | 
 | {"return": ""} | 
 | write -P0xdc 32M 64k | 
 | {"return": ""} | 
 | write -P0xcd 0x3ff0000 64k | 
 | {"return": ""} | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [ | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapB", | 
 |         "persistent": false, | 
 |         "recording": true | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapA", | 
 |         "persistent": false, | 
 |         "recording": true | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | --- Submitting & Aborting Transaction --- | 
 |  | 
 | { | 
 |   "execute": "transaction", | 
 |   "arguments": { | 
 |     "actions": [ | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapB", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-disable" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "granularity": 65536, | 
 |           "name": "bitmapC", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-add" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapA", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-clear" | 
 |       }, | 
 |       { | 
 |         "data": {}, | 
 |         "type": "abort" | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 | { | 
 |   "error": { | 
 |     "class": "GenericError", | 
 |     "desc": "Transaction aborted using Abort action" | 
 |   } | 
 | } | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [ | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapB", | 
 |         "persistent": false, | 
 |         "recording": true | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapA", | 
 |         "persistent": false, | 
 |         "recording": true | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | --- Disabling B & Adding C --- | 
 |  | 
 | { | 
 |   "execute": "transaction", | 
 |   "arguments": { | 
 |     "actions": [ | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapB", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-disable" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "granularity": 65536, | 
 |           "name": "bitmapC", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-add" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapC", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-disable" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapC", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-enable" | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 | { | 
 |   "return": {} | 
 | } | 
 |  | 
 | --- Emulating further writes --- | 
 |  | 
 | write -P0xab 0 64k | 
 | {"return": ""} | 
 | write -P0xad 0x00f8000 64k | 
 | {"return": ""} | 
 | write -P0x1d 0x2008000 64k | 
 | {"return": ""} | 
 | write -P0xea 0x3fe0000 64k | 
 | {"return": ""} | 
 |  | 
 | --- Disabling A & C --- | 
 |  | 
 | { | 
 |   "execute": "transaction", | 
 |   "arguments": { | 
 |     "actions": [ | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapA", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-disable" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "name": "bitmapC", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-disable" | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 | { | 
 |   "return": {} | 
 | } | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [ | 
 |       { | 
 |         "busy": false, | 
 |         "count": 393216, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapC", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapB", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 458752, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapA", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | --- Submitting & Aborting Merge Transaction --- | 
 |  | 
 | { | 
 |   "execute": "transaction", | 
 |   "arguments": { | 
 |     "actions": [ | 
 |       { | 
 |         "data": { | 
 |           "disabled": true, | 
 |           "granularity": 65536, | 
 |           "name": "bitmapD", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-add" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "bitmaps": [ | 
 |             "bitmapB", | 
 |             "bitmapC" | 
 |           ], | 
 |           "node": "drive0", | 
 |           "target": "bitmapD" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-merge" | 
 |       }, | 
 |       { | 
 |         "data": {}, | 
 |         "type": "abort" | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 | { | 
 |   "error": { | 
 |     "class": "GenericError", | 
 |     "desc": "Transaction aborted using Abort action" | 
 |   } | 
 | } | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [ | 
 |       { | 
 |         "busy": false, | 
 |         "count": 393216, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapC", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapB", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 458752, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapA", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | --- Creating D as a merge of B & C --- | 
 |  | 
 | { | 
 |   "execute": "transaction", | 
 |   "arguments": { | 
 |     "actions": [ | 
 |       { | 
 |         "data": { | 
 |           "disabled": true, | 
 |           "granularity": 65536, | 
 |           "name": "bitmapD", | 
 |           "node": "drive0" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-add" | 
 |       }, | 
 |       { | 
 |         "data": { | 
 |           "bitmaps": [ | 
 |             "bitmapB", | 
 |             "bitmapC" | 
 |           ], | 
 |           "node": "drive0", | 
 |           "target": "bitmapD" | 
 |         }, | 
 |         "type": "block-dirty-bitmap-merge" | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 | { | 
 |   "return": {} | 
 | } | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [ | 
 |       { | 
 |         "busy": false, | 
 |         "count": 458752, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapD", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 393216, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapC", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 262144, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapB", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       }, | 
 |       { | 
 |         "busy": false, | 
 |         "count": 458752, | 
 |         "granularity": 65536, | 
 |         "name": "bitmapA", | 
 |         "persistent": false, | 
 |         "recording": false | 
 |       } | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | --- Removing bitmaps A, B, C, and D --- | 
 |  | 
 | {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapA", "node": "drive0"}} | 
 | {"return": {}} | 
 | {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapB", "node": "drive0"}} | 
 | {"return": {}} | 
 | {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapC", "node": "drive0"}} | 
 | {"return": {}} | 
 | {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmapD", "node": "drive0"}} | 
 | {"return": {}} | 
 |  | 
 | --- Final Query --- | 
 |  | 
 | { | 
 |   "bitmaps": { | 
 |     "drive0": [] | 
 |   } | 
 | } | 
 |  | 
 | --- Done --- | 
 |  |