--- Preparing image & VM --- --- 1st Boot (Establish Baseline Image) --- --- Adding bitmaps Small, Medium, Large, and Transient --- {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 32768, "name": "Small", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "block-dirty-bitmap-add", "arguments": {"name": "Medium", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 131072, "name": "Large", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "block-dirty-bitmap-add", "arguments": {"name": "Transient", "node": "drive0", "persistent": false}} {"return": {}} --- Forcing flush of bitmaps to disk --- { "bitmaps": { "drive0": [ { "busy": false, "count": 0, "granularity": 65536, "name": "Transient", "persistent": false, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 131072, "name": "Large", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Medium", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 32768, "name": "Small", "persistent": true, "recording": true, "status": "active" } ] } } --- 2nd Boot (Grow Image) --- { "bitmaps": { "drive0": [ { "busy": false, "count": 0, "granularity": 32768, "name": "Small", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Medium", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 131072, "name": "Large", "persistent": true, "recording": true, "status": "active" } ] } } --- Adding new bitmap, growing image, and adding 2nd new bitmap --- {"execute": "block-dirty-bitmap-add", "arguments": {"name": "New", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 70G"}} {"return": ""} {"execute": "block-dirty-bitmap-add", "arguments": {"name": "Newtwo", "node": "drive0", "persistent": true}} {"return": {}} { "bitmaps": { "drive0": [ { "busy": false, "count": 0, "granularity": 65536, "name": "Newtwo", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "New", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 32768, "name": "Small", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Medium", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 131072, "name": "Large", "persistent": true, "recording": true, "status": "active" } ] } } --- Forcing flush of bitmaps to disk --- --- 3rd Boot (Shrink Image) --- { "bitmaps": { "drive0": [ { "busy": false, "count": 0, "granularity": 65536, "name": "New", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Newtwo", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 32768, "name": "Small", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Medium", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 131072, "name": "Large", "persistent": true, "recording": true, "status": "active" } ] } } --- Adding "NewB" bitmap, removing "New" bitmap --- {"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewB", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "New", "node": "drive0"}} {"return": {}} --- Truncating image --- {"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 50G"}} {"return": ""} --- Adding "NewC" bitmap, removing "NewTwo" bitmap --- {"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewC", "node": "drive0", "persistent": true}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Newtwo", "node": "drive0"}} {"return": {}} --- Forcing flush of bitmaps to disk --- --- 4th Boot (Verification and Cleanup) --- { "bitmaps": { "drive0": [ { "busy": false, "count": 0, "granularity": 65536, "name": "NewB", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "NewC", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 32768, "name": "Small", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 65536, "name": "Medium", "persistent": true, "recording": true, "status": "active" }, { "busy": false, "count": 0, "granularity": 131072, "name": "Large", "persistent": true, "recording": true, "status": "active" } ] } } --- Removing all Bitmaps --- {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Small", "node": "drive0"}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Medium", "node": "drive0"}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Large", "node": "drive0"}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewB", "node": "drive0"}} {"return": {}} {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewC", "node": "drive0"}} {"return": {}} { "bitmaps": { "drive0": [] } } --- Done ---