| --- 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 --- |