xref: /openbmc/qemu/tests/qemu-iotests/257.out (revision 79d7475f39f1b0f05fcb159f5cdcbf162340dc7e)
1dfdc48d5SJohn Snow
20af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync never with simulated failure ===
3dfdc48d5SJohn Snow
4dfdc48d5SJohn Snow--- Preparing image & VM ---
5dfdc48d5SJohn Snow
6dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
7dfdc48d5SJohn Snow{"return": {}}
8dfdc48d5SJohn Snow
9dfdc48d5SJohn Snow--- Write #0 ---
10dfdc48d5SJohn Snow
11dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
12dfdc48d5SJohn Snow{"return": ""}
13dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
14dfdc48d5SJohn Snow{"return": ""}
15dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
16dfdc48d5SJohn Snow{"return": ""}
17dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
18dfdc48d5SJohn Snow{"return": ""}
19dfdc48d5SJohn Snow{
205c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
21dfdc48d5SJohn Snow}
22dfdc48d5SJohn Snow
23dfdc48d5SJohn Snow--- Reference Backup #0 ---
24dfdc48d5SJohn Snow
25dfdc48d5SJohn Snow{}
26dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
27dfdc48d5SJohn Snow{"return": {}}
28dfdc48d5SJohn Snow{}
29dfdc48d5SJohn Snow{}
30dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
31dfdc48d5SJohn Snow{"return": {}}
32dfdc48d5SJohn Snow{}
332d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
34dfdc48d5SJohn Snow{"return": {}}
35dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
36dfdc48d5SJohn Snow
37dfdc48d5SJohn Snow--- Add Bitmap ---
38dfdc48d5SJohn Snow
39dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
40dfdc48d5SJohn Snow{"return": {}}
41dfdc48d5SJohn Snow
42dfdc48d5SJohn Snow--- Write #1 ---
43dfdc48d5SJohn Snow
44dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
45dfdc48d5SJohn Snow{"return": ""}
46dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
47dfdc48d5SJohn Snow{"return": ""}
48dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
49dfdc48d5SJohn Snow{"return": ""}
50dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
51dfdc48d5SJohn Snow{"return": ""}
52dfdc48d5SJohn Snow{
53dfdc48d5SJohn Snow  "bitmaps": {
545c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
55dfdc48d5SJohn Snow      {
56dfdc48d5SJohn Snow        "busy": false,
57dfdc48d5SJohn Snow        "count": 393216,
58dfdc48d5SJohn Snow        "granularity": 65536,
59dfdc48d5SJohn Snow        "name": "bitmap0",
60dfdc48d5SJohn Snow        "persistent": false,
6181cbfd50SDaniel P. Berrangé        "recording": true
62dfdc48d5SJohn Snow      }
63dfdc48d5SJohn Snow    ]
64dfdc48d5SJohn Snow  }
65dfdc48d5SJohn Snow}
66dfdc48d5SJohn Snow
67dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
68dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
69dfdc48d5SJohn Snow
70dfdc48d5SJohn Snow--- Reference Backup #1 ---
71dfdc48d5SJohn Snow
72dfdc48d5SJohn Snow{}
73dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
74dfdc48d5SJohn Snow{"return": {}}
75dfdc48d5SJohn Snow{}
76dfdc48d5SJohn Snow{}
77dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
78dfdc48d5SJohn Snow{"return": {}}
79dfdc48d5SJohn Snow{}
802d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
81dfdc48d5SJohn Snow{"return": {}}
82dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
83dfdc48d5SJohn Snow
840af2a09cSJohn Snow--- Test Backup #1 ---
85dfdc48d5SJohn Snow
86dfdc48d5SJohn Snow{}
87dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
88dfdc48d5SJohn Snow{"return": {}}
89dfdc48d5SJohn Snow{}
90dfdc48d5SJohn Snow{}
91dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
92dfdc48d5SJohn Snow{"return": {}}
93dfdc48d5SJohn Snow{}
942d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
95dfdc48d5SJohn Snow{"return": {}}
96dfdc48d5SJohn Snow
97dfdc48d5SJohn Snow--- Write #2 ---
98dfdc48d5SJohn Snow
99dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
100dfdc48d5SJohn Snow{"return": ""}
101dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
102dfdc48d5SJohn Snow{"return": ""}
103dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
104dfdc48d5SJohn Snow{"return": ""}
105dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
106dfdc48d5SJohn Snow{"return": ""}
107dfdc48d5SJohn Snow{
108dfdc48d5SJohn Snow  "bitmaps": {
109af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
110af5bcd77SVladimir Sementsov-Ogievskiy      {
111af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
112af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
113af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
114af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
115af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
116af5bcd77SVladimir Sementsov-Ogievskiy      },
117af5bcd77SVladimir Sementsov-Ogievskiy      {
118af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
119af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
120af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
121af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
122af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
123*006e845bSVladimir Sementsov-Ogievskiy      },
124dfdc48d5SJohn Snow      {
125dfdc48d5SJohn Snow        "busy": false,
126dfdc48d5SJohn Snow        "count": 0,
127dfdc48d5SJohn Snow        "granularity": 65536,
128dfdc48d5SJohn Snow        "persistent": false,
12981cbfd50SDaniel P. Berrangé        "recording": false
130*006e845bSVladimir Sementsov-Ogievskiy      }
131*006e845bSVladimir Sementsov-Ogievskiy    ],
132*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
133dfdc48d5SJohn Snow      {
134dfdc48d5SJohn Snow        "busy": false,
135dfdc48d5SJohn Snow        "count": 458752,
136dfdc48d5SJohn Snow        "granularity": 65536,
137dfdc48d5SJohn Snow        "persistent": false,
13881cbfd50SDaniel P. Berrangé        "recording": true
139dfdc48d5SJohn Snow      },
140dfdc48d5SJohn Snow      {
141dfdc48d5SJohn Snow        "busy": true,
142dfdc48d5SJohn Snow        "count": 393216,
143dfdc48d5SJohn Snow        "granularity": 65536,
144dfdc48d5SJohn Snow        "name": "bitmap0",
145dfdc48d5SJohn Snow        "persistent": false,
14681cbfd50SDaniel P. Berrangé        "recording": true
147dfdc48d5SJohn Snow      }
148dfdc48d5SJohn Snow    ]
149dfdc48d5SJohn Snow  }
150dfdc48d5SJohn Snow}
151dfdc48d5SJohn Snow
152dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
153dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
154dfdc48d5SJohn Snow
155dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
156dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
157dfdc48d5SJohn Snow
1580af2a09cSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
159dfdc48d5SJohn Snow{"return": {}}
1600af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1610fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
162dfdc48d5SJohn Snow{
163dfdc48d5SJohn Snow  "bitmaps": {
1645c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
165dfdc48d5SJohn Snow      {
166dfdc48d5SJohn Snow        "busy": false,
167dfdc48d5SJohn Snow        "count": 655360,
168dfdc48d5SJohn Snow        "granularity": 65536,
169dfdc48d5SJohn Snow        "name": "bitmap0",
170dfdc48d5SJohn Snow        "persistent": false,
17181cbfd50SDaniel P. Berrangé        "recording": true
172dfdc48d5SJohn Snow      }
173dfdc48d5SJohn Snow    ]
174dfdc48d5SJohn Snow  }
175dfdc48d5SJohn Snow}
176dfdc48d5SJohn Snow
177dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
178dfdc48d5SJohn Snowexpecting 10 dirty sectors; have 10. OK!
179dfdc48d5SJohn Snow
180dfdc48d5SJohn Snow--- Write #3 ---
181dfdc48d5SJohn Snow
182dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
183dfdc48d5SJohn Snow{"return": ""}
184dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
185dfdc48d5SJohn Snow{"return": ""}
186dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
187dfdc48d5SJohn Snow{"return": ""}
188dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
189dfdc48d5SJohn Snow{"return": ""}
190dfdc48d5SJohn Snow{
191dfdc48d5SJohn Snow  "bitmaps": {
1925c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
193dfdc48d5SJohn Snow      {
194dfdc48d5SJohn Snow        "busy": false,
195dfdc48d5SJohn Snow        "count": 983040,
196dfdc48d5SJohn Snow        "granularity": 65536,
197dfdc48d5SJohn Snow        "name": "bitmap0",
198dfdc48d5SJohn Snow        "persistent": false,
19981cbfd50SDaniel P. Berrangé        "recording": true
200dfdc48d5SJohn Snow      }
201dfdc48d5SJohn Snow    ]
202dfdc48d5SJohn Snow  }
203dfdc48d5SJohn Snow}
204dfdc48d5SJohn Snow
205dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
206dfdc48d5SJohn Snowexpecting 15 dirty sectors; have 15. OK!
207dfdc48d5SJohn Snow
208dfdc48d5SJohn Snow--- Reference Backup #2 ---
209dfdc48d5SJohn Snow
210dfdc48d5SJohn Snow{}
211dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
212dfdc48d5SJohn Snow{"return": {}}
213dfdc48d5SJohn Snow{}
214dfdc48d5SJohn Snow{}
215dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
216dfdc48d5SJohn Snow{"return": {}}
217dfdc48d5SJohn Snow{}
2182d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
219dfdc48d5SJohn Snow{"return": {}}
220dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
221dfdc48d5SJohn Snow
2220af2a09cSJohn Snow--- Test Backup #2 ---
223dfdc48d5SJohn Snow
224dfdc48d5SJohn Snow{}
225dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
226dfdc48d5SJohn Snow{"return": {}}
227dfdc48d5SJohn Snow{}
228dfdc48d5SJohn Snow{}
229dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
230dfdc48d5SJohn Snow{"return": {}}
231dfdc48d5SJohn Snow{}
2322d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
233dfdc48d5SJohn Snow{"return": {}}
2340af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
235dfdc48d5SJohn Snow{"return": {}}
2360af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2370fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
238dfdc48d5SJohn Snow{
239dfdc48d5SJohn Snow  "bitmaps": {
2405c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
241dfdc48d5SJohn Snow      {
242dfdc48d5SJohn Snow        "busy": false,
243dfdc48d5SJohn Snow        "count": 983040,
244dfdc48d5SJohn Snow        "granularity": 65536,
245dfdc48d5SJohn Snow        "name": "bitmap0",
246dfdc48d5SJohn Snow        "persistent": false,
24781cbfd50SDaniel P. Berrangé        "recording": true
248dfdc48d5SJohn Snow      }
249dfdc48d5SJohn Snow    ]
250dfdc48d5SJohn Snow  }
251dfdc48d5SJohn Snow}
252dfdc48d5SJohn Snow
253dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
254dfdc48d5SJohn Snowexpecting 15 dirty sectors; have 15. OK!
255dfdc48d5SJohn Snow
256dfdc48d5SJohn Snow--- Cleanup ---
257dfdc48d5SJohn Snow
258dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
259dfdc48d5SJohn Snow{"return": {}}
260dfdc48d5SJohn Snow{
2615c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
262dfdc48d5SJohn Snow}
263dfdc48d5SJohn Snow
264dfdc48d5SJohn Snow--- Verification ---
265dfdc48d5SJohn Snow
266dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
267dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
268dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
269dfdc48d5SJohn Snow
270dfdc48d5SJohn Snow
2710af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync never with intermediate failure ===
272dfdc48d5SJohn Snow
273dfdc48d5SJohn Snow--- Preparing image & VM ---
274dfdc48d5SJohn Snow
275dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
276dfdc48d5SJohn Snow{"return": {}}
277dfdc48d5SJohn Snow
278dfdc48d5SJohn Snow--- Write #0 ---
279dfdc48d5SJohn Snow
280dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
281dfdc48d5SJohn Snow{"return": ""}
282dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
283dfdc48d5SJohn Snow{"return": ""}
284dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
285dfdc48d5SJohn Snow{"return": ""}
286dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
287dfdc48d5SJohn Snow{"return": ""}
288dfdc48d5SJohn Snow{
2895c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
290dfdc48d5SJohn Snow}
291dfdc48d5SJohn Snow
292dfdc48d5SJohn Snow--- Reference Backup #0 ---
293dfdc48d5SJohn Snow
294dfdc48d5SJohn Snow{}
295dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
296dfdc48d5SJohn Snow{"return": {}}
297dfdc48d5SJohn Snow{}
298dfdc48d5SJohn Snow{}
299dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
300dfdc48d5SJohn Snow{"return": {}}
301dfdc48d5SJohn Snow{}
3022d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
303dfdc48d5SJohn Snow{"return": {}}
304dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
305dfdc48d5SJohn Snow
306dfdc48d5SJohn Snow--- Add Bitmap ---
307dfdc48d5SJohn Snow
308dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
309dfdc48d5SJohn Snow{"return": {}}
310dfdc48d5SJohn Snow
311dfdc48d5SJohn Snow--- Write #1 ---
312dfdc48d5SJohn Snow
313dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
314dfdc48d5SJohn Snow{"return": ""}
315dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
316dfdc48d5SJohn Snow{"return": ""}
317dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
318dfdc48d5SJohn Snow{"return": ""}
319dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
320dfdc48d5SJohn Snow{"return": ""}
321dfdc48d5SJohn Snow{
322dfdc48d5SJohn Snow  "bitmaps": {
3235c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
324dfdc48d5SJohn Snow      {
325dfdc48d5SJohn Snow        "busy": false,
326dfdc48d5SJohn Snow        "count": 393216,
327dfdc48d5SJohn Snow        "granularity": 65536,
328dfdc48d5SJohn Snow        "name": "bitmap0",
329dfdc48d5SJohn Snow        "persistent": false,
33081cbfd50SDaniel P. Berrangé        "recording": true
331dfdc48d5SJohn Snow      }
332dfdc48d5SJohn Snow    ]
333dfdc48d5SJohn Snow  }
334dfdc48d5SJohn Snow}
335dfdc48d5SJohn Snow
336dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
337dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
338dfdc48d5SJohn Snow
339dfdc48d5SJohn Snow--- Reference Backup #1 ---
340dfdc48d5SJohn Snow
341dfdc48d5SJohn Snow{}
342dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
343dfdc48d5SJohn Snow{"return": {}}
344dfdc48d5SJohn Snow{}
345dfdc48d5SJohn Snow{}
346dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
347dfdc48d5SJohn Snow{"return": {}}
348dfdc48d5SJohn Snow{}
3492d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
350dfdc48d5SJohn Snow{"return": {}}
351dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
352dfdc48d5SJohn Snow
353dfdc48d5SJohn Snow{"return": ""}
354dfdc48d5SJohn Snow
3550af2a09cSJohn Snow--- Test Backup #1 ---
356dfdc48d5SJohn Snow
357dfdc48d5SJohn Snow{}
358dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
359dfdc48d5SJohn Snow{"return": {}}
360dfdc48d5SJohn Snow{}
361dfdc48d5SJohn Snow{}
362dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
363dfdc48d5SJohn Snow{"return": {}}
364dfdc48d5SJohn Snow{}
3652d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
366dfdc48d5SJohn Snow{"return": {}}
3670af2a09cSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3680fff1f13SJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 393216, "offset": 65536, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
369dfdc48d5SJohn Snow{
370dfdc48d5SJohn Snow  "bitmaps": {
3715c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
372dfdc48d5SJohn Snow      {
373dfdc48d5SJohn Snow        "busy": false,
374dfdc48d5SJohn Snow        "count": 393216,
375dfdc48d5SJohn Snow        "granularity": 65536,
376dfdc48d5SJohn Snow        "name": "bitmap0",
377dfdc48d5SJohn Snow        "persistent": false,
37881cbfd50SDaniel P. Berrangé        "recording": true
379dfdc48d5SJohn Snow      }
380dfdc48d5SJohn Snow    ]
381dfdc48d5SJohn Snow  }
382dfdc48d5SJohn Snow}
383dfdc48d5SJohn Snow
384dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
385dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
386dfdc48d5SJohn Snow
387dfdc48d5SJohn Snow--- Write #3 ---
388dfdc48d5SJohn Snow
389dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
390dfdc48d5SJohn Snow{"return": ""}
391dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
392dfdc48d5SJohn Snow{"return": ""}
393dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
394dfdc48d5SJohn Snow{"return": ""}
395dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
396dfdc48d5SJohn Snow{"return": ""}
397dfdc48d5SJohn Snow{
398dfdc48d5SJohn Snow  "bitmaps": {
3995c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
400dfdc48d5SJohn Snow      {
401dfdc48d5SJohn Snow        "busy": false,
402dfdc48d5SJohn Snow        "count": 917504,
403dfdc48d5SJohn Snow        "granularity": 65536,
404dfdc48d5SJohn Snow        "name": "bitmap0",
405dfdc48d5SJohn Snow        "persistent": false,
40681cbfd50SDaniel P. Berrangé        "recording": true
407dfdc48d5SJohn Snow      }
408dfdc48d5SJohn Snow    ]
409dfdc48d5SJohn Snow  }
410dfdc48d5SJohn Snow}
411dfdc48d5SJohn Snow
412dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
413dfdc48d5SJohn Snowexpecting 14 dirty sectors; have 14. OK!
414dfdc48d5SJohn Snow
415dfdc48d5SJohn Snow--- Reference Backup #2 ---
416dfdc48d5SJohn Snow
417dfdc48d5SJohn Snow{}
418dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
419dfdc48d5SJohn Snow{"return": {}}
420dfdc48d5SJohn Snow{}
421dfdc48d5SJohn Snow{}
422dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
423dfdc48d5SJohn Snow{"return": {}}
424dfdc48d5SJohn Snow{}
4252d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
426dfdc48d5SJohn Snow{"return": {}}
427dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
428dfdc48d5SJohn Snow
4290af2a09cSJohn Snow--- Test Backup #2 ---
430dfdc48d5SJohn Snow
431dfdc48d5SJohn Snow{}
432dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
433dfdc48d5SJohn Snow{"return": {}}
434dfdc48d5SJohn Snow{}
435dfdc48d5SJohn Snow{}
436dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
437dfdc48d5SJohn Snow{"return": {}}
438dfdc48d5SJohn Snow{}
4392d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
440dfdc48d5SJohn Snow{"return": {}}
4410af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
442dfdc48d5SJohn Snow{"return": {}}
4430af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4440fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
445dfdc48d5SJohn Snow{
446dfdc48d5SJohn Snow  "bitmaps": {
4475c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
448dfdc48d5SJohn Snow      {
449dfdc48d5SJohn Snow        "busy": false,
450dfdc48d5SJohn Snow        "count": 917504,
451dfdc48d5SJohn Snow        "granularity": 65536,
452dfdc48d5SJohn Snow        "name": "bitmap0",
453dfdc48d5SJohn Snow        "persistent": false,
45481cbfd50SDaniel P. Berrangé        "recording": true
455dfdc48d5SJohn Snow      }
456dfdc48d5SJohn Snow    ]
457dfdc48d5SJohn Snow  }
458dfdc48d5SJohn Snow}
459dfdc48d5SJohn Snow
460dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
461dfdc48d5SJohn Snowexpecting 14 dirty sectors; have 14. OK!
462dfdc48d5SJohn Snow
463dfdc48d5SJohn Snow--- Cleanup ---
464dfdc48d5SJohn Snow
465dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
466dfdc48d5SJohn Snow{"return": {}}
467dfdc48d5SJohn Snow{
4685c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
469dfdc48d5SJohn Snow}
470dfdc48d5SJohn Snow
471dfdc48d5SJohn Snow--- Verification ---
472dfdc48d5SJohn Snow
473dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
474dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
475dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
476dfdc48d5SJohn Snow
477dfdc48d5SJohn Snow
4780af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync never without failure ===
479dfdc48d5SJohn Snow
480dfdc48d5SJohn Snow--- Preparing image & VM ---
481dfdc48d5SJohn Snow
482dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
483dfdc48d5SJohn Snow{"return": {}}
484dfdc48d5SJohn Snow
485dfdc48d5SJohn Snow--- Write #0 ---
486dfdc48d5SJohn Snow
487dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
488dfdc48d5SJohn Snow{"return": ""}
489dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
490dfdc48d5SJohn Snow{"return": ""}
491dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
492dfdc48d5SJohn Snow{"return": ""}
493dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
494dfdc48d5SJohn Snow{"return": ""}
495dfdc48d5SJohn Snow{
4965c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
497dfdc48d5SJohn Snow}
498dfdc48d5SJohn Snow
499dfdc48d5SJohn Snow--- Reference Backup #0 ---
500dfdc48d5SJohn Snow
501dfdc48d5SJohn Snow{}
502dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
503dfdc48d5SJohn Snow{"return": {}}
504dfdc48d5SJohn Snow{}
505dfdc48d5SJohn Snow{}
506dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
507dfdc48d5SJohn Snow{"return": {}}
508dfdc48d5SJohn Snow{}
5092d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
510dfdc48d5SJohn Snow{"return": {}}
511dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
512dfdc48d5SJohn Snow
513dfdc48d5SJohn Snow--- Add Bitmap ---
514dfdc48d5SJohn Snow
515dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
516dfdc48d5SJohn Snow{"return": {}}
517dfdc48d5SJohn Snow
518dfdc48d5SJohn Snow--- Write #1 ---
519dfdc48d5SJohn Snow
520dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
521dfdc48d5SJohn Snow{"return": ""}
522dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
523dfdc48d5SJohn Snow{"return": ""}
524dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
525dfdc48d5SJohn Snow{"return": ""}
526dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
527dfdc48d5SJohn Snow{"return": ""}
528dfdc48d5SJohn Snow{
529dfdc48d5SJohn Snow  "bitmaps": {
5305c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
531dfdc48d5SJohn Snow      {
532dfdc48d5SJohn Snow        "busy": false,
533dfdc48d5SJohn Snow        "count": 393216,
534dfdc48d5SJohn Snow        "granularity": 65536,
535dfdc48d5SJohn Snow        "name": "bitmap0",
536dfdc48d5SJohn Snow        "persistent": false,
53781cbfd50SDaniel P. Berrangé        "recording": true
538dfdc48d5SJohn Snow      }
539dfdc48d5SJohn Snow    ]
540dfdc48d5SJohn Snow  }
541dfdc48d5SJohn Snow}
542dfdc48d5SJohn Snow
543dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
544dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
545dfdc48d5SJohn Snow
546dfdc48d5SJohn Snow--- Reference Backup #1 ---
547dfdc48d5SJohn Snow
548dfdc48d5SJohn Snow{}
549dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
550dfdc48d5SJohn Snow{"return": {}}
551dfdc48d5SJohn Snow{}
552dfdc48d5SJohn Snow{}
553dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
554dfdc48d5SJohn Snow{"return": {}}
555dfdc48d5SJohn Snow{}
5562d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
557dfdc48d5SJohn Snow{"return": {}}
558dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
559dfdc48d5SJohn Snow
5600af2a09cSJohn Snow--- Test Backup #1 ---
561dfdc48d5SJohn Snow
562dfdc48d5SJohn Snow{}
563dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
564dfdc48d5SJohn Snow{"return": {}}
565dfdc48d5SJohn Snow{}
566dfdc48d5SJohn Snow{}
567dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
568dfdc48d5SJohn Snow{"return": {}}
569dfdc48d5SJohn Snow{}
5702d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
571dfdc48d5SJohn Snow{"return": {}}
572dfdc48d5SJohn Snow
573dfdc48d5SJohn Snow--- Write #2 ---
574dfdc48d5SJohn Snow
575dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
576dfdc48d5SJohn Snow{"return": ""}
577dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
578dfdc48d5SJohn Snow{"return": ""}
579dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
580dfdc48d5SJohn Snow{"return": ""}
581dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
582dfdc48d5SJohn Snow{"return": ""}
583dfdc48d5SJohn Snow{
584dfdc48d5SJohn Snow  "bitmaps": {
585af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
586af5bcd77SVladimir Sementsov-Ogievskiy      {
587af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
588af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
589af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
590af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
591af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
592af5bcd77SVladimir Sementsov-Ogievskiy      },
593af5bcd77SVladimir Sementsov-Ogievskiy      {
594af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
595af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
596af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
597af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
598af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
599*006e845bSVladimir Sementsov-Ogievskiy      },
600dfdc48d5SJohn Snow      {
601dfdc48d5SJohn Snow        "busy": false,
602dfdc48d5SJohn Snow        "count": 0,
603dfdc48d5SJohn Snow        "granularity": 65536,
604dfdc48d5SJohn Snow        "persistent": false,
60581cbfd50SDaniel P. Berrangé        "recording": false
606*006e845bSVladimir Sementsov-Ogievskiy      }
607*006e845bSVladimir Sementsov-Ogievskiy    ],
608*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
609dfdc48d5SJohn Snow      {
610dfdc48d5SJohn Snow        "busy": false,
611dfdc48d5SJohn Snow        "count": 458752,
612dfdc48d5SJohn Snow        "granularity": 65536,
613dfdc48d5SJohn Snow        "persistent": false,
61481cbfd50SDaniel P. Berrangé        "recording": true
615dfdc48d5SJohn Snow      },
616dfdc48d5SJohn Snow      {
617dfdc48d5SJohn Snow        "busy": true,
618dfdc48d5SJohn Snow        "count": 393216,
619dfdc48d5SJohn Snow        "granularity": 65536,
620dfdc48d5SJohn Snow        "name": "bitmap0",
621dfdc48d5SJohn Snow        "persistent": false,
62281cbfd50SDaniel P. Berrangé        "recording": true
623dfdc48d5SJohn Snow      }
624dfdc48d5SJohn Snow    ]
625dfdc48d5SJohn Snow  }
626dfdc48d5SJohn Snow}
627dfdc48d5SJohn Snow
628dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
629dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
630dfdc48d5SJohn Snow
631dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
632dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
633dfdc48d5SJohn Snow
6340af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
635dfdc48d5SJohn Snow{"return": {}}
6360af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
6370fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
638dfdc48d5SJohn Snow{
639dfdc48d5SJohn Snow  "bitmaps": {
6405c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
641dfdc48d5SJohn Snow      {
642dfdc48d5SJohn Snow        "busy": false,
643dfdc48d5SJohn Snow        "count": 655360,
644dfdc48d5SJohn Snow        "granularity": 65536,
645dfdc48d5SJohn Snow        "name": "bitmap0",
646dfdc48d5SJohn Snow        "persistent": false,
64781cbfd50SDaniel P. Berrangé        "recording": true
648dfdc48d5SJohn Snow      }
649dfdc48d5SJohn Snow    ]
650dfdc48d5SJohn Snow  }
651dfdc48d5SJohn Snow}
652dfdc48d5SJohn Snow
653dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
654dfdc48d5SJohn Snowexpecting 10 dirty sectors; have 10. OK!
655dfdc48d5SJohn Snow
656dfdc48d5SJohn Snow--- Write #3 ---
657dfdc48d5SJohn Snow
658dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
659dfdc48d5SJohn Snow{"return": ""}
660dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
661dfdc48d5SJohn Snow{"return": ""}
662dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
663dfdc48d5SJohn Snow{"return": ""}
664dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
665dfdc48d5SJohn Snow{"return": ""}
666dfdc48d5SJohn Snow{
667dfdc48d5SJohn Snow  "bitmaps": {
6685c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
669dfdc48d5SJohn Snow      {
670dfdc48d5SJohn Snow        "busy": false,
671dfdc48d5SJohn Snow        "count": 983040,
672dfdc48d5SJohn Snow        "granularity": 65536,
673dfdc48d5SJohn Snow        "name": "bitmap0",
674dfdc48d5SJohn Snow        "persistent": false,
67581cbfd50SDaniel P. Berrangé        "recording": true
676dfdc48d5SJohn Snow      }
677dfdc48d5SJohn Snow    ]
678dfdc48d5SJohn Snow  }
679dfdc48d5SJohn Snow}
680dfdc48d5SJohn Snow
681dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
682dfdc48d5SJohn Snowexpecting 15 dirty sectors; have 15. OK!
683dfdc48d5SJohn Snow
684dfdc48d5SJohn Snow--- Reference Backup #2 ---
685dfdc48d5SJohn Snow
686dfdc48d5SJohn Snow{}
687dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
688dfdc48d5SJohn Snow{"return": {}}
689dfdc48d5SJohn Snow{}
690dfdc48d5SJohn Snow{}
691dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
692dfdc48d5SJohn Snow{"return": {}}
693dfdc48d5SJohn Snow{}
6942d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
695dfdc48d5SJohn Snow{"return": {}}
696dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
697dfdc48d5SJohn Snow
6980af2a09cSJohn Snow--- Test Backup #2 ---
699dfdc48d5SJohn Snow
700dfdc48d5SJohn Snow{}
701dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
702dfdc48d5SJohn Snow{"return": {}}
703dfdc48d5SJohn Snow{}
704dfdc48d5SJohn Snow{}
705dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
706dfdc48d5SJohn Snow{"return": {}}
707dfdc48d5SJohn Snow{}
7082d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
709dfdc48d5SJohn Snow{"return": {}}
7100af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
711dfdc48d5SJohn Snow{"return": {}}
7120af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
7130fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
714dfdc48d5SJohn Snow{
715dfdc48d5SJohn Snow  "bitmaps": {
7165c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
717dfdc48d5SJohn Snow      {
718dfdc48d5SJohn Snow        "busy": false,
719dfdc48d5SJohn Snow        "count": 983040,
720dfdc48d5SJohn Snow        "granularity": 65536,
721dfdc48d5SJohn Snow        "name": "bitmap0",
722dfdc48d5SJohn Snow        "persistent": false,
72381cbfd50SDaniel P. Berrangé        "recording": true
724dfdc48d5SJohn Snow      }
725dfdc48d5SJohn Snow    ]
726dfdc48d5SJohn Snow  }
727dfdc48d5SJohn Snow}
728dfdc48d5SJohn Snow
729dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
730dfdc48d5SJohn Snowexpecting 15 dirty sectors; have 15. OK!
731dfdc48d5SJohn Snow
732dfdc48d5SJohn Snow--- Cleanup ---
733dfdc48d5SJohn Snow
734dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
735dfdc48d5SJohn Snow{"return": {}}
736dfdc48d5SJohn Snow{
7375c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
738dfdc48d5SJohn Snow}
739dfdc48d5SJohn Snow
740dfdc48d5SJohn Snow--- Verification ---
741dfdc48d5SJohn Snow
742dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
743dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
744dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
745dfdc48d5SJohn Snow
746dfdc48d5SJohn Snow
7470af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync on-success with simulated failure ===
748dfdc48d5SJohn Snow
749dfdc48d5SJohn Snow--- Preparing image & VM ---
750dfdc48d5SJohn Snow
751dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
752dfdc48d5SJohn Snow{"return": {}}
753dfdc48d5SJohn Snow
754dfdc48d5SJohn Snow--- Write #0 ---
755dfdc48d5SJohn Snow
756dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
757dfdc48d5SJohn Snow{"return": ""}
758dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
759dfdc48d5SJohn Snow{"return": ""}
760dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
761dfdc48d5SJohn Snow{"return": ""}
762dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
763dfdc48d5SJohn Snow{"return": ""}
764dfdc48d5SJohn Snow{
7655c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
766dfdc48d5SJohn Snow}
767dfdc48d5SJohn Snow
768dfdc48d5SJohn Snow--- Reference Backup #0 ---
769dfdc48d5SJohn Snow
770dfdc48d5SJohn Snow{}
771dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
772dfdc48d5SJohn Snow{"return": {}}
773dfdc48d5SJohn Snow{}
774dfdc48d5SJohn Snow{}
775dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
776dfdc48d5SJohn Snow{"return": {}}
777dfdc48d5SJohn Snow{}
7782d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
779dfdc48d5SJohn Snow{"return": {}}
780dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
781dfdc48d5SJohn Snow
782dfdc48d5SJohn Snow--- Add Bitmap ---
783dfdc48d5SJohn Snow
784dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
785dfdc48d5SJohn Snow{"return": {}}
786dfdc48d5SJohn Snow
787dfdc48d5SJohn Snow--- Write #1 ---
788dfdc48d5SJohn Snow
789dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
790dfdc48d5SJohn Snow{"return": ""}
791dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
792dfdc48d5SJohn Snow{"return": ""}
793dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
794dfdc48d5SJohn Snow{"return": ""}
795dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
796dfdc48d5SJohn Snow{"return": ""}
797dfdc48d5SJohn Snow{
798dfdc48d5SJohn Snow  "bitmaps": {
7995c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
800dfdc48d5SJohn Snow      {
801dfdc48d5SJohn Snow        "busy": false,
802dfdc48d5SJohn Snow        "count": 393216,
803dfdc48d5SJohn Snow        "granularity": 65536,
804dfdc48d5SJohn Snow        "name": "bitmap0",
805dfdc48d5SJohn Snow        "persistent": false,
80681cbfd50SDaniel P. Berrangé        "recording": true
807dfdc48d5SJohn Snow      }
808dfdc48d5SJohn Snow    ]
809dfdc48d5SJohn Snow  }
810dfdc48d5SJohn Snow}
811dfdc48d5SJohn Snow
812dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
813dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
814dfdc48d5SJohn Snow
815dfdc48d5SJohn Snow--- Reference Backup #1 ---
816dfdc48d5SJohn Snow
817dfdc48d5SJohn Snow{}
818dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
819dfdc48d5SJohn Snow{"return": {}}
820dfdc48d5SJohn Snow{}
821dfdc48d5SJohn Snow{}
822dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
823dfdc48d5SJohn Snow{"return": {}}
824dfdc48d5SJohn Snow{}
8252d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
826dfdc48d5SJohn Snow{"return": {}}
827dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
828dfdc48d5SJohn Snow
8290af2a09cSJohn Snow--- Test Backup #1 ---
830dfdc48d5SJohn Snow
831dfdc48d5SJohn Snow{}
832dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
833dfdc48d5SJohn Snow{"return": {}}
834dfdc48d5SJohn Snow{}
835dfdc48d5SJohn Snow{}
836dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
837dfdc48d5SJohn Snow{"return": {}}
838dfdc48d5SJohn Snow{}
8392d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
840dfdc48d5SJohn Snow{"return": {}}
841dfdc48d5SJohn Snow
842dfdc48d5SJohn Snow--- Write #2 ---
843dfdc48d5SJohn Snow
844dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
845dfdc48d5SJohn Snow{"return": ""}
846dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
847dfdc48d5SJohn Snow{"return": ""}
848dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
849dfdc48d5SJohn Snow{"return": ""}
850dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
851dfdc48d5SJohn Snow{"return": ""}
852dfdc48d5SJohn Snow{
853dfdc48d5SJohn Snow  "bitmaps": {
854af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
855af5bcd77SVladimir Sementsov-Ogievskiy      {
856af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
857af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
858af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
859af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
860af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
861af5bcd77SVladimir Sementsov-Ogievskiy      },
862af5bcd77SVladimir Sementsov-Ogievskiy      {
863af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
864af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
865af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
866af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
867af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
868*006e845bSVladimir Sementsov-Ogievskiy      },
869dfdc48d5SJohn Snow      {
870dfdc48d5SJohn Snow        "busy": false,
871dfdc48d5SJohn Snow        "count": 0,
872dfdc48d5SJohn Snow        "granularity": 65536,
873dfdc48d5SJohn Snow        "persistent": false,
87481cbfd50SDaniel P. Berrangé        "recording": false
875*006e845bSVladimir Sementsov-Ogievskiy      }
876*006e845bSVladimir Sementsov-Ogievskiy    ],
877*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
878dfdc48d5SJohn Snow      {
879dfdc48d5SJohn Snow        "busy": false,
880dfdc48d5SJohn Snow        "count": 458752,
881dfdc48d5SJohn Snow        "granularity": 65536,
882dfdc48d5SJohn Snow        "persistent": false,
88381cbfd50SDaniel P. Berrangé        "recording": true
884dfdc48d5SJohn Snow      },
885dfdc48d5SJohn Snow      {
886dfdc48d5SJohn Snow        "busy": true,
887dfdc48d5SJohn Snow        "count": 393216,
888dfdc48d5SJohn Snow        "granularity": 65536,
889dfdc48d5SJohn Snow        "name": "bitmap0",
890dfdc48d5SJohn Snow        "persistent": false,
89181cbfd50SDaniel P. Berrangé        "recording": true
892dfdc48d5SJohn Snow      }
893dfdc48d5SJohn Snow    ]
894dfdc48d5SJohn Snow  }
895dfdc48d5SJohn Snow}
896dfdc48d5SJohn Snow
897dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
898dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
899dfdc48d5SJohn Snow
900dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
901dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
902dfdc48d5SJohn Snow
9030af2a09cSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
904dfdc48d5SJohn Snow{"return": {}}
9050af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
9060fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
907dfdc48d5SJohn Snow{
908dfdc48d5SJohn Snow  "bitmaps": {
9095c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
910dfdc48d5SJohn Snow      {
911dfdc48d5SJohn Snow        "busy": false,
912dfdc48d5SJohn Snow        "count": 655360,
913dfdc48d5SJohn Snow        "granularity": 65536,
914dfdc48d5SJohn Snow        "name": "bitmap0",
915dfdc48d5SJohn Snow        "persistent": false,
91681cbfd50SDaniel P. Berrangé        "recording": true
917dfdc48d5SJohn Snow      }
918dfdc48d5SJohn Snow    ]
919dfdc48d5SJohn Snow  }
920dfdc48d5SJohn Snow}
921dfdc48d5SJohn Snow
922dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
923dfdc48d5SJohn Snowexpecting 10 dirty sectors; have 10. OK!
924dfdc48d5SJohn Snow
925dfdc48d5SJohn Snow--- Write #3 ---
926dfdc48d5SJohn Snow
927dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
928dfdc48d5SJohn Snow{"return": ""}
929dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
930dfdc48d5SJohn Snow{"return": ""}
931dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
932dfdc48d5SJohn Snow{"return": ""}
933dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
934dfdc48d5SJohn Snow{"return": ""}
935dfdc48d5SJohn Snow{
936dfdc48d5SJohn Snow  "bitmaps": {
9375c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
938dfdc48d5SJohn Snow      {
939dfdc48d5SJohn Snow        "busy": false,
940dfdc48d5SJohn Snow        "count": 983040,
941dfdc48d5SJohn Snow        "granularity": 65536,
942dfdc48d5SJohn Snow        "name": "bitmap0",
943dfdc48d5SJohn Snow        "persistent": false,
94481cbfd50SDaniel P. Berrangé        "recording": true
945dfdc48d5SJohn Snow      }
946dfdc48d5SJohn Snow    ]
947dfdc48d5SJohn Snow  }
948dfdc48d5SJohn Snow}
949dfdc48d5SJohn Snow
950dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
951dfdc48d5SJohn Snowexpecting 15 dirty sectors; have 15. OK!
952dfdc48d5SJohn Snow
953dfdc48d5SJohn Snow--- Reference Backup #2 ---
954dfdc48d5SJohn Snow
955dfdc48d5SJohn Snow{}
956dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
957dfdc48d5SJohn Snow{"return": {}}
958dfdc48d5SJohn Snow{}
959dfdc48d5SJohn Snow{}
960dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
961dfdc48d5SJohn Snow{"return": {}}
962dfdc48d5SJohn Snow{}
9632d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
964dfdc48d5SJohn Snow{"return": {}}
965dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
966dfdc48d5SJohn Snow
9670af2a09cSJohn Snow--- Test Backup #2 ---
968dfdc48d5SJohn Snow
969dfdc48d5SJohn Snow{}
970dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
971dfdc48d5SJohn Snow{"return": {}}
972dfdc48d5SJohn Snow{}
973dfdc48d5SJohn Snow{}
974dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
975dfdc48d5SJohn Snow{"return": {}}
976dfdc48d5SJohn Snow{}
9772d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
978dfdc48d5SJohn Snow{"return": {}}
9790af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
980dfdc48d5SJohn Snow{"return": {}}
9810af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
9820fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
983dfdc48d5SJohn Snow{
984dfdc48d5SJohn Snow  "bitmaps": {
9855c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
986dfdc48d5SJohn Snow      {
987dfdc48d5SJohn Snow        "busy": false,
988dfdc48d5SJohn Snow        "count": 0,
989dfdc48d5SJohn Snow        "granularity": 65536,
990dfdc48d5SJohn Snow        "name": "bitmap0",
991dfdc48d5SJohn Snow        "persistent": false,
99281cbfd50SDaniel P. Berrangé        "recording": true
993dfdc48d5SJohn Snow      }
994dfdc48d5SJohn Snow    ]
995dfdc48d5SJohn Snow  }
996dfdc48d5SJohn Snow}
997dfdc48d5SJohn Snow
998dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
999dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
1000dfdc48d5SJohn Snow
1001dfdc48d5SJohn Snow--- Cleanup ---
1002dfdc48d5SJohn Snow
1003dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1004dfdc48d5SJohn Snow{"return": {}}
1005dfdc48d5SJohn Snow{
10065c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1007dfdc48d5SJohn Snow}
1008dfdc48d5SJohn Snow
1009dfdc48d5SJohn Snow--- Verification ---
1010dfdc48d5SJohn Snow
1011dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1012dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1013dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1014dfdc48d5SJohn Snow
1015dfdc48d5SJohn Snow
10160af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync on-success with intermediate failure ===
1017dfdc48d5SJohn Snow
1018dfdc48d5SJohn Snow--- Preparing image & VM ---
1019dfdc48d5SJohn Snow
1020dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
1021dfdc48d5SJohn Snow{"return": {}}
1022dfdc48d5SJohn Snow
1023dfdc48d5SJohn Snow--- Write #0 ---
1024dfdc48d5SJohn Snow
1025dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
1026dfdc48d5SJohn Snow{"return": ""}
1027dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
1028dfdc48d5SJohn Snow{"return": ""}
1029dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
1030dfdc48d5SJohn Snow{"return": ""}
1031dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
1032dfdc48d5SJohn Snow{"return": ""}
1033dfdc48d5SJohn Snow{
10345c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1035dfdc48d5SJohn Snow}
1036dfdc48d5SJohn Snow
1037dfdc48d5SJohn Snow--- Reference Backup #0 ---
1038dfdc48d5SJohn Snow
1039dfdc48d5SJohn Snow{}
1040dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1041dfdc48d5SJohn Snow{"return": {}}
1042dfdc48d5SJohn Snow{}
1043dfdc48d5SJohn Snow{}
1044dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1045dfdc48d5SJohn Snow{"return": {}}
1046dfdc48d5SJohn Snow{}
10472d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
1048dfdc48d5SJohn Snow{"return": {}}
1049dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1050dfdc48d5SJohn Snow
1051dfdc48d5SJohn Snow--- Add Bitmap ---
1052dfdc48d5SJohn Snow
1053dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1054dfdc48d5SJohn Snow{"return": {}}
1055dfdc48d5SJohn Snow
1056dfdc48d5SJohn Snow--- Write #1 ---
1057dfdc48d5SJohn Snow
1058dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
1059dfdc48d5SJohn Snow{"return": ""}
1060dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
1061dfdc48d5SJohn Snow{"return": ""}
1062dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
1063dfdc48d5SJohn Snow{"return": ""}
1064dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
1065dfdc48d5SJohn Snow{"return": ""}
1066dfdc48d5SJohn Snow{
1067dfdc48d5SJohn Snow  "bitmaps": {
10685c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1069dfdc48d5SJohn Snow      {
1070dfdc48d5SJohn Snow        "busy": false,
1071dfdc48d5SJohn Snow        "count": 393216,
1072dfdc48d5SJohn Snow        "granularity": 65536,
1073dfdc48d5SJohn Snow        "name": "bitmap0",
1074dfdc48d5SJohn Snow        "persistent": false,
107581cbfd50SDaniel P. Berrangé        "recording": true
1076dfdc48d5SJohn Snow      }
1077dfdc48d5SJohn Snow    ]
1078dfdc48d5SJohn Snow  }
1079dfdc48d5SJohn Snow}
1080dfdc48d5SJohn Snow
1081dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1082dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1083dfdc48d5SJohn Snow
1084dfdc48d5SJohn Snow--- Reference Backup #1 ---
1085dfdc48d5SJohn Snow
1086dfdc48d5SJohn Snow{}
1087dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1088dfdc48d5SJohn Snow{"return": {}}
1089dfdc48d5SJohn Snow{}
1090dfdc48d5SJohn Snow{}
1091dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1092dfdc48d5SJohn Snow{"return": {}}
1093dfdc48d5SJohn Snow{}
10942d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
1095dfdc48d5SJohn Snow{"return": {}}
1096dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1097dfdc48d5SJohn Snow
1098dfdc48d5SJohn Snow{"return": ""}
1099dfdc48d5SJohn Snow
11000af2a09cSJohn Snow--- Test Backup #1 ---
1101dfdc48d5SJohn Snow
1102dfdc48d5SJohn Snow{}
1103dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1104dfdc48d5SJohn Snow{"return": {}}
1105dfdc48d5SJohn Snow{}
1106dfdc48d5SJohn Snow{}
1107dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1108dfdc48d5SJohn Snow{"return": {}}
1109dfdc48d5SJohn Snow{}
11102d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
1111dfdc48d5SJohn Snow{"return": {}}
11120af2a09cSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
11130fff1f13SJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 393216, "offset": 65536, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1114dfdc48d5SJohn Snow{
1115dfdc48d5SJohn Snow  "bitmaps": {
11165c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1117dfdc48d5SJohn Snow      {
1118dfdc48d5SJohn Snow        "busy": false,
1119dfdc48d5SJohn Snow        "count": 393216,
1120dfdc48d5SJohn Snow        "granularity": 65536,
1121dfdc48d5SJohn Snow        "name": "bitmap0",
1122dfdc48d5SJohn Snow        "persistent": false,
112381cbfd50SDaniel P. Berrangé        "recording": true
1124dfdc48d5SJohn Snow      }
1125dfdc48d5SJohn Snow    ]
1126dfdc48d5SJohn Snow  }
1127dfdc48d5SJohn Snow}
1128dfdc48d5SJohn Snow
1129dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1130dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1131dfdc48d5SJohn Snow
1132dfdc48d5SJohn Snow--- Write #3 ---
1133dfdc48d5SJohn Snow
1134dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
1135dfdc48d5SJohn Snow{"return": ""}
1136dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
1137dfdc48d5SJohn Snow{"return": ""}
1138dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
1139dfdc48d5SJohn Snow{"return": ""}
1140dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
1141dfdc48d5SJohn Snow{"return": ""}
1142dfdc48d5SJohn Snow{
1143dfdc48d5SJohn Snow  "bitmaps": {
11445c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1145dfdc48d5SJohn Snow      {
1146dfdc48d5SJohn Snow        "busy": false,
1147dfdc48d5SJohn Snow        "count": 917504,
1148dfdc48d5SJohn Snow        "granularity": 65536,
1149dfdc48d5SJohn Snow        "name": "bitmap0",
1150dfdc48d5SJohn Snow        "persistent": false,
115181cbfd50SDaniel P. Berrangé        "recording": true
1152dfdc48d5SJohn Snow      }
1153dfdc48d5SJohn Snow    ]
1154dfdc48d5SJohn Snow  }
1155dfdc48d5SJohn Snow}
1156dfdc48d5SJohn Snow
1157dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1158dfdc48d5SJohn Snowexpecting 14 dirty sectors; have 14. OK!
1159dfdc48d5SJohn Snow
1160dfdc48d5SJohn Snow--- Reference Backup #2 ---
1161dfdc48d5SJohn Snow
1162dfdc48d5SJohn Snow{}
1163dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1164dfdc48d5SJohn Snow{"return": {}}
1165dfdc48d5SJohn Snow{}
1166dfdc48d5SJohn Snow{}
1167dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1168dfdc48d5SJohn Snow{"return": {}}
1169dfdc48d5SJohn Snow{}
11702d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
1171dfdc48d5SJohn Snow{"return": {}}
1172dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1173dfdc48d5SJohn Snow
11740af2a09cSJohn Snow--- Test Backup #2 ---
1175dfdc48d5SJohn Snow
1176dfdc48d5SJohn Snow{}
1177dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1178dfdc48d5SJohn Snow{"return": {}}
1179dfdc48d5SJohn Snow{}
1180dfdc48d5SJohn Snow{}
1181dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1182dfdc48d5SJohn Snow{"return": {}}
1183dfdc48d5SJohn Snow{}
11842d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
1185dfdc48d5SJohn Snow{"return": {}}
11860af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1187dfdc48d5SJohn Snow{"return": {}}
11880af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
11890fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1190dfdc48d5SJohn Snow{
1191dfdc48d5SJohn Snow  "bitmaps": {
11925c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1193dfdc48d5SJohn Snow      {
1194dfdc48d5SJohn Snow        "busy": false,
1195dfdc48d5SJohn Snow        "count": 0,
1196dfdc48d5SJohn Snow        "granularity": 65536,
1197dfdc48d5SJohn Snow        "name": "bitmap0",
1198dfdc48d5SJohn Snow        "persistent": false,
119981cbfd50SDaniel P. Berrangé        "recording": true
1200dfdc48d5SJohn Snow      }
1201dfdc48d5SJohn Snow    ]
1202dfdc48d5SJohn Snow  }
1203dfdc48d5SJohn Snow}
1204dfdc48d5SJohn Snow
1205dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1206dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
1207dfdc48d5SJohn Snow
1208dfdc48d5SJohn Snow--- Cleanup ---
1209dfdc48d5SJohn Snow
1210dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1211dfdc48d5SJohn Snow{"return": {}}
1212dfdc48d5SJohn Snow{
12135c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1214dfdc48d5SJohn Snow}
1215dfdc48d5SJohn Snow
1216dfdc48d5SJohn Snow--- Verification ---
1217dfdc48d5SJohn Snow
1218dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1219dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1220dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1221dfdc48d5SJohn Snow
1222dfdc48d5SJohn Snow
12230af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync on-success without failure ===
1224dfdc48d5SJohn Snow
1225dfdc48d5SJohn Snow--- Preparing image & VM ---
1226dfdc48d5SJohn Snow
1227dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1228dfdc48d5SJohn Snow{"return": {}}
1229dfdc48d5SJohn Snow
1230dfdc48d5SJohn Snow--- Write #0 ---
1231dfdc48d5SJohn Snow
1232dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
1233dfdc48d5SJohn Snow{"return": ""}
1234dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
1235dfdc48d5SJohn Snow{"return": ""}
1236dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
1237dfdc48d5SJohn Snow{"return": ""}
1238dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
1239dfdc48d5SJohn Snow{"return": ""}
1240dfdc48d5SJohn Snow{
12415c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1242dfdc48d5SJohn Snow}
1243dfdc48d5SJohn Snow
1244dfdc48d5SJohn Snow--- Reference Backup #0 ---
1245dfdc48d5SJohn Snow
1246dfdc48d5SJohn Snow{}
1247dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1248dfdc48d5SJohn Snow{"return": {}}
1249dfdc48d5SJohn Snow{}
1250dfdc48d5SJohn Snow{}
1251dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1252dfdc48d5SJohn Snow{"return": {}}
1253dfdc48d5SJohn Snow{}
12542d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
1255dfdc48d5SJohn Snow{"return": {}}
1256dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1257dfdc48d5SJohn Snow
1258dfdc48d5SJohn Snow--- Add Bitmap ---
1259dfdc48d5SJohn Snow
1260dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1261dfdc48d5SJohn Snow{"return": {}}
1262dfdc48d5SJohn Snow
1263dfdc48d5SJohn Snow--- Write #1 ---
1264dfdc48d5SJohn Snow
1265dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
1266dfdc48d5SJohn Snow{"return": ""}
1267dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
1268dfdc48d5SJohn Snow{"return": ""}
1269dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
1270dfdc48d5SJohn Snow{"return": ""}
1271dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
1272dfdc48d5SJohn Snow{"return": ""}
1273dfdc48d5SJohn Snow{
1274dfdc48d5SJohn Snow  "bitmaps": {
12755c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1276dfdc48d5SJohn Snow      {
1277dfdc48d5SJohn Snow        "busy": false,
1278dfdc48d5SJohn Snow        "count": 393216,
1279dfdc48d5SJohn Snow        "granularity": 65536,
1280dfdc48d5SJohn Snow        "name": "bitmap0",
1281dfdc48d5SJohn Snow        "persistent": false,
128281cbfd50SDaniel P. Berrangé        "recording": true
1283dfdc48d5SJohn Snow      }
1284dfdc48d5SJohn Snow    ]
1285dfdc48d5SJohn Snow  }
1286dfdc48d5SJohn Snow}
1287dfdc48d5SJohn Snow
1288dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1289dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1290dfdc48d5SJohn Snow
1291dfdc48d5SJohn Snow--- Reference Backup #1 ---
1292dfdc48d5SJohn Snow
1293dfdc48d5SJohn Snow{}
1294dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1295dfdc48d5SJohn Snow{"return": {}}
1296dfdc48d5SJohn Snow{}
1297dfdc48d5SJohn Snow{}
1298dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1299dfdc48d5SJohn Snow{"return": {}}
1300dfdc48d5SJohn Snow{}
13012d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
1302dfdc48d5SJohn Snow{"return": {}}
1303dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1304dfdc48d5SJohn Snow
13050af2a09cSJohn Snow--- Test Backup #1 ---
1306dfdc48d5SJohn Snow
1307dfdc48d5SJohn Snow{}
1308dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1309dfdc48d5SJohn Snow{"return": {}}
1310dfdc48d5SJohn Snow{}
1311dfdc48d5SJohn Snow{}
1312dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1313dfdc48d5SJohn Snow{"return": {}}
1314dfdc48d5SJohn Snow{}
13152d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
1316dfdc48d5SJohn Snow{"return": {}}
1317dfdc48d5SJohn Snow
1318dfdc48d5SJohn Snow--- Write #2 ---
1319dfdc48d5SJohn Snow
1320dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
1321dfdc48d5SJohn Snow{"return": ""}
1322dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
1323dfdc48d5SJohn Snow{"return": ""}
1324dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
1325dfdc48d5SJohn Snow{"return": ""}
1326dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
1327dfdc48d5SJohn Snow{"return": ""}
1328dfdc48d5SJohn Snow{
1329dfdc48d5SJohn Snow  "bitmaps": {
1330af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
1331af5bcd77SVladimir Sementsov-Ogievskiy      {
1332af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
1333af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
1334af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
1335af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
1336af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
1337af5bcd77SVladimir Sementsov-Ogievskiy      },
1338af5bcd77SVladimir Sementsov-Ogievskiy      {
1339af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
1340af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
1341af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
1342af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
1343af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
1344*006e845bSVladimir Sementsov-Ogievskiy      },
1345dfdc48d5SJohn Snow      {
1346dfdc48d5SJohn Snow        "busy": false,
1347dfdc48d5SJohn Snow        "count": 0,
1348dfdc48d5SJohn Snow        "granularity": 65536,
1349dfdc48d5SJohn Snow        "persistent": false,
135081cbfd50SDaniel P. Berrangé        "recording": false
1351*006e845bSVladimir Sementsov-Ogievskiy      }
1352*006e845bSVladimir Sementsov-Ogievskiy    ],
1353*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
1354dfdc48d5SJohn Snow      {
1355dfdc48d5SJohn Snow        "busy": false,
1356dfdc48d5SJohn Snow        "count": 458752,
1357dfdc48d5SJohn Snow        "granularity": 65536,
1358dfdc48d5SJohn Snow        "persistent": false,
135981cbfd50SDaniel P. Berrangé        "recording": true
1360dfdc48d5SJohn Snow      },
1361dfdc48d5SJohn Snow      {
1362dfdc48d5SJohn Snow        "busy": true,
1363dfdc48d5SJohn Snow        "count": 393216,
1364dfdc48d5SJohn Snow        "granularity": 65536,
1365dfdc48d5SJohn Snow        "name": "bitmap0",
1366dfdc48d5SJohn Snow        "persistent": false,
136781cbfd50SDaniel P. Berrangé        "recording": true
1368dfdc48d5SJohn Snow      }
1369dfdc48d5SJohn Snow    ]
1370dfdc48d5SJohn Snow  }
1371dfdc48d5SJohn Snow}
1372dfdc48d5SJohn Snow
1373dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1374dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1375dfdc48d5SJohn Snow
1376dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
1377dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
1378dfdc48d5SJohn Snow
13790af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
1380dfdc48d5SJohn Snow{"return": {}}
13810af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
13820fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1383dfdc48d5SJohn Snow{
1384dfdc48d5SJohn Snow  "bitmaps": {
13855c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1386dfdc48d5SJohn Snow      {
1387dfdc48d5SJohn Snow        "busy": false,
1388dfdc48d5SJohn Snow        "count": 458752,
1389dfdc48d5SJohn Snow        "granularity": 65536,
1390dfdc48d5SJohn Snow        "name": "bitmap0",
1391dfdc48d5SJohn Snow        "persistent": false,
139281cbfd50SDaniel P. Berrangé        "recording": true
1393dfdc48d5SJohn Snow      }
1394dfdc48d5SJohn Snow    ]
1395dfdc48d5SJohn Snow  }
1396dfdc48d5SJohn Snow}
1397dfdc48d5SJohn Snow
1398dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1399dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
1400dfdc48d5SJohn Snow
1401dfdc48d5SJohn Snow--- Write #3 ---
1402dfdc48d5SJohn Snow
1403dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
1404dfdc48d5SJohn Snow{"return": ""}
1405dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
1406dfdc48d5SJohn Snow{"return": ""}
1407dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
1408dfdc48d5SJohn Snow{"return": ""}
1409dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
1410dfdc48d5SJohn Snow{"return": ""}
1411dfdc48d5SJohn Snow{
1412dfdc48d5SJohn Snow  "bitmaps": {
14135c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1414dfdc48d5SJohn Snow      {
1415dfdc48d5SJohn Snow        "busy": false,
1416dfdc48d5SJohn Snow        "count": 786432,
1417dfdc48d5SJohn Snow        "granularity": 65536,
1418dfdc48d5SJohn Snow        "name": "bitmap0",
1419dfdc48d5SJohn Snow        "persistent": false,
142081cbfd50SDaniel P. Berrangé        "recording": true
1421dfdc48d5SJohn Snow      }
1422dfdc48d5SJohn Snow    ]
1423dfdc48d5SJohn Snow  }
1424dfdc48d5SJohn Snow}
1425dfdc48d5SJohn Snow
1426dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1427dfdc48d5SJohn Snowexpecting 12 dirty sectors; have 12. OK!
1428dfdc48d5SJohn Snow
1429dfdc48d5SJohn Snow--- Reference Backup #2 ---
1430dfdc48d5SJohn Snow
1431dfdc48d5SJohn Snow{}
1432dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1433dfdc48d5SJohn Snow{"return": {}}
1434dfdc48d5SJohn Snow{}
1435dfdc48d5SJohn Snow{}
1436dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1437dfdc48d5SJohn Snow{"return": {}}
1438dfdc48d5SJohn Snow{}
14392d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
1440dfdc48d5SJohn Snow{"return": {}}
1441dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1442dfdc48d5SJohn Snow
14430af2a09cSJohn Snow--- Test Backup #2 ---
1444dfdc48d5SJohn Snow
1445dfdc48d5SJohn Snow{}
1446dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1447dfdc48d5SJohn Snow{"return": {}}
1448dfdc48d5SJohn Snow{}
1449dfdc48d5SJohn Snow{}
1450dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1451dfdc48d5SJohn Snow{"return": {}}
1452dfdc48d5SJohn Snow{}
14532d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
1454dfdc48d5SJohn Snow{"return": {}}
14550af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1456dfdc48d5SJohn Snow{"return": {}}
14570af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
14580fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1459dfdc48d5SJohn Snow{
1460dfdc48d5SJohn Snow  "bitmaps": {
14615c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1462dfdc48d5SJohn Snow      {
1463dfdc48d5SJohn Snow        "busy": false,
1464dfdc48d5SJohn Snow        "count": 0,
1465dfdc48d5SJohn Snow        "granularity": 65536,
1466dfdc48d5SJohn Snow        "name": "bitmap0",
1467dfdc48d5SJohn Snow        "persistent": false,
146881cbfd50SDaniel P. Berrangé        "recording": true
1469dfdc48d5SJohn Snow      }
1470dfdc48d5SJohn Snow    ]
1471dfdc48d5SJohn Snow  }
1472dfdc48d5SJohn Snow}
1473dfdc48d5SJohn Snow
1474dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1475dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
1476dfdc48d5SJohn Snow
1477dfdc48d5SJohn Snow--- Cleanup ---
1478dfdc48d5SJohn Snow
1479dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1480dfdc48d5SJohn Snow{"return": {}}
1481dfdc48d5SJohn Snow{
14825c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1483dfdc48d5SJohn Snow}
1484dfdc48d5SJohn Snow
1485dfdc48d5SJohn Snow--- Verification ---
1486dfdc48d5SJohn Snow
1487dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1488dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1489dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1490dfdc48d5SJohn Snow
1491dfdc48d5SJohn Snow
14920af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync always with simulated failure ===
1493dfdc48d5SJohn Snow
1494dfdc48d5SJohn Snow--- Preparing image & VM ---
1495dfdc48d5SJohn Snow
1496dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1497dfdc48d5SJohn Snow{"return": {}}
1498dfdc48d5SJohn Snow
1499dfdc48d5SJohn Snow--- Write #0 ---
1500dfdc48d5SJohn Snow
1501dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
1502dfdc48d5SJohn Snow{"return": ""}
1503dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
1504dfdc48d5SJohn Snow{"return": ""}
1505dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
1506dfdc48d5SJohn Snow{"return": ""}
1507dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
1508dfdc48d5SJohn Snow{"return": ""}
1509dfdc48d5SJohn Snow{
15105c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1511dfdc48d5SJohn Snow}
1512dfdc48d5SJohn Snow
1513dfdc48d5SJohn Snow--- Reference Backup #0 ---
1514dfdc48d5SJohn Snow
1515dfdc48d5SJohn Snow{}
1516dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1517dfdc48d5SJohn Snow{"return": {}}
1518dfdc48d5SJohn Snow{}
1519dfdc48d5SJohn Snow{}
1520dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1521dfdc48d5SJohn Snow{"return": {}}
1522dfdc48d5SJohn Snow{}
15232d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
1524dfdc48d5SJohn Snow{"return": {}}
1525dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1526dfdc48d5SJohn Snow
1527dfdc48d5SJohn Snow--- Add Bitmap ---
1528dfdc48d5SJohn Snow
1529dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1530dfdc48d5SJohn Snow{"return": {}}
1531dfdc48d5SJohn Snow
1532dfdc48d5SJohn Snow--- Write #1 ---
1533dfdc48d5SJohn Snow
1534dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
1535dfdc48d5SJohn Snow{"return": ""}
1536dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
1537dfdc48d5SJohn Snow{"return": ""}
1538dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
1539dfdc48d5SJohn Snow{"return": ""}
1540dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
1541dfdc48d5SJohn Snow{"return": ""}
1542dfdc48d5SJohn Snow{
1543dfdc48d5SJohn Snow  "bitmaps": {
15445c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1545dfdc48d5SJohn Snow      {
1546dfdc48d5SJohn Snow        "busy": false,
1547dfdc48d5SJohn Snow        "count": 393216,
1548dfdc48d5SJohn Snow        "granularity": 65536,
1549dfdc48d5SJohn Snow        "name": "bitmap0",
1550dfdc48d5SJohn Snow        "persistent": false,
155181cbfd50SDaniel P. Berrangé        "recording": true
1552dfdc48d5SJohn Snow      }
1553dfdc48d5SJohn Snow    ]
1554dfdc48d5SJohn Snow  }
1555dfdc48d5SJohn Snow}
1556dfdc48d5SJohn Snow
1557dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1558dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1559dfdc48d5SJohn Snow
1560dfdc48d5SJohn Snow--- Reference Backup #1 ---
1561dfdc48d5SJohn Snow
1562dfdc48d5SJohn Snow{}
1563dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1564dfdc48d5SJohn Snow{"return": {}}
1565dfdc48d5SJohn Snow{}
1566dfdc48d5SJohn Snow{}
1567dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1568dfdc48d5SJohn Snow{"return": {}}
1569dfdc48d5SJohn Snow{}
15702d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
1571dfdc48d5SJohn Snow{"return": {}}
1572dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1573dfdc48d5SJohn Snow
15740af2a09cSJohn Snow--- Test Backup #1 ---
1575dfdc48d5SJohn Snow
1576dfdc48d5SJohn Snow{}
1577dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1578dfdc48d5SJohn Snow{"return": {}}
1579dfdc48d5SJohn Snow{}
1580dfdc48d5SJohn Snow{}
1581dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1582dfdc48d5SJohn Snow{"return": {}}
1583dfdc48d5SJohn Snow{}
15842d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
1585dfdc48d5SJohn Snow{"return": {}}
1586dfdc48d5SJohn Snow
1587dfdc48d5SJohn Snow--- Write #2 ---
1588dfdc48d5SJohn Snow
1589dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
1590dfdc48d5SJohn Snow{"return": ""}
1591dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
1592dfdc48d5SJohn Snow{"return": ""}
1593dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
1594dfdc48d5SJohn Snow{"return": ""}
1595dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
1596dfdc48d5SJohn Snow{"return": ""}
1597dfdc48d5SJohn Snow{
1598dfdc48d5SJohn Snow  "bitmaps": {
1599af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
1600af5bcd77SVladimir Sementsov-Ogievskiy      {
1601af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
1602af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
1603af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
1604af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
1605af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
1606af5bcd77SVladimir Sementsov-Ogievskiy      },
1607af5bcd77SVladimir Sementsov-Ogievskiy      {
1608af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
1609af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
1610af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
1611af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
1612af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
1613*006e845bSVladimir Sementsov-Ogievskiy      },
1614dfdc48d5SJohn Snow      {
1615dfdc48d5SJohn Snow        "busy": false,
1616dfdc48d5SJohn Snow        "count": 0,
1617dfdc48d5SJohn Snow        "granularity": 65536,
1618dfdc48d5SJohn Snow        "persistent": false,
161981cbfd50SDaniel P. Berrangé        "recording": false
1620*006e845bSVladimir Sementsov-Ogievskiy      }
1621*006e845bSVladimir Sementsov-Ogievskiy    ],
1622*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
1623dfdc48d5SJohn Snow      {
1624dfdc48d5SJohn Snow        "busy": false,
1625dfdc48d5SJohn Snow        "count": 458752,
1626dfdc48d5SJohn Snow        "granularity": 65536,
1627dfdc48d5SJohn Snow        "persistent": false,
162881cbfd50SDaniel P. Berrangé        "recording": true
1629dfdc48d5SJohn Snow      },
1630dfdc48d5SJohn Snow      {
1631dfdc48d5SJohn Snow        "busy": true,
1632dfdc48d5SJohn Snow        "count": 393216,
1633dfdc48d5SJohn Snow        "granularity": 65536,
1634dfdc48d5SJohn Snow        "name": "bitmap0",
1635dfdc48d5SJohn Snow        "persistent": false,
163681cbfd50SDaniel P. Berrangé        "recording": true
1637dfdc48d5SJohn Snow      }
1638dfdc48d5SJohn Snow    ]
1639dfdc48d5SJohn Snow  }
1640dfdc48d5SJohn Snow}
1641dfdc48d5SJohn Snow
1642dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1643dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1644dfdc48d5SJohn Snow
1645dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
1646dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
1647dfdc48d5SJohn Snow
16480af2a09cSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
1649dfdc48d5SJohn Snow{"return": {}}
16500af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
16510fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1652dfdc48d5SJohn Snow{
1653dfdc48d5SJohn Snow  "bitmaps": {
16545c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1655dfdc48d5SJohn Snow      {
1656dfdc48d5SJohn Snow        "busy": false,
1657dfdc48d5SJohn Snow        "count": 458752,
1658dfdc48d5SJohn Snow        "granularity": 65536,
1659dfdc48d5SJohn Snow        "name": "bitmap0",
1660dfdc48d5SJohn Snow        "persistent": false,
166181cbfd50SDaniel P. Berrangé        "recording": true
1662dfdc48d5SJohn Snow      }
1663dfdc48d5SJohn Snow    ]
1664dfdc48d5SJohn Snow  }
1665dfdc48d5SJohn Snow}
1666dfdc48d5SJohn Snow
1667dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1668dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
1669dfdc48d5SJohn Snow
1670dfdc48d5SJohn Snow--- Write #3 ---
1671dfdc48d5SJohn Snow
1672dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
1673dfdc48d5SJohn Snow{"return": ""}
1674dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
1675dfdc48d5SJohn Snow{"return": ""}
1676dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
1677dfdc48d5SJohn Snow{"return": ""}
1678dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
1679dfdc48d5SJohn Snow{"return": ""}
1680dfdc48d5SJohn Snow{
1681dfdc48d5SJohn Snow  "bitmaps": {
16825c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1683dfdc48d5SJohn Snow      {
1684dfdc48d5SJohn Snow        "busy": false,
1685dfdc48d5SJohn Snow        "count": 786432,
1686dfdc48d5SJohn Snow        "granularity": 65536,
1687dfdc48d5SJohn Snow        "name": "bitmap0",
1688dfdc48d5SJohn Snow        "persistent": false,
168981cbfd50SDaniel P. Berrangé        "recording": true
1690dfdc48d5SJohn Snow      }
1691dfdc48d5SJohn Snow    ]
1692dfdc48d5SJohn Snow  }
1693dfdc48d5SJohn Snow}
1694dfdc48d5SJohn Snow
1695dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1696dfdc48d5SJohn Snowexpecting 12 dirty sectors; have 12. OK!
1697dfdc48d5SJohn Snow
1698dfdc48d5SJohn Snow--- Reference Backup #2 ---
1699dfdc48d5SJohn Snow
1700dfdc48d5SJohn Snow{}
1701dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1702dfdc48d5SJohn Snow{"return": {}}
1703dfdc48d5SJohn Snow{}
1704dfdc48d5SJohn Snow{}
1705dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1706dfdc48d5SJohn Snow{"return": {}}
1707dfdc48d5SJohn Snow{}
17082d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
1709dfdc48d5SJohn Snow{"return": {}}
1710dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1711dfdc48d5SJohn Snow
17120af2a09cSJohn Snow--- Test Backup #2 ---
1713dfdc48d5SJohn Snow
1714dfdc48d5SJohn Snow{}
1715dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1716dfdc48d5SJohn Snow{"return": {}}
1717dfdc48d5SJohn Snow{}
1718dfdc48d5SJohn Snow{}
1719dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1720dfdc48d5SJohn Snow{"return": {}}
1721dfdc48d5SJohn Snow{}
17222d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
1723dfdc48d5SJohn Snow{"return": {}}
17240af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1725dfdc48d5SJohn Snow{"return": {}}
17260af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
17270fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1728dfdc48d5SJohn Snow{
1729dfdc48d5SJohn Snow  "bitmaps": {
17305c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1731dfdc48d5SJohn Snow      {
1732dfdc48d5SJohn Snow        "busy": false,
1733dfdc48d5SJohn Snow        "count": 0,
1734dfdc48d5SJohn Snow        "granularity": 65536,
1735dfdc48d5SJohn Snow        "name": "bitmap0",
1736dfdc48d5SJohn Snow        "persistent": false,
173781cbfd50SDaniel P. Berrangé        "recording": true
1738dfdc48d5SJohn Snow      }
1739dfdc48d5SJohn Snow    ]
1740dfdc48d5SJohn Snow  }
1741dfdc48d5SJohn Snow}
1742dfdc48d5SJohn Snow
1743dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1744dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
1745dfdc48d5SJohn Snow
1746dfdc48d5SJohn Snow--- Cleanup ---
1747dfdc48d5SJohn Snow
1748dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1749dfdc48d5SJohn Snow{"return": {}}
1750dfdc48d5SJohn Snow{
17515c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1752dfdc48d5SJohn Snow}
1753dfdc48d5SJohn Snow
1754dfdc48d5SJohn Snow--- Verification ---
1755dfdc48d5SJohn Snow
1756dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1757dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1758dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1759dfdc48d5SJohn Snow
1760dfdc48d5SJohn Snow
17610af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync always with intermediate failure ===
1762dfdc48d5SJohn Snow
1763dfdc48d5SJohn Snow--- Preparing image & VM ---
1764dfdc48d5SJohn Snow
1765dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
1766dfdc48d5SJohn Snow{"return": {}}
1767dfdc48d5SJohn Snow
1768dfdc48d5SJohn Snow--- Write #0 ---
1769dfdc48d5SJohn Snow
1770dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
1771dfdc48d5SJohn Snow{"return": ""}
1772dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
1773dfdc48d5SJohn Snow{"return": ""}
1774dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
1775dfdc48d5SJohn Snow{"return": ""}
1776dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
1777dfdc48d5SJohn Snow{"return": ""}
1778dfdc48d5SJohn Snow{
17795c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1780dfdc48d5SJohn Snow}
1781dfdc48d5SJohn Snow
1782dfdc48d5SJohn Snow--- Reference Backup #0 ---
1783dfdc48d5SJohn Snow
1784dfdc48d5SJohn Snow{}
1785dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1786dfdc48d5SJohn Snow{"return": {}}
1787dfdc48d5SJohn Snow{}
1788dfdc48d5SJohn Snow{}
1789dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1790dfdc48d5SJohn Snow{"return": {}}
1791dfdc48d5SJohn Snow{}
17922d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
1793dfdc48d5SJohn Snow{"return": {}}
1794dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1795dfdc48d5SJohn Snow
1796dfdc48d5SJohn Snow--- Add Bitmap ---
1797dfdc48d5SJohn Snow
1798dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1799dfdc48d5SJohn Snow{"return": {}}
1800dfdc48d5SJohn Snow
1801dfdc48d5SJohn Snow--- Write #1 ---
1802dfdc48d5SJohn Snow
1803dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
1804dfdc48d5SJohn Snow{"return": ""}
1805dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
1806dfdc48d5SJohn Snow{"return": ""}
1807dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
1808dfdc48d5SJohn Snow{"return": ""}
1809dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
1810dfdc48d5SJohn Snow{"return": ""}
1811dfdc48d5SJohn Snow{
1812dfdc48d5SJohn Snow  "bitmaps": {
18135c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1814dfdc48d5SJohn Snow      {
1815dfdc48d5SJohn Snow        "busy": false,
1816dfdc48d5SJohn Snow        "count": 393216,
1817dfdc48d5SJohn Snow        "granularity": 65536,
1818dfdc48d5SJohn Snow        "name": "bitmap0",
1819dfdc48d5SJohn Snow        "persistent": false,
182081cbfd50SDaniel P. Berrangé        "recording": true
1821dfdc48d5SJohn Snow      }
1822dfdc48d5SJohn Snow    ]
1823dfdc48d5SJohn Snow  }
1824dfdc48d5SJohn Snow}
1825dfdc48d5SJohn Snow
1826dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1827dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
1828dfdc48d5SJohn Snow
1829dfdc48d5SJohn Snow--- Reference Backup #1 ---
1830dfdc48d5SJohn Snow
1831dfdc48d5SJohn Snow{}
1832dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1833dfdc48d5SJohn Snow{"return": {}}
1834dfdc48d5SJohn Snow{}
1835dfdc48d5SJohn Snow{}
1836dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1837dfdc48d5SJohn Snow{"return": {}}
1838dfdc48d5SJohn Snow{}
18392d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
1840dfdc48d5SJohn Snow{"return": {}}
1841dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1842dfdc48d5SJohn Snow
1843dfdc48d5SJohn Snow{"return": ""}
1844dfdc48d5SJohn Snow
18450af2a09cSJohn Snow--- Test Backup #1 ---
1846dfdc48d5SJohn Snow
1847dfdc48d5SJohn Snow{}
1848dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1849dfdc48d5SJohn Snow{"return": {}}
1850dfdc48d5SJohn Snow{}
1851dfdc48d5SJohn Snow{}
1852dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1853dfdc48d5SJohn Snow{"return": {}}
1854dfdc48d5SJohn Snow{}
18552d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
1856dfdc48d5SJohn Snow{"return": {}}
18570af2a09cSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
18580fff1f13SJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 393216, "offset": 65536, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1859dfdc48d5SJohn Snow{
1860dfdc48d5SJohn Snow  "bitmaps": {
18615c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1862dfdc48d5SJohn Snow      {
1863dfdc48d5SJohn Snow        "busy": false,
1864dfdc48d5SJohn Snow        "count": 327680,
1865dfdc48d5SJohn Snow        "granularity": 65536,
1866dfdc48d5SJohn Snow        "name": "bitmap0",
1867dfdc48d5SJohn Snow        "persistent": false,
186881cbfd50SDaniel P. Berrangé        "recording": true
1869dfdc48d5SJohn Snow      }
1870dfdc48d5SJohn Snow    ]
1871dfdc48d5SJohn Snow  }
1872dfdc48d5SJohn Snow}
1873dfdc48d5SJohn Snow
1874dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1875dfdc48d5SJohn Snowexpecting 5 dirty sectors; have 5. OK!
1876dfdc48d5SJohn Snow
1877dfdc48d5SJohn Snow--- Write #3 ---
1878dfdc48d5SJohn Snow
1879dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
1880dfdc48d5SJohn Snow{"return": ""}
1881dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
1882dfdc48d5SJohn Snow{"return": ""}
1883dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
1884dfdc48d5SJohn Snow{"return": ""}
1885dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
1886dfdc48d5SJohn Snow{"return": ""}
1887dfdc48d5SJohn Snow{
1888dfdc48d5SJohn Snow  "bitmaps": {
18895c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1890dfdc48d5SJohn Snow      {
1891dfdc48d5SJohn Snow        "busy": false,
1892dfdc48d5SJohn Snow        "count": 851968,
1893dfdc48d5SJohn Snow        "granularity": 65536,
1894dfdc48d5SJohn Snow        "name": "bitmap0",
1895dfdc48d5SJohn Snow        "persistent": false,
189681cbfd50SDaniel P. Berrangé        "recording": true
1897dfdc48d5SJohn Snow      }
1898dfdc48d5SJohn Snow    ]
1899dfdc48d5SJohn Snow  }
1900dfdc48d5SJohn Snow}
1901dfdc48d5SJohn Snow
1902dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1903dfdc48d5SJohn Snowexpecting 13 dirty sectors; have 13. OK!
1904dfdc48d5SJohn Snow
1905dfdc48d5SJohn Snow--- Reference Backup #2 ---
1906dfdc48d5SJohn Snow
1907dfdc48d5SJohn Snow{}
1908dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1909dfdc48d5SJohn Snow{"return": {}}
1910dfdc48d5SJohn Snow{}
1911dfdc48d5SJohn Snow{}
1912dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1913dfdc48d5SJohn Snow{"return": {}}
1914dfdc48d5SJohn Snow{}
19152d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
1916dfdc48d5SJohn Snow{"return": {}}
1917dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1918dfdc48d5SJohn Snow
19190af2a09cSJohn Snow--- Test Backup #2 ---
1920dfdc48d5SJohn Snow
1921dfdc48d5SJohn Snow{}
1922dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1923dfdc48d5SJohn Snow{"return": {}}
1924dfdc48d5SJohn Snow{}
1925dfdc48d5SJohn Snow{}
1926dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1927dfdc48d5SJohn Snow{"return": {}}
1928dfdc48d5SJohn Snow{}
19292d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
1930dfdc48d5SJohn Snow{"return": {}}
19310af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1932dfdc48d5SJohn Snow{"return": {}}
19330af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
19340fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 851968, "offset": 851968, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1935dfdc48d5SJohn Snow{
1936dfdc48d5SJohn Snow  "bitmaps": {
19375c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
1938dfdc48d5SJohn Snow      {
1939dfdc48d5SJohn Snow        "busy": false,
1940dfdc48d5SJohn Snow        "count": 0,
1941dfdc48d5SJohn Snow        "granularity": 65536,
1942dfdc48d5SJohn Snow        "name": "bitmap0",
1943dfdc48d5SJohn Snow        "persistent": false,
194481cbfd50SDaniel P. Berrangé        "recording": true
1945dfdc48d5SJohn Snow      }
1946dfdc48d5SJohn Snow    ]
1947dfdc48d5SJohn Snow  }
1948dfdc48d5SJohn Snow}
1949dfdc48d5SJohn Snow
1950dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
1951dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
1952dfdc48d5SJohn Snow
1953dfdc48d5SJohn Snow--- Cleanup ---
1954dfdc48d5SJohn Snow
1955dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1956dfdc48d5SJohn Snow{"return": {}}
1957dfdc48d5SJohn Snow{
19585c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1959dfdc48d5SJohn Snow}
1960dfdc48d5SJohn Snow
1961dfdc48d5SJohn Snow--- Verification ---
1962dfdc48d5SJohn Snow
1963dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1964dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1965dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1966dfdc48d5SJohn Snow
1967dfdc48d5SJohn Snow
19680af2a09cSJohn Snow=== Mode bitmap; Bitmap Sync always without failure ===
1969dfdc48d5SJohn Snow
1970dfdc48d5SJohn Snow--- Preparing image & VM ---
1971dfdc48d5SJohn Snow
1972dfdc48d5SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1973dfdc48d5SJohn Snow{"return": {}}
1974dfdc48d5SJohn Snow
1975dfdc48d5SJohn Snow--- Write #0 ---
1976dfdc48d5SJohn Snow
1977dfdc48d5SJohn Snowwrite -P0x49 0x0000000 0x10000
1978dfdc48d5SJohn Snow{"return": ""}
1979dfdc48d5SJohn Snowwrite -P0x6c 0x0100000 0x10000
1980dfdc48d5SJohn Snow{"return": ""}
1981dfdc48d5SJohn Snowwrite -P0x6f 0x2000000 0x10000
1982dfdc48d5SJohn Snow{"return": ""}
1983dfdc48d5SJohn Snowwrite -P0x76 0x3ff0000 0x10000
1984dfdc48d5SJohn Snow{"return": ""}
1985dfdc48d5SJohn Snow{
19865c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
1987dfdc48d5SJohn Snow}
1988dfdc48d5SJohn Snow
1989dfdc48d5SJohn Snow--- Reference Backup #0 ---
1990dfdc48d5SJohn Snow
1991dfdc48d5SJohn Snow{}
1992dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1993dfdc48d5SJohn Snow{"return": {}}
1994dfdc48d5SJohn Snow{}
1995dfdc48d5SJohn Snow{}
1996dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1997dfdc48d5SJohn Snow{"return": {}}
1998dfdc48d5SJohn Snow{}
19992d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
2000dfdc48d5SJohn Snow{"return": {}}
2001dfdc48d5SJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2002dfdc48d5SJohn Snow
2003dfdc48d5SJohn Snow--- Add Bitmap ---
2004dfdc48d5SJohn Snow
2005dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2006dfdc48d5SJohn Snow{"return": {}}
2007dfdc48d5SJohn Snow
2008dfdc48d5SJohn Snow--- Write #1 ---
2009dfdc48d5SJohn Snow
2010dfdc48d5SJohn Snowwrite -P0x65 0x0000000 0x10000
2011dfdc48d5SJohn Snow{"return": ""}
2012dfdc48d5SJohn Snowwrite -P0x77 0x00f8000 0x10000
2013dfdc48d5SJohn Snow{"return": ""}
2014dfdc48d5SJohn Snowwrite -P0x72 0x2008000 0x10000
2015dfdc48d5SJohn Snow{"return": ""}
2016dfdc48d5SJohn Snowwrite -P0x69 0x3fe0000 0x10000
2017dfdc48d5SJohn Snow{"return": ""}
2018dfdc48d5SJohn Snow{
2019dfdc48d5SJohn Snow  "bitmaps": {
20205c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2021dfdc48d5SJohn Snow      {
2022dfdc48d5SJohn Snow        "busy": false,
2023dfdc48d5SJohn Snow        "count": 393216,
2024dfdc48d5SJohn Snow        "granularity": 65536,
2025dfdc48d5SJohn Snow        "name": "bitmap0",
2026dfdc48d5SJohn Snow        "persistent": false,
202781cbfd50SDaniel P. Berrangé        "recording": true
2028dfdc48d5SJohn Snow      }
2029dfdc48d5SJohn Snow    ]
2030dfdc48d5SJohn Snow  }
2031dfdc48d5SJohn Snow}
2032dfdc48d5SJohn Snow
2033dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
2034dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
2035dfdc48d5SJohn Snow
2036dfdc48d5SJohn Snow--- Reference Backup #1 ---
2037dfdc48d5SJohn Snow
2038dfdc48d5SJohn Snow{}
2039dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2040dfdc48d5SJohn Snow{"return": {}}
2041dfdc48d5SJohn Snow{}
2042dfdc48d5SJohn Snow{}
2043dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2044dfdc48d5SJohn Snow{"return": {}}
2045dfdc48d5SJohn Snow{}
20462d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
2047dfdc48d5SJohn Snow{"return": {}}
2048dfdc48d5SJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2049dfdc48d5SJohn Snow
20500af2a09cSJohn Snow--- Test Backup #1 ---
2051dfdc48d5SJohn Snow
2052dfdc48d5SJohn Snow{}
2053dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2054dfdc48d5SJohn Snow{"return": {}}
2055dfdc48d5SJohn Snow{}
2056dfdc48d5SJohn Snow{}
2057dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2058dfdc48d5SJohn Snow{"return": {}}
2059dfdc48d5SJohn Snow{}
20602d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
2061dfdc48d5SJohn Snow{"return": {}}
2062dfdc48d5SJohn Snow
2063dfdc48d5SJohn Snow--- Write #2 ---
2064dfdc48d5SJohn Snow
2065dfdc48d5SJohn Snowwrite -P0x74 0x0010000 0x10000
2066dfdc48d5SJohn Snow{"return": ""}
2067dfdc48d5SJohn Snowwrite -P0x69 0x00e8000 0x10000
2068dfdc48d5SJohn Snow{"return": ""}
2069dfdc48d5SJohn Snowwrite -P0x6e 0x2018000 0x10000
2070dfdc48d5SJohn Snow{"return": ""}
2071dfdc48d5SJohn Snowwrite -P0x67 0x3fe0000 0x20000
2072dfdc48d5SJohn Snow{"return": ""}
2073dfdc48d5SJohn Snow{
2074dfdc48d5SJohn Snow  "bitmaps": {
2075af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
2076af5bcd77SVladimir Sementsov-Ogievskiy      {
2077af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2078af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
2079af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2080af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2081af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2082af5bcd77SVladimir Sementsov-Ogievskiy      },
2083af5bcd77SVladimir Sementsov-Ogievskiy      {
2084af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2085af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
2086af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2087af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2088af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2089*006e845bSVladimir Sementsov-Ogievskiy      },
2090dfdc48d5SJohn Snow      {
2091dfdc48d5SJohn Snow        "busy": false,
2092dfdc48d5SJohn Snow        "count": 0,
2093dfdc48d5SJohn Snow        "granularity": 65536,
2094dfdc48d5SJohn Snow        "persistent": false,
209581cbfd50SDaniel P. Berrangé        "recording": false
2096*006e845bSVladimir Sementsov-Ogievskiy      }
2097*006e845bSVladimir Sementsov-Ogievskiy    ],
2098*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
2099dfdc48d5SJohn Snow      {
2100dfdc48d5SJohn Snow        "busy": false,
2101dfdc48d5SJohn Snow        "count": 458752,
2102dfdc48d5SJohn Snow        "granularity": 65536,
2103dfdc48d5SJohn Snow        "persistent": false,
210481cbfd50SDaniel P. Berrangé        "recording": true
2105dfdc48d5SJohn Snow      },
2106dfdc48d5SJohn Snow      {
2107dfdc48d5SJohn Snow        "busy": true,
2108dfdc48d5SJohn Snow        "count": 393216,
2109dfdc48d5SJohn Snow        "granularity": 65536,
2110dfdc48d5SJohn Snow        "name": "bitmap0",
2111dfdc48d5SJohn Snow        "persistent": false,
211281cbfd50SDaniel P. Berrangé        "recording": true
2113dfdc48d5SJohn Snow      }
2114dfdc48d5SJohn Snow    ]
2115dfdc48d5SJohn Snow  }
2116dfdc48d5SJohn Snow}
2117dfdc48d5SJohn Snow
2118dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
2119dfdc48d5SJohn Snowexpecting 6 dirty sectors; have 6. OK!
2120dfdc48d5SJohn Snow
2121dfdc48d5SJohn Snow= Checking Bitmap (anonymous) =
2122dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
2123dfdc48d5SJohn Snow
21240af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2125dfdc48d5SJohn Snow{"return": {}}
21260af2a09cSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
21270fff1f13SJohn Snow{"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2128dfdc48d5SJohn Snow{
2129dfdc48d5SJohn Snow  "bitmaps": {
21305c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2131dfdc48d5SJohn Snow      {
2132dfdc48d5SJohn Snow        "busy": false,
2133dfdc48d5SJohn Snow        "count": 458752,
2134dfdc48d5SJohn Snow        "granularity": 65536,
2135dfdc48d5SJohn Snow        "name": "bitmap0",
2136dfdc48d5SJohn Snow        "persistent": false,
213781cbfd50SDaniel P. Berrangé        "recording": true
2138dfdc48d5SJohn Snow      }
2139dfdc48d5SJohn Snow    ]
2140dfdc48d5SJohn Snow  }
2141dfdc48d5SJohn Snow}
2142dfdc48d5SJohn Snow
2143dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
2144dfdc48d5SJohn Snowexpecting 7 dirty sectors; have 7. OK!
2145dfdc48d5SJohn Snow
2146dfdc48d5SJohn Snow--- Write #3 ---
2147dfdc48d5SJohn Snow
2148dfdc48d5SJohn Snowwrite -P0xaa 0x0010000 0x30000
2149dfdc48d5SJohn Snow{"return": ""}
2150dfdc48d5SJohn Snowwrite -P0xbb 0x00d8000 0x10000
2151dfdc48d5SJohn Snow{"return": ""}
2152dfdc48d5SJohn Snowwrite -P0xcc 0x2028000 0x10000
2153dfdc48d5SJohn Snow{"return": ""}
2154dfdc48d5SJohn Snowwrite -P0xdd 0x3fc0000 0x10000
2155dfdc48d5SJohn Snow{"return": ""}
2156dfdc48d5SJohn Snow{
2157dfdc48d5SJohn Snow  "bitmaps": {
21585c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2159dfdc48d5SJohn Snow      {
2160dfdc48d5SJohn Snow        "busy": false,
2161dfdc48d5SJohn Snow        "count": 786432,
2162dfdc48d5SJohn Snow        "granularity": 65536,
2163dfdc48d5SJohn Snow        "name": "bitmap0",
2164dfdc48d5SJohn Snow        "persistent": false,
216581cbfd50SDaniel P. Berrangé        "recording": true
2166dfdc48d5SJohn Snow      }
2167dfdc48d5SJohn Snow    ]
2168dfdc48d5SJohn Snow  }
2169dfdc48d5SJohn Snow}
2170dfdc48d5SJohn Snow
2171dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
2172dfdc48d5SJohn Snowexpecting 12 dirty sectors; have 12. OK!
2173dfdc48d5SJohn Snow
2174dfdc48d5SJohn Snow--- Reference Backup #2 ---
2175dfdc48d5SJohn Snow
2176dfdc48d5SJohn Snow{}
2177dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2178dfdc48d5SJohn Snow{"return": {}}
2179dfdc48d5SJohn Snow{}
2180dfdc48d5SJohn Snow{}
2181dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2182dfdc48d5SJohn Snow{"return": {}}
2183dfdc48d5SJohn Snow{}
21842d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
2185dfdc48d5SJohn Snow{"return": {}}
2186dfdc48d5SJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2187dfdc48d5SJohn Snow
21880af2a09cSJohn Snow--- Test Backup #2 ---
2189dfdc48d5SJohn Snow
2190dfdc48d5SJohn Snow{}
2191dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2192dfdc48d5SJohn Snow{"return": {}}
2193dfdc48d5SJohn Snow{}
2194dfdc48d5SJohn Snow{}
2195dfdc48d5SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2196dfdc48d5SJohn Snow{"return": {}}
2197dfdc48d5SJohn Snow{}
21982d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
2199dfdc48d5SJohn Snow{"return": {}}
22000af2a09cSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2201dfdc48d5SJohn Snow{"return": {}}
22020af2a09cSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
22030fff1f13SJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2204dfdc48d5SJohn Snow{
2205dfdc48d5SJohn Snow  "bitmaps": {
22065c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2207dfdc48d5SJohn Snow      {
2208dfdc48d5SJohn Snow        "busy": false,
2209dfdc48d5SJohn Snow        "count": 0,
2210dfdc48d5SJohn Snow        "granularity": 65536,
2211dfdc48d5SJohn Snow        "name": "bitmap0",
2212dfdc48d5SJohn Snow        "persistent": false,
221381cbfd50SDaniel P. Berrangé        "recording": true
2214dfdc48d5SJohn Snow      }
2215dfdc48d5SJohn Snow    ]
2216dfdc48d5SJohn Snow  }
2217dfdc48d5SJohn Snow}
2218dfdc48d5SJohn Snow
2219dfdc48d5SJohn Snow= Checking Bitmap bitmap0 =
2220dfdc48d5SJohn Snowexpecting 0 dirty sectors; have 0. OK!
2221dfdc48d5SJohn Snow
2222dfdc48d5SJohn Snow--- Cleanup ---
2223dfdc48d5SJohn Snow
2224dfdc48d5SJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2225dfdc48d5SJohn Snow{"return": {}}
2226dfdc48d5SJohn Snow{
22275c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2228dfdc48d5SJohn Snow}
2229dfdc48d5SJohn Snow
2230dfdc48d5SJohn Snow--- Verification ---
2231dfdc48d5SJohn Snow
2232dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2233dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2234dfdc48d5SJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2235dfdc48d5SJohn Snow
2236352092d3SJohn Snow
2237bd5ceebfSJohn Snow=== Mode full; Bitmap Sync on-success with simulated failure ===
2238bd5ceebfSJohn Snow
2239bd5ceebfSJohn Snow--- Preparing image & VM ---
2240bd5ceebfSJohn Snow
2241bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2242bd5ceebfSJohn Snow{"return": {}}
2243bd5ceebfSJohn Snow
2244bd5ceebfSJohn Snow--- Write #0 ---
2245bd5ceebfSJohn Snow
2246bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
2247bd5ceebfSJohn Snow{"return": ""}
2248bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
2249bd5ceebfSJohn Snow{"return": ""}
2250bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
2251bd5ceebfSJohn Snow{"return": ""}
2252bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
2253bd5ceebfSJohn Snow{"return": ""}
2254bd5ceebfSJohn Snow{
22555c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2256bd5ceebfSJohn Snow}
2257bd5ceebfSJohn Snow
2258bd5ceebfSJohn Snow--- Reference Backup #0 ---
2259bd5ceebfSJohn Snow
2260bd5ceebfSJohn Snow{}
2261bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2262bd5ceebfSJohn Snow{"return": {}}
2263bd5ceebfSJohn Snow{}
2264bd5ceebfSJohn Snow{}
2265bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2266bd5ceebfSJohn Snow{"return": {}}
2267bd5ceebfSJohn Snow{}
22682d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
2269bd5ceebfSJohn Snow{"return": {}}
2270bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2271bd5ceebfSJohn Snow
2272bd5ceebfSJohn Snow--- Add Bitmap ---
2273bd5ceebfSJohn Snow
2274bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2275bd5ceebfSJohn Snow{"return": {}}
2276bd5ceebfSJohn Snow
2277bd5ceebfSJohn Snow--- Write #1 ---
2278bd5ceebfSJohn Snow
2279bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
2280bd5ceebfSJohn Snow{"return": ""}
2281bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
2282bd5ceebfSJohn Snow{"return": ""}
2283bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
2284bd5ceebfSJohn Snow{"return": ""}
2285bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
2286bd5ceebfSJohn Snow{"return": ""}
2287bd5ceebfSJohn Snow{
2288bd5ceebfSJohn Snow  "bitmaps": {
22895c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2290bd5ceebfSJohn Snow      {
2291bd5ceebfSJohn Snow        "busy": false,
2292bd5ceebfSJohn Snow        "count": 393216,
2293bd5ceebfSJohn Snow        "granularity": 65536,
2294bd5ceebfSJohn Snow        "name": "bitmap0",
2295bd5ceebfSJohn Snow        "persistent": false,
229681cbfd50SDaniel P. Berrangé        "recording": true
2297bd5ceebfSJohn Snow      }
2298bd5ceebfSJohn Snow    ]
2299bd5ceebfSJohn Snow  }
2300bd5ceebfSJohn Snow}
2301bd5ceebfSJohn Snow
2302bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2303bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2304bd5ceebfSJohn Snow
2305bd5ceebfSJohn Snow--- Reference Backup #1 ---
2306bd5ceebfSJohn Snow
2307bd5ceebfSJohn Snow{}
2308bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2309bd5ceebfSJohn Snow{"return": {}}
2310bd5ceebfSJohn Snow{}
2311bd5ceebfSJohn Snow{}
2312bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2313bd5ceebfSJohn Snow{"return": {}}
2314bd5ceebfSJohn Snow{}
23152d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
2316bd5ceebfSJohn Snow{"return": {}}
2317bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2318bd5ceebfSJohn Snow
2319bd5ceebfSJohn Snow--- Test Backup #1 ---
2320bd5ceebfSJohn Snow
2321bd5ceebfSJohn Snow{}
2322bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2323bd5ceebfSJohn Snow{"return": {}}
2324bd5ceebfSJohn Snow{}
2325bd5ceebfSJohn Snow{}
2326bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2327bd5ceebfSJohn Snow{"return": {}}
2328bd5ceebfSJohn Snow{}
23292d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
2330bd5ceebfSJohn Snow{"return": {}}
2331bd5ceebfSJohn Snow
2332bd5ceebfSJohn Snow--- Write #2 ---
2333bd5ceebfSJohn Snow
2334bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
2335bd5ceebfSJohn Snow{"return": ""}
2336bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
2337bd5ceebfSJohn Snow{"return": ""}
2338bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
2339bd5ceebfSJohn Snow{"return": ""}
2340bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
2341bd5ceebfSJohn Snow{"return": ""}
2342bd5ceebfSJohn Snow{
2343bd5ceebfSJohn Snow  "bitmaps": {
2344af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
2345af5bcd77SVladimir Sementsov-Ogievskiy      {
2346af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2347af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
2348af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2349af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2350af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2351af5bcd77SVladimir Sementsov-Ogievskiy      },
2352af5bcd77SVladimir Sementsov-Ogievskiy      {
2353af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2354af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
2355af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2356af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2357af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2358*006e845bSVladimir Sementsov-Ogievskiy      },
2359bd5ceebfSJohn Snow      {
2360bd5ceebfSJohn Snow        "busy": false,
2361bd5ceebfSJohn Snow        "count": 0,
2362bd5ceebfSJohn Snow        "granularity": 65536,
2363bd5ceebfSJohn Snow        "persistent": false,
236481cbfd50SDaniel P. Berrangé        "recording": false
2365*006e845bSVladimir Sementsov-Ogievskiy      }
2366*006e845bSVladimir Sementsov-Ogievskiy    ],
2367*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
2368bd5ceebfSJohn Snow      {
2369bd5ceebfSJohn Snow        "busy": false,
2370bd5ceebfSJohn Snow        "count": 458752,
2371bd5ceebfSJohn Snow        "granularity": 65536,
2372bd5ceebfSJohn Snow        "persistent": false,
237381cbfd50SDaniel P. Berrangé        "recording": true
2374bd5ceebfSJohn Snow      },
2375bd5ceebfSJohn Snow      {
2376bd5ceebfSJohn Snow        "busy": true,
2377bd5ceebfSJohn Snow        "count": 393216,
2378bd5ceebfSJohn Snow        "granularity": 65536,
2379bd5ceebfSJohn Snow        "name": "bitmap0",
2380bd5ceebfSJohn Snow        "persistent": false,
238181cbfd50SDaniel P. Berrangé        "recording": true
2382bd5ceebfSJohn Snow      }
2383bd5ceebfSJohn Snow    ]
2384bd5ceebfSJohn Snow  }
2385bd5ceebfSJohn Snow}
2386bd5ceebfSJohn Snow
2387bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2388bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2389bd5ceebfSJohn Snow
2390bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
2391bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
2392bd5ceebfSJohn Snow
2393bd5ceebfSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2394bd5ceebfSJohn Snow{"return": {}}
2395bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2396bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2397bd5ceebfSJohn Snow{
2398bd5ceebfSJohn Snow  "bitmaps": {
23995c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2400bd5ceebfSJohn Snow      {
2401bd5ceebfSJohn Snow        "busy": false,
2402bd5ceebfSJohn Snow        "count": 655360,
2403bd5ceebfSJohn Snow        "granularity": 65536,
2404bd5ceebfSJohn Snow        "name": "bitmap0",
2405bd5ceebfSJohn Snow        "persistent": false,
240681cbfd50SDaniel P. Berrangé        "recording": true
2407bd5ceebfSJohn Snow      }
2408bd5ceebfSJohn Snow    ]
2409bd5ceebfSJohn Snow  }
2410bd5ceebfSJohn Snow}
2411bd5ceebfSJohn Snow
2412bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2413bd5ceebfSJohn Snowexpecting 10 dirty sectors; have 10. OK!
2414bd5ceebfSJohn Snow
2415bd5ceebfSJohn Snow--- Write #3 ---
2416bd5ceebfSJohn Snow
2417bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
2418bd5ceebfSJohn Snow{"return": ""}
2419bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
2420bd5ceebfSJohn Snow{"return": ""}
2421bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
2422bd5ceebfSJohn Snow{"return": ""}
2423bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
2424bd5ceebfSJohn Snow{"return": ""}
2425bd5ceebfSJohn Snow{
2426bd5ceebfSJohn Snow  "bitmaps": {
24275c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2428bd5ceebfSJohn Snow      {
2429bd5ceebfSJohn Snow        "busy": false,
2430bd5ceebfSJohn Snow        "count": 983040,
2431bd5ceebfSJohn Snow        "granularity": 65536,
2432bd5ceebfSJohn Snow        "name": "bitmap0",
2433bd5ceebfSJohn Snow        "persistent": false,
243481cbfd50SDaniel P. Berrangé        "recording": true
2435bd5ceebfSJohn Snow      }
2436bd5ceebfSJohn Snow    ]
2437bd5ceebfSJohn Snow  }
2438bd5ceebfSJohn Snow}
2439bd5ceebfSJohn Snow
2440bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2441bd5ceebfSJohn Snowexpecting 15 dirty sectors; have 15. OK!
2442bd5ceebfSJohn Snow
2443bd5ceebfSJohn Snow--- Reference Backup #2 ---
2444bd5ceebfSJohn Snow
2445bd5ceebfSJohn Snow{}
2446bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2447bd5ceebfSJohn Snow{"return": {}}
2448bd5ceebfSJohn Snow{}
2449bd5ceebfSJohn Snow{}
2450bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2451bd5ceebfSJohn Snow{"return": {}}
2452bd5ceebfSJohn Snow{}
24532d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
2454bd5ceebfSJohn Snow{"return": {}}
2455bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2456bd5ceebfSJohn Snow
2457bd5ceebfSJohn Snow--- Test Backup #2 ---
2458bd5ceebfSJohn Snow
2459bd5ceebfSJohn Snow{}
2460bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2461bd5ceebfSJohn Snow{"return": {}}
2462bd5ceebfSJohn Snow{}
2463bd5ceebfSJohn Snow{}
2464bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2465bd5ceebfSJohn Snow{"return": {}}
2466bd5ceebfSJohn Snow{}
24672d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
2468bd5ceebfSJohn Snow{"return": {}}
2469bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2470bd5ceebfSJohn Snow{"return": {}}
2471bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2472bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2473bd5ceebfSJohn Snow{
2474bd5ceebfSJohn Snow  "bitmaps": {
24755c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2476bd5ceebfSJohn Snow      {
2477bd5ceebfSJohn Snow        "busy": false,
2478bd5ceebfSJohn Snow        "count": 0,
2479bd5ceebfSJohn Snow        "granularity": 65536,
2480bd5ceebfSJohn Snow        "name": "bitmap0",
2481bd5ceebfSJohn Snow        "persistent": false,
248281cbfd50SDaniel P. Berrangé        "recording": true
2483bd5ceebfSJohn Snow      }
2484bd5ceebfSJohn Snow    ]
2485bd5ceebfSJohn Snow  }
2486bd5ceebfSJohn Snow}
2487bd5ceebfSJohn Snow
2488bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2489bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
2490bd5ceebfSJohn Snow
2491bd5ceebfSJohn Snow--- Cleanup ---
2492bd5ceebfSJohn Snow
2493bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2494bd5ceebfSJohn Snow{"return": {}}
2495bd5ceebfSJohn Snow{
24965c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2497bd5ceebfSJohn Snow}
2498bd5ceebfSJohn Snow
2499bd5ceebfSJohn Snow--- Verification ---
2500bd5ceebfSJohn Snow
2501bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2502bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2503bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2504bd5ceebfSJohn Snow
2505bd5ceebfSJohn Snow
2506bd5ceebfSJohn Snow=== Mode full; Bitmap Sync on-success with intermediate failure ===
2507bd5ceebfSJohn Snow
2508bd5ceebfSJohn Snow--- Preparing image & VM ---
2509bd5ceebfSJohn Snow
2510bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
2511bd5ceebfSJohn Snow{"return": {}}
2512bd5ceebfSJohn Snow
2513bd5ceebfSJohn Snow--- Write #0 ---
2514bd5ceebfSJohn Snow
2515bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
2516bd5ceebfSJohn Snow{"return": ""}
2517bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
2518bd5ceebfSJohn Snow{"return": ""}
2519bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
2520bd5ceebfSJohn Snow{"return": ""}
2521bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
2522bd5ceebfSJohn Snow{"return": ""}
2523bd5ceebfSJohn Snow{
25245c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2525bd5ceebfSJohn Snow}
2526bd5ceebfSJohn Snow
2527bd5ceebfSJohn Snow--- Reference Backup #0 ---
2528bd5ceebfSJohn Snow
2529bd5ceebfSJohn Snow{}
2530bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2531bd5ceebfSJohn Snow{"return": {}}
2532bd5ceebfSJohn Snow{}
2533bd5ceebfSJohn Snow{}
2534bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2535bd5ceebfSJohn Snow{"return": {}}
2536bd5ceebfSJohn Snow{}
25372d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
2538bd5ceebfSJohn Snow{"return": {}}
2539bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2540bd5ceebfSJohn Snow
2541bd5ceebfSJohn Snow--- Add Bitmap ---
2542bd5ceebfSJohn Snow
2543bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2544bd5ceebfSJohn Snow{"return": {}}
2545bd5ceebfSJohn Snow
2546bd5ceebfSJohn Snow--- Write #1 ---
2547bd5ceebfSJohn Snow
2548bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
2549bd5ceebfSJohn Snow{"return": ""}
2550bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
2551bd5ceebfSJohn Snow{"return": ""}
2552bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
2553bd5ceebfSJohn Snow{"return": ""}
2554bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
2555bd5ceebfSJohn Snow{"return": ""}
2556bd5ceebfSJohn Snow{
2557bd5ceebfSJohn Snow  "bitmaps": {
25585c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2559bd5ceebfSJohn Snow      {
2560bd5ceebfSJohn Snow        "busy": false,
2561bd5ceebfSJohn Snow        "count": 393216,
2562bd5ceebfSJohn Snow        "granularity": 65536,
2563bd5ceebfSJohn Snow        "name": "bitmap0",
2564bd5ceebfSJohn Snow        "persistent": false,
256581cbfd50SDaniel P. Berrangé        "recording": true
2566bd5ceebfSJohn Snow      }
2567bd5ceebfSJohn Snow    ]
2568bd5ceebfSJohn Snow  }
2569bd5ceebfSJohn Snow}
2570bd5ceebfSJohn Snow
2571bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2572bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2573bd5ceebfSJohn Snow
2574bd5ceebfSJohn Snow--- Reference Backup #1 ---
2575bd5ceebfSJohn Snow
2576bd5ceebfSJohn Snow{}
2577bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2578bd5ceebfSJohn Snow{"return": {}}
2579bd5ceebfSJohn Snow{}
2580bd5ceebfSJohn Snow{}
2581bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2582bd5ceebfSJohn Snow{"return": {}}
2583bd5ceebfSJohn Snow{}
25842d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
2585bd5ceebfSJohn Snow{"return": {}}
2586bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2587bd5ceebfSJohn Snow
2588bd5ceebfSJohn Snow{"return": ""}
2589bd5ceebfSJohn Snow
2590bd5ceebfSJohn Snow--- Test Backup #1 ---
2591bd5ceebfSJohn Snow
2592bd5ceebfSJohn Snow{}
2593bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2594bd5ceebfSJohn Snow{"return": {}}
2595bd5ceebfSJohn Snow{}
2596bd5ceebfSJohn Snow{}
2597bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2598bd5ceebfSJohn Snow{"return": {}}
2599bd5ceebfSJohn Snow{}
26002d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
2601bd5ceebfSJohn Snow{"return": {}}
2602bd5ceebfSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2603bd5ceebfSJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 67108864, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2604bd5ceebfSJohn Snow{
2605bd5ceebfSJohn Snow  "bitmaps": {
26065c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2607bd5ceebfSJohn Snow      {
2608bd5ceebfSJohn Snow        "busy": false,
2609bd5ceebfSJohn Snow        "count": 393216,
2610bd5ceebfSJohn Snow        "granularity": 65536,
2611bd5ceebfSJohn Snow        "name": "bitmap0",
2612bd5ceebfSJohn Snow        "persistent": false,
261381cbfd50SDaniel P. Berrangé        "recording": true
2614bd5ceebfSJohn Snow      }
2615bd5ceebfSJohn Snow    ]
2616bd5ceebfSJohn Snow  }
2617bd5ceebfSJohn Snow}
2618bd5ceebfSJohn Snow
2619bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2620bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2621bd5ceebfSJohn Snow
2622bd5ceebfSJohn Snow--- Write #3 ---
2623bd5ceebfSJohn Snow
2624bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
2625bd5ceebfSJohn Snow{"return": ""}
2626bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
2627bd5ceebfSJohn Snow{"return": ""}
2628bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
2629bd5ceebfSJohn Snow{"return": ""}
2630bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
2631bd5ceebfSJohn Snow{"return": ""}
2632bd5ceebfSJohn Snow{
2633bd5ceebfSJohn Snow  "bitmaps": {
26345c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2635bd5ceebfSJohn Snow      {
2636bd5ceebfSJohn Snow        "busy": false,
2637bd5ceebfSJohn Snow        "count": 917504,
2638bd5ceebfSJohn Snow        "granularity": 65536,
2639bd5ceebfSJohn Snow        "name": "bitmap0",
2640bd5ceebfSJohn Snow        "persistent": false,
264181cbfd50SDaniel P. Berrangé        "recording": true
2642bd5ceebfSJohn Snow      }
2643bd5ceebfSJohn Snow    ]
2644bd5ceebfSJohn Snow  }
2645bd5ceebfSJohn Snow}
2646bd5ceebfSJohn Snow
2647bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2648bd5ceebfSJohn Snowexpecting 14 dirty sectors; have 14. OK!
2649bd5ceebfSJohn Snow
2650bd5ceebfSJohn Snow--- Reference Backup #2 ---
2651bd5ceebfSJohn Snow
2652bd5ceebfSJohn Snow{}
2653bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2654bd5ceebfSJohn Snow{"return": {}}
2655bd5ceebfSJohn Snow{}
2656bd5ceebfSJohn Snow{}
2657bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2658bd5ceebfSJohn Snow{"return": {}}
2659bd5ceebfSJohn Snow{}
26602d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
2661bd5ceebfSJohn Snow{"return": {}}
2662bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2663bd5ceebfSJohn Snow
2664bd5ceebfSJohn Snow--- Test Backup #2 ---
2665bd5ceebfSJohn Snow
2666bd5ceebfSJohn Snow{}
2667bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2668bd5ceebfSJohn Snow{"return": {}}
2669bd5ceebfSJohn Snow{}
2670bd5ceebfSJohn Snow{}
2671bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2672bd5ceebfSJohn Snow{"return": {}}
2673bd5ceebfSJohn Snow{}
26742d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
2675bd5ceebfSJohn Snow{"return": {}}
2676bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2677bd5ceebfSJohn Snow{"return": {}}
2678bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2679bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2680bd5ceebfSJohn Snow{
2681bd5ceebfSJohn Snow  "bitmaps": {
26825c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2683bd5ceebfSJohn Snow      {
2684bd5ceebfSJohn Snow        "busy": false,
2685bd5ceebfSJohn Snow        "count": 0,
2686bd5ceebfSJohn Snow        "granularity": 65536,
2687bd5ceebfSJohn Snow        "name": "bitmap0",
2688bd5ceebfSJohn Snow        "persistent": false,
268981cbfd50SDaniel P. Berrangé        "recording": true
2690bd5ceebfSJohn Snow      }
2691bd5ceebfSJohn Snow    ]
2692bd5ceebfSJohn Snow  }
2693bd5ceebfSJohn Snow}
2694bd5ceebfSJohn Snow
2695bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2696bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
2697bd5ceebfSJohn Snow
2698bd5ceebfSJohn Snow--- Cleanup ---
2699bd5ceebfSJohn Snow
2700bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2701bd5ceebfSJohn Snow{"return": {}}
2702bd5ceebfSJohn Snow{
27035c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2704bd5ceebfSJohn Snow}
2705bd5ceebfSJohn Snow
2706bd5ceebfSJohn Snow--- Verification ---
2707bd5ceebfSJohn Snow
2708bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
2709bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2710bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2711bd5ceebfSJohn Snow
2712bd5ceebfSJohn Snow
2713bd5ceebfSJohn Snow=== Mode full; Bitmap Sync on-success without failure ===
2714bd5ceebfSJohn Snow
2715bd5ceebfSJohn Snow--- Preparing image & VM ---
2716bd5ceebfSJohn Snow
2717bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2718bd5ceebfSJohn Snow{"return": {}}
2719bd5ceebfSJohn Snow
2720bd5ceebfSJohn Snow--- Write #0 ---
2721bd5ceebfSJohn Snow
2722bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
2723bd5ceebfSJohn Snow{"return": ""}
2724bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
2725bd5ceebfSJohn Snow{"return": ""}
2726bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
2727bd5ceebfSJohn Snow{"return": ""}
2728bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
2729bd5ceebfSJohn Snow{"return": ""}
2730bd5ceebfSJohn Snow{
27315c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2732bd5ceebfSJohn Snow}
2733bd5ceebfSJohn Snow
2734bd5ceebfSJohn Snow--- Reference Backup #0 ---
2735bd5ceebfSJohn Snow
2736bd5ceebfSJohn Snow{}
2737bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2738bd5ceebfSJohn Snow{"return": {}}
2739bd5ceebfSJohn Snow{}
2740bd5ceebfSJohn Snow{}
2741bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2742bd5ceebfSJohn Snow{"return": {}}
2743bd5ceebfSJohn Snow{}
27442d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
2745bd5ceebfSJohn Snow{"return": {}}
2746bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2747bd5ceebfSJohn Snow
2748bd5ceebfSJohn Snow--- Add Bitmap ---
2749bd5ceebfSJohn Snow
2750bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2751bd5ceebfSJohn Snow{"return": {}}
2752bd5ceebfSJohn Snow
2753bd5ceebfSJohn Snow--- Write #1 ---
2754bd5ceebfSJohn Snow
2755bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
2756bd5ceebfSJohn Snow{"return": ""}
2757bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
2758bd5ceebfSJohn Snow{"return": ""}
2759bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
2760bd5ceebfSJohn Snow{"return": ""}
2761bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
2762bd5ceebfSJohn Snow{"return": ""}
2763bd5ceebfSJohn Snow{
2764bd5ceebfSJohn Snow  "bitmaps": {
27655c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2766bd5ceebfSJohn Snow      {
2767bd5ceebfSJohn Snow        "busy": false,
2768bd5ceebfSJohn Snow        "count": 393216,
2769bd5ceebfSJohn Snow        "granularity": 65536,
2770bd5ceebfSJohn Snow        "name": "bitmap0",
2771bd5ceebfSJohn Snow        "persistent": false,
277281cbfd50SDaniel P. Berrangé        "recording": true
2773bd5ceebfSJohn Snow      }
2774bd5ceebfSJohn Snow    ]
2775bd5ceebfSJohn Snow  }
2776bd5ceebfSJohn Snow}
2777bd5ceebfSJohn Snow
2778bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2779bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2780bd5ceebfSJohn Snow
2781bd5ceebfSJohn Snow--- Reference Backup #1 ---
2782bd5ceebfSJohn Snow
2783bd5ceebfSJohn Snow{}
2784bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2785bd5ceebfSJohn Snow{"return": {}}
2786bd5ceebfSJohn Snow{}
2787bd5ceebfSJohn Snow{}
2788bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2789bd5ceebfSJohn Snow{"return": {}}
2790bd5ceebfSJohn Snow{}
27912d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
2792bd5ceebfSJohn Snow{"return": {}}
2793bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2794bd5ceebfSJohn Snow
2795bd5ceebfSJohn Snow--- Test Backup #1 ---
2796bd5ceebfSJohn Snow
2797bd5ceebfSJohn Snow{}
2798bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2799bd5ceebfSJohn Snow{"return": {}}
2800bd5ceebfSJohn Snow{}
2801bd5ceebfSJohn Snow{}
2802bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2803bd5ceebfSJohn Snow{"return": {}}
2804bd5ceebfSJohn Snow{}
28052d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
2806bd5ceebfSJohn Snow{"return": {}}
2807bd5ceebfSJohn Snow
2808bd5ceebfSJohn Snow--- Write #2 ---
2809bd5ceebfSJohn Snow
2810bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
2811bd5ceebfSJohn Snow{"return": ""}
2812bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
2813bd5ceebfSJohn Snow{"return": ""}
2814bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
2815bd5ceebfSJohn Snow{"return": ""}
2816bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
2817bd5ceebfSJohn Snow{"return": ""}
2818bd5ceebfSJohn Snow{
2819bd5ceebfSJohn Snow  "bitmaps": {
2820af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
2821af5bcd77SVladimir Sementsov-Ogievskiy      {
2822af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2823af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
2824af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2825af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2826af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2827af5bcd77SVladimir Sementsov-Ogievskiy      },
2828af5bcd77SVladimir Sementsov-Ogievskiy      {
2829af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
2830af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
2831af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
2832af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
2833af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
2834*006e845bSVladimir Sementsov-Ogievskiy      },
2835bd5ceebfSJohn Snow      {
2836bd5ceebfSJohn Snow        "busy": false,
2837bd5ceebfSJohn Snow        "count": 0,
2838bd5ceebfSJohn Snow        "granularity": 65536,
2839bd5ceebfSJohn Snow        "persistent": false,
284081cbfd50SDaniel P. Berrangé        "recording": false
2841*006e845bSVladimir Sementsov-Ogievskiy      }
2842*006e845bSVladimir Sementsov-Ogievskiy    ],
2843*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
2844bd5ceebfSJohn Snow      {
2845bd5ceebfSJohn Snow        "busy": false,
2846bd5ceebfSJohn Snow        "count": 458752,
2847bd5ceebfSJohn Snow        "granularity": 65536,
2848bd5ceebfSJohn Snow        "persistent": false,
284981cbfd50SDaniel P. Berrangé        "recording": true
2850bd5ceebfSJohn Snow      },
2851bd5ceebfSJohn Snow      {
2852bd5ceebfSJohn Snow        "busy": true,
2853bd5ceebfSJohn Snow        "count": 393216,
2854bd5ceebfSJohn Snow        "granularity": 65536,
2855bd5ceebfSJohn Snow        "name": "bitmap0",
2856bd5ceebfSJohn Snow        "persistent": false,
285781cbfd50SDaniel P. Berrangé        "recording": true
2858bd5ceebfSJohn Snow      }
2859bd5ceebfSJohn Snow    ]
2860bd5ceebfSJohn Snow  }
2861bd5ceebfSJohn Snow}
2862bd5ceebfSJohn Snow
2863bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2864bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
2865bd5ceebfSJohn Snow
2866bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
2867bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
2868bd5ceebfSJohn Snow
2869bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2870bd5ceebfSJohn Snow{"return": {}}
2871bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2872bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2873bd5ceebfSJohn Snow{
2874bd5ceebfSJohn Snow  "bitmaps": {
28755c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2876bd5ceebfSJohn Snow      {
2877bd5ceebfSJohn Snow        "busy": false,
2878bd5ceebfSJohn Snow        "count": 458752,
2879bd5ceebfSJohn Snow        "granularity": 65536,
2880bd5ceebfSJohn Snow        "name": "bitmap0",
2881bd5ceebfSJohn Snow        "persistent": false,
288281cbfd50SDaniel P. Berrangé        "recording": true
2883bd5ceebfSJohn Snow      }
2884bd5ceebfSJohn Snow    ]
2885bd5ceebfSJohn Snow  }
2886bd5ceebfSJohn Snow}
2887bd5ceebfSJohn Snow
2888bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2889bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
2890bd5ceebfSJohn Snow
2891bd5ceebfSJohn Snow--- Write #3 ---
2892bd5ceebfSJohn Snow
2893bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
2894bd5ceebfSJohn Snow{"return": ""}
2895bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
2896bd5ceebfSJohn Snow{"return": ""}
2897bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
2898bd5ceebfSJohn Snow{"return": ""}
2899bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
2900bd5ceebfSJohn Snow{"return": ""}
2901bd5ceebfSJohn Snow{
2902bd5ceebfSJohn Snow  "bitmaps": {
29035c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2904bd5ceebfSJohn Snow      {
2905bd5ceebfSJohn Snow        "busy": false,
2906bd5ceebfSJohn Snow        "count": 786432,
2907bd5ceebfSJohn Snow        "granularity": 65536,
2908bd5ceebfSJohn Snow        "name": "bitmap0",
2909bd5ceebfSJohn Snow        "persistent": false,
291081cbfd50SDaniel P. Berrangé        "recording": true
2911bd5ceebfSJohn Snow      }
2912bd5ceebfSJohn Snow    ]
2913bd5ceebfSJohn Snow  }
2914bd5ceebfSJohn Snow}
2915bd5ceebfSJohn Snow
2916bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2917bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
2918bd5ceebfSJohn Snow
2919bd5ceebfSJohn Snow--- Reference Backup #2 ---
2920bd5ceebfSJohn Snow
2921bd5ceebfSJohn Snow{}
2922bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2923bd5ceebfSJohn Snow{"return": {}}
2924bd5ceebfSJohn Snow{}
2925bd5ceebfSJohn Snow{}
2926bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2927bd5ceebfSJohn Snow{"return": {}}
2928bd5ceebfSJohn Snow{}
29292d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
2930bd5ceebfSJohn Snow{"return": {}}
2931bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2932bd5ceebfSJohn Snow
2933bd5ceebfSJohn Snow--- Test Backup #2 ---
2934bd5ceebfSJohn Snow
2935bd5ceebfSJohn Snow{}
2936bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2937bd5ceebfSJohn Snow{"return": {}}
2938bd5ceebfSJohn Snow{}
2939bd5ceebfSJohn Snow{}
2940bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2941bd5ceebfSJohn Snow{"return": {}}
2942bd5ceebfSJohn Snow{}
29432d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
2944bd5ceebfSJohn Snow{"return": {}}
2945bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2946bd5ceebfSJohn Snow{"return": {}}
2947bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2948bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2949bd5ceebfSJohn Snow{
2950bd5ceebfSJohn Snow  "bitmaps": {
29515c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
2952bd5ceebfSJohn Snow      {
2953bd5ceebfSJohn Snow        "busy": false,
2954bd5ceebfSJohn Snow        "count": 0,
2955bd5ceebfSJohn Snow        "granularity": 65536,
2956bd5ceebfSJohn Snow        "name": "bitmap0",
2957bd5ceebfSJohn Snow        "persistent": false,
295881cbfd50SDaniel P. Berrangé        "recording": true
2959bd5ceebfSJohn Snow      }
2960bd5ceebfSJohn Snow    ]
2961bd5ceebfSJohn Snow  }
2962bd5ceebfSJohn Snow}
2963bd5ceebfSJohn Snow
2964bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
2965bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
2966bd5ceebfSJohn Snow
2967bd5ceebfSJohn Snow--- Cleanup ---
2968bd5ceebfSJohn Snow
2969bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2970bd5ceebfSJohn Snow{"return": {}}
2971bd5ceebfSJohn Snow{
29725c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
2973bd5ceebfSJohn Snow}
2974bd5ceebfSJohn Snow
2975bd5ceebfSJohn Snow--- Verification ---
2976bd5ceebfSJohn Snow
2977bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2978bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2979bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2980bd5ceebfSJohn Snow
2981bd5ceebfSJohn Snow
2982bd5ceebfSJohn Snow=== Mode full; Bitmap Sync always with simulated failure ===
2983bd5ceebfSJohn Snow
2984bd5ceebfSJohn Snow--- Preparing image & VM ---
2985bd5ceebfSJohn Snow
2986bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2987bd5ceebfSJohn Snow{"return": {}}
2988bd5ceebfSJohn Snow
2989bd5ceebfSJohn Snow--- Write #0 ---
2990bd5ceebfSJohn Snow
2991bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
2992bd5ceebfSJohn Snow{"return": ""}
2993bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
2994bd5ceebfSJohn Snow{"return": ""}
2995bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
2996bd5ceebfSJohn Snow{"return": ""}
2997bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
2998bd5ceebfSJohn Snow{"return": ""}
2999bd5ceebfSJohn Snow{
30005c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3001bd5ceebfSJohn Snow}
3002bd5ceebfSJohn Snow
3003bd5ceebfSJohn Snow--- Reference Backup #0 ---
3004bd5ceebfSJohn Snow
3005bd5ceebfSJohn Snow{}
3006bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3007bd5ceebfSJohn Snow{"return": {}}
3008bd5ceebfSJohn Snow{}
3009bd5ceebfSJohn Snow{}
3010bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3011bd5ceebfSJohn Snow{"return": {}}
3012bd5ceebfSJohn Snow{}
30132d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
3014bd5ceebfSJohn Snow{"return": {}}
3015bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3016bd5ceebfSJohn Snow
3017bd5ceebfSJohn Snow--- Add Bitmap ---
3018bd5ceebfSJohn Snow
3019bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3020bd5ceebfSJohn Snow{"return": {}}
3021bd5ceebfSJohn Snow
3022bd5ceebfSJohn Snow--- Write #1 ---
3023bd5ceebfSJohn Snow
3024bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
3025bd5ceebfSJohn Snow{"return": ""}
3026bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
3027bd5ceebfSJohn Snow{"return": ""}
3028bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
3029bd5ceebfSJohn Snow{"return": ""}
3030bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
3031bd5ceebfSJohn Snow{"return": ""}
3032bd5ceebfSJohn Snow{
3033bd5ceebfSJohn Snow  "bitmaps": {
30345c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3035bd5ceebfSJohn Snow      {
3036bd5ceebfSJohn Snow        "busy": false,
3037bd5ceebfSJohn Snow        "count": 393216,
3038bd5ceebfSJohn Snow        "granularity": 65536,
3039bd5ceebfSJohn Snow        "name": "bitmap0",
3040bd5ceebfSJohn Snow        "persistent": false,
304181cbfd50SDaniel P. Berrangé        "recording": true
3042bd5ceebfSJohn Snow      }
3043bd5ceebfSJohn Snow    ]
3044bd5ceebfSJohn Snow  }
3045bd5ceebfSJohn Snow}
3046bd5ceebfSJohn Snow
3047bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3048bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3049bd5ceebfSJohn Snow
3050bd5ceebfSJohn Snow--- Reference Backup #1 ---
3051bd5ceebfSJohn Snow
3052bd5ceebfSJohn Snow{}
3053bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3054bd5ceebfSJohn Snow{"return": {}}
3055bd5ceebfSJohn Snow{}
3056bd5ceebfSJohn Snow{}
3057bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3058bd5ceebfSJohn Snow{"return": {}}
3059bd5ceebfSJohn Snow{}
30602d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
3061bd5ceebfSJohn Snow{"return": {}}
3062bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3063bd5ceebfSJohn Snow
3064bd5ceebfSJohn Snow--- Test Backup #1 ---
3065bd5ceebfSJohn Snow
3066bd5ceebfSJohn Snow{}
3067bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3068bd5ceebfSJohn Snow{"return": {}}
3069bd5ceebfSJohn Snow{}
3070bd5ceebfSJohn Snow{}
3071bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3072bd5ceebfSJohn Snow{"return": {}}
3073bd5ceebfSJohn Snow{}
30742d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
3075bd5ceebfSJohn Snow{"return": {}}
3076bd5ceebfSJohn Snow
3077bd5ceebfSJohn Snow--- Write #2 ---
3078bd5ceebfSJohn Snow
3079bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
3080bd5ceebfSJohn Snow{"return": ""}
3081bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
3082bd5ceebfSJohn Snow{"return": ""}
3083bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
3084bd5ceebfSJohn Snow{"return": ""}
3085bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
3086bd5ceebfSJohn Snow{"return": ""}
3087bd5ceebfSJohn Snow{
3088bd5ceebfSJohn Snow  "bitmaps": {
3089af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
3090af5bcd77SVladimir Sementsov-Ogievskiy      {
3091af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3092af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
3093af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3094af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3095af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3096af5bcd77SVladimir Sementsov-Ogievskiy      },
3097af5bcd77SVladimir Sementsov-Ogievskiy      {
3098af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3099af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
3100af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3101af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3102af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3103*006e845bSVladimir Sementsov-Ogievskiy      },
3104bd5ceebfSJohn Snow      {
3105bd5ceebfSJohn Snow        "busy": false,
3106bd5ceebfSJohn Snow        "count": 0,
3107bd5ceebfSJohn Snow        "granularity": 65536,
3108bd5ceebfSJohn Snow        "persistent": false,
310981cbfd50SDaniel P. Berrangé        "recording": false
3110*006e845bSVladimir Sementsov-Ogievskiy      }
3111*006e845bSVladimir Sementsov-Ogievskiy    ],
3112*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
3113bd5ceebfSJohn Snow      {
3114bd5ceebfSJohn Snow        "busy": false,
3115bd5ceebfSJohn Snow        "count": 458752,
3116bd5ceebfSJohn Snow        "granularity": 65536,
3117bd5ceebfSJohn Snow        "persistent": false,
311881cbfd50SDaniel P. Berrangé        "recording": true
3119bd5ceebfSJohn Snow      },
3120bd5ceebfSJohn Snow      {
3121bd5ceebfSJohn Snow        "busy": true,
3122bd5ceebfSJohn Snow        "count": 393216,
3123bd5ceebfSJohn Snow        "granularity": 65536,
3124bd5ceebfSJohn Snow        "name": "bitmap0",
3125bd5ceebfSJohn Snow        "persistent": false,
312681cbfd50SDaniel P. Berrangé        "recording": true
3127bd5ceebfSJohn Snow      }
3128bd5ceebfSJohn Snow    ]
3129bd5ceebfSJohn Snow  }
3130bd5ceebfSJohn Snow}
3131bd5ceebfSJohn Snow
3132bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3133bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3134bd5ceebfSJohn Snow
3135bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
3136bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
3137bd5ceebfSJohn Snow
3138bd5ceebfSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3139bd5ceebfSJohn Snow{"return": {}}
3140bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3141bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3142bd5ceebfSJohn Snow{
3143bd5ceebfSJohn Snow  "bitmaps": {
31445c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3145bd5ceebfSJohn Snow      {
3146bd5ceebfSJohn Snow        "busy": false,
3147bd5ceebfSJohn Snow        "count": 458752,
3148bd5ceebfSJohn Snow        "granularity": 65536,
3149bd5ceebfSJohn Snow        "name": "bitmap0",
3150bd5ceebfSJohn Snow        "persistent": false,
315181cbfd50SDaniel P. Berrangé        "recording": true
3152bd5ceebfSJohn Snow      }
3153bd5ceebfSJohn Snow    ]
3154bd5ceebfSJohn Snow  }
3155bd5ceebfSJohn Snow}
3156bd5ceebfSJohn Snow
3157bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3158bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
3159bd5ceebfSJohn Snow
3160bd5ceebfSJohn Snow--- Write #3 ---
3161bd5ceebfSJohn Snow
3162bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
3163bd5ceebfSJohn Snow{"return": ""}
3164bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
3165bd5ceebfSJohn Snow{"return": ""}
3166bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
3167bd5ceebfSJohn Snow{"return": ""}
3168bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
3169bd5ceebfSJohn Snow{"return": ""}
3170bd5ceebfSJohn Snow{
3171bd5ceebfSJohn Snow  "bitmaps": {
31725c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3173bd5ceebfSJohn Snow      {
3174bd5ceebfSJohn Snow        "busy": false,
3175bd5ceebfSJohn Snow        "count": 786432,
3176bd5ceebfSJohn Snow        "granularity": 65536,
3177bd5ceebfSJohn Snow        "name": "bitmap0",
3178bd5ceebfSJohn Snow        "persistent": false,
317981cbfd50SDaniel P. Berrangé        "recording": true
3180bd5ceebfSJohn Snow      }
3181bd5ceebfSJohn Snow    ]
3182bd5ceebfSJohn Snow  }
3183bd5ceebfSJohn Snow}
3184bd5ceebfSJohn Snow
3185bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3186bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
3187bd5ceebfSJohn Snow
3188bd5ceebfSJohn Snow--- Reference Backup #2 ---
3189bd5ceebfSJohn Snow
3190bd5ceebfSJohn Snow{}
3191bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3192bd5ceebfSJohn Snow{"return": {}}
3193bd5ceebfSJohn Snow{}
3194bd5ceebfSJohn Snow{}
3195bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3196bd5ceebfSJohn Snow{"return": {}}
3197bd5ceebfSJohn Snow{}
31982d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
3199bd5ceebfSJohn Snow{"return": {}}
3200bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3201bd5ceebfSJohn Snow
3202bd5ceebfSJohn Snow--- Test Backup #2 ---
3203bd5ceebfSJohn Snow
3204bd5ceebfSJohn Snow{}
3205bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3206bd5ceebfSJohn Snow{"return": {}}
3207bd5ceebfSJohn Snow{}
3208bd5ceebfSJohn Snow{}
3209bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3210bd5ceebfSJohn Snow{"return": {}}
3211bd5ceebfSJohn Snow{}
32122d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
3213bd5ceebfSJohn Snow{"return": {}}
3214bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3215bd5ceebfSJohn Snow{"return": {}}
3216bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3217bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3218bd5ceebfSJohn Snow{
3219bd5ceebfSJohn Snow  "bitmaps": {
32205c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3221bd5ceebfSJohn Snow      {
3222bd5ceebfSJohn Snow        "busy": false,
3223bd5ceebfSJohn Snow        "count": 0,
3224bd5ceebfSJohn Snow        "granularity": 65536,
3225bd5ceebfSJohn Snow        "name": "bitmap0",
3226bd5ceebfSJohn Snow        "persistent": false,
322781cbfd50SDaniel P. Berrangé        "recording": true
3228bd5ceebfSJohn Snow      }
3229bd5ceebfSJohn Snow    ]
3230bd5ceebfSJohn Snow  }
3231bd5ceebfSJohn Snow}
3232bd5ceebfSJohn Snow
3233bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3234bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
3235bd5ceebfSJohn Snow
3236bd5ceebfSJohn Snow--- Cleanup ---
3237bd5ceebfSJohn Snow
3238bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3239bd5ceebfSJohn Snow{"return": {}}
3240bd5ceebfSJohn Snow{
32415c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3242bd5ceebfSJohn Snow}
3243bd5ceebfSJohn Snow
3244bd5ceebfSJohn Snow--- Verification ---
3245bd5ceebfSJohn Snow
3246bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3247bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3248bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3249bd5ceebfSJohn Snow
3250bd5ceebfSJohn Snow
3251bd5ceebfSJohn Snow=== Mode full; Bitmap Sync always with intermediate failure ===
3252bd5ceebfSJohn Snow
3253bd5ceebfSJohn Snow--- Preparing image & VM ---
3254bd5ceebfSJohn Snow
3255bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
3256bd5ceebfSJohn Snow{"return": {}}
3257bd5ceebfSJohn Snow
3258bd5ceebfSJohn Snow--- Write #0 ---
3259bd5ceebfSJohn Snow
3260bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
3261bd5ceebfSJohn Snow{"return": ""}
3262bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
3263bd5ceebfSJohn Snow{"return": ""}
3264bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
3265bd5ceebfSJohn Snow{"return": ""}
3266bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
3267bd5ceebfSJohn Snow{"return": ""}
3268bd5ceebfSJohn Snow{
32695c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3270bd5ceebfSJohn Snow}
3271bd5ceebfSJohn Snow
3272bd5ceebfSJohn Snow--- Reference Backup #0 ---
3273bd5ceebfSJohn Snow
3274bd5ceebfSJohn Snow{}
3275bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3276bd5ceebfSJohn Snow{"return": {}}
3277bd5ceebfSJohn Snow{}
3278bd5ceebfSJohn Snow{}
3279bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3280bd5ceebfSJohn Snow{"return": {}}
3281bd5ceebfSJohn Snow{}
32822d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
3283bd5ceebfSJohn Snow{"return": {}}
3284bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3285bd5ceebfSJohn Snow
3286bd5ceebfSJohn Snow--- Add Bitmap ---
3287bd5ceebfSJohn Snow
3288bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3289bd5ceebfSJohn Snow{"return": {}}
3290bd5ceebfSJohn Snow
3291bd5ceebfSJohn Snow--- Write #1 ---
3292bd5ceebfSJohn Snow
3293bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
3294bd5ceebfSJohn Snow{"return": ""}
3295bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
3296bd5ceebfSJohn Snow{"return": ""}
3297bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
3298bd5ceebfSJohn Snow{"return": ""}
3299bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
3300bd5ceebfSJohn Snow{"return": ""}
3301bd5ceebfSJohn Snow{
3302bd5ceebfSJohn Snow  "bitmaps": {
33035c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3304bd5ceebfSJohn Snow      {
3305bd5ceebfSJohn Snow        "busy": false,
3306bd5ceebfSJohn Snow        "count": 393216,
3307bd5ceebfSJohn Snow        "granularity": 65536,
3308bd5ceebfSJohn Snow        "name": "bitmap0",
3309bd5ceebfSJohn Snow        "persistent": false,
331081cbfd50SDaniel P. Berrangé        "recording": true
3311bd5ceebfSJohn Snow      }
3312bd5ceebfSJohn Snow    ]
3313bd5ceebfSJohn Snow  }
3314bd5ceebfSJohn Snow}
3315bd5ceebfSJohn Snow
3316bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3317bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3318bd5ceebfSJohn Snow
3319bd5ceebfSJohn Snow--- Reference Backup #1 ---
3320bd5ceebfSJohn Snow
3321bd5ceebfSJohn Snow{}
3322bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3323bd5ceebfSJohn Snow{"return": {}}
3324bd5ceebfSJohn Snow{}
3325bd5ceebfSJohn Snow{}
3326bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3327bd5ceebfSJohn Snow{"return": {}}
3328bd5ceebfSJohn Snow{}
33292d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
3330bd5ceebfSJohn Snow{"return": {}}
3331bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3332bd5ceebfSJohn Snow
3333bd5ceebfSJohn Snow{"return": ""}
3334bd5ceebfSJohn Snow
3335bd5ceebfSJohn Snow--- Test Backup #1 ---
3336bd5ceebfSJohn Snow
3337bd5ceebfSJohn Snow{}
3338bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3339bd5ceebfSJohn Snow{"return": {}}
3340bd5ceebfSJohn Snow{}
3341bd5ceebfSJohn Snow{}
3342bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3343bd5ceebfSJohn Snow{"return": {}}
3344bd5ceebfSJohn Snow{}
33452d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
3346bd5ceebfSJohn Snow{"return": {}}
3347bd5ceebfSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3348bd5ceebfSJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 67108864, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3349bd5ceebfSJohn Snow{
3350bd5ceebfSJohn Snow  "bitmaps": {
33515c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3352bd5ceebfSJohn Snow      {
3353bd5ceebfSJohn Snow        "busy": false,
3354bd5ceebfSJohn Snow        "count": 66125824,
3355bd5ceebfSJohn Snow        "granularity": 65536,
3356bd5ceebfSJohn Snow        "name": "bitmap0",
3357bd5ceebfSJohn Snow        "persistent": false,
335881cbfd50SDaniel P. Berrangé        "recording": true
3359bd5ceebfSJohn Snow      }
3360bd5ceebfSJohn Snow    ]
3361bd5ceebfSJohn Snow  }
3362bd5ceebfSJohn Snow}
3363bd5ceebfSJohn Snow
3364bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3365bd5ceebfSJohn Snowexpecting 1009 dirty sectors; have 1009. OK!
3366bd5ceebfSJohn Snow
3367bd5ceebfSJohn Snow--- Write #3 ---
3368bd5ceebfSJohn Snow
3369bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
3370bd5ceebfSJohn Snow{"return": ""}
3371bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
3372bd5ceebfSJohn Snow{"return": ""}
3373bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
3374bd5ceebfSJohn Snow{"return": ""}
3375bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
3376bd5ceebfSJohn Snow{"return": ""}
3377bd5ceebfSJohn Snow{
3378bd5ceebfSJohn Snow  "bitmaps": {
33795c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3380bd5ceebfSJohn Snow      {
3381bd5ceebfSJohn Snow        "busy": false,
3382bd5ceebfSJohn Snow        "count": 66453504,
3383bd5ceebfSJohn Snow        "granularity": 65536,
3384bd5ceebfSJohn Snow        "name": "bitmap0",
3385bd5ceebfSJohn Snow        "persistent": false,
338681cbfd50SDaniel P. Berrangé        "recording": true
3387bd5ceebfSJohn Snow      }
3388bd5ceebfSJohn Snow    ]
3389bd5ceebfSJohn Snow  }
3390bd5ceebfSJohn Snow}
3391bd5ceebfSJohn Snow
3392bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3393bd5ceebfSJohn Snowexpecting 1014 dirty sectors; have 1014. OK!
3394bd5ceebfSJohn Snow
3395bd5ceebfSJohn Snow--- Reference Backup #2 ---
3396bd5ceebfSJohn Snow
3397bd5ceebfSJohn Snow{}
3398bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3399bd5ceebfSJohn Snow{"return": {}}
3400bd5ceebfSJohn Snow{}
3401bd5ceebfSJohn Snow{}
3402bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3403bd5ceebfSJohn Snow{"return": {}}
3404bd5ceebfSJohn Snow{}
34052d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
3406bd5ceebfSJohn Snow{"return": {}}
3407bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3408bd5ceebfSJohn Snow
3409bd5ceebfSJohn Snow--- Test Backup #2 ---
3410bd5ceebfSJohn Snow
3411bd5ceebfSJohn Snow{}
3412bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3413bd5ceebfSJohn Snow{"return": {}}
3414bd5ceebfSJohn Snow{}
3415bd5ceebfSJohn Snow{}
3416bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3417bd5ceebfSJohn Snow{"return": {}}
3418bd5ceebfSJohn Snow{}
34192d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
3420bd5ceebfSJohn Snow{"return": {}}
3421bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3422bd5ceebfSJohn Snow{"return": {}}
3423bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3424bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 66453504, "offset": 66453504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3425bd5ceebfSJohn Snow{
3426bd5ceebfSJohn Snow  "bitmaps": {
34275c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3428bd5ceebfSJohn Snow      {
3429bd5ceebfSJohn Snow        "busy": false,
3430bd5ceebfSJohn Snow        "count": 0,
3431bd5ceebfSJohn Snow        "granularity": 65536,
3432bd5ceebfSJohn Snow        "name": "bitmap0",
3433bd5ceebfSJohn Snow        "persistent": false,
343481cbfd50SDaniel P. Berrangé        "recording": true
3435bd5ceebfSJohn Snow      }
3436bd5ceebfSJohn Snow    ]
3437bd5ceebfSJohn Snow  }
3438bd5ceebfSJohn Snow}
3439bd5ceebfSJohn Snow
3440bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3441bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
3442bd5ceebfSJohn Snow
3443bd5ceebfSJohn Snow--- Cleanup ---
3444bd5ceebfSJohn Snow
3445bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3446bd5ceebfSJohn Snow{"return": {}}
3447bd5ceebfSJohn Snow{
34485c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3449bd5ceebfSJohn Snow}
3450bd5ceebfSJohn Snow
3451bd5ceebfSJohn Snow--- Verification ---
3452bd5ceebfSJohn Snow
3453bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
3454bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3455bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3456bd5ceebfSJohn Snow
3457bd5ceebfSJohn Snow
3458bd5ceebfSJohn Snow=== Mode full; Bitmap Sync always without failure ===
3459bd5ceebfSJohn Snow
3460bd5ceebfSJohn Snow--- Preparing image & VM ---
3461bd5ceebfSJohn Snow
3462bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3463bd5ceebfSJohn Snow{"return": {}}
3464bd5ceebfSJohn Snow
3465bd5ceebfSJohn Snow--- Write #0 ---
3466bd5ceebfSJohn Snow
3467bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
3468bd5ceebfSJohn Snow{"return": ""}
3469bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
3470bd5ceebfSJohn Snow{"return": ""}
3471bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
3472bd5ceebfSJohn Snow{"return": ""}
3473bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
3474bd5ceebfSJohn Snow{"return": ""}
3475bd5ceebfSJohn Snow{
34765c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3477bd5ceebfSJohn Snow}
3478bd5ceebfSJohn Snow
3479bd5ceebfSJohn Snow--- Reference Backup #0 ---
3480bd5ceebfSJohn Snow
3481bd5ceebfSJohn Snow{}
3482bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3483bd5ceebfSJohn Snow{"return": {}}
3484bd5ceebfSJohn Snow{}
3485bd5ceebfSJohn Snow{}
3486bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3487bd5ceebfSJohn Snow{"return": {}}
3488bd5ceebfSJohn Snow{}
34892d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
3490bd5ceebfSJohn Snow{"return": {}}
3491bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3492bd5ceebfSJohn Snow
3493bd5ceebfSJohn Snow--- Add Bitmap ---
3494bd5ceebfSJohn Snow
3495bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3496bd5ceebfSJohn Snow{"return": {}}
3497bd5ceebfSJohn Snow
3498bd5ceebfSJohn Snow--- Write #1 ---
3499bd5ceebfSJohn Snow
3500bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
3501bd5ceebfSJohn Snow{"return": ""}
3502bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
3503bd5ceebfSJohn Snow{"return": ""}
3504bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
3505bd5ceebfSJohn Snow{"return": ""}
3506bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
3507bd5ceebfSJohn Snow{"return": ""}
3508bd5ceebfSJohn Snow{
3509bd5ceebfSJohn Snow  "bitmaps": {
35105c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3511bd5ceebfSJohn Snow      {
3512bd5ceebfSJohn Snow        "busy": false,
3513bd5ceebfSJohn Snow        "count": 393216,
3514bd5ceebfSJohn Snow        "granularity": 65536,
3515bd5ceebfSJohn Snow        "name": "bitmap0",
3516bd5ceebfSJohn Snow        "persistent": false,
351781cbfd50SDaniel P. Berrangé        "recording": true
3518bd5ceebfSJohn Snow      }
3519bd5ceebfSJohn Snow    ]
3520bd5ceebfSJohn Snow  }
3521bd5ceebfSJohn Snow}
3522bd5ceebfSJohn Snow
3523bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3524bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3525bd5ceebfSJohn Snow
3526bd5ceebfSJohn Snow--- Reference Backup #1 ---
3527bd5ceebfSJohn Snow
3528bd5ceebfSJohn Snow{}
3529bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3530bd5ceebfSJohn Snow{"return": {}}
3531bd5ceebfSJohn Snow{}
3532bd5ceebfSJohn Snow{}
3533bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3534bd5ceebfSJohn Snow{"return": {}}
3535bd5ceebfSJohn Snow{}
35362d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
3537bd5ceebfSJohn Snow{"return": {}}
3538bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3539bd5ceebfSJohn Snow
3540bd5ceebfSJohn Snow--- Test Backup #1 ---
3541bd5ceebfSJohn Snow
3542bd5ceebfSJohn Snow{}
3543bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3544bd5ceebfSJohn Snow{"return": {}}
3545bd5ceebfSJohn Snow{}
3546bd5ceebfSJohn Snow{}
3547bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3548bd5ceebfSJohn Snow{"return": {}}
3549bd5ceebfSJohn Snow{}
35502d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "full", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
3551bd5ceebfSJohn Snow{"return": {}}
3552bd5ceebfSJohn Snow
3553bd5ceebfSJohn Snow--- Write #2 ---
3554bd5ceebfSJohn Snow
3555bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
3556bd5ceebfSJohn Snow{"return": ""}
3557bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
3558bd5ceebfSJohn Snow{"return": ""}
3559bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
3560bd5ceebfSJohn Snow{"return": ""}
3561bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
3562bd5ceebfSJohn Snow{"return": ""}
3563bd5ceebfSJohn Snow{
3564bd5ceebfSJohn Snow  "bitmaps": {
3565af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
3566af5bcd77SVladimir Sementsov-Ogievskiy      {
3567af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3568af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
3569af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3570af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3571af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3572af5bcd77SVladimir Sementsov-Ogievskiy      },
3573af5bcd77SVladimir Sementsov-Ogievskiy      {
3574af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3575af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
3576af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3577af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3578af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3579*006e845bSVladimir Sementsov-Ogievskiy      },
3580bd5ceebfSJohn Snow      {
3581bd5ceebfSJohn Snow        "busy": false,
3582bd5ceebfSJohn Snow        "count": 0,
3583bd5ceebfSJohn Snow        "granularity": 65536,
3584bd5ceebfSJohn Snow        "persistent": false,
358581cbfd50SDaniel P. Berrangé        "recording": false
3586*006e845bSVladimir Sementsov-Ogievskiy      }
3587*006e845bSVladimir Sementsov-Ogievskiy    ],
3588*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
3589bd5ceebfSJohn Snow      {
3590bd5ceebfSJohn Snow        "busy": false,
3591bd5ceebfSJohn Snow        "count": 458752,
3592bd5ceebfSJohn Snow        "granularity": 65536,
3593bd5ceebfSJohn Snow        "persistent": false,
359481cbfd50SDaniel P. Berrangé        "recording": true
3595bd5ceebfSJohn Snow      },
3596bd5ceebfSJohn Snow      {
3597bd5ceebfSJohn Snow        "busy": true,
3598bd5ceebfSJohn Snow        "count": 393216,
3599bd5ceebfSJohn Snow        "granularity": 65536,
3600bd5ceebfSJohn Snow        "name": "bitmap0",
3601bd5ceebfSJohn Snow        "persistent": false,
360281cbfd50SDaniel P. Berrangé        "recording": true
3603bd5ceebfSJohn Snow      }
3604bd5ceebfSJohn Snow    ]
3605bd5ceebfSJohn Snow  }
3606bd5ceebfSJohn Snow}
3607bd5ceebfSJohn Snow
3608bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3609bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3610bd5ceebfSJohn Snow
3611bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
3612bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
3613bd5ceebfSJohn Snow
3614bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
3615bd5ceebfSJohn Snow{"return": {}}
3616bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3617bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3618bd5ceebfSJohn Snow{
3619bd5ceebfSJohn Snow  "bitmaps": {
36205c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3621bd5ceebfSJohn Snow      {
3622bd5ceebfSJohn Snow        "busy": false,
3623bd5ceebfSJohn Snow        "count": 458752,
3624bd5ceebfSJohn Snow        "granularity": 65536,
3625bd5ceebfSJohn Snow        "name": "bitmap0",
3626bd5ceebfSJohn Snow        "persistent": false,
362781cbfd50SDaniel P. Berrangé        "recording": true
3628bd5ceebfSJohn Snow      }
3629bd5ceebfSJohn Snow    ]
3630bd5ceebfSJohn Snow  }
3631bd5ceebfSJohn Snow}
3632bd5ceebfSJohn Snow
3633bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3634bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
3635bd5ceebfSJohn Snow
3636bd5ceebfSJohn Snow--- Write #3 ---
3637bd5ceebfSJohn Snow
3638bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
3639bd5ceebfSJohn Snow{"return": ""}
3640bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
3641bd5ceebfSJohn Snow{"return": ""}
3642bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
3643bd5ceebfSJohn Snow{"return": ""}
3644bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
3645bd5ceebfSJohn Snow{"return": ""}
3646bd5ceebfSJohn Snow{
3647bd5ceebfSJohn Snow  "bitmaps": {
36485c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3649bd5ceebfSJohn Snow      {
3650bd5ceebfSJohn Snow        "busy": false,
3651bd5ceebfSJohn Snow        "count": 786432,
3652bd5ceebfSJohn Snow        "granularity": 65536,
3653bd5ceebfSJohn Snow        "name": "bitmap0",
3654bd5ceebfSJohn Snow        "persistent": false,
365581cbfd50SDaniel P. Berrangé        "recording": true
3656bd5ceebfSJohn Snow      }
3657bd5ceebfSJohn Snow    ]
3658bd5ceebfSJohn Snow  }
3659bd5ceebfSJohn Snow}
3660bd5ceebfSJohn Snow
3661bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3662bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
3663bd5ceebfSJohn Snow
3664bd5ceebfSJohn Snow--- Reference Backup #2 ---
3665bd5ceebfSJohn Snow
3666bd5ceebfSJohn Snow{}
3667bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3668bd5ceebfSJohn Snow{"return": {}}
3669bd5ceebfSJohn Snow{}
3670bd5ceebfSJohn Snow{}
3671bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3672bd5ceebfSJohn Snow{"return": {}}
3673bd5ceebfSJohn Snow{}
36742d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
3675bd5ceebfSJohn Snow{"return": {}}
3676bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3677bd5ceebfSJohn Snow
3678bd5ceebfSJohn Snow--- Test Backup #2 ---
3679bd5ceebfSJohn Snow
3680bd5ceebfSJohn Snow{}
3681bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3682bd5ceebfSJohn Snow{"return": {}}
3683bd5ceebfSJohn Snow{}
3684bd5ceebfSJohn Snow{}
3685bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3686bd5ceebfSJohn Snow{"return": {}}
3687bd5ceebfSJohn Snow{}
36882d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
3689bd5ceebfSJohn Snow{"return": {}}
3690bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3691bd5ceebfSJohn Snow{"return": {}}
3692bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3693bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3694bd5ceebfSJohn Snow{
3695bd5ceebfSJohn Snow  "bitmaps": {
36965c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3697bd5ceebfSJohn Snow      {
3698bd5ceebfSJohn Snow        "busy": false,
3699bd5ceebfSJohn Snow        "count": 0,
3700bd5ceebfSJohn Snow        "granularity": 65536,
3701bd5ceebfSJohn Snow        "name": "bitmap0",
3702bd5ceebfSJohn Snow        "persistent": false,
370381cbfd50SDaniel P. Berrangé        "recording": true
3704bd5ceebfSJohn Snow      }
3705bd5ceebfSJohn Snow    ]
3706bd5ceebfSJohn Snow  }
3707bd5ceebfSJohn Snow}
3708bd5ceebfSJohn Snow
3709bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3710bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
3711bd5ceebfSJohn Snow
3712bd5ceebfSJohn Snow--- Cleanup ---
3713bd5ceebfSJohn Snow
3714bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3715bd5ceebfSJohn Snow{"return": {}}
3716bd5ceebfSJohn Snow{
37175c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3718bd5ceebfSJohn Snow}
3719bd5ceebfSJohn Snow
3720bd5ceebfSJohn Snow--- Verification ---
3721bd5ceebfSJohn Snow
3722bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3723bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3724bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3725bd5ceebfSJohn Snow
3726bd5ceebfSJohn Snow
3727bd5ceebfSJohn Snow=== Mode top; Bitmap Sync on-success with simulated failure ===
3728bd5ceebfSJohn Snow
3729bd5ceebfSJohn Snow--- Preparing image & VM ---
3730bd5ceebfSJohn Snow
3731bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3732bd5ceebfSJohn Snow{"return": {}}
3733bd5ceebfSJohn Snow
3734bd5ceebfSJohn Snow--- Write #0 ---
3735bd5ceebfSJohn Snow
3736bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
3737bd5ceebfSJohn Snow{"return": ""}
3738bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
3739bd5ceebfSJohn Snow{"return": ""}
3740bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
3741bd5ceebfSJohn Snow{"return": ""}
3742bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
3743bd5ceebfSJohn Snow{"return": ""}
3744bd5ceebfSJohn Snow{
37455c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3746bd5ceebfSJohn Snow}
3747bd5ceebfSJohn Snow
3748bd5ceebfSJohn Snow--- Reference Backup #0 ---
3749bd5ceebfSJohn Snow
3750bd5ceebfSJohn Snow{}
3751bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3752bd5ceebfSJohn Snow{"return": {}}
3753bd5ceebfSJohn Snow{}
3754bd5ceebfSJohn Snow{}
3755bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3756bd5ceebfSJohn Snow{"return": {}}
3757bd5ceebfSJohn Snow{}
37582d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
3759bd5ceebfSJohn Snow{"return": {}}
3760bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3761bd5ceebfSJohn Snow
3762bd5ceebfSJohn Snow--- Add Bitmap ---
3763bd5ceebfSJohn Snow
3764bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3765bd5ceebfSJohn Snow{"return": {}}
3766bd5ceebfSJohn Snow
3767bd5ceebfSJohn Snow--- Write #1 ---
3768bd5ceebfSJohn Snow
3769bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
3770bd5ceebfSJohn Snow{"return": ""}
3771bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
3772bd5ceebfSJohn Snow{"return": ""}
3773bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
3774bd5ceebfSJohn Snow{"return": ""}
3775bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
3776bd5ceebfSJohn Snow{"return": ""}
3777bd5ceebfSJohn Snow{
3778bd5ceebfSJohn Snow  "bitmaps": {
37795c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3780bd5ceebfSJohn Snow      {
3781bd5ceebfSJohn Snow        "busy": false,
3782bd5ceebfSJohn Snow        "count": 393216,
3783bd5ceebfSJohn Snow        "granularity": 65536,
3784bd5ceebfSJohn Snow        "name": "bitmap0",
3785bd5ceebfSJohn Snow        "persistent": false,
378681cbfd50SDaniel P. Berrangé        "recording": true
3787bd5ceebfSJohn Snow      }
3788bd5ceebfSJohn Snow    ]
3789bd5ceebfSJohn Snow  }
3790bd5ceebfSJohn Snow}
3791bd5ceebfSJohn Snow
3792bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3793bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3794bd5ceebfSJohn Snow
3795bd5ceebfSJohn Snow--- Reference Backup #1 ---
3796bd5ceebfSJohn Snow
3797bd5ceebfSJohn Snow{}
3798bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3799bd5ceebfSJohn Snow{"return": {}}
3800bd5ceebfSJohn Snow{}
3801bd5ceebfSJohn Snow{}
3802bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3803bd5ceebfSJohn Snow{"return": {}}
3804bd5ceebfSJohn Snow{}
38052d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
3806bd5ceebfSJohn Snow{"return": {}}
3807bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3808bd5ceebfSJohn Snow
3809bd5ceebfSJohn Snow--- Test Backup #1 ---
3810bd5ceebfSJohn Snow
3811bd5ceebfSJohn Snow{}
3812bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3813bd5ceebfSJohn Snow{"return": {}}
3814bd5ceebfSJohn Snow{}
3815bd5ceebfSJohn Snow{}
3816bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3817bd5ceebfSJohn Snow{"return": {}}
3818bd5ceebfSJohn Snow{}
38192d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
3820bd5ceebfSJohn Snow{"return": {}}
3821bd5ceebfSJohn Snow
3822bd5ceebfSJohn Snow--- Write #2 ---
3823bd5ceebfSJohn Snow
3824bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
3825bd5ceebfSJohn Snow{"return": ""}
3826bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
3827bd5ceebfSJohn Snow{"return": ""}
3828bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
3829bd5ceebfSJohn Snow{"return": ""}
3830bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
3831bd5ceebfSJohn Snow{"return": ""}
3832bd5ceebfSJohn Snow{
3833bd5ceebfSJohn Snow  "bitmaps": {
3834af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
3835af5bcd77SVladimir Sementsov-Ogievskiy      {
3836af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3837af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
3838af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3839af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3840af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3841af5bcd77SVladimir Sementsov-Ogievskiy      },
3842af5bcd77SVladimir Sementsov-Ogievskiy      {
3843af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
3844af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
3845af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
3846af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
3847af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
3848*006e845bSVladimir Sementsov-Ogievskiy      },
3849bd5ceebfSJohn Snow      {
3850bd5ceebfSJohn Snow        "busy": false,
3851bd5ceebfSJohn Snow        "count": 0,
3852bd5ceebfSJohn Snow        "granularity": 65536,
3853bd5ceebfSJohn Snow        "persistent": false,
385481cbfd50SDaniel P. Berrangé        "recording": false
3855*006e845bSVladimir Sementsov-Ogievskiy      }
3856*006e845bSVladimir Sementsov-Ogievskiy    ],
3857*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
3858bd5ceebfSJohn Snow      {
3859bd5ceebfSJohn Snow        "busy": false,
3860bd5ceebfSJohn Snow        "count": 458752,
3861bd5ceebfSJohn Snow        "granularity": 65536,
3862bd5ceebfSJohn Snow        "persistent": false,
386381cbfd50SDaniel P. Berrangé        "recording": true
3864bd5ceebfSJohn Snow      },
3865bd5ceebfSJohn Snow      {
3866bd5ceebfSJohn Snow        "busy": true,
3867bd5ceebfSJohn Snow        "count": 393216,
3868bd5ceebfSJohn Snow        "granularity": 65536,
3869bd5ceebfSJohn Snow        "name": "bitmap0",
3870bd5ceebfSJohn Snow        "persistent": false,
387181cbfd50SDaniel P. Berrangé        "recording": true
3872bd5ceebfSJohn Snow      }
3873bd5ceebfSJohn Snow    ]
3874bd5ceebfSJohn Snow  }
3875bd5ceebfSJohn Snow}
3876bd5ceebfSJohn Snow
3877bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3878bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
3879bd5ceebfSJohn Snow
3880bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
3881bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
3882bd5ceebfSJohn Snow
3883bd5ceebfSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3884bd5ceebfSJohn Snow{"return": {}}
3885bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3886bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3887bd5ceebfSJohn Snow{
3888bd5ceebfSJohn Snow  "bitmaps": {
38895c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3890bd5ceebfSJohn Snow      {
3891bd5ceebfSJohn Snow        "busy": false,
3892bd5ceebfSJohn Snow        "count": 655360,
3893bd5ceebfSJohn Snow        "granularity": 65536,
3894bd5ceebfSJohn Snow        "name": "bitmap0",
3895bd5ceebfSJohn Snow        "persistent": false,
389681cbfd50SDaniel P. Berrangé        "recording": true
3897bd5ceebfSJohn Snow      }
3898bd5ceebfSJohn Snow    ]
3899bd5ceebfSJohn Snow  }
3900bd5ceebfSJohn Snow}
3901bd5ceebfSJohn Snow
3902bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3903bd5ceebfSJohn Snowexpecting 10 dirty sectors; have 10. OK!
3904bd5ceebfSJohn Snow
3905bd5ceebfSJohn Snow--- Write #3 ---
3906bd5ceebfSJohn Snow
3907bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
3908bd5ceebfSJohn Snow{"return": ""}
3909bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
3910bd5ceebfSJohn Snow{"return": ""}
3911bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
3912bd5ceebfSJohn Snow{"return": ""}
3913bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
3914bd5ceebfSJohn Snow{"return": ""}
3915bd5ceebfSJohn Snow{
3916bd5ceebfSJohn Snow  "bitmaps": {
39175c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3918bd5ceebfSJohn Snow      {
3919bd5ceebfSJohn Snow        "busy": false,
3920bd5ceebfSJohn Snow        "count": 983040,
3921bd5ceebfSJohn Snow        "granularity": 65536,
3922bd5ceebfSJohn Snow        "name": "bitmap0",
3923bd5ceebfSJohn Snow        "persistent": false,
392481cbfd50SDaniel P. Berrangé        "recording": true
3925bd5ceebfSJohn Snow      }
3926bd5ceebfSJohn Snow    ]
3927bd5ceebfSJohn Snow  }
3928bd5ceebfSJohn Snow}
3929bd5ceebfSJohn Snow
3930bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3931bd5ceebfSJohn Snowexpecting 15 dirty sectors; have 15. OK!
3932bd5ceebfSJohn Snow
3933bd5ceebfSJohn Snow--- Reference Backup #2 ---
3934bd5ceebfSJohn Snow
3935bd5ceebfSJohn Snow{}
3936bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3937bd5ceebfSJohn Snow{"return": {}}
3938bd5ceebfSJohn Snow{}
3939bd5ceebfSJohn Snow{}
3940bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3941bd5ceebfSJohn Snow{"return": {}}
3942bd5ceebfSJohn Snow{}
39432d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
3944bd5ceebfSJohn Snow{"return": {}}
3945bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3946bd5ceebfSJohn Snow
3947bd5ceebfSJohn Snow--- Test Backup #2 ---
3948bd5ceebfSJohn Snow
3949bd5ceebfSJohn Snow{}
3950bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3951bd5ceebfSJohn Snow{"return": {}}
3952bd5ceebfSJohn Snow{}
3953bd5ceebfSJohn Snow{}
3954bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3955bd5ceebfSJohn Snow{"return": {}}
3956bd5ceebfSJohn Snow{}
39572d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
3958bd5ceebfSJohn Snow{"return": {}}
3959bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3960bd5ceebfSJohn Snow{"return": {}}
3961bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3962bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3963bd5ceebfSJohn Snow{
3964bd5ceebfSJohn Snow  "bitmaps": {
39655c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
3966bd5ceebfSJohn Snow      {
3967bd5ceebfSJohn Snow        "busy": false,
3968bd5ceebfSJohn Snow        "count": 0,
3969bd5ceebfSJohn Snow        "granularity": 65536,
3970bd5ceebfSJohn Snow        "name": "bitmap0",
3971bd5ceebfSJohn Snow        "persistent": false,
397281cbfd50SDaniel P. Berrangé        "recording": true
3973bd5ceebfSJohn Snow      }
3974bd5ceebfSJohn Snow    ]
3975bd5ceebfSJohn Snow  }
3976bd5ceebfSJohn Snow}
3977bd5ceebfSJohn Snow
3978bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
3979bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
3980bd5ceebfSJohn Snow
3981bd5ceebfSJohn Snow--- Cleanup ---
3982bd5ceebfSJohn Snow
3983bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3984bd5ceebfSJohn Snow{"return": {}}
3985bd5ceebfSJohn Snow{
39865c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
3987bd5ceebfSJohn Snow}
3988bd5ceebfSJohn Snow
3989bd5ceebfSJohn Snow--- Verification ---
3990bd5ceebfSJohn Snow
3991bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3992bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3993bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3994bd5ceebfSJohn Snow
3995bd5ceebfSJohn Snow
3996bd5ceebfSJohn Snow=== Mode top; Bitmap Sync on-success with intermediate failure ===
3997bd5ceebfSJohn Snow
3998bd5ceebfSJohn Snow--- Preparing image & VM ---
3999bd5ceebfSJohn Snow
4000bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
4001bd5ceebfSJohn Snow{"return": {}}
4002bd5ceebfSJohn Snow
4003bd5ceebfSJohn Snow--- Write #0 ---
4004bd5ceebfSJohn Snow
4005bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
4006bd5ceebfSJohn Snow{"return": ""}
4007bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
4008bd5ceebfSJohn Snow{"return": ""}
4009bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
4010bd5ceebfSJohn Snow{"return": ""}
4011bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
4012bd5ceebfSJohn Snow{"return": ""}
4013bd5ceebfSJohn Snow{
40145c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4015bd5ceebfSJohn Snow}
4016bd5ceebfSJohn Snow
4017bd5ceebfSJohn Snow--- Reference Backup #0 ---
4018bd5ceebfSJohn Snow
4019bd5ceebfSJohn Snow{}
4020bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4021bd5ceebfSJohn Snow{"return": {}}
4022bd5ceebfSJohn Snow{}
4023bd5ceebfSJohn Snow{}
4024bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4025bd5ceebfSJohn Snow{"return": {}}
4026bd5ceebfSJohn Snow{}
40272d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
4028bd5ceebfSJohn Snow{"return": {}}
4029bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4030bd5ceebfSJohn Snow
4031bd5ceebfSJohn Snow--- Add Bitmap ---
4032bd5ceebfSJohn Snow
4033bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4034bd5ceebfSJohn Snow{"return": {}}
4035bd5ceebfSJohn Snow
4036bd5ceebfSJohn Snow--- Write #1 ---
4037bd5ceebfSJohn Snow
4038bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
4039bd5ceebfSJohn Snow{"return": ""}
4040bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
4041bd5ceebfSJohn Snow{"return": ""}
4042bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
4043bd5ceebfSJohn Snow{"return": ""}
4044bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
4045bd5ceebfSJohn Snow{"return": ""}
4046bd5ceebfSJohn Snow{
4047bd5ceebfSJohn Snow  "bitmaps": {
40485c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4049bd5ceebfSJohn Snow      {
4050bd5ceebfSJohn Snow        "busy": false,
4051bd5ceebfSJohn Snow        "count": 393216,
4052bd5ceebfSJohn Snow        "granularity": 65536,
4053bd5ceebfSJohn Snow        "name": "bitmap0",
4054bd5ceebfSJohn Snow        "persistent": false,
405581cbfd50SDaniel P. Berrangé        "recording": true
4056bd5ceebfSJohn Snow      }
4057bd5ceebfSJohn Snow    ]
4058bd5ceebfSJohn Snow  }
4059bd5ceebfSJohn Snow}
4060bd5ceebfSJohn Snow
4061bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4062bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4063bd5ceebfSJohn Snow
4064bd5ceebfSJohn Snow--- Reference Backup #1 ---
4065bd5ceebfSJohn Snow
4066bd5ceebfSJohn Snow{}
4067bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4068bd5ceebfSJohn Snow{"return": {}}
4069bd5ceebfSJohn Snow{}
4070bd5ceebfSJohn Snow{}
4071bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4072bd5ceebfSJohn Snow{"return": {}}
4073bd5ceebfSJohn Snow{}
40742d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
4075bd5ceebfSJohn Snow{"return": {}}
4076bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4077bd5ceebfSJohn Snow
4078bd5ceebfSJohn Snow{"return": ""}
4079bd5ceebfSJohn Snow
4080bd5ceebfSJohn Snow--- Test Backup #1 ---
4081bd5ceebfSJohn Snow
4082bd5ceebfSJohn Snow{}
4083bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4084bd5ceebfSJohn Snow{"return": {}}
4085bd5ceebfSJohn Snow{}
4086bd5ceebfSJohn Snow{}
4087bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4088bd5ceebfSJohn Snow{"return": {}}
4089bd5ceebfSJohn Snow{}
40902d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
4091bd5ceebfSJohn Snow{"return": {}}
4092bd5ceebfSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4093bd5ceebfSJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 458752, "offset": 65536, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4094bd5ceebfSJohn Snow{
4095bd5ceebfSJohn Snow  "bitmaps": {
40965c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4097bd5ceebfSJohn Snow      {
4098bd5ceebfSJohn Snow        "busy": false,
4099bd5ceebfSJohn Snow        "count": 393216,
4100bd5ceebfSJohn Snow        "granularity": 65536,
4101bd5ceebfSJohn Snow        "name": "bitmap0",
4102bd5ceebfSJohn Snow        "persistent": false,
410381cbfd50SDaniel P. Berrangé        "recording": true
4104bd5ceebfSJohn Snow      }
4105bd5ceebfSJohn Snow    ]
4106bd5ceebfSJohn Snow  }
4107bd5ceebfSJohn Snow}
4108bd5ceebfSJohn Snow
4109bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4110bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4111bd5ceebfSJohn Snow
4112bd5ceebfSJohn Snow--- Write #3 ---
4113bd5ceebfSJohn Snow
4114bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
4115bd5ceebfSJohn Snow{"return": ""}
4116bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
4117bd5ceebfSJohn Snow{"return": ""}
4118bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
4119bd5ceebfSJohn Snow{"return": ""}
4120bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
4121bd5ceebfSJohn Snow{"return": ""}
4122bd5ceebfSJohn Snow{
4123bd5ceebfSJohn Snow  "bitmaps": {
41245c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4125bd5ceebfSJohn Snow      {
4126bd5ceebfSJohn Snow        "busy": false,
4127bd5ceebfSJohn Snow        "count": 917504,
4128bd5ceebfSJohn Snow        "granularity": 65536,
4129bd5ceebfSJohn Snow        "name": "bitmap0",
4130bd5ceebfSJohn Snow        "persistent": false,
413181cbfd50SDaniel P. Berrangé        "recording": true
4132bd5ceebfSJohn Snow      }
4133bd5ceebfSJohn Snow    ]
4134bd5ceebfSJohn Snow  }
4135bd5ceebfSJohn Snow}
4136bd5ceebfSJohn Snow
4137bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4138bd5ceebfSJohn Snowexpecting 14 dirty sectors; have 14. OK!
4139bd5ceebfSJohn Snow
4140bd5ceebfSJohn Snow--- Reference Backup #2 ---
4141bd5ceebfSJohn Snow
4142bd5ceebfSJohn Snow{}
4143bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4144bd5ceebfSJohn Snow{"return": {}}
4145bd5ceebfSJohn Snow{}
4146bd5ceebfSJohn Snow{}
4147bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4148bd5ceebfSJohn Snow{"return": {}}
4149bd5ceebfSJohn Snow{}
41502d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
4151bd5ceebfSJohn Snow{"return": {}}
4152bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4153bd5ceebfSJohn Snow
4154bd5ceebfSJohn Snow--- Test Backup #2 ---
4155bd5ceebfSJohn Snow
4156bd5ceebfSJohn Snow{}
4157bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4158bd5ceebfSJohn Snow{"return": {}}
4159bd5ceebfSJohn Snow{}
4160bd5ceebfSJohn Snow{}
4161bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4162bd5ceebfSJohn Snow{"return": {}}
4163bd5ceebfSJohn Snow{}
41642d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
4165bd5ceebfSJohn Snow{"return": {}}
4166bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4167bd5ceebfSJohn Snow{"return": {}}
4168bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4169bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4170bd5ceebfSJohn Snow{
4171bd5ceebfSJohn Snow  "bitmaps": {
41725c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4173bd5ceebfSJohn Snow      {
4174bd5ceebfSJohn Snow        "busy": false,
4175bd5ceebfSJohn Snow        "count": 0,
4176bd5ceebfSJohn Snow        "granularity": 65536,
4177bd5ceebfSJohn Snow        "name": "bitmap0",
4178bd5ceebfSJohn Snow        "persistent": false,
417981cbfd50SDaniel P. Berrangé        "recording": true
4180bd5ceebfSJohn Snow      }
4181bd5ceebfSJohn Snow    ]
4182bd5ceebfSJohn Snow  }
4183bd5ceebfSJohn Snow}
4184bd5ceebfSJohn Snow
4185bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4186bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
4187bd5ceebfSJohn Snow
4188bd5ceebfSJohn Snow--- Cleanup ---
4189bd5ceebfSJohn Snow
4190bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4191bd5ceebfSJohn Snow{"return": {}}
4192bd5ceebfSJohn Snow{
41935c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4194bd5ceebfSJohn Snow}
4195bd5ceebfSJohn Snow
4196bd5ceebfSJohn Snow--- Verification ---
4197bd5ceebfSJohn Snow
4198bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4199bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4200bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4201bd5ceebfSJohn Snow
4202bd5ceebfSJohn Snow
4203bd5ceebfSJohn Snow=== Mode top; Bitmap Sync on-success without failure ===
4204bd5ceebfSJohn Snow
4205bd5ceebfSJohn Snow--- Preparing image & VM ---
4206bd5ceebfSJohn Snow
4207bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4208bd5ceebfSJohn Snow{"return": {}}
4209bd5ceebfSJohn Snow
4210bd5ceebfSJohn Snow--- Write #0 ---
4211bd5ceebfSJohn Snow
4212bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
4213bd5ceebfSJohn Snow{"return": ""}
4214bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
4215bd5ceebfSJohn Snow{"return": ""}
4216bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
4217bd5ceebfSJohn Snow{"return": ""}
4218bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
4219bd5ceebfSJohn Snow{"return": ""}
4220bd5ceebfSJohn Snow{
42215c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4222bd5ceebfSJohn Snow}
4223bd5ceebfSJohn Snow
4224bd5ceebfSJohn Snow--- Reference Backup #0 ---
4225bd5ceebfSJohn Snow
4226bd5ceebfSJohn Snow{}
4227bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4228bd5ceebfSJohn Snow{"return": {}}
4229bd5ceebfSJohn Snow{}
4230bd5ceebfSJohn Snow{}
4231bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4232bd5ceebfSJohn Snow{"return": {}}
4233bd5ceebfSJohn Snow{}
42342d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
4235bd5ceebfSJohn Snow{"return": {}}
4236bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4237bd5ceebfSJohn Snow
4238bd5ceebfSJohn Snow--- Add Bitmap ---
4239bd5ceebfSJohn Snow
4240bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4241bd5ceebfSJohn Snow{"return": {}}
4242bd5ceebfSJohn Snow
4243bd5ceebfSJohn Snow--- Write #1 ---
4244bd5ceebfSJohn Snow
4245bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
4246bd5ceebfSJohn Snow{"return": ""}
4247bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
4248bd5ceebfSJohn Snow{"return": ""}
4249bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
4250bd5ceebfSJohn Snow{"return": ""}
4251bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
4252bd5ceebfSJohn Snow{"return": ""}
4253bd5ceebfSJohn Snow{
4254bd5ceebfSJohn Snow  "bitmaps": {
42555c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4256bd5ceebfSJohn Snow      {
4257bd5ceebfSJohn Snow        "busy": false,
4258bd5ceebfSJohn Snow        "count": 393216,
4259bd5ceebfSJohn Snow        "granularity": 65536,
4260bd5ceebfSJohn Snow        "name": "bitmap0",
4261bd5ceebfSJohn Snow        "persistent": false,
426281cbfd50SDaniel P. Berrangé        "recording": true
4263bd5ceebfSJohn Snow      }
4264bd5ceebfSJohn Snow    ]
4265bd5ceebfSJohn Snow  }
4266bd5ceebfSJohn Snow}
4267bd5ceebfSJohn Snow
4268bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4269bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4270bd5ceebfSJohn Snow
4271bd5ceebfSJohn Snow--- Reference Backup #1 ---
4272bd5ceebfSJohn Snow
4273bd5ceebfSJohn Snow{}
4274bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4275bd5ceebfSJohn Snow{"return": {}}
4276bd5ceebfSJohn Snow{}
4277bd5ceebfSJohn Snow{}
4278bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4279bd5ceebfSJohn Snow{"return": {}}
4280bd5ceebfSJohn Snow{}
42812d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
4282bd5ceebfSJohn Snow{"return": {}}
4283bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4284bd5ceebfSJohn Snow
4285bd5ceebfSJohn Snow--- Test Backup #1 ---
4286bd5ceebfSJohn Snow
4287bd5ceebfSJohn Snow{}
4288bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4289bd5ceebfSJohn Snow{"return": {}}
4290bd5ceebfSJohn Snow{}
4291bd5ceebfSJohn Snow{}
4292bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4293bd5ceebfSJohn Snow{"return": {}}
4294bd5ceebfSJohn Snow{}
42952d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
4296bd5ceebfSJohn Snow{"return": {}}
4297bd5ceebfSJohn Snow
4298bd5ceebfSJohn Snow--- Write #2 ---
4299bd5ceebfSJohn Snow
4300bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
4301bd5ceebfSJohn Snow{"return": ""}
4302bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
4303bd5ceebfSJohn Snow{"return": ""}
4304bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
4305bd5ceebfSJohn Snow{"return": ""}
4306bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
4307bd5ceebfSJohn Snow{"return": ""}
4308bd5ceebfSJohn Snow{
4309bd5ceebfSJohn Snow  "bitmaps": {
4310af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
4311af5bcd77SVladimir Sementsov-Ogievskiy      {
4312af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
4313af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
4314af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
4315af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
4316af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
4317af5bcd77SVladimir Sementsov-Ogievskiy      },
4318af5bcd77SVladimir Sementsov-Ogievskiy      {
4319af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
4320af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
4321af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
4322af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
4323af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
4324*006e845bSVladimir Sementsov-Ogievskiy      },
4325bd5ceebfSJohn Snow      {
4326bd5ceebfSJohn Snow        "busy": false,
4327bd5ceebfSJohn Snow        "count": 0,
4328bd5ceebfSJohn Snow        "granularity": 65536,
4329bd5ceebfSJohn Snow        "persistent": false,
433081cbfd50SDaniel P. Berrangé        "recording": false
4331*006e845bSVladimir Sementsov-Ogievskiy      }
4332*006e845bSVladimir Sementsov-Ogievskiy    ],
4333*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
4334bd5ceebfSJohn Snow      {
4335bd5ceebfSJohn Snow        "busy": false,
4336bd5ceebfSJohn Snow        "count": 458752,
4337bd5ceebfSJohn Snow        "granularity": 65536,
4338bd5ceebfSJohn Snow        "persistent": false,
433981cbfd50SDaniel P. Berrangé        "recording": true
4340bd5ceebfSJohn Snow      },
4341bd5ceebfSJohn Snow      {
4342bd5ceebfSJohn Snow        "busy": true,
4343bd5ceebfSJohn Snow        "count": 393216,
4344bd5ceebfSJohn Snow        "granularity": 65536,
4345bd5ceebfSJohn Snow        "name": "bitmap0",
4346bd5ceebfSJohn Snow        "persistent": false,
434781cbfd50SDaniel P. Berrangé        "recording": true
4348bd5ceebfSJohn Snow      }
4349bd5ceebfSJohn Snow    ]
4350bd5ceebfSJohn Snow  }
4351bd5ceebfSJohn Snow}
4352bd5ceebfSJohn Snow
4353bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4354bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4355bd5ceebfSJohn Snow
4356bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
4357bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
4358bd5ceebfSJohn Snow
4359bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4360bd5ceebfSJohn Snow{"return": {}}
4361bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4362bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4363bd5ceebfSJohn Snow{
4364bd5ceebfSJohn Snow  "bitmaps": {
43655c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4366bd5ceebfSJohn Snow      {
4367bd5ceebfSJohn Snow        "busy": false,
4368bd5ceebfSJohn Snow        "count": 458752,
4369bd5ceebfSJohn Snow        "granularity": 65536,
4370bd5ceebfSJohn Snow        "name": "bitmap0",
4371bd5ceebfSJohn Snow        "persistent": false,
437281cbfd50SDaniel P. Berrangé        "recording": true
4373bd5ceebfSJohn Snow      }
4374bd5ceebfSJohn Snow    ]
4375bd5ceebfSJohn Snow  }
4376bd5ceebfSJohn Snow}
4377bd5ceebfSJohn Snow
4378bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4379bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
4380bd5ceebfSJohn Snow
4381bd5ceebfSJohn Snow--- Write #3 ---
4382bd5ceebfSJohn Snow
4383bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
4384bd5ceebfSJohn Snow{"return": ""}
4385bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
4386bd5ceebfSJohn Snow{"return": ""}
4387bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
4388bd5ceebfSJohn Snow{"return": ""}
4389bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
4390bd5ceebfSJohn Snow{"return": ""}
4391bd5ceebfSJohn Snow{
4392bd5ceebfSJohn Snow  "bitmaps": {
43935c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4394bd5ceebfSJohn Snow      {
4395bd5ceebfSJohn Snow        "busy": false,
4396bd5ceebfSJohn Snow        "count": 786432,
4397bd5ceebfSJohn Snow        "granularity": 65536,
4398bd5ceebfSJohn Snow        "name": "bitmap0",
4399bd5ceebfSJohn Snow        "persistent": false,
440081cbfd50SDaniel P. Berrangé        "recording": true
4401bd5ceebfSJohn Snow      }
4402bd5ceebfSJohn Snow    ]
4403bd5ceebfSJohn Snow  }
4404bd5ceebfSJohn Snow}
4405bd5ceebfSJohn Snow
4406bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4407bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
4408bd5ceebfSJohn Snow
4409bd5ceebfSJohn Snow--- Reference Backup #2 ---
4410bd5ceebfSJohn Snow
4411bd5ceebfSJohn Snow{}
4412bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4413bd5ceebfSJohn Snow{"return": {}}
4414bd5ceebfSJohn Snow{}
4415bd5ceebfSJohn Snow{}
4416bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4417bd5ceebfSJohn Snow{"return": {}}
4418bd5ceebfSJohn Snow{}
44192d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
4420bd5ceebfSJohn Snow{"return": {}}
4421bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4422bd5ceebfSJohn Snow
4423bd5ceebfSJohn Snow--- Test Backup #2 ---
4424bd5ceebfSJohn Snow
4425bd5ceebfSJohn Snow{}
4426bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4427bd5ceebfSJohn Snow{"return": {}}
4428bd5ceebfSJohn Snow{}
4429bd5ceebfSJohn Snow{}
4430bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4431bd5ceebfSJohn Snow{"return": {}}
4432bd5ceebfSJohn Snow{}
44332d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
4434bd5ceebfSJohn Snow{"return": {}}
4435bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4436bd5ceebfSJohn Snow{"return": {}}
4437bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4438bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4439bd5ceebfSJohn Snow{
4440bd5ceebfSJohn Snow  "bitmaps": {
44415c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4442bd5ceebfSJohn Snow      {
4443bd5ceebfSJohn Snow        "busy": false,
4444bd5ceebfSJohn Snow        "count": 0,
4445bd5ceebfSJohn Snow        "granularity": 65536,
4446bd5ceebfSJohn Snow        "name": "bitmap0",
4447bd5ceebfSJohn Snow        "persistent": false,
444881cbfd50SDaniel P. Berrangé        "recording": true
4449bd5ceebfSJohn Snow      }
4450bd5ceebfSJohn Snow    ]
4451bd5ceebfSJohn Snow  }
4452bd5ceebfSJohn Snow}
4453bd5ceebfSJohn Snow
4454bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4455bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
4456bd5ceebfSJohn Snow
4457bd5ceebfSJohn Snow--- Cleanup ---
4458bd5ceebfSJohn Snow
4459bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4460bd5ceebfSJohn Snow{"return": {}}
4461bd5ceebfSJohn Snow{
44625c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4463bd5ceebfSJohn Snow}
4464bd5ceebfSJohn Snow
4465bd5ceebfSJohn Snow--- Verification ---
4466bd5ceebfSJohn Snow
4467bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4468bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4469bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4470bd5ceebfSJohn Snow
4471bd5ceebfSJohn Snow
4472bd5ceebfSJohn Snow=== Mode top; Bitmap Sync always with simulated failure ===
4473bd5ceebfSJohn Snow
4474bd5ceebfSJohn Snow--- Preparing image & VM ---
4475bd5ceebfSJohn Snow
4476bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4477bd5ceebfSJohn Snow{"return": {}}
4478bd5ceebfSJohn Snow
4479bd5ceebfSJohn Snow--- Write #0 ---
4480bd5ceebfSJohn Snow
4481bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
4482bd5ceebfSJohn Snow{"return": ""}
4483bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
4484bd5ceebfSJohn Snow{"return": ""}
4485bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
4486bd5ceebfSJohn Snow{"return": ""}
4487bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
4488bd5ceebfSJohn Snow{"return": ""}
4489bd5ceebfSJohn Snow{
44905c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4491bd5ceebfSJohn Snow}
4492bd5ceebfSJohn Snow
4493bd5ceebfSJohn Snow--- Reference Backup #0 ---
4494bd5ceebfSJohn Snow
4495bd5ceebfSJohn Snow{}
4496bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4497bd5ceebfSJohn Snow{"return": {}}
4498bd5ceebfSJohn Snow{}
4499bd5ceebfSJohn Snow{}
4500bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4501bd5ceebfSJohn Snow{"return": {}}
4502bd5ceebfSJohn Snow{}
45032d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
4504bd5ceebfSJohn Snow{"return": {}}
4505bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4506bd5ceebfSJohn Snow
4507bd5ceebfSJohn Snow--- Add Bitmap ---
4508bd5ceebfSJohn Snow
4509bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4510bd5ceebfSJohn Snow{"return": {}}
4511bd5ceebfSJohn Snow
4512bd5ceebfSJohn Snow--- Write #1 ---
4513bd5ceebfSJohn Snow
4514bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
4515bd5ceebfSJohn Snow{"return": ""}
4516bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
4517bd5ceebfSJohn Snow{"return": ""}
4518bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
4519bd5ceebfSJohn Snow{"return": ""}
4520bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
4521bd5ceebfSJohn Snow{"return": ""}
4522bd5ceebfSJohn Snow{
4523bd5ceebfSJohn Snow  "bitmaps": {
45245c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4525bd5ceebfSJohn Snow      {
4526bd5ceebfSJohn Snow        "busy": false,
4527bd5ceebfSJohn Snow        "count": 393216,
4528bd5ceebfSJohn Snow        "granularity": 65536,
4529bd5ceebfSJohn Snow        "name": "bitmap0",
4530bd5ceebfSJohn Snow        "persistent": false,
453181cbfd50SDaniel P. Berrangé        "recording": true
4532bd5ceebfSJohn Snow      }
4533bd5ceebfSJohn Snow    ]
4534bd5ceebfSJohn Snow  }
4535bd5ceebfSJohn Snow}
4536bd5ceebfSJohn Snow
4537bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4538bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4539bd5ceebfSJohn Snow
4540bd5ceebfSJohn Snow--- Reference Backup #1 ---
4541bd5ceebfSJohn Snow
4542bd5ceebfSJohn Snow{}
4543bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4544bd5ceebfSJohn Snow{"return": {}}
4545bd5ceebfSJohn Snow{}
4546bd5ceebfSJohn Snow{}
4547bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4548bd5ceebfSJohn Snow{"return": {}}
4549bd5ceebfSJohn Snow{}
45502d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
4551bd5ceebfSJohn Snow{"return": {}}
4552bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4553bd5ceebfSJohn Snow
4554bd5ceebfSJohn Snow--- Test Backup #1 ---
4555bd5ceebfSJohn Snow
4556bd5ceebfSJohn Snow{}
4557bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4558bd5ceebfSJohn Snow{"return": {}}
4559bd5ceebfSJohn Snow{}
4560bd5ceebfSJohn Snow{}
4561bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4562bd5ceebfSJohn Snow{"return": {}}
4563bd5ceebfSJohn Snow{}
45642d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
4565bd5ceebfSJohn Snow{"return": {}}
4566bd5ceebfSJohn Snow
4567bd5ceebfSJohn Snow--- Write #2 ---
4568bd5ceebfSJohn Snow
4569bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
4570bd5ceebfSJohn Snow{"return": ""}
4571bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
4572bd5ceebfSJohn Snow{"return": ""}
4573bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
4574bd5ceebfSJohn Snow{"return": ""}
4575bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
4576bd5ceebfSJohn Snow{"return": ""}
4577bd5ceebfSJohn Snow{
4578bd5ceebfSJohn Snow  "bitmaps": {
4579af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
4580af5bcd77SVladimir Sementsov-Ogievskiy      {
4581af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
4582af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
4583af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
4584af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
4585af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
4586af5bcd77SVladimir Sementsov-Ogievskiy      },
4587af5bcd77SVladimir Sementsov-Ogievskiy      {
4588af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
4589af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
4590af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
4591af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
4592af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
4593*006e845bSVladimir Sementsov-Ogievskiy      },
4594bd5ceebfSJohn Snow      {
4595bd5ceebfSJohn Snow        "busy": false,
4596bd5ceebfSJohn Snow        "count": 0,
4597bd5ceebfSJohn Snow        "granularity": 65536,
4598bd5ceebfSJohn Snow        "persistent": false,
459981cbfd50SDaniel P. Berrangé        "recording": false
4600*006e845bSVladimir Sementsov-Ogievskiy      }
4601*006e845bSVladimir Sementsov-Ogievskiy    ],
4602*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
4603bd5ceebfSJohn Snow      {
4604bd5ceebfSJohn Snow        "busy": false,
4605bd5ceebfSJohn Snow        "count": 458752,
4606bd5ceebfSJohn Snow        "granularity": 65536,
4607bd5ceebfSJohn Snow        "persistent": false,
460881cbfd50SDaniel P. Berrangé        "recording": true
4609bd5ceebfSJohn Snow      },
4610bd5ceebfSJohn Snow      {
4611bd5ceebfSJohn Snow        "busy": true,
4612bd5ceebfSJohn Snow        "count": 393216,
4613bd5ceebfSJohn Snow        "granularity": 65536,
4614bd5ceebfSJohn Snow        "name": "bitmap0",
4615bd5ceebfSJohn Snow        "persistent": false,
461681cbfd50SDaniel P. Berrangé        "recording": true
4617bd5ceebfSJohn Snow      }
4618bd5ceebfSJohn Snow    ]
4619bd5ceebfSJohn Snow  }
4620bd5ceebfSJohn Snow}
4621bd5ceebfSJohn Snow
4622bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4623bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4624bd5ceebfSJohn Snow
4625bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
4626bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
4627bd5ceebfSJohn Snow
4628bd5ceebfSJohn Snow{"execute": "job-cancel", "arguments": {"id": "backup_1"}}
4629bd5ceebfSJohn Snow{"return": {}}
4630bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4631bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4632bd5ceebfSJohn Snow{
4633bd5ceebfSJohn Snow  "bitmaps": {
46345c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4635bd5ceebfSJohn Snow      {
4636bd5ceebfSJohn Snow        "busy": false,
4637bd5ceebfSJohn Snow        "count": 458752,
4638bd5ceebfSJohn Snow        "granularity": 65536,
4639bd5ceebfSJohn Snow        "name": "bitmap0",
4640bd5ceebfSJohn Snow        "persistent": false,
464181cbfd50SDaniel P. Berrangé        "recording": true
4642bd5ceebfSJohn Snow      }
4643bd5ceebfSJohn Snow    ]
4644bd5ceebfSJohn Snow  }
4645bd5ceebfSJohn Snow}
4646bd5ceebfSJohn Snow
4647bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4648bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
4649bd5ceebfSJohn Snow
4650bd5ceebfSJohn Snow--- Write #3 ---
4651bd5ceebfSJohn Snow
4652bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
4653bd5ceebfSJohn Snow{"return": ""}
4654bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
4655bd5ceebfSJohn Snow{"return": ""}
4656bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
4657bd5ceebfSJohn Snow{"return": ""}
4658bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
4659bd5ceebfSJohn Snow{"return": ""}
4660bd5ceebfSJohn Snow{
4661bd5ceebfSJohn Snow  "bitmaps": {
46625c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4663bd5ceebfSJohn Snow      {
4664bd5ceebfSJohn Snow        "busy": false,
4665bd5ceebfSJohn Snow        "count": 786432,
4666bd5ceebfSJohn Snow        "granularity": 65536,
4667bd5ceebfSJohn Snow        "name": "bitmap0",
4668bd5ceebfSJohn Snow        "persistent": false,
466981cbfd50SDaniel P. Berrangé        "recording": true
4670bd5ceebfSJohn Snow      }
4671bd5ceebfSJohn Snow    ]
4672bd5ceebfSJohn Snow  }
4673bd5ceebfSJohn Snow}
4674bd5ceebfSJohn Snow
4675bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4676bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
4677bd5ceebfSJohn Snow
4678bd5ceebfSJohn Snow--- Reference Backup #2 ---
4679bd5ceebfSJohn Snow
4680bd5ceebfSJohn Snow{}
4681bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4682bd5ceebfSJohn Snow{"return": {}}
4683bd5ceebfSJohn Snow{}
4684bd5ceebfSJohn Snow{}
4685bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4686bd5ceebfSJohn Snow{"return": {}}
4687bd5ceebfSJohn Snow{}
46882d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
4689bd5ceebfSJohn Snow{"return": {}}
4690bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4691bd5ceebfSJohn Snow
4692bd5ceebfSJohn Snow--- Test Backup #2 ---
4693bd5ceebfSJohn Snow
4694bd5ceebfSJohn Snow{}
4695bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4696bd5ceebfSJohn Snow{"return": {}}
4697bd5ceebfSJohn Snow{}
4698bd5ceebfSJohn Snow{}
4699bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4700bd5ceebfSJohn Snow{"return": {}}
4701bd5ceebfSJohn Snow{}
47022d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
4703bd5ceebfSJohn Snow{"return": {}}
4704bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4705bd5ceebfSJohn Snow{"return": {}}
4706bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4707bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4708bd5ceebfSJohn Snow{
4709bd5ceebfSJohn Snow  "bitmaps": {
47105c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4711bd5ceebfSJohn Snow      {
4712bd5ceebfSJohn Snow        "busy": false,
4713bd5ceebfSJohn Snow        "count": 0,
4714bd5ceebfSJohn Snow        "granularity": 65536,
4715bd5ceebfSJohn Snow        "name": "bitmap0",
4716bd5ceebfSJohn Snow        "persistent": false,
471781cbfd50SDaniel P. Berrangé        "recording": true
4718bd5ceebfSJohn Snow      }
4719bd5ceebfSJohn Snow    ]
4720bd5ceebfSJohn Snow  }
4721bd5ceebfSJohn Snow}
4722bd5ceebfSJohn Snow
4723bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4724bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
4725bd5ceebfSJohn Snow
4726bd5ceebfSJohn Snow--- Cleanup ---
4727bd5ceebfSJohn Snow
4728bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4729bd5ceebfSJohn Snow{"return": {}}
4730bd5ceebfSJohn Snow{
47315c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4732bd5ceebfSJohn Snow}
4733bd5ceebfSJohn Snow
4734bd5ceebfSJohn Snow--- Verification ---
4735bd5ceebfSJohn Snow
4736bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4737bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4738bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4739bd5ceebfSJohn Snow
4740bd5ceebfSJohn Snow
4741bd5ceebfSJohn Snow=== Mode top; Bitmap Sync always with intermediate failure ===
4742bd5ceebfSJohn Snow
4743bd5ceebfSJohn Snow--- Preparing image & VM ---
4744bd5ceebfSJohn Snow
4745bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "blkdebug", "image": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "inject-error": [{"errno": 5, "event": "read_aio", "immediately": false, "once": true, "state": 3}], "set-state": [{"event": "flush_to_disk", "new-state": 2, "state": 1}, {"event": "read_aio", "new-state": 3, "state": 2}]}, "node-name": "drive0"}}
4746bd5ceebfSJohn Snow{"return": {}}
4747bd5ceebfSJohn Snow
4748bd5ceebfSJohn Snow--- Write #0 ---
4749bd5ceebfSJohn Snow
4750bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
4751bd5ceebfSJohn Snow{"return": ""}
4752bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
4753bd5ceebfSJohn Snow{"return": ""}
4754bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
4755bd5ceebfSJohn Snow{"return": ""}
4756bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
4757bd5ceebfSJohn Snow{"return": ""}
4758bd5ceebfSJohn Snow{
47595c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4760bd5ceebfSJohn Snow}
4761bd5ceebfSJohn Snow
4762bd5ceebfSJohn Snow--- Reference Backup #0 ---
4763bd5ceebfSJohn Snow
4764bd5ceebfSJohn Snow{}
4765bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4766bd5ceebfSJohn Snow{"return": {}}
4767bd5ceebfSJohn Snow{}
4768bd5ceebfSJohn Snow{}
4769bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4770bd5ceebfSJohn Snow{"return": {}}
4771bd5ceebfSJohn Snow{}
47722d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
4773bd5ceebfSJohn Snow{"return": {}}
4774bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4775bd5ceebfSJohn Snow
4776bd5ceebfSJohn Snow--- Add Bitmap ---
4777bd5ceebfSJohn Snow
4778bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4779bd5ceebfSJohn Snow{"return": {}}
4780bd5ceebfSJohn Snow
4781bd5ceebfSJohn Snow--- Write #1 ---
4782bd5ceebfSJohn Snow
4783bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
4784bd5ceebfSJohn Snow{"return": ""}
4785bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
4786bd5ceebfSJohn Snow{"return": ""}
4787bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
4788bd5ceebfSJohn Snow{"return": ""}
4789bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
4790bd5ceebfSJohn Snow{"return": ""}
4791bd5ceebfSJohn Snow{
4792bd5ceebfSJohn Snow  "bitmaps": {
47935c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4794bd5ceebfSJohn Snow      {
4795bd5ceebfSJohn Snow        "busy": false,
4796bd5ceebfSJohn Snow        "count": 393216,
4797bd5ceebfSJohn Snow        "granularity": 65536,
4798bd5ceebfSJohn Snow        "name": "bitmap0",
4799bd5ceebfSJohn Snow        "persistent": false,
480081cbfd50SDaniel P. Berrangé        "recording": true
4801bd5ceebfSJohn Snow      }
4802bd5ceebfSJohn Snow    ]
4803bd5ceebfSJohn Snow  }
4804bd5ceebfSJohn Snow}
4805bd5ceebfSJohn Snow
4806bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4807bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4808bd5ceebfSJohn Snow
4809bd5ceebfSJohn Snow--- Reference Backup #1 ---
4810bd5ceebfSJohn Snow
4811bd5ceebfSJohn Snow{}
4812bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4813bd5ceebfSJohn Snow{"return": {}}
4814bd5ceebfSJohn Snow{}
4815bd5ceebfSJohn Snow{}
4816bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4817bd5ceebfSJohn Snow{"return": {}}
4818bd5ceebfSJohn Snow{}
48192d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
4820bd5ceebfSJohn Snow{"return": {}}
4821bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4822bd5ceebfSJohn Snow
4823bd5ceebfSJohn Snow{"return": ""}
4824bd5ceebfSJohn Snow
4825bd5ceebfSJohn Snow--- Test Backup #1 ---
4826bd5ceebfSJohn Snow
4827bd5ceebfSJohn Snow{}
4828bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4829bd5ceebfSJohn Snow{"return": {}}
4830bd5ceebfSJohn Snow{}
4831bd5ceebfSJohn Snow{}
4832bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4833bd5ceebfSJohn Snow{"return": {}}
4834bd5ceebfSJohn Snow{}
48352d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
4836bd5ceebfSJohn Snow{"return": {}}
4837bd5ceebfSJohn Snow{"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4838bd5ceebfSJohn Snow{"data": {"device": "backup_1", "error": "Input/output error", "len": 458752, "offset": 65536, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4839bd5ceebfSJohn Snow{
4840bd5ceebfSJohn Snow  "bitmaps": {
48415c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4842bd5ceebfSJohn Snow      {
4843bd5ceebfSJohn Snow        "busy": false,
4844bd5ceebfSJohn Snow        "count": 393216,
4845bd5ceebfSJohn Snow        "granularity": 65536,
4846bd5ceebfSJohn Snow        "name": "bitmap0",
4847bd5ceebfSJohn Snow        "persistent": false,
484881cbfd50SDaniel P. Berrangé        "recording": true
4849bd5ceebfSJohn Snow      }
4850bd5ceebfSJohn Snow    ]
4851bd5ceebfSJohn Snow  }
4852bd5ceebfSJohn Snow}
4853bd5ceebfSJohn Snow
4854bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4855bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
4856bd5ceebfSJohn Snow
4857bd5ceebfSJohn Snow--- Write #3 ---
4858bd5ceebfSJohn Snow
4859bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
4860bd5ceebfSJohn Snow{"return": ""}
4861bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
4862bd5ceebfSJohn Snow{"return": ""}
4863bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
4864bd5ceebfSJohn Snow{"return": ""}
4865bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
4866bd5ceebfSJohn Snow{"return": ""}
4867bd5ceebfSJohn Snow{
4868bd5ceebfSJohn Snow  "bitmaps": {
48695c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4870bd5ceebfSJohn Snow      {
4871bd5ceebfSJohn Snow        "busy": false,
4872bd5ceebfSJohn Snow        "count": 917504,
4873bd5ceebfSJohn Snow        "granularity": 65536,
4874bd5ceebfSJohn Snow        "name": "bitmap0",
4875bd5ceebfSJohn Snow        "persistent": false,
487681cbfd50SDaniel P. Berrangé        "recording": true
4877bd5ceebfSJohn Snow      }
4878bd5ceebfSJohn Snow    ]
4879bd5ceebfSJohn Snow  }
4880bd5ceebfSJohn Snow}
4881bd5ceebfSJohn Snow
4882bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4883bd5ceebfSJohn Snowexpecting 14 dirty sectors; have 14. OK!
4884bd5ceebfSJohn Snow
4885bd5ceebfSJohn Snow--- Reference Backup #2 ---
4886bd5ceebfSJohn Snow
4887bd5ceebfSJohn Snow{}
4888bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4889bd5ceebfSJohn Snow{"return": {}}
4890bd5ceebfSJohn Snow{}
4891bd5ceebfSJohn Snow{}
4892bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4893bd5ceebfSJohn Snow{"return": {}}
4894bd5ceebfSJohn Snow{}
48952d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
4896bd5ceebfSJohn Snow{"return": {}}
4897bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4898bd5ceebfSJohn Snow
4899bd5ceebfSJohn Snow--- Test Backup #2 ---
4900bd5ceebfSJohn Snow
4901bd5ceebfSJohn Snow{}
4902bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4903bd5ceebfSJohn Snow{"return": {}}
4904bd5ceebfSJohn Snow{}
4905bd5ceebfSJohn Snow{}
4906bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4907bd5ceebfSJohn Snow{"return": {}}
4908bd5ceebfSJohn Snow{}
49092d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
4910bd5ceebfSJohn Snow{"return": {}}
4911bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4912bd5ceebfSJohn Snow{"return": {}}
4913bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4914bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4915bd5ceebfSJohn Snow{
4916bd5ceebfSJohn Snow  "bitmaps": {
49175c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
4918bd5ceebfSJohn Snow      {
4919bd5ceebfSJohn Snow        "busy": false,
4920bd5ceebfSJohn Snow        "count": 0,
4921bd5ceebfSJohn Snow        "granularity": 65536,
4922bd5ceebfSJohn Snow        "name": "bitmap0",
4923bd5ceebfSJohn Snow        "persistent": false,
492481cbfd50SDaniel P. Berrangé        "recording": true
4925bd5ceebfSJohn Snow      }
4926bd5ceebfSJohn Snow    ]
4927bd5ceebfSJohn Snow  }
4928bd5ceebfSJohn Snow}
4929bd5ceebfSJohn Snow
4930bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
4931bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
4932bd5ceebfSJohn Snow
4933bd5ceebfSJohn Snow--- Cleanup ---
4934bd5ceebfSJohn Snow
4935bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4936bd5ceebfSJohn Snow{"return": {}}
4937bd5ceebfSJohn Snow{
49385c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4939bd5ceebfSJohn Snow}
4940bd5ceebfSJohn Snow
4941bd5ceebfSJohn Snow--- Verification ---
4942bd5ceebfSJohn Snow
4943bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4944bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4945bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4946bd5ceebfSJohn Snow
4947bd5ceebfSJohn Snow
4948bd5ceebfSJohn Snow=== Mode top; Bitmap Sync always without failure ===
4949bd5ceebfSJohn Snow
4950bd5ceebfSJohn Snow--- Preparing image & VM ---
4951bd5ceebfSJohn Snow
4952bd5ceebfSJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4953bd5ceebfSJohn Snow{"return": {}}
4954bd5ceebfSJohn Snow
4955bd5ceebfSJohn Snow--- Write #0 ---
4956bd5ceebfSJohn Snow
4957bd5ceebfSJohn Snowwrite -P0x49 0x0000000 0x10000
4958bd5ceebfSJohn Snow{"return": ""}
4959bd5ceebfSJohn Snowwrite -P0x6c 0x0100000 0x10000
4960bd5ceebfSJohn Snow{"return": ""}
4961bd5ceebfSJohn Snowwrite -P0x6f 0x2000000 0x10000
4962bd5ceebfSJohn Snow{"return": ""}
4963bd5ceebfSJohn Snowwrite -P0x76 0x3ff0000 0x10000
4964bd5ceebfSJohn Snow{"return": ""}
4965bd5ceebfSJohn Snow{
49665c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
4967bd5ceebfSJohn Snow}
4968bd5ceebfSJohn Snow
4969bd5ceebfSJohn Snow--- Reference Backup #0 ---
4970bd5ceebfSJohn Snow
4971bd5ceebfSJohn Snow{}
4972bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4973bd5ceebfSJohn Snow{"return": {}}
4974bd5ceebfSJohn Snow{}
4975bd5ceebfSJohn Snow{}
4976bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4977bd5ceebfSJohn Snow{"return": {}}
4978bd5ceebfSJohn Snow{}
49792d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0", "x-perf": {"max-workers": 1}}}
4980bd5ceebfSJohn Snow{"return": {}}
4981bd5ceebfSJohn Snow{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4982bd5ceebfSJohn Snow
4983bd5ceebfSJohn Snow--- Add Bitmap ---
4984bd5ceebfSJohn Snow
4985bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4986bd5ceebfSJohn Snow{"return": {}}
4987bd5ceebfSJohn Snow
4988bd5ceebfSJohn Snow--- Write #1 ---
4989bd5ceebfSJohn Snow
4990bd5ceebfSJohn Snowwrite -P0x65 0x0000000 0x10000
4991bd5ceebfSJohn Snow{"return": ""}
4992bd5ceebfSJohn Snowwrite -P0x77 0x00f8000 0x10000
4993bd5ceebfSJohn Snow{"return": ""}
4994bd5ceebfSJohn Snowwrite -P0x72 0x2008000 0x10000
4995bd5ceebfSJohn Snow{"return": ""}
4996bd5ceebfSJohn Snowwrite -P0x69 0x3fe0000 0x10000
4997bd5ceebfSJohn Snow{"return": ""}
4998bd5ceebfSJohn Snow{
4999bd5ceebfSJohn Snow  "bitmaps": {
50005c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
5001bd5ceebfSJohn Snow      {
5002bd5ceebfSJohn Snow        "busy": false,
5003bd5ceebfSJohn Snow        "count": 393216,
5004bd5ceebfSJohn Snow        "granularity": 65536,
5005bd5ceebfSJohn Snow        "name": "bitmap0",
5006bd5ceebfSJohn Snow        "persistent": false,
500781cbfd50SDaniel P. Berrangé        "recording": true
5008bd5ceebfSJohn Snow      }
5009bd5ceebfSJohn Snow    ]
5010bd5ceebfSJohn Snow  }
5011bd5ceebfSJohn Snow}
5012bd5ceebfSJohn Snow
5013bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
5014bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
5015bd5ceebfSJohn Snow
5016bd5ceebfSJohn Snow--- Reference Backup #1 ---
5017bd5ceebfSJohn Snow
5018bd5ceebfSJohn Snow{}
5019bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5020bd5ceebfSJohn Snow{"return": {}}
5021bd5ceebfSJohn Snow{}
5022bd5ceebfSJohn Snow{}
5023bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5024bd5ceebfSJohn Snow{"return": {}}
5025bd5ceebfSJohn Snow{}
50262d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
5027bd5ceebfSJohn Snow{"return": {}}
5028bd5ceebfSJohn Snow{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5029bd5ceebfSJohn Snow
5030bd5ceebfSJohn Snow--- Test Backup #1 ---
5031bd5ceebfSJohn Snow
5032bd5ceebfSJohn Snow{}
5033bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5034bd5ceebfSJohn Snow{"return": {}}
5035bd5ceebfSJohn Snow{}
5036bd5ceebfSJohn Snow{}
5037bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5038bd5ceebfSJohn Snow{"return": {}}
5039bd5ceebfSJohn Snow{}
50402d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_1", "sync": "top", "target": "backup_target_1", "x-perf": {"max-workers": 1}}}
5041bd5ceebfSJohn Snow{"return": {}}
5042bd5ceebfSJohn Snow
5043bd5ceebfSJohn Snow--- Write #2 ---
5044bd5ceebfSJohn Snow
5045bd5ceebfSJohn Snowwrite -P0x74 0x0010000 0x10000
5046bd5ceebfSJohn Snow{"return": ""}
5047bd5ceebfSJohn Snowwrite -P0x69 0x00e8000 0x10000
5048bd5ceebfSJohn Snow{"return": ""}
5049bd5ceebfSJohn Snowwrite -P0x6e 0x2018000 0x10000
5050bd5ceebfSJohn Snow{"return": ""}
5051bd5ceebfSJohn Snowwrite -P0x67 0x3fe0000 0x20000
5052bd5ceebfSJohn Snow{"return": ""}
5053bd5ceebfSJohn Snow{
5054bd5ceebfSJohn Snow  "bitmaps": {
5055af5bcd77SVladimir Sementsov-Ogievskiy    "backup-top": [
5056af5bcd77SVladimir Sementsov-Ogievskiy      {
5057af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
5058af5bcd77SVladimir Sementsov-Ogievskiy        "count": 67108864,
5059af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
5060af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
5061af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
5062af5bcd77SVladimir Sementsov-Ogievskiy      },
5063af5bcd77SVladimir Sementsov-Ogievskiy      {
5064af5bcd77SVladimir Sementsov-Ogievskiy        "busy": false,
5065af5bcd77SVladimir Sementsov-Ogievskiy        "count": 458752,
5066af5bcd77SVladimir Sementsov-Ogievskiy        "granularity": 65536,
5067af5bcd77SVladimir Sementsov-Ogievskiy        "persistent": false,
5068af5bcd77SVladimir Sementsov-Ogievskiy        "recording": false
5069*006e845bSVladimir Sementsov-Ogievskiy      },
5070bd5ceebfSJohn Snow      {
5071bd5ceebfSJohn Snow        "busy": false,
5072bd5ceebfSJohn Snow        "count": 0,
5073bd5ceebfSJohn Snow        "granularity": 65536,
5074bd5ceebfSJohn Snow        "persistent": false,
507581cbfd50SDaniel P. Berrangé        "recording": false
5076*006e845bSVladimir Sementsov-Ogievskiy      }
5077*006e845bSVladimir Sementsov-Ogievskiy    ],
5078*006e845bSVladimir Sementsov-Ogievskiy    "drive0": [
5079bd5ceebfSJohn Snow      {
5080bd5ceebfSJohn Snow        "busy": false,
5081bd5ceebfSJohn Snow        "count": 458752,
5082bd5ceebfSJohn Snow        "granularity": 65536,
5083bd5ceebfSJohn Snow        "persistent": false,
508481cbfd50SDaniel P. Berrangé        "recording": true
5085bd5ceebfSJohn Snow      },
5086bd5ceebfSJohn Snow      {
5087bd5ceebfSJohn Snow        "busy": true,
5088bd5ceebfSJohn Snow        "count": 393216,
5089bd5ceebfSJohn Snow        "granularity": 65536,
5090bd5ceebfSJohn Snow        "name": "bitmap0",
5091bd5ceebfSJohn Snow        "persistent": false,
509281cbfd50SDaniel P. Berrangé        "recording": true
5093bd5ceebfSJohn Snow      }
5094bd5ceebfSJohn Snow    ]
5095bd5ceebfSJohn Snow  }
5096bd5ceebfSJohn Snow}
5097bd5ceebfSJohn Snow
5098bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
5099bd5ceebfSJohn Snowexpecting 6 dirty sectors; have 6. OK!
5100bd5ceebfSJohn Snow
5101bd5ceebfSJohn Snow= Checking Bitmap (anonymous) =
5102bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
5103bd5ceebfSJohn Snow
5104bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_1"}}
5105bd5ceebfSJohn Snow{"return": {}}
5106bd5ceebfSJohn Snow{"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5107bd5ceebfSJohn Snow{"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5108bd5ceebfSJohn Snow{
5109bd5ceebfSJohn Snow  "bitmaps": {
51105c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
5111bd5ceebfSJohn Snow      {
5112bd5ceebfSJohn Snow        "busy": false,
5113bd5ceebfSJohn Snow        "count": 458752,
5114bd5ceebfSJohn Snow        "granularity": 65536,
5115bd5ceebfSJohn Snow        "name": "bitmap0",
5116bd5ceebfSJohn Snow        "persistent": false,
511781cbfd50SDaniel P. Berrangé        "recording": true
5118bd5ceebfSJohn Snow      }
5119bd5ceebfSJohn Snow    ]
5120bd5ceebfSJohn Snow  }
5121bd5ceebfSJohn Snow}
5122bd5ceebfSJohn Snow
5123bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
5124bd5ceebfSJohn Snowexpecting 7 dirty sectors; have 7. OK!
5125bd5ceebfSJohn Snow
5126bd5ceebfSJohn Snow--- Write #3 ---
5127bd5ceebfSJohn Snow
5128bd5ceebfSJohn Snowwrite -P0xaa 0x0010000 0x30000
5129bd5ceebfSJohn Snow{"return": ""}
5130bd5ceebfSJohn Snowwrite -P0xbb 0x00d8000 0x10000
5131bd5ceebfSJohn Snow{"return": ""}
5132bd5ceebfSJohn Snowwrite -P0xcc 0x2028000 0x10000
5133bd5ceebfSJohn Snow{"return": ""}
5134bd5ceebfSJohn Snowwrite -P0xdd 0x3fc0000 0x10000
5135bd5ceebfSJohn Snow{"return": ""}
5136bd5ceebfSJohn Snow{
5137bd5ceebfSJohn Snow  "bitmaps": {
51385c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
5139bd5ceebfSJohn Snow      {
5140bd5ceebfSJohn Snow        "busy": false,
5141bd5ceebfSJohn Snow        "count": 786432,
5142bd5ceebfSJohn Snow        "granularity": 65536,
5143bd5ceebfSJohn Snow        "name": "bitmap0",
5144bd5ceebfSJohn Snow        "persistent": false,
514581cbfd50SDaniel P. Berrangé        "recording": true
5146bd5ceebfSJohn Snow      }
5147bd5ceebfSJohn Snow    ]
5148bd5ceebfSJohn Snow  }
5149bd5ceebfSJohn Snow}
5150bd5ceebfSJohn Snow
5151bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
5152bd5ceebfSJohn Snowexpecting 12 dirty sectors; have 12. OK!
5153bd5ceebfSJohn Snow
5154bd5ceebfSJohn Snow--- Reference Backup #2 ---
5155bd5ceebfSJohn Snow
5156bd5ceebfSJohn Snow{}
5157bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5158bd5ceebfSJohn Snow{"return": {}}
5159bd5ceebfSJohn Snow{}
5160bd5ceebfSJohn Snow{}
5161bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5162bd5ceebfSJohn Snow{"return": {}}
5163bd5ceebfSJohn Snow{}
51642d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2", "x-perf": {"max-workers": 1}}}
5165bd5ceebfSJohn Snow{"return": {}}
5166bd5ceebfSJohn Snow{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5167bd5ceebfSJohn Snow
5168bd5ceebfSJohn Snow--- Test Backup #2 ---
5169bd5ceebfSJohn Snow
5170bd5ceebfSJohn Snow{}
5171bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5172bd5ceebfSJohn Snow{"return": {}}
5173bd5ceebfSJohn Snow{}
5174bd5ceebfSJohn Snow{}
5175bd5ceebfSJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5176bd5ceebfSJohn Snow{"return": {}}
5177bd5ceebfSJohn Snow{}
51782d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2", "x-perf": {"max-workers": 1}}}
5179bd5ceebfSJohn Snow{"return": {}}
5180bd5ceebfSJohn Snow{"execute": "job-finalize", "arguments": {"id": "backup_2"}}
5181bd5ceebfSJohn Snow{"return": {}}
5182bd5ceebfSJohn Snow{"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5183bd5ceebfSJohn Snow{"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5184bd5ceebfSJohn Snow{
5185bd5ceebfSJohn Snow  "bitmaps": {
51865c4343b8SVladimir Sementsov-Ogievskiy    "drive0": [
5187bd5ceebfSJohn Snow      {
5188bd5ceebfSJohn Snow        "busy": false,
5189bd5ceebfSJohn Snow        "count": 0,
5190bd5ceebfSJohn Snow        "granularity": 65536,
5191bd5ceebfSJohn Snow        "name": "bitmap0",
5192bd5ceebfSJohn Snow        "persistent": false,
519381cbfd50SDaniel P. Berrangé        "recording": true
5194bd5ceebfSJohn Snow      }
5195bd5ceebfSJohn Snow    ]
5196bd5ceebfSJohn Snow  }
5197bd5ceebfSJohn Snow}
5198bd5ceebfSJohn Snow
5199bd5ceebfSJohn Snow= Checking Bitmap bitmap0 =
5200bd5ceebfSJohn Snowexpecting 0 dirty sectors; have 0. OK!
5201bd5ceebfSJohn Snow
5202bd5ceebfSJohn Snow--- Cleanup ---
5203bd5ceebfSJohn Snow
5204bd5ceebfSJohn Snow{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
5205bd5ceebfSJohn Snow{"return": {}}
5206bd5ceebfSJohn Snow{
52075c4343b8SVladimir Sementsov-Ogievskiy  "bitmaps": {}
5208bd5ceebfSJohn Snow}
5209bd5ceebfSJohn Snow
5210bd5ceebfSJohn Snow--- Verification ---
5211bd5ceebfSJohn Snow
5212bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
5213bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5214bd5ceebfSJohn Snowqemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5215bd5ceebfSJohn Snow
5216bd5ceebfSJohn Snow
5217352092d3SJohn Snow=== API failure tests ===
5218352092d3SJohn Snow
5219352092d3SJohn Snow--- Preparing image & VM ---
5220352092d3SJohn Snow
5221352092d3SJohn Snow{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
5222352092d3SJohn Snow{"return": {}}
5223352092d3SJohn Snow
5224352092d3SJohn Snow{}
5225352092d3SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5226352092d3SJohn Snow{"return": {}}
5227352092d3SJohn Snow{}
5228352092d3SJohn Snow{}
5229352092d3SJohn Snow{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5230352092d3SJohn Snow{"return": {}}
5231352092d3SJohn Snow{}
5232352092d3SJohn Snow
5233352092d3SJohn Snow{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5234352092d3SJohn Snow{"return": {}}
5235352092d3SJohn Snow
5236352092d3SJohn Snow-- Testing invalid QMP commands --
5237352092d3SJohn Snow
5238352092d3SJohn Snow-- Sync mode incremental tests --
5239352092d3SJohn Snow
52402d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5241352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5242352092d3SJohn Snow
52432d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5244352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5245352092d3SJohn Snow
52462d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5247352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5248352092d3SJohn Snow
52492d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5250352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5251352092d3SJohn Snow
52522d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5253352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5254352092d3SJohn Snow
52552d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5256352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5257352092d3SJohn Snow
52582d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5259352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5260352092d3SJohn Snow
52612d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5262352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5263352092d3SJohn Snow
52642d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5265352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5266352092d3SJohn Snow
52672d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5268352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5269352092d3SJohn Snow
5270352092d3SJohn Snow-- Sync mode bitmap tests --
5271352092d3SJohn Snow
52722d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5273352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5274352092d3SJohn Snow
52752d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5276352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5277352092d3SJohn Snow
52782d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5279352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5280352092d3SJohn Snow
52812d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5282352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5283352092d3SJohn Snow
52842d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5285352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5286352092d3SJohn Snow
52872d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5288352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5289352092d3SJohn Snow
52902d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5291352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5292352092d3SJohn Snow
52932d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5294352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5295352092d3SJohn Snow
52962d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5297352092d3SJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5298352092d3SJohn Snow
5299bd5ceebfSJohn Snow-- Sync mode full tests --
5300bd5ceebfSJohn Snow
53012d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5302bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5303bd5ceebfSJohn Snow
53042d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5305bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5306bd5ceebfSJohn Snow
53072d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5308bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5309bd5ceebfSJohn Snow
53102d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5311bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5312bd5ceebfSJohn Snow
53132d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5314bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5315bd5ceebfSJohn Snow
53162d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5317bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5318bd5ceebfSJohn Snow
53192d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5320bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5321bd5ceebfSJohn Snow
53222d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5323bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'full'"}}
5324bd5ceebfSJohn Snow
53252d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5326bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5327bd5ceebfSJohn Snow
5328bd5ceebfSJohn Snow-- Sync mode top tests --
5329bd5ceebfSJohn Snow
53302d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5331bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5332bd5ceebfSJohn Snow
53332d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5334bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5335bd5ceebfSJohn Snow
53362d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5337bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5338bd5ceebfSJohn Snow
53392d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5340bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5341bd5ceebfSJohn Snow
53422d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5343bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5344bd5ceebfSJohn Snow
53452d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5346bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5347bd5ceebfSJohn Snow
53482d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5349bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5350bd5ceebfSJohn Snow
53512d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5352bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'top'"}}
5353bd5ceebfSJohn Snow
53542d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5355bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5356bd5ceebfSJohn Snow
5357bd5ceebfSJohn Snow-- Sync mode none tests --
5358bd5ceebfSJohn Snow
53592d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5360bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5361bd5ceebfSJohn Snow
53622d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5363bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5364bd5ceebfSJohn Snow
53652d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5366bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5367bd5ceebfSJohn Snow
53682d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5369bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5370bd5ceebfSJohn Snow
53712d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5372bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5373bd5ceebfSJohn Snow
53742d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5375bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5376bd5ceebfSJohn Snow
53772d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5378bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5379bd5ceebfSJohn Snow
53802d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5381bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5382bd5ceebfSJohn Snow
53832d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5384bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5385bd5ceebfSJohn Snow
53862d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5387bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5388bd5ceebfSJohn Snow
53892d0f32e3SVladimir Sementsov-Ogievskiy{"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target", "x-perf": {"max-workers": 1}}}
5390bd5ceebfSJohn Snow{"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5391bd5ceebfSJohn Snow
5392