1--- Preparing image & VM ---
2
3--- 1st Boot (Establish Baseline Image) ---
4
5
6--- Adding bitmaps Small, Medium, Large, and Transient ---
7
8{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 32768, "name": "Small", "node": "drive0", "persistent": true}}
9{"return": {}}
10{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Medium", "node": "drive0", "persistent": true}}
11{"return": {}}
12{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 131072, "name": "Large", "node": "drive0", "persistent": true}}
13{"return": {}}
14{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Transient", "node": "drive0", "persistent": false}}
15{"return": {}}
16--- Forcing flush of bitmaps to disk ---
17
18{
19  "bitmaps": {
20    "drive0": [
21      {
22        "busy": false,
23        "count": 0,
24        "granularity": 65536,
25        "name": "Transient",
26        "persistent": false,
27        "recording": true
28      },
29      {
30        "busy": false,
31        "count": 0,
32        "granularity": 131072,
33        "name": "Large",
34        "persistent": true,
35        "recording": true
36      },
37      {
38        "busy": false,
39        "count": 0,
40        "granularity": 65536,
41        "name": "Medium",
42        "persistent": true,
43        "recording": true
44      },
45      {
46        "busy": false,
47        "count": 0,
48        "granularity": 32768,
49        "name": "Small",
50        "persistent": true,
51        "recording": true
52      }
53    ]
54  }
55}
56--- 2nd Boot (Grow Image) ---
57
58{
59  "bitmaps": {
60    "drive0": [
61      {
62        "busy": false,
63        "count": 0,
64        "granularity": 32768,
65        "name": "Small",
66        "persistent": true,
67        "recording": true
68      },
69      {
70        "busy": false,
71        "count": 0,
72        "granularity": 65536,
73        "name": "Medium",
74        "persistent": true,
75        "recording": true
76      },
77      {
78        "busy": false,
79        "count": 0,
80        "granularity": 131072,
81        "name": "Large",
82        "persistent": true,
83        "recording": true
84      }
85    ]
86  }
87}
88--- Adding new bitmap, growing image, and adding 2nd new bitmap ---
89{"execute": "block-dirty-bitmap-add", "arguments": {"name": "New", "node": "drive0", "persistent": true}}
90{"return": {}}
91{"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 70G"}}
92{"return": ""}
93{"execute": "block-dirty-bitmap-add", "arguments": {"name": "Newtwo", "node": "drive0", "persistent": true}}
94{"return": {}}
95{
96  "bitmaps": {
97    "drive0": [
98      {
99        "busy": false,
100        "count": 0,
101        "granularity": 65536,
102        "name": "Newtwo",
103        "persistent": true,
104        "recording": true
105      },
106      {
107        "busy": false,
108        "count": 0,
109        "granularity": 65536,
110        "name": "New",
111        "persistent": true,
112        "recording": true
113      },
114      {
115        "busy": false,
116        "count": 0,
117        "granularity": 32768,
118        "name": "Small",
119        "persistent": true,
120        "recording": true
121      },
122      {
123        "busy": false,
124        "count": 0,
125        "granularity": 65536,
126        "name": "Medium",
127        "persistent": true,
128        "recording": true
129      },
130      {
131        "busy": false,
132        "count": 0,
133        "granularity": 131072,
134        "name": "Large",
135        "persistent": true,
136        "recording": true
137      }
138    ]
139  }
140}
141--- Forcing flush of bitmaps to disk ---
142
143--- 3rd Boot (Shrink Image) ---
144
145{
146  "bitmaps": {
147    "drive0": [
148      {
149        "busy": false,
150        "count": 0,
151        "granularity": 65536,
152        "name": "New",
153        "persistent": true,
154        "recording": true
155      },
156      {
157        "busy": false,
158        "count": 0,
159        "granularity": 65536,
160        "name": "Newtwo",
161        "persistent": true,
162        "recording": true
163      },
164      {
165        "busy": false,
166        "count": 0,
167        "granularity": 32768,
168        "name": "Small",
169        "persistent": true,
170        "recording": true
171      },
172      {
173        "busy": false,
174        "count": 0,
175        "granularity": 65536,
176        "name": "Medium",
177        "persistent": true,
178        "recording": true
179      },
180      {
181        "busy": false,
182        "count": 0,
183        "granularity": 131072,
184        "name": "Large",
185        "persistent": true,
186        "recording": true
187      }
188    ]
189  }
190}
191--- Adding "NewB" bitmap, removing "New" bitmap ---
192{"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewB", "node": "drive0", "persistent": true}}
193{"return": {}}
194{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "New", "node": "drive0"}}
195{"return": {}}
196--- Truncating image ---
197
198{"execute": "human-monitor-command", "arguments": {"command-line": "block_resize drive0 50G"}}
199{"return": ""}
200--- Adding "NewC" bitmap, removing "NewTwo" bitmap ---
201{"execute": "block-dirty-bitmap-add", "arguments": {"name": "NewC", "node": "drive0", "persistent": true}}
202{"return": {}}
203{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Newtwo", "node": "drive0"}}
204{"return": {}}
205--- Forcing flush of bitmaps to disk ---
206
207--- 4th Boot (Verification and Cleanup) ---
208
209{
210  "bitmaps": {
211    "drive0": [
212      {
213        "busy": false,
214        "count": 0,
215        "granularity": 65536,
216        "name": "NewB",
217        "persistent": true,
218        "recording": true
219      },
220      {
221        "busy": false,
222        "count": 0,
223        "granularity": 65536,
224        "name": "NewC",
225        "persistent": true,
226        "recording": true
227      },
228      {
229        "busy": false,
230        "count": 0,
231        "granularity": 32768,
232        "name": "Small",
233        "persistent": true,
234        "recording": true
235      },
236      {
237        "busy": false,
238        "count": 0,
239        "granularity": 65536,
240        "name": "Medium",
241        "persistent": true,
242        "recording": true
243      },
244      {
245        "busy": false,
246        "count": 0,
247        "granularity": 131072,
248        "name": "Large",
249        "persistent": true,
250        "recording": true
251      }
252    ]
253  }
254}
255--- Removing all Bitmaps ---
256
257{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Small", "node": "drive0"}}
258{"return": {}}
259{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Medium", "node": "drive0"}}
260{"return": {}}
261{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "Large", "node": "drive0"}}
262{"return": {}}
263{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewB", "node": "drive0"}}
264{"return": {}}
265{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "NewC", "node": "drive0"}}
266{"return": {}}
267{
268  "bitmaps": {
269    "drive0": []
270  }
271}
272
273--- Done ---
274