2 === Mode bitmap; Bitmap Sync never with simulated failure ===
4 --- Preparing image & VM ---
6 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
11 write -P0x49 0x0000000 0x10000
13 write -P0x6c 0x0100000 0x10000
15 write -P0x6f 0x2000000 0x10000
17 write -P0x76 0x3ff0000 0x10000
23 --- Reference Backup #0 ---
26 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
30 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
33 {"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}}}
35 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
39 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
44 write -P0x65 0x0000000 0x10000
46 write -P0x77 0x00f8000 0x10000
48 write -P0x72 0x2008000 0x10000
50 write -P0x69 0x3fe0000 0x10000
67 = Checking Bitmap bitmap0 =
68 expecting 6 dirty sectors; have 6. OK!
70 --- Reference Backup #1 ---
73 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
77 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
80 {"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}}}
82 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
84 --- Test Backup #1 ---
87 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
91 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
94 {"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}}}
99 write -P0x74 0x0010000 0x10000
101 write -P0x69 0x00e8000 0x10000
103 write -P0x6e 0x2018000 0x10000
105 write -P0x67 0x3fe0000 0x20000
113 "granularity": 65536,
120 "granularity": 65536,
127 "granularity": 65536,
136 = Checking Bitmap bitmap0 =
137 expecting 6 dirty sectors; have 6. OK!
139 = Checking Bitmap (anonymous) =
140 expecting 7 dirty sectors; have 7. OK!
142 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
144 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
145 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
152 "granularity": 65536,
161 = Checking Bitmap bitmap0 =
162 expecting 10 dirty sectors; have 10. OK!
166 write -P0xaa 0x0010000 0x30000
168 write -P0xbb 0x00d8000 0x10000
170 write -P0xcc 0x2028000 0x10000
172 write -P0xdd 0x3fc0000 0x10000
180 "granularity": 65536,
189 = Checking Bitmap bitmap0 =
190 expecting 15 dirty sectors; have 15. OK!
192 --- Reference Backup #2 ---
195 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
199 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
202 {"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}}}
204 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
206 --- Test Backup #2 ---
209 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
213 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
216 {"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}}}
218 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
220 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
221 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
228 "granularity": 65536,
237 = Checking Bitmap bitmap0 =
238 expecting 15 dirty sectors; have 15. OK!
242 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
250 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
251 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
252 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
255 === Mode bitmap; Bitmap Sync never with intermediate failure ===
257 --- Preparing image & VM ---
259 {"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"}}
264 write -P0x49 0x0000000 0x10000
266 write -P0x6c 0x0100000 0x10000
268 write -P0x6f 0x2000000 0x10000
270 write -P0x76 0x3ff0000 0x10000
276 --- Reference Backup #0 ---
279 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
283 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
286 {"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}}}
288 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
292 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
297 write -P0x65 0x0000000 0x10000
299 write -P0x77 0x00f8000 0x10000
301 write -P0x72 0x2008000 0x10000
303 write -P0x69 0x3fe0000 0x10000
311 "granularity": 65536,
320 = Checking Bitmap bitmap0 =
321 expecting 6 dirty sectors; have 6. OK!
323 --- Reference Backup #1 ---
326 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
330 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
333 {"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}}}
335 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
339 --- Test Backup #1 ---
342 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
346 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
349 {"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}}}
351 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
352 {"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"}}
359 "granularity": 65536,
368 = Checking Bitmap bitmap0 =
369 expecting 6 dirty sectors; have 6. OK!
373 write -P0xaa 0x0010000 0x30000
375 write -P0xbb 0x00d8000 0x10000
377 write -P0xcc 0x2028000 0x10000
379 write -P0xdd 0x3fc0000 0x10000
387 "granularity": 65536,
396 = Checking Bitmap bitmap0 =
397 expecting 14 dirty sectors; have 14. OK!
399 --- Reference Backup #2 ---
402 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
406 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
409 {"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}}}
411 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
413 --- Test Backup #2 ---
416 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
420 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
423 {"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}}}
425 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
427 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
428 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
435 "granularity": 65536,
444 = Checking Bitmap bitmap0 =
445 expecting 14 dirty sectors; have 14. OK!
449 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
457 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
458 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
459 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
462 === Mode bitmap; Bitmap Sync never without failure ===
464 --- Preparing image & VM ---
466 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
471 write -P0x49 0x0000000 0x10000
473 write -P0x6c 0x0100000 0x10000
475 write -P0x6f 0x2000000 0x10000
477 write -P0x76 0x3ff0000 0x10000
483 --- Reference Backup #0 ---
486 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
490 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
493 {"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}}}
495 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
499 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
504 write -P0x65 0x0000000 0x10000
506 write -P0x77 0x00f8000 0x10000
508 write -P0x72 0x2008000 0x10000
510 write -P0x69 0x3fe0000 0x10000
518 "granularity": 65536,
527 = Checking Bitmap bitmap0 =
528 expecting 6 dirty sectors; have 6. OK!
530 --- Reference Backup #1 ---
533 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
537 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
540 {"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}}}
542 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
544 --- Test Backup #1 ---
547 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
551 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
554 {"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}}}
559 write -P0x74 0x0010000 0x10000
561 write -P0x69 0x00e8000 0x10000
563 write -P0x6e 0x2018000 0x10000
565 write -P0x67 0x3fe0000 0x20000
573 "granularity": 65536,
580 "granularity": 65536,
587 "granularity": 65536,
596 = Checking Bitmap bitmap0 =
597 expecting 6 dirty sectors; have 6. OK!
599 = Checking Bitmap (anonymous) =
600 expecting 7 dirty sectors; have 7. OK!
602 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
604 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
605 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
612 "granularity": 65536,
621 = Checking Bitmap bitmap0 =
622 expecting 10 dirty sectors; have 10. OK!
626 write -P0xaa 0x0010000 0x30000
628 write -P0xbb 0x00d8000 0x10000
630 write -P0xcc 0x2028000 0x10000
632 write -P0xdd 0x3fc0000 0x10000
640 "granularity": 65536,
649 = Checking Bitmap bitmap0 =
650 expecting 15 dirty sectors; have 15. OK!
652 --- Reference Backup #2 ---
655 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
659 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
662 {"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}}}
664 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
666 --- Test Backup #2 ---
669 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
673 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
676 {"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}}}
678 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
680 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
681 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
688 "granularity": 65536,
697 = Checking Bitmap bitmap0 =
698 expecting 15 dirty sectors; have 15. OK!
702 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
710 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
711 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
712 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
715 === Mode bitmap; Bitmap Sync on-success with simulated failure ===
717 --- Preparing image & VM ---
719 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
724 write -P0x49 0x0000000 0x10000
726 write -P0x6c 0x0100000 0x10000
728 write -P0x6f 0x2000000 0x10000
730 write -P0x76 0x3ff0000 0x10000
736 --- Reference Backup #0 ---
739 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
743 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
746 {"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}}}
748 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
752 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
757 write -P0x65 0x0000000 0x10000
759 write -P0x77 0x00f8000 0x10000
761 write -P0x72 0x2008000 0x10000
763 write -P0x69 0x3fe0000 0x10000
771 "granularity": 65536,
780 = Checking Bitmap bitmap0 =
781 expecting 6 dirty sectors; have 6. OK!
783 --- Reference Backup #1 ---
786 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
790 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
793 {"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}}}
795 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
797 --- Test Backup #1 ---
800 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
804 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
807 {"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}}}
812 write -P0x74 0x0010000 0x10000
814 write -P0x69 0x00e8000 0x10000
816 write -P0x6e 0x2018000 0x10000
818 write -P0x67 0x3fe0000 0x20000
826 "granularity": 65536,
833 "granularity": 65536,
840 "granularity": 65536,
849 = Checking Bitmap bitmap0 =
850 expecting 6 dirty sectors; have 6. OK!
852 = Checking Bitmap (anonymous) =
853 expecting 7 dirty sectors; have 7. OK!
855 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
857 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
858 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
865 "granularity": 65536,
874 = Checking Bitmap bitmap0 =
875 expecting 10 dirty sectors; have 10. OK!
879 write -P0xaa 0x0010000 0x30000
881 write -P0xbb 0x00d8000 0x10000
883 write -P0xcc 0x2028000 0x10000
885 write -P0xdd 0x3fc0000 0x10000
893 "granularity": 65536,
902 = Checking Bitmap bitmap0 =
903 expecting 15 dirty sectors; have 15. OK!
905 --- Reference Backup #2 ---
908 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
912 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
915 {"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}}}
917 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
919 --- Test Backup #2 ---
922 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
926 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
929 {"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}}}
931 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
933 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
934 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
941 "granularity": 65536,
950 = Checking Bitmap bitmap0 =
951 expecting 0 dirty sectors; have 0. OK!
955 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
963 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
964 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
965 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
968 === Mode bitmap; Bitmap Sync on-success with intermediate failure ===
970 --- Preparing image & VM ---
972 {"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"}}
977 write -P0x49 0x0000000 0x10000
979 write -P0x6c 0x0100000 0x10000
981 write -P0x6f 0x2000000 0x10000
983 write -P0x76 0x3ff0000 0x10000
989 --- Reference Backup #0 ---
992 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
996 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
999 {"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}}}
1001 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1005 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1010 write -P0x65 0x0000000 0x10000
1012 write -P0x77 0x00f8000 0x10000
1014 write -P0x72 0x2008000 0x10000
1016 write -P0x69 0x3fe0000 0x10000
1024 "granularity": 65536,
1026 "persistent": false,
1033 = Checking Bitmap bitmap0 =
1034 expecting 6 dirty sectors; have 6. OK!
1036 --- Reference Backup #1 ---
1039 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1043 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1046 {"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}}}
1048 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1052 --- Test Backup #1 ---
1055 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1059 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1062 {"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}}}
1064 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1065 {"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"}}
1072 "granularity": 65536,
1074 "persistent": false,
1081 = Checking Bitmap bitmap0 =
1082 expecting 6 dirty sectors; have 6. OK!
1086 write -P0xaa 0x0010000 0x30000
1088 write -P0xbb 0x00d8000 0x10000
1090 write -P0xcc 0x2028000 0x10000
1092 write -P0xdd 0x3fc0000 0x10000
1100 "granularity": 65536,
1102 "persistent": false,
1109 = Checking Bitmap bitmap0 =
1110 expecting 14 dirty sectors; have 14. OK!
1112 --- Reference Backup #2 ---
1115 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1119 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1122 {"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}}}
1124 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1126 --- Test Backup #2 ---
1129 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1133 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1136 {"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}}}
1138 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1140 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1141 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1148 "granularity": 65536,
1150 "persistent": false,
1157 = Checking Bitmap bitmap0 =
1158 expecting 0 dirty sectors; have 0. OK!
1162 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1168 --- Verification ---
1170 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1171 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1172 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1175 === Mode bitmap; Bitmap Sync on-success without failure ===
1177 --- Preparing image & VM ---
1179 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1184 write -P0x49 0x0000000 0x10000
1186 write -P0x6c 0x0100000 0x10000
1188 write -P0x6f 0x2000000 0x10000
1190 write -P0x76 0x3ff0000 0x10000
1196 --- Reference Backup #0 ---
1199 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1203 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1206 {"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}}}
1208 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1212 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1217 write -P0x65 0x0000000 0x10000
1219 write -P0x77 0x00f8000 0x10000
1221 write -P0x72 0x2008000 0x10000
1223 write -P0x69 0x3fe0000 0x10000
1231 "granularity": 65536,
1233 "persistent": false,
1240 = Checking Bitmap bitmap0 =
1241 expecting 6 dirty sectors; have 6. OK!
1243 --- Reference Backup #1 ---
1246 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1250 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1253 {"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}}}
1255 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1257 --- Test Backup #1 ---
1260 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1264 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1267 {"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}}}
1272 write -P0x74 0x0010000 0x10000
1274 write -P0x69 0x00e8000 0x10000
1276 write -P0x6e 0x2018000 0x10000
1278 write -P0x67 0x3fe0000 0x20000
1286 "granularity": 65536,
1287 "persistent": false,
1293 "granularity": 65536,
1294 "persistent": false,
1300 "granularity": 65536,
1302 "persistent": false,
1309 = Checking Bitmap bitmap0 =
1310 expecting 6 dirty sectors; have 6. OK!
1312 = Checking Bitmap (anonymous) =
1313 expecting 7 dirty sectors; have 7. OK!
1315 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
1317 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1318 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1325 "granularity": 65536,
1327 "persistent": false,
1334 = Checking Bitmap bitmap0 =
1335 expecting 7 dirty sectors; have 7. OK!
1339 write -P0xaa 0x0010000 0x30000
1341 write -P0xbb 0x00d8000 0x10000
1343 write -P0xcc 0x2028000 0x10000
1345 write -P0xdd 0x3fc0000 0x10000
1353 "granularity": 65536,
1355 "persistent": false,
1362 = Checking Bitmap bitmap0 =
1363 expecting 12 dirty sectors; have 12. OK!
1365 --- Reference Backup #2 ---
1368 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1372 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1375 {"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}}}
1377 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1379 --- Test Backup #2 ---
1382 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1386 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1389 {"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}}}
1391 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1393 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1394 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1401 "granularity": 65536,
1403 "persistent": false,
1410 = Checking Bitmap bitmap0 =
1411 expecting 0 dirty sectors; have 0. OK!
1415 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1421 --- Verification ---
1423 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1424 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1425 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1428 === Mode bitmap; Bitmap Sync always with simulated failure ===
1430 --- Preparing image & VM ---
1432 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1437 write -P0x49 0x0000000 0x10000
1439 write -P0x6c 0x0100000 0x10000
1441 write -P0x6f 0x2000000 0x10000
1443 write -P0x76 0x3ff0000 0x10000
1449 --- Reference Backup #0 ---
1452 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1456 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1459 {"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}}}
1461 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1465 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1470 write -P0x65 0x0000000 0x10000
1472 write -P0x77 0x00f8000 0x10000
1474 write -P0x72 0x2008000 0x10000
1476 write -P0x69 0x3fe0000 0x10000
1484 "granularity": 65536,
1486 "persistent": false,
1493 = Checking Bitmap bitmap0 =
1494 expecting 6 dirty sectors; have 6. OK!
1496 --- Reference Backup #1 ---
1499 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1503 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1506 {"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}}}
1508 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1510 --- Test Backup #1 ---
1513 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1517 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1520 {"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}}}
1525 write -P0x74 0x0010000 0x10000
1527 write -P0x69 0x00e8000 0x10000
1529 write -P0x6e 0x2018000 0x10000
1531 write -P0x67 0x3fe0000 0x20000
1539 "granularity": 65536,
1540 "persistent": false,
1546 "granularity": 65536,
1547 "persistent": false,
1553 "granularity": 65536,
1555 "persistent": false,
1562 = Checking Bitmap bitmap0 =
1563 expecting 6 dirty sectors; have 6. OK!
1565 = Checking Bitmap (anonymous) =
1566 expecting 7 dirty sectors; have 7. OK!
1568 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
1570 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1571 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1578 "granularity": 65536,
1580 "persistent": false,
1587 = Checking Bitmap bitmap0 =
1588 expecting 7 dirty sectors; have 7. OK!
1592 write -P0xaa 0x0010000 0x30000
1594 write -P0xbb 0x00d8000 0x10000
1596 write -P0xcc 0x2028000 0x10000
1598 write -P0xdd 0x3fc0000 0x10000
1606 "granularity": 65536,
1608 "persistent": false,
1615 = Checking Bitmap bitmap0 =
1616 expecting 12 dirty sectors; have 12. OK!
1618 --- Reference Backup #2 ---
1621 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1625 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1628 {"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}}}
1630 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1632 --- Test Backup #2 ---
1635 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1639 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1642 {"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}}}
1644 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1646 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1647 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1654 "granularity": 65536,
1656 "persistent": false,
1663 = Checking Bitmap bitmap0 =
1664 expecting 0 dirty sectors; have 0. OK!
1668 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1674 --- Verification ---
1676 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1677 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1678 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1681 === Mode bitmap; Bitmap Sync always with intermediate failure ===
1683 --- Preparing image & VM ---
1685 {"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"}}
1690 write -P0x49 0x0000000 0x10000
1692 write -P0x6c 0x0100000 0x10000
1694 write -P0x6f 0x2000000 0x10000
1696 write -P0x76 0x3ff0000 0x10000
1702 --- Reference Backup #0 ---
1705 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1709 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1712 {"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}}}
1714 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1718 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1723 write -P0x65 0x0000000 0x10000
1725 write -P0x77 0x00f8000 0x10000
1727 write -P0x72 0x2008000 0x10000
1729 write -P0x69 0x3fe0000 0x10000
1737 "granularity": 65536,
1739 "persistent": false,
1746 = Checking Bitmap bitmap0 =
1747 expecting 6 dirty sectors; have 6. OK!
1749 --- Reference Backup #1 ---
1752 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1756 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1759 {"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}}}
1761 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1765 --- Test Backup #1 ---
1768 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1772 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1775 {"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}}}
1777 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1778 {"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"}}
1785 "granularity": 65536,
1787 "persistent": false,
1794 = Checking Bitmap bitmap0 =
1795 expecting 5 dirty sectors; have 5. OK!
1799 write -P0xaa 0x0010000 0x30000
1801 write -P0xbb 0x00d8000 0x10000
1803 write -P0xcc 0x2028000 0x10000
1805 write -P0xdd 0x3fc0000 0x10000
1813 "granularity": 65536,
1815 "persistent": false,
1822 = Checking Bitmap bitmap0 =
1823 expecting 13 dirty sectors; have 13. OK!
1825 --- Reference Backup #2 ---
1828 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1832 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1835 {"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}}}
1837 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1839 --- Test Backup #2 ---
1842 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1846 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1849 {"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}}}
1851 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1853 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1854 {"data": {"device": "backup_2", "len": 851968, "offset": 851968, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1861 "granularity": 65536,
1863 "persistent": false,
1870 = Checking Bitmap bitmap0 =
1871 expecting 0 dirty sectors; have 0. OK!
1875 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1881 --- Verification ---
1883 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1884 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1885 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1888 === Mode bitmap; Bitmap Sync always without failure ===
1890 --- Preparing image & VM ---
1892 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1897 write -P0x49 0x0000000 0x10000
1899 write -P0x6c 0x0100000 0x10000
1901 write -P0x6f 0x2000000 0x10000
1903 write -P0x76 0x3ff0000 0x10000
1909 --- Reference Backup #0 ---
1912 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1916 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1919 {"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}}}
1921 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1925 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1930 write -P0x65 0x0000000 0x10000
1932 write -P0x77 0x00f8000 0x10000
1934 write -P0x72 0x2008000 0x10000
1936 write -P0x69 0x3fe0000 0x10000
1944 "granularity": 65536,
1946 "persistent": false,
1953 = Checking Bitmap bitmap0 =
1954 expecting 6 dirty sectors; have 6. OK!
1956 --- Reference Backup #1 ---
1959 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1963 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1966 {"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}}}
1968 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1970 --- Test Backup #1 ---
1973 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1977 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1980 {"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}}}
1985 write -P0x74 0x0010000 0x10000
1987 write -P0x69 0x00e8000 0x10000
1989 write -P0x6e 0x2018000 0x10000
1991 write -P0x67 0x3fe0000 0x20000
1999 "granularity": 65536,
2000 "persistent": false,
2006 "granularity": 65536,
2007 "persistent": false,
2013 "granularity": 65536,
2015 "persistent": false,
2022 = Checking Bitmap bitmap0 =
2023 expecting 6 dirty sectors; have 6. OK!
2025 = Checking Bitmap (anonymous) =
2026 expecting 7 dirty sectors; have 7. OK!
2028 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2030 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2031 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2038 "granularity": 65536,
2040 "persistent": false,
2047 = Checking Bitmap bitmap0 =
2048 expecting 7 dirty sectors; have 7. OK!
2052 write -P0xaa 0x0010000 0x30000
2054 write -P0xbb 0x00d8000 0x10000
2056 write -P0xcc 0x2028000 0x10000
2058 write -P0xdd 0x3fc0000 0x10000
2066 "granularity": 65536,
2068 "persistent": false,
2075 = Checking Bitmap bitmap0 =
2076 expecting 12 dirty sectors; have 12. OK!
2078 --- Reference Backup #2 ---
2081 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2085 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2088 {"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}}}
2090 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2092 --- Test Backup #2 ---
2095 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2099 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2102 {"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}}}
2104 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2106 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2107 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2114 "granularity": 65536,
2116 "persistent": false,
2123 = Checking Bitmap bitmap0 =
2124 expecting 0 dirty sectors; have 0. OK!
2128 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2134 --- Verification ---
2136 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2137 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2138 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2141 === Mode full; Bitmap Sync on-success with simulated failure ===
2143 --- Preparing image & VM ---
2145 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2150 write -P0x49 0x0000000 0x10000
2152 write -P0x6c 0x0100000 0x10000
2154 write -P0x6f 0x2000000 0x10000
2156 write -P0x76 0x3ff0000 0x10000
2162 --- Reference Backup #0 ---
2165 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2169 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2172 {"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}}}
2174 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2178 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2183 write -P0x65 0x0000000 0x10000
2185 write -P0x77 0x00f8000 0x10000
2187 write -P0x72 0x2008000 0x10000
2189 write -P0x69 0x3fe0000 0x10000
2197 "granularity": 65536,
2199 "persistent": false,
2206 = Checking Bitmap bitmap0 =
2207 expecting 6 dirty sectors; have 6. OK!
2209 --- Reference Backup #1 ---
2212 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2216 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2219 {"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}}}
2221 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2223 --- Test Backup #1 ---
2226 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2230 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2233 {"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}}}
2238 write -P0x74 0x0010000 0x10000
2240 write -P0x69 0x00e8000 0x10000
2242 write -P0x6e 0x2018000 0x10000
2244 write -P0x67 0x3fe0000 0x20000
2252 "granularity": 65536,
2253 "persistent": false,
2259 "granularity": 65536,
2260 "persistent": false,
2266 "granularity": 65536,
2268 "persistent": false,
2275 = Checking Bitmap bitmap0 =
2276 expecting 6 dirty sectors; have 6. OK!
2278 = Checking Bitmap (anonymous) =
2279 expecting 7 dirty sectors; have 7. OK!
2281 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2283 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2284 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2291 "granularity": 65536,
2293 "persistent": false,
2300 = Checking Bitmap bitmap0 =
2301 expecting 10 dirty sectors; have 10. OK!
2305 write -P0xaa 0x0010000 0x30000
2307 write -P0xbb 0x00d8000 0x10000
2309 write -P0xcc 0x2028000 0x10000
2311 write -P0xdd 0x3fc0000 0x10000
2319 "granularity": 65536,
2321 "persistent": false,
2328 = Checking Bitmap bitmap0 =
2329 expecting 15 dirty sectors; have 15. OK!
2331 --- Reference Backup #2 ---
2334 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2338 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2341 {"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}}}
2343 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2345 --- Test Backup #2 ---
2348 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2352 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2355 {"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}}}
2357 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2359 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2360 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2367 "granularity": 65536,
2369 "persistent": false,
2376 = Checking Bitmap bitmap0 =
2377 expecting 0 dirty sectors; have 0. OK!
2381 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2387 --- Verification ---
2389 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2390 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2391 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2394 === Mode full; Bitmap Sync on-success with intermediate failure ===
2396 --- Preparing image & VM ---
2398 {"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"}}
2403 write -P0x49 0x0000000 0x10000
2405 write -P0x6c 0x0100000 0x10000
2407 write -P0x6f 0x2000000 0x10000
2409 write -P0x76 0x3ff0000 0x10000
2415 --- Reference Backup #0 ---
2418 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2422 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2425 {"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}}}
2427 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2431 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2436 write -P0x65 0x0000000 0x10000
2438 write -P0x77 0x00f8000 0x10000
2440 write -P0x72 0x2008000 0x10000
2442 write -P0x69 0x3fe0000 0x10000
2450 "granularity": 65536,
2452 "persistent": false,
2459 = Checking Bitmap bitmap0 =
2460 expecting 6 dirty sectors; have 6. OK!
2462 --- Reference Backup #1 ---
2465 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2469 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2472 {"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}}}
2474 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2478 --- Test Backup #1 ---
2481 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2485 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2488 {"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}}}
2490 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2491 {"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"}}
2498 "granularity": 65536,
2500 "persistent": false,
2507 = Checking Bitmap bitmap0 =
2508 expecting 6 dirty sectors; have 6. OK!
2512 write -P0xaa 0x0010000 0x30000
2514 write -P0xbb 0x00d8000 0x10000
2516 write -P0xcc 0x2028000 0x10000
2518 write -P0xdd 0x3fc0000 0x10000
2526 "granularity": 65536,
2528 "persistent": false,
2535 = Checking Bitmap bitmap0 =
2536 expecting 14 dirty sectors; have 14. OK!
2538 --- Reference Backup #2 ---
2541 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2545 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2548 {"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}}}
2550 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2552 --- Test Backup #2 ---
2555 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2559 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2562 {"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}}}
2564 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2566 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2567 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2574 "granularity": 65536,
2576 "persistent": false,
2583 = Checking Bitmap bitmap0 =
2584 expecting 0 dirty sectors; have 0. OK!
2588 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2594 --- Verification ---
2596 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
2597 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2598 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2601 === Mode full; Bitmap Sync on-success without failure ===
2603 --- Preparing image & VM ---
2605 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2610 write -P0x49 0x0000000 0x10000
2612 write -P0x6c 0x0100000 0x10000
2614 write -P0x6f 0x2000000 0x10000
2616 write -P0x76 0x3ff0000 0x10000
2622 --- Reference Backup #0 ---
2625 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2629 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2632 {"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}}}
2634 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2638 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2643 write -P0x65 0x0000000 0x10000
2645 write -P0x77 0x00f8000 0x10000
2647 write -P0x72 0x2008000 0x10000
2649 write -P0x69 0x3fe0000 0x10000
2657 "granularity": 65536,
2659 "persistent": false,
2666 = Checking Bitmap bitmap0 =
2667 expecting 6 dirty sectors; have 6. OK!
2669 --- Reference Backup #1 ---
2672 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2676 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2679 {"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}}}
2681 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2683 --- Test Backup #1 ---
2686 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2690 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2693 {"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}}}
2698 write -P0x74 0x0010000 0x10000
2700 write -P0x69 0x00e8000 0x10000
2702 write -P0x6e 0x2018000 0x10000
2704 write -P0x67 0x3fe0000 0x20000
2712 "granularity": 65536,
2713 "persistent": false,
2719 "granularity": 65536,
2720 "persistent": false,
2726 "granularity": 65536,
2728 "persistent": false,
2735 = Checking Bitmap bitmap0 =
2736 expecting 6 dirty sectors; have 6. OK!
2738 = Checking Bitmap (anonymous) =
2739 expecting 7 dirty sectors; have 7. OK!
2741 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2743 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2744 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2751 "granularity": 65536,
2753 "persistent": false,
2760 = Checking Bitmap bitmap0 =
2761 expecting 7 dirty sectors; have 7. OK!
2765 write -P0xaa 0x0010000 0x30000
2767 write -P0xbb 0x00d8000 0x10000
2769 write -P0xcc 0x2028000 0x10000
2771 write -P0xdd 0x3fc0000 0x10000
2779 "granularity": 65536,
2781 "persistent": false,
2788 = Checking Bitmap bitmap0 =
2789 expecting 12 dirty sectors; have 12. OK!
2791 --- Reference Backup #2 ---
2794 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2798 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2801 {"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}}}
2803 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2805 --- Test Backup #2 ---
2808 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2812 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2815 {"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}}}
2817 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2819 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2820 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2827 "granularity": 65536,
2829 "persistent": false,
2836 = Checking Bitmap bitmap0 =
2837 expecting 0 dirty sectors; have 0. OK!
2841 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2847 --- Verification ---
2849 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2850 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2851 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2854 === Mode full; Bitmap Sync always with simulated failure ===
2856 --- Preparing image & VM ---
2858 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2863 write -P0x49 0x0000000 0x10000
2865 write -P0x6c 0x0100000 0x10000
2867 write -P0x6f 0x2000000 0x10000
2869 write -P0x76 0x3ff0000 0x10000
2875 --- Reference Backup #0 ---
2878 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2882 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2885 {"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}}}
2887 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2891 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2896 write -P0x65 0x0000000 0x10000
2898 write -P0x77 0x00f8000 0x10000
2900 write -P0x72 0x2008000 0x10000
2902 write -P0x69 0x3fe0000 0x10000
2910 "granularity": 65536,
2912 "persistent": false,
2919 = Checking Bitmap bitmap0 =
2920 expecting 6 dirty sectors; have 6. OK!
2922 --- Reference Backup #1 ---
2925 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2929 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2932 {"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}}}
2934 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2936 --- Test Backup #1 ---
2939 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2943 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2946 {"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}}}
2951 write -P0x74 0x0010000 0x10000
2953 write -P0x69 0x00e8000 0x10000
2955 write -P0x6e 0x2018000 0x10000
2957 write -P0x67 0x3fe0000 0x20000
2965 "granularity": 65536,
2966 "persistent": false,
2972 "granularity": 65536,
2973 "persistent": false,
2979 "granularity": 65536,
2981 "persistent": false,
2988 = Checking Bitmap bitmap0 =
2989 expecting 6 dirty sectors; have 6. OK!
2991 = Checking Bitmap (anonymous) =
2992 expecting 7 dirty sectors; have 7. OK!
2994 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2996 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2997 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3004 "granularity": 65536,
3006 "persistent": false,
3013 = Checking Bitmap bitmap0 =
3014 expecting 7 dirty sectors; have 7. OK!
3018 write -P0xaa 0x0010000 0x30000
3020 write -P0xbb 0x00d8000 0x10000
3022 write -P0xcc 0x2028000 0x10000
3024 write -P0xdd 0x3fc0000 0x10000
3032 "granularity": 65536,
3034 "persistent": false,
3041 = Checking Bitmap bitmap0 =
3042 expecting 12 dirty sectors; have 12. OK!
3044 --- Reference Backup #2 ---
3047 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3051 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3054 {"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}}}
3056 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3058 --- Test Backup #2 ---
3061 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3065 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3068 {"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}}}
3070 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3072 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3073 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3080 "granularity": 65536,
3082 "persistent": false,
3089 = Checking Bitmap bitmap0 =
3090 expecting 0 dirty sectors; have 0. OK!
3094 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3100 --- Verification ---
3102 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3103 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3104 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3107 === Mode full; Bitmap Sync always with intermediate failure ===
3109 --- Preparing image & VM ---
3111 {"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"}}
3116 write -P0x49 0x0000000 0x10000
3118 write -P0x6c 0x0100000 0x10000
3120 write -P0x6f 0x2000000 0x10000
3122 write -P0x76 0x3ff0000 0x10000
3128 --- Reference Backup #0 ---
3131 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3135 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3138 {"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}}}
3140 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3144 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3149 write -P0x65 0x0000000 0x10000
3151 write -P0x77 0x00f8000 0x10000
3153 write -P0x72 0x2008000 0x10000
3155 write -P0x69 0x3fe0000 0x10000
3163 "granularity": 65536,
3165 "persistent": false,
3172 = Checking Bitmap bitmap0 =
3173 expecting 6 dirty sectors; have 6. OK!
3175 --- Reference Backup #1 ---
3178 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3182 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3185 {"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}}}
3187 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3191 --- Test Backup #1 ---
3194 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3198 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3201 {"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}}}
3203 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3204 {"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"}}
3211 "granularity": 65536,
3213 "persistent": false,
3220 = Checking Bitmap bitmap0 =
3221 expecting 1009 dirty sectors; have 1009. OK!
3225 write -P0xaa 0x0010000 0x30000
3227 write -P0xbb 0x00d8000 0x10000
3229 write -P0xcc 0x2028000 0x10000
3231 write -P0xdd 0x3fc0000 0x10000
3239 "granularity": 65536,
3241 "persistent": false,
3248 = Checking Bitmap bitmap0 =
3249 expecting 1014 dirty sectors; have 1014. OK!
3251 --- Reference Backup #2 ---
3254 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3258 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3261 {"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}}}
3263 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3265 --- Test Backup #2 ---
3268 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3272 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3275 {"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}}}
3277 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3279 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3280 {"data": {"device": "backup_2", "len": 66453504, "offset": 66453504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3287 "granularity": 65536,
3289 "persistent": false,
3296 = Checking Bitmap bitmap0 =
3297 expecting 0 dirty sectors; have 0. OK!
3301 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3307 --- Verification ---
3309 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
3310 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3311 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3314 === Mode full; Bitmap Sync always without failure ===
3316 --- Preparing image & VM ---
3318 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3323 write -P0x49 0x0000000 0x10000
3325 write -P0x6c 0x0100000 0x10000
3327 write -P0x6f 0x2000000 0x10000
3329 write -P0x76 0x3ff0000 0x10000
3335 --- Reference Backup #0 ---
3338 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3342 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3345 {"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}}}
3347 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3351 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3356 write -P0x65 0x0000000 0x10000
3358 write -P0x77 0x00f8000 0x10000
3360 write -P0x72 0x2008000 0x10000
3362 write -P0x69 0x3fe0000 0x10000
3370 "granularity": 65536,
3372 "persistent": false,
3379 = Checking Bitmap bitmap0 =
3380 expecting 6 dirty sectors; have 6. OK!
3382 --- Reference Backup #1 ---
3385 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3389 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3392 {"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}}}
3394 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3396 --- Test Backup #1 ---
3399 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3403 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3406 {"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}}}
3411 write -P0x74 0x0010000 0x10000
3413 write -P0x69 0x00e8000 0x10000
3415 write -P0x6e 0x2018000 0x10000
3417 write -P0x67 0x3fe0000 0x20000
3425 "granularity": 65536,
3426 "persistent": false,
3432 "granularity": 65536,
3433 "persistent": false,
3439 "granularity": 65536,
3441 "persistent": false,
3448 = Checking Bitmap bitmap0 =
3449 expecting 6 dirty sectors; have 6. OK!
3451 = Checking Bitmap (anonymous) =
3452 expecting 7 dirty sectors; have 7. OK!
3454 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
3456 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3457 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3464 "granularity": 65536,
3466 "persistent": false,
3473 = Checking Bitmap bitmap0 =
3474 expecting 7 dirty sectors; have 7. OK!
3478 write -P0xaa 0x0010000 0x30000
3480 write -P0xbb 0x00d8000 0x10000
3482 write -P0xcc 0x2028000 0x10000
3484 write -P0xdd 0x3fc0000 0x10000
3492 "granularity": 65536,
3494 "persistent": false,
3501 = Checking Bitmap bitmap0 =
3502 expecting 12 dirty sectors; have 12. OK!
3504 --- Reference Backup #2 ---
3507 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3511 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3514 {"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}}}
3516 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3518 --- Test Backup #2 ---
3521 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3525 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3528 {"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}}}
3530 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3532 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3533 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3540 "granularity": 65536,
3542 "persistent": false,
3549 = Checking Bitmap bitmap0 =
3550 expecting 0 dirty sectors; have 0. OK!
3554 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3560 --- Verification ---
3562 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3563 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3564 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3567 === Mode top; Bitmap Sync on-success with simulated failure ===
3569 --- Preparing image & VM ---
3571 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3576 write -P0x49 0x0000000 0x10000
3578 write -P0x6c 0x0100000 0x10000
3580 write -P0x6f 0x2000000 0x10000
3582 write -P0x76 0x3ff0000 0x10000
3588 --- Reference Backup #0 ---
3591 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3595 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3598 {"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}}}
3600 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3604 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3609 write -P0x65 0x0000000 0x10000
3611 write -P0x77 0x00f8000 0x10000
3613 write -P0x72 0x2008000 0x10000
3615 write -P0x69 0x3fe0000 0x10000
3623 "granularity": 65536,
3625 "persistent": false,
3632 = Checking Bitmap bitmap0 =
3633 expecting 6 dirty sectors; have 6. OK!
3635 --- Reference Backup #1 ---
3638 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3642 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3645 {"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}}}
3647 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3649 --- Test Backup #1 ---
3652 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3656 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3659 {"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}}}
3664 write -P0x74 0x0010000 0x10000
3666 write -P0x69 0x00e8000 0x10000
3668 write -P0x6e 0x2018000 0x10000
3670 write -P0x67 0x3fe0000 0x20000
3678 "granularity": 65536,
3679 "persistent": false,
3685 "granularity": 65536,
3686 "persistent": false,
3692 "granularity": 65536,
3694 "persistent": false,
3701 = Checking Bitmap bitmap0 =
3702 expecting 6 dirty sectors; have 6. OK!
3704 = Checking Bitmap (anonymous) =
3705 expecting 7 dirty sectors; have 7. OK!
3707 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3709 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3710 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3717 "granularity": 65536,
3719 "persistent": false,
3726 = Checking Bitmap bitmap0 =
3727 expecting 10 dirty sectors; have 10. OK!
3731 write -P0xaa 0x0010000 0x30000
3733 write -P0xbb 0x00d8000 0x10000
3735 write -P0xcc 0x2028000 0x10000
3737 write -P0xdd 0x3fc0000 0x10000
3745 "granularity": 65536,
3747 "persistent": false,
3754 = Checking Bitmap bitmap0 =
3755 expecting 15 dirty sectors; have 15. OK!
3757 --- Reference Backup #2 ---
3760 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3764 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3767 {"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}}}
3769 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3771 --- Test Backup #2 ---
3774 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3778 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3781 {"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}}}
3783 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3785 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3786 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3793 "granularity": 65536,
3795 "persistent": false,
3802 = Checking Bitmap bitmap0 =
3803 expecting 0 dirty sectors; have 0. OK!
3807 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3813 --- Verification ---
3815 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3816 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3817 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3820 === Mode top; Bitmap Sync on-success with intermediate failure ===
3822 --- Preparing image & VM ---
3824 {"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"}}
3829 write -P0x49 0x0000000 0x10000
3831 write -P0x6c 0x0100000 0x10000
3833 write -P0x6f 0x2000000 0x10000
3835 write -P0x76 0x3ff0000 0x10000
3841 --- Reference Backup #0 ---
3844 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3848 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3851 {"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}}}
3853 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3857 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3862 write -P0x65 0x0000000 0x10000
3864 write -P0x77 0x00f8000 0x10000
3866 write -P0x72 0x2008000 0x10000
3868 write -P0x69 0x3fe0000 0x10000
3876 "granularity": 65536,
3878 "persistent": false,
3885 = Checking Bitmap bitmap0 =
3886 expecting 6 dirty sectors; have 6. OK!
3888 --- Reference Backup #1 ---
3891 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3895 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3898 {"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}}}
3900 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3904 --- Test Backup #1 ---
3907 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3911 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3914 {"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}}}
3916 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3917 {"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"}}
3924 "granularity": 65536,
3926 "persistent": false,
3933 = Checking Bitmap bitmap0 =
3934 expecting 6 dirty sectors; have 6. OK!
3938 write -P0xaa 0x0010000 0x30000
3940 write -P0xbb 0x00d8000 0x10000
3942 write -P0xcc 0x2028000 0x10000
3944 write -P0xdd 0x3fc0000 0x10000
3952 "granularity": 65536,
3954 "persistent": false,
3961 = Checking Bitmap bitmap0 =
3962 expecting 14 dirty sectors; have 14. OK!
3964 --- Reference Backup #2 ---
3967 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3971 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3974 {"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}}}
3976 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3978 --- Test Backup #2 ---
3981 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3985 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3988 {"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}}}
3990 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3992 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3993 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4000 "granularity": 65536,
4002 "persistent": false,
4009 = Checking Bitmap bitmap0 =
4010 expecting 0 dirty sectors; have 0. OK!
4014 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4020 --- Verification ---
4022 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4023 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4024 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4027 === Mode top; Bitmap Sync on-success without failure ===
4029 --- Preparing image & VM ---
4031 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4036 write -P0x49 0x0000000 0x10000
4038 write -P0x6c 0x0100000 0x10000
4040 write -P0x6f 0x2000000 0x10000
4042 write -P0x76 0x3ff0000 0x10000
4048 --- Reference Backup #0 ---
4051 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4055 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4058 {"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}}}
4060 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4064 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4069 write -P0x65 0x0000000 0x10000
4071 write -P0x77 0x00f8000 0x10000
4073 write -P0x72 0x2008000 0x10000
4075 write -P0x69 0x3fe0000 0x10000
4083 "granularity": 65536,
4085 "persistent": false,
4092 = Checking Bitmap bitmap0 =
4093 expecting 6 dirty sectors; have 6. OK!
4095 --- Reference Backup #1 ---
4098 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4102 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4105 {"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}}}
4107 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4109 --- Test Backup #1 ---
4112 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4116 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4119 {"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}}}
4124 write -P0x74 0x0010000 0x10000
4126 write -P0x69 0x00e8000 0x10000
4128 write -P0x6e 0x2018000 0x10000
4130 write -P0x67 0x3fe0000 0x20000
4138 "granularity": 65536,
4139 "persistent": false,
4145 "granularity": 65536,
4146 "persistent": false,
4152 "granularity": 65536,
4154 "persistent": false,
4161 = Checking Bitmap bitmap0 =
4162 expecting 6 dirty sectors; have 6. OK!
4164 = Checking Bitmap (anonymous) =
4165 expecting 7 dirty sectors; have 7. OK!
4167 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4169 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4170 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4177 "granularity": 65536,
4179 "persistent": false,
4186 = Checking Bitmap bitmap0 =
4187 expecting 7 dirty sectors; have 7. OK!
4191 write -P0xaa 0x0010000 0x30000
4193 write -P0xbb 0x00d8000 0x10000
4195 write -P0xcc 0x2028000 0x10000
4197 write -P0xdd 0x3fc0000 0x10000
4205 "granularity": 65536,
4207 "persistent": false,
4214 = Checking Bitmap bitmap0 =
4215 expecting 12 dirty sectors; have 12. OK!
4217 --- Reference Backup #2 ---
4220 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4224 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4227 {"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}}}
4229 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4231 --- Test Backup #2 ---
4234 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4238 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4241 {"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}}}
4243 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4245 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4246 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4253 "granularity": 65536,
4255 "persistent": false,
4262 = Checking Bitmap bitmap0 =
4263 expecting 0 dirty sectors; have 0. OK!
4267 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4273 --- Verification ---
4275 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4276 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4277 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4280 === Mode top; Bitmap Sync always with simulated failure ===
4282 --- Preparing image & VM ---
4284 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4289 write -P0x49 0x0000000 0x10000
4291 write -P0x6c 0x0100000 0x10000
4293 write -P0x6f 0x2000000 0x10000
4295 write -P0x76 0x3ff0000 0x10000
4301 --- Reference Backup #0 ---
4304 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4308 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4311 {"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}}}
4313 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4317 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4322 write -P0x65 0x0000000 0x10000
4324 write -P0x77 0x00f8000 0x10000
4326 write -P0x72 0x2008000 0x10000
4328 write -P0x69 0x3fe0000 0x10000
4336 "granularity": 65536,
4338 "persistent": false,
4345 = Checking Bitmap bitmap0 =
4346 expecting 6 dirty sectors; have 6. OK!
4348 --- Reference Backup #1 ---
4351 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4355 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4358 {"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}}}
4360 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4362 --- Test Backup #1 ---
4365 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4369 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4372 {"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}}}
4377 write -P0x74 0x0010000 0x10000
4379 write -P0x69 0x00e8000 0x10000
4381 write -P0x6e 0x2018000 0x10000
4383 write -P0x67 0x3fe0000 0x20000
4391 "granularity": 65536,
4392 "persistent": false,
4398 "granularity": 65536,
4399 "persistent": false,
4405 "granularity": 65536,
4407 "persistent": false,
4414 = Checking Bitmap bitmap0 =
4415 expecting 6 dirty sectors; have 6. OK!
4417 = Checking Bitmap (anonymous) =
4418 expecting 7 dirty sectors; have 7. OK!
4420 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
4422 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4423 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4430 "granularity": 65536,
4432 "persistent": false,
4439 = Checking Bitmap bitmap0 =
4440 expecting 7 dirty sectors; have 7. OK!
4444 write -P0xaa 0x0010000 0x30000
4446 write -P0xbb 0x00d8000 0x10000
4448 write -P0xcc 0x2028000 0x10000
4450 write -P0xdd 0x3fc0000 0x10000
4458 "granularity": 65536,
4460 "persistent": false,
4467 = Checking Bitmap bitmap0 =
4468 expecting 12 dirty sectors; have 12. OK!
4470 --- Reference Backup #2 ---
4473 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4477 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4480 {"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}}}
4482 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4484 --- Test Backup #2 ---
4487 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4491 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4494 {"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}}}
4496 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4498 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4499 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4506 "granularity": 65536,
4508 "persistent": false,
4515 = Checking Bitmap bitmap0 =
4516 expecting 0 dirty sectors; have 0. OK!
4520 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4526 --- Verification ---
4528 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4529 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4530 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4533 === Mode top; Bitmap Sync always with intermediate failure ===
4535 --- Preparing image & VM ---
4537 {"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"}}
4542 write -P0x49 0x0000000 0x10000
4544 write -P0x6c 0x0100000 0x10000
4546 write -P0x6f 0x2000000 0x10000
4548 write -P0x76 0x3ff0000 0x10000
4554 --- Reference Backup #0 ---
4557 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4561 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4564 {"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}}}
4566 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4570 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4575 write -P0x65 0x0000000 0x10000
4577 write -P0x77 0x00f8000 0x10000
4579 write -P0x72 0x2008000 0x10000
4581 write -P0x69 0x3fe0000 0x10000
4589 "granularity": 65536,
4591 "persistent": false,
4598 = Checking Bitmap bitmap0 =
4599 expecting 6 dirty sectors; have 6. OK!
4601 --- Reference Backup #1 ---
4604 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4608 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4611 {"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}}}
4613 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4617 --- Test Backup #1 ---
4620 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4624 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4627 {"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}}}
4629 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4630 {"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"}}
4637 "granularity": 65536,
4639 "persistent": false,
4646 = Checking Bitmap bitmap0 =
4647 expecting 6 dirty sectors; have 6. OK!
4651 write -P0xaa 0x0010000 0x30000
4653 write -P0xbb 0x00d8000 0x10000
4655 write -P0xcc 0x2028000 0x10000
4657 write -P0xdd 0x3fc0000 0x10000
4665 "granularity": 65536,
4667 "persistent": false,
4674 = Checking Bitmap bitmap0 =
4675 expecting 14 dirty sectors; have 14. OK!
4677 --- Reference Backup #2 ---
4680 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4684 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4687 {"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}}}
4689 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4691 --- Test Backup #2 ---
4694 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4698 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4701 {"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}}}
4703 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4705 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4706 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4713 "granularity": 65536,
4715 "persistent": false,
4722 = Checking Bitmap bitmap0 =
4723 expecting 0 dirty sectors; have 0. OK!
4727 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4733 --- Verification ---
4735 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4736 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4737 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4740 === Mode top; Bitmap Sync always without failure ===
4742 --- Preparing image & VM ---
4744 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4749 write -P0x49 0x0000000 0x10000
4751 write -P0x6c 0x0100000 0x10000
4753 write -P0x6f 0x2000000 0x10000
4755 write -P0x76 0x3ff0000 0x10000
4761 --- Reference Backup #0 ---
4764 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4768 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4771 {"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}}}
4773 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4777 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4782 write -P0x65 0x0000000 0x10000
4784 write -P0x77 0x00f8000 0x10000
4786 write -P0x72 0x2008000 0x10000
4788 write -P0x69 0x3fe0000 0x10000
4796 "granularity": 65536,
4798 "persistent": false,
4805 = Checking Bitmap bitmap0 =
4806 expecting 6 dirty sectors; have 6. OK!
4808 --- Reference Backup #1 ---
4811 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4815 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4818 {"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}}}
4820 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4822 --- Test Backup #1 ---
4825 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4829 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4832 {"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}}}
4837 write -P0x74 0x0010000 0x10000
4839 write -P0x69 0x00e8000 0x10000
4841 write -P0x6e 0x2018000 0x10000
4843 write -P0x67 0x3fe0000 0x20000
4851 "granularity": 65536,
4852 "persistent": false,
4858 "granularity": 65536,
4859 "persistent": false,
4865 "granularity": 65536,
4867 "persistent": false,
4874 = Checking Bitmap bitmap0 =
4875 expecting 6 dirty sectors; have 6. OK!
4877 = Checking Bitmap (anonymous) =
4878 expecting 7 dirty sectors; have 7. OK!
4880 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4882 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4883 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4890 "granularity": 65536,
4892 "persistent": false,
4899 = Checking Bitmap bitmap0 =
4900 expecting 7 dirty sectors; have 7. OK!
4904 write -P0xaa 0x0010000 0x30000
4906 write -P0xbb 0x00d8000 0x10000
4908 write -P0xcc 0x2028000 0x10000
4910 write -P0xdd 0x3fc0000 0x10000
4918 "granularity": 65536,
4920 "persistent": false,
4927 = Checking Bitmap bitmap0 =
4928 expecting 12 dirty sectors; have 12. OK!
4930 --- Reference Backup #2 ---
4933 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4937 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4940 {"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}}}
4942 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4944 --- Test Backup #2 ---
4947 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4951 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4954 {"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}}}
4956 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4958 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4959 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4966 "granularity": 65536,
4968 "persistent": false,
4975 = Checking Bitmap bitmap0 =
4976 expecting 0 dirty sectors; have 0. OK!
4980 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4986 --- Verification ---
4988 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4989 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4990 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4993 === API failure tests ===
4995 --- Preparing image & VM ---
4997 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
5001 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5005 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5009 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5012 -- Testing invalid QMP commands --
5014 -- Sync mode incremental tests --
5016 {"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}}}
5017 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5019 {"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}}}
5020 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5022 {"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}}}
5023 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5025 {"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}}}
5026 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5028 {"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}}}
5029 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5031 {"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}}}
5032 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5034 {"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}}}
5035 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5037 {"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}}}
5038 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5040 {"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}}}
5041 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5043 {"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}}}
5044 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5046 -- Sync mode bitmap tests --
5048 {"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}}}
5049 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5051 {"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}}}
5052 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5054 {"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}}}
5055 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5057 {"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}}}
5058 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5060 {"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}}}
5061 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5063 {"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}}}
5064 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5066 {"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}}}
5067 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5069 {"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}}}
5070 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5072 {"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}}}
5073 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5075 -- Sync mode full tests --
5077 {"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}}}
5078 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5080 {"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}}}
5081 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5083 {"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}}}
5084 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5086 {"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}}}
5087 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5089 {"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}}}
5090 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5092 {"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}}}
5093 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5095 {"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}}}
5096 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5098 {"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}}}
5099 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'full'"}}
5101 {"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}}}
5102 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5104 -- Sync mode top tests --
5106 {"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}}}
5107 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5109 {"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}}}
5110 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5112 {"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}}}
5113 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5115 {"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}}}
5116 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5118 {"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}}}
5119 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5121 {"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}}}
5122 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5124 {"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}}}
5125 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5127 {"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}}}
5128 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'top'"}}
5130 {"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}}}
5131 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5133 -- Sync mode none tests --
5135 {"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}}}
5136 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5138 {"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}}}
5139 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5141 {"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}}}
5142 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5144 {"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}}}
5145 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5147 {"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}}}
5148 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5150 {"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}}}
5151 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5153 {"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}}}
5154 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5156 {"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}}}
5157 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5159 {"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}}}
5160 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5162 {"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}}}
5163 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5165 {"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}}}
5166 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}