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,
129 "granularity": 65536,
136 "granularity": 65536,
143 "granularity": 65536,
152 = Checking Bitmap bitmap0 =
153 expecting 6 dirty sectors; have 6. OK!
155 = Checking Bitmap (anonymous) =
156 expecting 7 dirty sectors; have 7. OK!
158 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
160 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
161 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
168 "granularity": 65536,
177 = Checking Bitmap bitmap0 =
178 expecting 10 dirty sectors; have 10. OK!
182 write -P0xaa 0x0010000 0x30000
184 write -P0xbb 0x00d8000 0x10000
186 write -P0xcc 0x2028000 0x10000
188 write -P0xdd 0x3fc0000 0x10000
196 "granularity": 65536,
205 = Checking Bitmap bitmap0 =
206 expecting 15 dirty sectors; have 15. OK!
208 --- Reference Backup #2 ---
211 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
215 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
218 {"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}}}
220 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
222 --- Test Backup #2 ---
225 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
229 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
232 {"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}}}
234 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
236 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
237 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
244 "granularity": 65536,
253 = Checking Bitmap bitmap0 =
254 expecting 15 dirty sectors; have 15. OK!
258 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
266 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
267 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
268 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
271 === Mode bitmap; Bitmap Sync never with intermediate failure ===
273 --- Preparing image & VM ---
275 {"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"}}
280 write -P0x49 0x0000000 0x10000
282 write -P0x6c 0x0100000 0x10000
284 write -P0x6f 0x2000000 0x10000
286 write -P0x76 0x3ff0000 0x10000
292 --- Reference Backup #0 ---
295 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
299 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
302 {"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}}}
304 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
308 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
313 write -P0x65 0x0000000 0x10000
315 write -P0x77 0x00f8000 0x10000
317 write -P0x72 0x2008000 0x10000
319 write -P0x69 0x3fe0000 0x10000
327 "granularity": 65536,
336 = Checking Bitmap bitmap0 =
337 expecting 6 dirty sectors; have 6. OK!
339 --- Reference 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": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1", "x-perf": {"max-workers": 1}}}
351 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
355 --- Test Backup #1 ---
358 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
362 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
365 {"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}}}
367 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
368 {"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"}}
375 "granularity": 65536,
384 = Checking Bitmap bitmap0 =
385 expecting 6 dirty sectors; have 6. OK!
389 write -P0xaa 0x0010000 0x30000
391 write -P0xbb 0x00d8000 0x10000
393 write -P0xcc 0x2028000 0x10000
395 write -P0xdd 0x3fc0000 0x10000
403 "granularity": 65536,
412 = Checking Bitmap bitmap0 =
413 expecting 14 dirty sectors; have 14. OK!
415 --- Reference Backup #2 ---
418 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
422 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
425 {"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}}}
427 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
429 --- Test Backup #2 ---
432 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
436 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
439 {"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}}}
441 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
443 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
444 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
451 "granularity": 65536,
460 = Checking Bitmap bitmap0 =
461 expecting 14 dirty sectors; have 14. OK!
465 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
473 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
474 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
475 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
478 === Mode bitmap; Bitmap Sync never without failure ===
480 --- Preparing image & VM ---
482 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
487 write -P0x49 0x0000000 0x10000
489 write -P0x6c 0x0100000 0x10000
491 write -P0x6f 0x2000000 0x10000
493 write -P0x76 0x3ff0000 0x10000
499 --- Reference Backup #0 ---
502 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
506 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
509 {"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}}}
511 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
515 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
520 write -P0x65 0x0000000 0x10000
522 write -P0x77 0x00f8000 0x10000
524 write -P0x72 0x2008000 0x10000
526 write -P0x69 0x3fe0000 0x10000
534 "granularity": 65536,
543 = Checking Bitmap bitmap0 =
544 expecting 6 dirty sectors; have 6. OK!
546 --- Reference Backup #1 ---
549 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
553 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
556 {"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}}}
558 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
560 --- Test Backup #1 ---
563 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
567 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
570 {"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}}}
575 write -P0x74 0x0010000 0x10000
577 write -P0x69 0x00e8000 0x10000
579 write -P0x6e 0x2018000 0x10000
581 write -P0x67 0x3fe0000 0x20000
589 "granularity": 65536,
596 "granularity": 65536,
605 "granularity": 65536,
612 "granularity": 65536,
619 "granularity": 65536,
628 = Checking Bitmap bitmap0 =
629 expecting 6 dirty sectors; have 6. OK!
631 = Checking Bitmap (anonymous) =
632 expecting 7 dirty sectors; have 7. OK!
634 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
636 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
637 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
644 "granularity": 65536,
653 = Checking Bitmap bitmap0 =
654 expecting 10 dirty sectors; have 10. OK!
658 write -P0xaa 0x0010000 0x30000
660 write -P0xbb 0x00d8000 0x10000
662 write -P0xcc 0x2028000 0x10000
664 write -P0xdd 0x3fc0000 0x10000
672 "granularity": 65536,
681 = Checking Bitmap bitmap0 =
682 expecting 15 dirty sectors; have 15. OK!
684 --- Reference Backup #2 ---
687 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
691 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
694 {"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}}}
696 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
698 --- Test Backup #2 ---
701 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
705 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
708 {"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}}}
710 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
712 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
713 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
720 "granularity": 65536,
729 = Checking Bitmap bitmap0 =
730 expecting 15 dirty sectors; have 15. OK!
734 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
742 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
743 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
744 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
747 === Mode bitmap; Bitmap Sync on-success with simulated failure ===
749 --- Preparing image & VM ---
751 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
756 write -P0x49 0x0000000 0x10000
758 write -P0x6c 0x0100000 0x10000
760 write -P0x6f 0x2000000 0x10000
762 write -P0x76 0x3ff0000 0x10000
768 --- Reference Backup #0 ---
771 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
775 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
778 {"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}}}
780 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
784 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
789 write -P0x65 0x0000000 0x10000
791 write -P0x77 0x00f8000 0x10000
793 write -P0x72 0x2008000 0x10000
795 write -P0x69 0x3fe0000 0x10000
803 "granularity": 65536,
812 = Checking Bitmap bitmap0 =
813 expecting 6 dirty sectors; have 6. OK!
815 --- Reference Backup #1 ---
818 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
822 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
825 {"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}}}
827 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
829 --- Test Backup #1 ---
832 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
836 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
839 {"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}}}
844 write -P0x74 0x0010000 0x10000
846 write -P0x69 0x00e8000 0x10000
848 write -P0x6e 0x2018000 0x10000
850 write -P0x67 0x3fe0000 0x20000
858 "granularity": 65536,
865 "granularity": 65536,
874 "granularity": 65536,
881 "granularity": 65536,
888 "granularity": 65536,
897 = Checking Bitmap bitmap0 =
898 expecting 6 dirty sectors; have 6. OK!
900 = Checking Bitmap (anonymous) =
901 expecting 7 dirty sectors; have 7. OK!
903 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
905 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
906 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
913 "granularity": 65536,
922 = Checking Bitmap bitmap0 =
923 expecting 10 dirty sectors; have 10. OK!
927 write -P0xaa 0x0010000 0x30000
929 write -P0xbb 0x00d8000 0x10000
931 write -P0xcc 0x2028000 0x10000
933 write -P0xdd 0x3fc0000 0x10000
941 "granularity": 65536,
950 = Checking Bitmap bitmap0 =
951 expecting 15 dirty sectors; have 15. OK!
953 --- Reference Backup #2 ---
956 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
960 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
963 {"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}}}
965 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
967 --- Test Backup #2 ---
970 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
974 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
977 {"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}}}
979 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
981 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
982 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
989 "granularity": 65536,
998 = Checking Bitmap bitmap0 =
999 expecting 0 dirty sectors; have 0. OK!
1003 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1009 --- Verification ---
1011 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1012 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1013 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1016 === Mode bitmap; Bitmap Sync on-success with intermediate failure ===
1018 --- Preparing image & VM ---
1020 {"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"}}
1025 write -P0x49 0x0000000 0x10000
1027 write -P0x6c 0x0100000 0x10000
1029 write -P0x6f 0x2000000 0x10000
1031 write -P0x76 0x3ff0000 0x10000
1037 --- Reference Backup #0 ---
1040 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1044 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1047 {"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}}}
1049 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1053 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1058 write -P0x65 0x0000000 0x10000
1060 write -P0x77 0x00f8000 0x10000
1062 write -P0x72 0x2008000 0x10000
1064 write -P0x69 0x3fe0000 0x10000
1072 "granularity": 65536,
1074 "persistent": false,
1081 = Checking Bitmap bitmap0 =
1082 expecting 6 dirty sectors; have 6. OK!
1084 --- Reference Backup #1 ---
1087 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1091 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1094 {"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}}}
1096 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1100 --- Test Backup #1 ---
1103 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1107 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1110 {"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}}}
1112 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1113 {"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"}}
1120 "granularity": 65536,
1122 "persistent": false,
1129 = Checking Bitmap bitmap0 =
1130 expecting 6 dirty sectors; have 6. OK!
1134 write -P0xaa 0x0010000 0x30000
1136 write -P0xbb 0x00d8000 0x10000
1138 write -P0xcc 0x2028000 0x10000
1140 write -P0xdd 0x3fc0000 0x10000
1148 "granularity": 65536,
1150 "persistent": false,
1157 = Checking Bitmap bitmap0 =
1158 expecting 14 dirty sectors; have 14. OK!
1160 --- Reference Backup #2 ---
1163 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1167 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1170 {"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}}}
1172 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1174 --- Test Backup #2 ---
1177 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1181 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1184 {"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}}}
1186 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1188 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1189 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1196 "granularity": 65536,
1198 "persistent": false,
1205 = Checking Bitmap bitmap0 =
1206 expecting 0 dirty sectors; have 0. OK!
1210 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1216 --- Verification ---
1218 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1219 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1220 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1223 === Mode bitmap; Bitmap Sync on-success without failure ===
1225 --- Preparing image & VM ---
1227 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1232 write -P0x49 0x0000000 0x10000
1234 write -P0x6c 0x0100000 0x10000
1236 write -P0x6f 0x2000000 0x10000
1238 write -P0x76 0x3ff0000 0x10000
1244 --- Reference Backup #0 ---
1247 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1251 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1254 {"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}}}
1256 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1260 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1265 write -P0x65 0x0000000 0x10000
1267 write -P0x77 0x00f8000 0x10000
1269 write -P0x72 0x2008000 0x10000
1271 write -P0x69 0x3fe0000 0x10000
1279 "granularity": 65536,
1281 "persistent": false,
1288 = Checking Bitmap bitmap0 =
1289 expecting 6 dirty sectors; have 6. OK!
1291 --- Reference Backup #1 ---
1294 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1298 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1301 {"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}}}
1303 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1305 --- Test Backup #1 ---
1308 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1312 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1315 {"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}}}
1320 write -P0x74 0x0010000 0x10000
1322 write -P0x69 0x00e8000 0x10000
1324 write -P0x6e 0x2018000 0x10000
1326 write -P0x67 0x3fe0000 0x20000
1334 "granularity": 65536,
1335 "persistent": false,
1341 "granularity": 65536,
1342 "persistent": false,
1350 "granularity": 65536,
1351 "persistent": false,
1357 "granularity": 65536,
1358 "persistent": false,
1364 "granularity": 65536,
1366 "persistent": false,
1373 = Checking Bitmap bitmap0 =
1374 expecting 6 dirty sectors; have 6. OK!
1376 = Checking Bitmap (anonymous) =
1377 expecting 7 dirty sectors; have 7. OK!
1379 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
1381 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1382 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1389 "granularity": 65536,
1391 "persistent": false,
1398 = Checking Bitmap bitmap0 =
1399 expecting 7 dirty sectors; have 7. OK!
1403 write -P0xaa 0x0010000 0x30000
1405 write -P0xbb 0x00d8000 0x10000
1407 write -P0xcc 0x2028000 0x10000
1409 write -P0xdd 0x3fc0000 0x10000
1417 "granularity": 65536,
1419 "persistent": false,
1426 = Checking Bitmap bitmap0 =
1427 expecting 12 dirty sectors; have 12. OK!
1429 --- Reference Backup #2 ---
1432 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1436 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1439 {"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}}}
1441 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1443 --- Test Backup #2 ---
1446 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1450 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1453 {"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}}}
1455 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1457 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1458 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1465 "granularity": 65536,
1467 "persistent": false,
1474 = Checking Bitmap bitmap0 =
1475 expecting 0 dirty sectors; have 0. OK!
1479 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1485 --- Verification ---
1487 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1488 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1489 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1492 === Mode bitmap; Bitmap Sync always with simulated failure ===
1494 --- Preparing image & VM ---
1496 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1501 write -P0x49 0x0000000 0x10000
1503 write -P0x6c 0x0100000 0x10000
1505 write -P0x6f 0x2000000 0x10000
1507 write -P0x76 0x3ff0000 0x10000
1513 --- Reference Backup #0 ---
1516 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1520 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1523 {"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}}}
1525 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1529 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1534 write -P0x65 0x0000000 0x10000
1536 write -P0x77 0x00f8000 0x10000
1538 write -P0x72 0x2008000 0x10000
1540 write -P0x69 0x3fe0000 0x10000
1548 "granularity": 65536,
1550 "persistent": false,
1557 = Checking Bitmap bitmap0 =
1558 expecting 6 dirty sectors; have 6. OK!
1560 --- Reference Backup #1 ---
1563 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1567 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1570 {"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}}}
1572 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1574 --- Test Backup #1 ---
1577 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1581 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1584 {"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}}}
1589 write -P0x74 0x0010000 0x10000
1591 write -P0x69 0x00e8000 0x10000
1593 write -P0x6e 0x2018000 0x10000
1595 write -P0x67 0x3fe0000 0x20000
1603 "granularity": 65536,
1604 "persistent": false,
1610 "granularity": 65536,
1611 "persistent": false,
1619 "granularity": 65536,
1620 "persistent": false,
1626 "granularity": 65536,
1627 "persistent": false,
1633 "granularity": 65536,
1635 "persistent": false,
1642 = Checking Bitmap bitmap0 =
1643 expecting 6 dirty sectors; have 6. OK!
1645 = Checking Bitmap (anonymous) =
1646 expecting 7 dirty sectors; have 7. OK!
1648 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
1650 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1651 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1658 "granularity": 65536,
1660 "persistent": false,
1667 = Checking Bitmap bitmap0 =
1668 expecting 7 dirty sectors; have 7. OK!
1672 write -P0xaa 0x0010000 0x30000
1674 write -P0xbb 0x00d8000 0x10000
1676 write -P0xcc 0x2028000 0x10000
1678 write -P0xdd 0x3fc0000 0x10000
1686 "granularity": 65536,
1688 "persistent": false,
1695 = Checking Bitmap bitmap0 =
1696 expecting 12 dirty sectors; have 12. OK!
1698 --- Reference Backup #2 ---
1701 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1705 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1708 {"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}}}
1710 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1712 --- Test Backup #2 ---
1715 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1719 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1722 {"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}}}
1724 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1726 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1727 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1734 "granularity": 65536,
1736 "persistent": false,
1743 = Checking Bitmap bitmap0 =
1744 expecting 0 dirty sectors; have 0. OK!
1748 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1754 --- Verification ---
1756 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1757 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1758 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1761 === Mode bitmap; Bitmap Sync always with intermediate failure ===
1763 --- Preparing image & VM ---
1765 {"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"}}
1770 write -P0x49 0x0000000 0x10000
1772 write -P0x6c 0x0100000 0x10000
1774 write -P0x6f 0x2000000 0x10000
1776 write -P0x76 0x3ff0000 0x10000
1782 --- Reference Backup #0 ---
1785 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1789 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1792 {"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}}}
1794 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1798 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1803 write -P0x65 0x0000000 0x10000
1805 write -P0x77 0x00f8000 0x10000
1807 write -P0x72 0x2008000 0x10000
1809 write -P0x69 0x3fe0000 0x10000
1817 "granularity": 65536,
1819 "persistent": false,
1826 = Checking Bitmap bitmap0 =
1827 expecting 6 dirty sectors; have 6. OK!
1829 --- Reference Backup #1 ---
1832 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1836 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1839 {"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}}}
1841 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1845 --- Test Backup #1 ---
1848 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1852 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1855 {"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}}}
1857 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1858 {"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"}}
1865 "granularity": 65536,
1867 "persistent": false,
1874 = Checking Bitmap bitmap0 =
1875 expecting 5 dirty sectors; have 5. OK!
1879 write -P0xaa 0x0010000 0x30000
1881 write -P0xbb 0x00d8000 0x10000
1883 write -P0xcc 0x2028000 0x10000
1885 write -P0xdd 0x3fc0000 0x10000
1893 "granularity": 65536,
1895 "persistent": false,
1902 = Checking Bitmap bitmap0 =
1903 expecting 13 dirty sectors; have 13. OK!
1905 --- Reference Backup #2 ---
1908 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1912 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1915 {"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}}}
1917 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1919 --- Test Backup #2 ---
1922 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1926 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1929 {"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}}}
1931 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1933 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1934 {"data": {"device": "backup_2", "len": 851968, "offset": 851968, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1941 "granularity": 65536,
1943 "persistent": false,
1950 = Checking Bitmap bitmap0 =
1951 expecting 0 dirty sectors; have 0. OK!
1955 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1961 --- Verification ---
1963 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1964 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1965 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1968 === Mode bitmap; Bitmap Sync always without failure ===
1970 --- Preparing image & VM ---
1972 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1977 write -P0x49 0x0000000 0x10000
1979 write -P0x6c 0x0100000 0x10000
1981 write -P0x6f 0x2000000 0x10000
1983 write -P0x76 0x3ff0000 0x10000
1989 --- Reference Backup #0 ---
1992 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1996 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1999 {"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}}}
2001 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2005 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2010 write -P0x65 0x0000000 0x10000
2012 write -P0x77 0x00f8000 0x10000
2014 write -P0x72 0x2008000 0x10000
2016 write -P0x69 0x3fe0000 0x10000
2024 "granularity": 65536,
2026 "persistent": false,
2033 = Checking Bitmap bitmap0 =
2034 expecting 6 dirty sectors; have 6. OK!
2036 --- Reference Backup #1 ---
2039 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2043 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2046 {"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}}}
2048 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2050 --- Test Backup #1 ---
2053 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2057 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2060 {"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}}}
2065 write -P0x74 0x0010000 0x10000
2067 write -P0x69 0x00e8000 0x10000
2069 write -P0x6e 0x2018000 0x10000
2071 write -P0x67 0x3fe0000 0x20000
2079 "granularity": 65536,
2080 "persistent": false,
2086 "granularity": 65536,
2087 "persistent": false,
2095 "granularity": 65536,
2096 "persistent": false,
2102 "granularity": 65536,
2103 "persistent": false,
2109 "granularity": 65536,
2111 "persistent": false,
2118 = Checking Bitmap bitmap0 =
2119 expecting 6 dirty sectors; have 6. OK!
2121 = Checking Bitmap (anonymous) =
2122 expecting 7 dirty sectors; have 7. OK!
2124 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2126 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2127 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2134 "granularity": 65536,
2136 "persistent": false,
2143 = Checking Bitmap bitmap0 =
2144 expecting 7 dirty sectors; have 7. OK!
2148 write -P0xaa 0x0010000 0x30000
2150 write -P0xbb 0x00d8000 0x10000
2152 write -P0xcc 0x2028000 0x10000
2154 write -P0xdd 0x3fc0000 0x10000
2162 "granularity": 65536,
2164 "persistent": false,
2171 = Checking Bitmap bitmap0 =
2172 expecting 12 dirty sectors; have 12. OK!
2174 --- Reference Backup #2 ---
2177 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2181 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2184 {"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}}}
2186 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2188 --- Test Backup #2 ---
2191 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2195 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2198 {"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}}}
2200 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2202 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2203 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2210 "granularity": 65536,
2212 "persistent": false,
2219 = Checking Bitmap bitmap0 =
2220 expecting 0 dirty sectors; have 0. OK!
2224 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2230 --- Verification ---
2232 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2233 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2234 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2237 === Mode full; Bitmap Sync on-success with simulated failure ===
2239 --- Preparing image & VM ---
2241 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2246 write -P0x49 0x0000000 0x10000
2248 write -P0x6c 0x0100000 0x10000
2250 write -P0x6f 0x2000000 0x10000
2252 write -P0x76 0x3ff0000 0x10000
2258 --- Reference Backup #0 ---
2261 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2265 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2268 {"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}}}
2270 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2274 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2279 write -P0x65 0x0000000 0x10000
2281 write -P0x77 0x00f8000 0x10000
2283 write -P0x72 0x2008000 0x10000
2285 write -P0x69 0x3fe0000 0x10000
2293 "granularity": 65536,
2295 "persistent": false,
2302 = Checking Bitmap bitmap0 =
2303 expecting 6 dirty sectors; have 6. OK!
2305 --- Reference Backup #1 ---
2308 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2312 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2315 {"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}}}
2317 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2319 --- Test Backup #1 ---
2322 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2326 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2329 {"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}}}
2334 write -P0x74 0x0010000 0x10000
2336 write -P0x69 0x00e8000 0x10000
2338 write -P0x6e 0x2018000 0x10000
2340 write -P0x67 0x3fe0000 0x20000
2348 "granularity": 65536,
2349 "persistent": false,
2355 "granularity": 65536,
2356 "persistent": false,
2364 "granularity": 65536,
2365 "persistent": false,
2371 "granularity": 65536,
2372 "persistent": false,
2378 "granularity": 65536,
2380 "persistent": false,
2387 = Checking Bitmap bitmap0 =
2388 expecting 6 dirty sectors; have 6. OK!
2390 = Checking Bitmap (anonymous) =
2391 expecting 7 dirty sectors; have 7. OK!
2393 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2395 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2396 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2403 "granularity": 65536,
2405 "persistent": false,
2412 = Checking Bitmap bitmap0 =
2413 expecting 10 dirty sectors; have 10. OK!
2417 write -P0xaa 0x0010000 0x30000
2419 write -P0xbb 0x00d8000 0x10000
2421 write -P0xcc 0x2028000 0x10000
2423 write -P0xdd 0x3fc0000 0x10000
2431 "granularity": 65536,
2433 "persistent": false,
2440 = Checking Bitmap bitmap0 =
2441 expecting 15 dirty sectors; have 15. OK!
2443 --- Reference Backup #2 ---
2446 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2450 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2453 {"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}}}
2455 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2457 --- Test Backup #2 ---
2460 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2464 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2467 {"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}}}
2469 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2471 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2472 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2479 "granularity": 65536,
2481 "persistent": false,
2488 = Checking Bitmap bitmap0 =
2489 expecting 0 dirty sectors; have 0. OK!
2493 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2499 --- Verification ---
2501 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2502 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2503 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2506 === Mode full; Bitmap Sync on-success with intermediate failure ===
2508 --- Preparing image & VM ---
2510 {"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"}}
2515 write -P0x49 0x0000000 0x10000
2517 write -P0x6c 0x0100000 0x10000
2519 write -P0x6f 0x2000000 0x10000
2521 write -P0x76 0x3ff0000 0x10000
2527 --- Reference Backup #0 ---
2530 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2534 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2537 {"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}}}
2539 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2543 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2548 write -P0x65 0x0000000 0x10000
2550 write -P0x77 0x00f8000 0x10000
2552 write -P0x72 0x2008000 0x10000
2554 write -P0x69 0x3fe0000 0x10000
2562 "granularity": 65536,
2564 "persistent": false,
2571 = Checking Bitmap bitmap0 =
2572 expecting 6 dirty sectors; have 6. OK!
2574 --- Reference Backup #1 ---
2577 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2581 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2584 {"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}}}
2586 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2590 --- Test Backup #1 ---
2593 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2597 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2600 {"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}}}
2602 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2603 {"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"}}
2610 "granularity": 65536,
2612 "persistent": false,
2619 = Checking Bitmap bitmap0 =
2620 expecting 6 dirty sectors; have 6. OK!
2624 write -P0xaa 0x0010000 0x30000
2626 write -P0xbb 0x00d8000 0x10000
2628 write -P0xcc 0x2028000 0x10000
2630 write -P0xdd 0x3fc0000 0x10000
2638 "granularity": 65536,
2640 "persistent": false,
2647 = Checking Bitmap bitmap0 =
2648 expecting 14 dirty sectors; have 14. OK!
2650 --- Reference Backup #2 ---
2653 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2657 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2660 {"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}}}
2662 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2664 --- Test Backup #2 ---
2667 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2671 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2674 {"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}}}
2676 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2678 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2679 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2686 "granularity": 65536,
2688 "persistent": false,
2695 = Checking Bitmap bitmap0 =
2696 expecting 0 dirty sectors; have 0. OK!
2700 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2706 --- Verification ---
2708 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
2709 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2710 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2713 === Mode full; Bitmap Sync on-success without failure ===
2715 --- Preparing image & VM ---
2717 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2722 write -P0x49 0x0000000 0x10000
2724 write -P0x6c 0x0100000 0x10000
2726 write -P0x6f 0x2000000 0x10000
2728 write -P0x76 0x3ff0000 0x10000
2734 --- Reference Backup #0 ---
2737 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2741 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2744 {"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}}}
2746 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2750 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2755 write -P0x65 0x0000000 0x10000
2757 write -P0x77 0x00f8000 0x10000
2759 write -P0x72 0x2008000 0x10000
2761 write -P0x69 0x3fe0000 0x10000
2769 "granularity": 65536,
2771 "persistent": false,
2778 = Checking Bitmap bitmap0 =
2779 expecting 6 dirty sectors; have 6. OK!
2781 --- Reference Backup #1 ---
2784 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2788 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2791 {"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}}}
2793 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2795 --- Test Backup #1 ---
2798 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2802 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2805 {"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}}}
2810 write -P0x74 0x0010000 0x10000
2812 write -P0x69 0x00e8000 0x10000
2814 write -P0x6e 0x2018000 0x10000
2816 write -P0x67 0x3fe0000 0x20000
2824 "granularity": 65536,
2825 "persistent": false,
2831 "granularity": 65536,
2832 "persistent": false,
2840 "granularity": 65536,
2841 "persistent": false,
2847 "granularity": 65536,
2848 "persistent": false,
2854 "granularity": 65536,
2856 "persistent": false,
2863 = Checking Bitmap bitmap0 =
2864 expecting 6 dirty sectors; have 6. OK!
2866 = Checking Bitmap (anonymous) =
2867 expecting 7 dirty sectors; have 7. OK!
2869 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2871 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2872 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2879 "granularity": 65536,
2881 "persistent": false,
2888 = Checking Bitmap bitmap0 =
2889 expecting 7 dirty sectors; have 7. OK!
2893 write -P0xaa 0x0010000 0x30000
2895 write -P0xbb 0x00d8000 0x10000
2897 write -P0xcc 0x2028000 0x10000
2899 write -P0xdd 0x3fc0000 0x10000
2907 "granularity": 65536,
2909 "persistent": false,
2916 = Checking Bitmap bitmap0 =
2917 expecting 12 dirty sectors; have 12. OK!
2919 --- Reference Backup #2 ---
2922 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2926 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2929 {"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}}}
2931 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2933 --- Test Backup #2 ---
2936 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2940 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2943 {"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}}}
2945 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2947 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2948 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2955 "granularity": 65536,
2957 "persistent": false,
2964 = Checking Bitmap bitmap0 =
2965 expecting 0 dirty sectors; have 0. OK!
2969 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2975 --- Verification ---
2977 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2978 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2979 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2982 === Mode full; Bitmap Sync always with simulated failure ===
2984 --- Preparing image & VM ---
2986 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2991 write -P0x49 0x0000000 0x10000
2993 write -P0x6c 0x0100000 0x10000
2995 write -P0x6f 0x2000000 0x10000
2997 write -P0x76 0x3ff0000 0x10000
3003 --- Reference Backup #0 ---
3006 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3010 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3013 {"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}}}
3015 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3019 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3024 write -P0x65 0x0000000 0x10000
3026 write -P0x77 0x00f8000 0x10000
3028 write -P0x72 0x2008000 0x10000
3030 write -P0x69 0x3fe0000 0x10000
3038 "granularity": 65536,
3040 "persistent": false,
3047 = Checking Bitmap bitmap0 =
3048 expecting 6 dirty sectors; have 6. OK!
3050 --- Reference Backup #1 ---
3053 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3057 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3060 {"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}}}
3062 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3064 --- Test Backup #1 ---
3067 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3071 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3074 {"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}}}
3079 write -P0x74 0x0010000 0x10000
3081 write -P0x69 0x00e8000 0x10000
3083 write -P0x6e 0x2018000 0x10000
3085 write -P0x67 0x3fe0000 0x20000
3093 "granularity": 65536,
3094 "persistent": false,
3100 "granularity": 65536,
3101 "persistent": false,
3109 "granularity": 65536,
3110 "persistent": false,
3116 "granularity": 65536,
3117 "persistent": false,
3123 "granularity": 65536,
3125 "persistent": false,
3132 = Checking Bitmap bitmap0 =
3133 expecting 6 dirty sectors; have 6. OK!
3135 = Checking Bitmap (anonymous) =
3136 expecting 7 dirty sectors; have 7. OK!
3138 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3140 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3141 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3148 "granularity": 65536,
3150 "persistent": false,
3157 = Checking Bitmap bitmap0 =
3158 expecting 7 dirty sectors; have 7. OK!
3162 write -P0xaa 0x0010000 0x30000
3164 write -P0xbb 0x00d8000 0x10000
3166 write -P0xcc 0x2028000 0x10000
3168 write -P0xdd 0x3fc0000 0x10000
3176 "granularity": 65536,
3178 "persistent": false,
3185 = Checking Bitmap bitmap0 =
3186 expecting 12 dirty sectors; have 12. OK!
3188 --- Reference Backup #2 ---
3191 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3195 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3198 {"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}}}
3200 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3202 --- Test Backup #2 ---
3205 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3209 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3212 {"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}}}
3214 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3216 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3217 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3224 "granularity": 65536,
3226 "persistent": false,
3233 = Checking Bitmap bitmap0 =
3234 expecting 0 dirty sectors; have 0. OK!
3238 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3244 --- Verification ---
3246 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3247 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3248 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3251 === Mode full; Bitmap Sync always with intermediate failure ===
3253 --- Preparing image & VM ---
3255 {"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"}}
3260 write -P0x49 0x0000000 0x10000
3262 write -P0x6c 0x0100000 0x10000
3264 write -P0x6f 0x2000000 0x10000
3266 write -P0x76 0x3ff0000 0x10000
3272 --- Reference Backup #0 ---
3275 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3279 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3282 {"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}}}
3284 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3288 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3293 write -P0x65 0x0000000 0x10000
3295 write -P0x77 0x00f8000 0x10000
3297 write -P0x72 0x2008000 0x10000
3299 write -P0x69 0x3fe0000 0x10000
3307 "granularity": 65536,
3309 "persistent": false,
3316 = Checking Bitmap bitmap0 =
3317 expecting 6 dirty sectors; have 6. OK!
3319 --- Reference Backup #1 ---
3322 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3326 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3329 {"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}}}
3331 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3335 --- Test Backup #1 ---
3338 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3342 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3345 {"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}}}
3347 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3348 {"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"}}
3355 "granularity": 65536,
3357 "persistent": false,
3364 = Checking Bitmap bitmap0 =
3365 expecting 1009 dirty sectors; have 1009. OK!
3369 write -P0xaa 0x0010000 0x30000
3371 write -P0xbb 0x00d8000 0x10000
3373 write -P0xcc 0x2028000 0x10000
3375 write -P0xdd 0x3fc0000 0x10000
3383 "granularity": 65536,
3385 "persistent": false,
3392 = Checking Bitmap bitmap0 =
3393 expecting 1014 dirty sectors; have 1014. OK!
3395 --- Reference Backup #2 ---
3398 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3402 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3405 {"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}}}
3407 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3409 --- Test Backup #2 ---
3412 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3416 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3419 {"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}}}
3421 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3423 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3424 {"data": {"device": "backup_2", "len": 66453504, "offset": 66453504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3431 "granularity": 65536,
3433 "persistent": false,
3440 = Checking Bitmap bitmap0 =
3441 expecting 0 dirty sectors; have 0. OK!
3445 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3451 --- Verification ---
3453 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
3454 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3455 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3458 === Mode full; Bitmap Sync always without failure ===
3460 --- Preparing image & VM ---
3462 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3467 write -P0x49 0x0000000 0x10000
3469 write -P0x6c 0x0100000 0x10000
3471 write -P0x6f 0x2000000 0x10000
3473 write -P0x76 0x3ff0000 0x10000
3479 --- Reference Backup #0 ---
3482 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3486 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3489 {"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}}}
3491 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3495 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3500 write -P0x65 0x0000000 0x10000
3502 write -P0x77 0x00f8000 0x10000
3504 write -P0x72 0x2008000 0x10000
3506 write -P0x69 0x3fe0000 0x10000
3514 "granularity": 65536,
3516 "persistent": false,
3523 = Checking Bitmap bitmap0 =
3524 expecting 6 dirty sectors; have 6. OK!
3526 --- Reference Backup #1 ---
3529 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3533 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3536 {"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}}}
3538 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3540 --- Test Backup #1 ---
3543 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3547 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3550 {"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}}}
3555 write -P0x74 0x0010000 0x10000
3557 write -P0x69 0x00e8000 0x10000
3559 write -P0x6e 0x2018000 0x10000
3561 write -P0x67 0x3fe0000 0x20000
3569 "granularity": 65536,
3570 "persistent": false,
3576 "granularity": 65536,
3577 "persistent": false,
3585 "granularity": 65536,
3586 "persistent": false,
3592 "granularity": 65536,
3593 "persistent": false,
3599 "granularity": 65536,
3601 "persistent": false,
3608 = Checking Bitmap bitmap0 =
3609 expecting 6 dirty sectors; have 6. OK!
3611 = Checking Bitmap (anonymous) =
3612 expecting 7 dirty sectors; have 7. OK!
3614 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
3616 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3617 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3624 "granularity": 65536,
3626 "persistent": false,
3633 = Checking Bitmap bitmap0 =
3634 expecting 7 dirty sectors; have 7. OK!
3638 write -P0xaa 0x0010000 0x30000
3640 write -P0xbb 0x00d8000 0x10000
3642 write -P0xcc 0x2028000 0x10000
3644 write -P0xdd 0x3fc0000 0x10000
3652 "granularity": 65536,
3654 "persistent": false,
3661 = Checking Bitmap bitmap0 =
3662 expecting 12 dirty sectors; have 12. OK!
3664 --- Reference Backup #2 ---
3667 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3671 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3674 {"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}}}
3676 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3678 --- Test Backup #2 ---
3681 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3685 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3688 {"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}}}
3690 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3692 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3693 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3700 "granularity": 65536,
3702 "persistent": false,
3709 = Checking Bitmap bitmap0 =
3710 expecting 0 dirty sectors; have 0. OK!
3714 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3720 --- Verification ---
3722 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3723 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3724 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3727 === Mode top; Bitmap Sync on-success with simulated failure ===
3729 --- Preparing image & VM ---
3731 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3736 write -P0x49 0x0000000 0x10000
3738 write -P0x6c 0x0100000 0x10000
3740 write -P0x6f 0x2000000 0x10000
3742 write -P0x76 0x3ff0000 0x10000
3748 --- Reference Backup #0 ---
3751 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3755 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3758 {"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}}}
3760 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3764 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3769 write -P0x65 0x0000000 0x10000
3771 write -P0x77 0x00f8000 0x10000
3773 write -P0x72 0x2008000 0x10000
3775 write -P0x69 0x3fe0000 0x10000
3783 "granularity": 65536,
3785 "persistent": false,
3792 = Checking Bitmap bitmap0 =
3793 expecting 6 dirty sectors; have 6. OK!
3795 --- Reference Backup #1 ---
3798 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3802 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3805 {"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}}}
3807 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3809 --- Test Backup #1 ---
3812 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3816 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3819 {"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}}}
3824 write -P0x74 0x0010000 0x10000
3826 write -P0x69 0x00e8000 0x10000
3828 write -P0x6e 0x2018000 0x10000
3830 write -P0x67 0x3fe0000 0x20000
3838 "granularity": 65536,
3839 "persistent": false,
3845 "granularity": 65536,
3846 "persistent": false,
3854 "granularity": 65536,
3855 "persistent": false,
3861 "granularity": 65536,
3862 "persistent": false,
3868 "granularity": 65536,
3870 "persistent": false,
3877 = Checking Bitmap bitmap0 =
3878 expecting 6 dirty sectors; have 6. OK!
3880 = Checking Bitmap (anonymous) =
3881 expecting 7 dirty sectors; have 7. OK!
3883 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3885 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3886 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3893 "granularity": 65536,
3895 "persistent": false,
3902 = Checking Bitmap bitmap0 =
3903 expecting 10 dirty sectors; have 10. OK!
3907 write -P0xaa 0x0010000 0x30000
3909 write -P0xbb 0x00d8000 0x10000
3911 write -P0xcc 0x2028000 0x10000
3913 write -P0xdd 0x3fc0000 0x10000
3921 "granularity": 65536,
3923 "persistent": false,
3930 = Checking Bitmap bitmap0 =
3931 expecting 15 dirty sectors; have 15. OK!
3933 --- Reference Backup #2 ---
3936 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3940 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3943 {"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}}}
3945 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3947 --- Test Backup #2 ---
3950 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3954 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3957 {"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}}}
3959 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3961 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3962 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3969 "granularity": 65536,
3971 "persistent": false,
3978 = Checking Bitmap bitmap0 =
3979 expecting 0 dirty sectors; have 0. OK!
3983 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3989 --- Verification ---
3991 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3992 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3993 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3996 === Mode top; Bitmap Sync on-success with intermediate failure ===
3998 --- Preparing image & VM ---
4000 {"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"}}
4005 write -P0x49 0x0000000 0x10000
4007 write -P0x6c 0x0100000 0x10000
4009 write -P0x6f 0x2000000 0x10000
4011 write -P0x76 0x3ff0000 0x10000
4017 --- Reference Backup #0 ---
4020 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4024 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4027 {"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}}}
4029 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4033 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4038 write -P0x65 0x0000000 0x10000
4040 write -P0x77 0x00f8000 0x10000
4042 write -P0x72 0x2008000 0x10000
4044 write -P0x69 0x3fe0000 0x10000
4052 "granularity": 65536,
4054 "persistent": false,
4061 = Checking Bitmap bitmap0 =
4062 expecting 6 dirty sectors; have 6. OK!
4064 --- Reference Backup #1 ---
4067 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4071 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4074 {"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}}}
4076 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4080 --- Test Backup #1 ---
4083 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4087 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4090 {"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}}}
4092 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4093 {"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"}}
4100 "granularity": 65536,
4102 "persistent": false,
4109 = Checking Bitmap bitmap0 =
4110 expecting 6 dirty sectors; have 6. OK!
4114 write -P0xaa 0x0010000 0x30000
4116 write -P0xbb 0x00d8000 0x10000
4118 write -P0xcc 0x2028000 0x10000
4120 write -P0xdd 0x3fc0000 0x10000
4128 "granularity": 65536,
4130 "persistent": false,
4137 = Checking Bitmap bitmap0 =
4138 expecting 14 dirty sectors; have 14. OK!
4140 --- Reference Backup #2 ---
4143 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4147 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4150 {"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}}}
4152 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4154 --- Test Backup #2 ---
4157 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4161 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4164 {"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}}}
4166 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4168 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4169 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4176 "granularity": 65536,
4178 "persistent": false,
4185 = Checking Bitmap bitmap0 =
4186 expecting 0 dirty sectors; have 0. OK!
4190 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4196 --- Verification ---
4198 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4199 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4200 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4203 === Mode top; Bitmap Sync on-success without failure ===
4205 --- Preparing image & VM ---
4207 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4212 write -P0x49 0x0000000 0x10000
4214 write -P0x6c 0x0100000 0x10000
4216 write -P0x6f 0x2000000 0x10000
4218 write -P0x76 0x3ff0000 0x10000
4224 --- Reference Backup #0 ---
4227 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4231 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4234 {"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}}}
4236 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4240 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4245 write -P0x65 0x0000000 0x10000
4247 write -P0x77 0x00f8000 0x10000
4249 write -P0x72 0x2008000 0x10000
4251 write -P0x69 0x3fe0000 0x10000
4259 "granularity": 65536,
4261 "persistent": false,
4268 = Checking Bitmap bitmap0 =
4269 expecting 6 dirty sectors; have 6. OK!
4271 --- Reference Backup #1 ---
4274 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4278 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4281 {"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}}}
4283 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4285 --- Test Backup #1 ---
4288 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4292 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4295 {"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}}}
4300 write -P0x74 0x0010000 0x10000
4302 write -P0x69 0x00e8000 0x10000
4304 write -P0x6e 0x2018000 0x10000
4306 write -P0x67 0x3fe0000 0x20000
4314 "granularity": 65536,
4315 "persistent": false,
4321 "granularity": 65536,
4322 "persistent": false,
4330 "granularity": 65536,
4331 "persistent": false,
4337 "granularity": 65536,
4338 "persistent": false,
4344 "granularity": 65536,
4346 "persistent": false,
4353 = Checking Bitmap bitmap0 =
4354 expecting 6 dirty sectors; have 6. OK!
4356 = Checking Bitmap (anonymous) =
4357 expecting 7 dirty sectors; have 7. OK!
4359 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4361 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4362 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4369 "granularity": 65536,
4371 "persistent": false,
4378 = Checking Bitmap bitmap0 =
4379 expecting 7 dirty sectors; have 7. OK!
4383 write -P0xaa 0x0010000 0x30000
4385 write -P0xbb 0x00d8000 0x10000
4387 write -P0xcc 0x2028000 0x10000
4389 write -P0xdd 0x3fc0000 0x10000
4397 "granularity": 65536,
4399 "persistent": false,
4406 = Checking Bitmap bitmap0 =
4407 expecting 12 dirty sectors; have 12. OK!
4409 --- Reference Backup #2 ---
4412 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4416 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4419 {"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}}}
4421 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4423 --- Test Backup #2 ---
4426 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4430 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4433 {"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}}}
4435 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4437 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4438 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4445 "granularity": 65536,
4447 "persistent": false,
4454 = Checking Bitmap bitmap0 =
4455 expecting 0 dirty sectors; have 0. OK!
4459 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4465 --- Verification ---
4467 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4468 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4469 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4472 === Mode top; Bitmap Sync always with simulated failure ===
4474 --- Preparing image & VM ---
4476 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4481 write -P0x49 0x0000000 0x10000
4483 write -P0x6c 0x0100000 0x10000
4485 write -P0x6f 0x2000000 0x10000
4487 write -P0x76 0x3ff0000 0x10000
4493 --- Reference Backup #0 ---
4496 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4500 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4503 {"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}}}
4505 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4509 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4514 write -P0x65 0x0000000 0x10000
4516 write -P0x77 0x00f8000 0x10000
4518 write -P0x72 0x2008000 0x10000
4520 write -P0x69 0x3fe0000 0x10000
4528 "granularity": 65536,
4530 "persistent": false,
4537 = Checking Bitmap bitmap0 =
4538 expecting 6 dirty sectors; have 6. OK!
4540 --- Reference Backup #1 ---
4543 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4547 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4550 {"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}}}
4552 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4554 --- Test Backup #1 ---
4557 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4561 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4564 {"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}}}
4569 write -P0x74 0x0010000 0x10000
4571 write -P0x69 0x00e8000 0x10000
4573 write -P0x6e 0x2018000 0x10000
4575 write -P0x67 0x3fe0000 0x20000
4583 "granularity": 65536,
4584 "persistent": false,
4590 "granularity": 65536,
4591 "persistent": false,
4599 "granularity": 65536,
4600 "persistent": false,
4606 "granularity": 65536,
4607 "persistent": false,
4613 "granularity": 65536,
4615 "persistent": false,
4622 = Checking Bitmap bitmap0 =
4623 expecting 6 dirty sectors; have 6. OK!
4625 = Checking Bitmap (anonymous) =
4626 expecting 7 dirty sectors; have 7. OK!
4628 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
4630 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4631 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4638 "granularity": 65536,
4640 "persistent": false,
4647 = Checking Bitmap bitmap0 =
4648 expecting 7 dirty sectors; have 7. OK!
4652 write -P0xaa 0x0010000 0x30000
4654 write -P0xbb 0x00d8000 0x10000
4656 write -P0xcc 0x2028000 0x10000
4658 write -P0xdd 0x3fc0000 0x10000
4666 "granularity": 65536,
4668 "persistent": false,
4675 = Checking Bitmap bitmap0 =
4676 expecting 12 dirty sectors; have 12. OK!
4678 --- Reference Backup #2 ---
4681 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4685 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4688 {"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}}}
4690 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4692 --- Test Backup #2 ---
4695 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4699 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4702 {"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}}}
4704 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4706 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4707 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4714 "granularity": 65536,
4716 "persistent": false,
4723 = Checking Bitmap bitmap0 =
4724 expecting 0 dirty sectors; have 0. OK!
4728 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4734 --- Verification ---
4736 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4737 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4738 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4741 === Mode top; Bitmap Sync always with intermediate failure ===
4743 --- Preparing image & VM ---
4745 {"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"}}
4750 write -P0x49 0x0000000 0x10000
4752 write -P0x6c 0x0100000 0x10000
4754 write -P0x6f 0x2000000 0x10000
4756 write -P0x76 0x3ff0000 0x10000
4762 --- Reference Backup #0 ---
4765 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4769 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4772 {"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}}}
4774 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4778 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4783 write -P0x65 0x0000000 0x10000
4785 write -P0x77 0x00f8000 0x10000
4787 write -P0x72 0x2008000 0x10000
4789 write -P0x69 0x3fe0000 0x10000
4797 "granularity": 65536,
4799 "persistent": false,
4806 = Checking Bitmap bitmap0 =
4807 expecting 6 dirty sectors; have 6. OK!
4809 --- Reference Backup #1 ---
4812 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4816 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4819 {"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}}}
4821 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4825 --- Test Backup #1 ---
4828 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4832 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4835 {"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 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4838 {"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"}}
4845 "granularity": 65536,
4847 "persistent": false,
4854 = Checking Bitmap bitmap0 =
4855 expecting 6 dirty sectors; have 6. OK!
4859 write -P0xaa 0x0010000 0x30000
4861 write -P0xbb 0x00d8000 0x10000
4863 write -P0xcc 0x2028000 0x10000
4865 write -P0xdd 0x3fc0000 0x10000
4873 "granularity": 65536,
4875 "persistent": false,
4882 = Checking Bitmap bitmap0 =
4883 expecting 14 dirty sectors; have 14. OK!
4885 --- Reference Backup #2 ---
4888 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4892 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4895 {"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}}}
4897 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4899 --- Test Backup #2 ---
4902 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4906 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4909 {"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}}}
4911 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4913 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4914 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4921 "granularity": 65536,
4923 "persistent": false,
4930 = Checking Bitmap bitmap0 =
4931 expecting 0 dirty sectors; have 0. OK!
4935 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4941 --- Verification ---
4943 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4944 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4945 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4948 === Mode top; Bitmap Sync always without failure ===
4950 --- Preparing image & VM ---
4952 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4957 write -P0x49 0x0000000 0x10000
4959 write -P0x6c 0x0100000 0x10000
4961 write -P0x6f 0x2000000 0x10000
4963 write -P0x76 0x3ff0000 0x10000
4969 --- Reference Backup #0 ---
4972 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4976 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4979 {"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}}}
4981 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4985 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4990 write -P0x65 0x0000000 0x10000
4992 write -P0x77 0x00f8000 0x10000
4994 write -P0x72 0x2008000 0x10000
4996 write -P0x69 0x3fe0000 0x10000
5004 "granularity": 65536,
5006 "persistent": false,
5013 = Checking Bitmap bitmap0 =
5014 expecting 6 dirty sectors; have 6. OK!
5016 --- Reference Backup #1 ---
5019 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5023 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5026 {"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}}}
5028 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5030 --- Test Backup #1 ---
5033 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5037 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5040 {"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}}}
5045 write -P0x74 0x0010000 0x10000
5047 write -P0x69 0x00e8000 0x10000
5049 write -P0x6e 0x2018000 0x10000
5051 write -P0x67 0x3fe0000 0x20000
5059 "granularity": 65536,
5060 "persistent": false,
5066 "granularity": 65536,
5067 "persistent": false,
5075 "granularity": 65536,
5076 "persistent": false,
5082 "granularity": 65536,
5083 "persistent": false,
5089 "granularity": 65536,
5091 "persistent": false,
5098 = Checking Bitmap bitmap0 =
5099 expecting 6 dirty sectors; have 6. OK!
5101 = Checking Bitmap (anonymous) =
5102 expecting 7 dirty sectors; have 7. OK!
5104 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
5106 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5107 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5114 "granularity": 65536,
5116 "persistent": false,
5123 = Checking Bitmap bitmap0 =
5124 expecting 7 dirty sectors; have 7. OK!
5128 write -P0xaa 0x0010000 0x30000
5130 write -P0xbb 0x00d8000 0x10000
5132 write -P0xcc 0x2028000 0x10000
5134 write -P0xdd 0x3fc0000 0x10000
5142 "granularity": 65536,
5144 "persistent": false,
5151 = Checking Bitmap bitmap0 =
5152 expecting 12 dirty sectors; have 12. OK!
5154 --- Reference Backup #2 ---
5157 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5161 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5164 {"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}}}
5166 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5168 --- Test Backup #2 ---
5171 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5175 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5178 {"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}}}
5180 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
5182 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5183 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5190 "granularity": 65536,
5192 "persistent": false,
5199 = Checking Bitmap bitmap0 =
5200 expecting 0 dirty sectors; have 0. OK!
5204 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
5210 --- Verification ---
5212 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
5213 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5214 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5217 === API failure tests ===
5219 --- Preparing image & VM ---
5221 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
5225 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5229 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5233 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5236 -- Testing invalid QMP commands --
5238 -- Sync mode incremental tests --
5240 {"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}}}
5241 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5243 {"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}}}
5244 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5246 {"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}}}
5247 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5249 {"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}}}
5250 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5252 {"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}}}
5253 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5255 {"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}}}
5256 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5258 {"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}}}
5259 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5261 {"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}}}
5262 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5264 {"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}}}
5265 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5267 {"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}}}
5268 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5270 -- Sync mode bitmap tests --
5272 {"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}}}
5273 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5275 {"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}}}
5276 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5278 {"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}}}
5279 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5281 {"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}}}
5282 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5284 {"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}}}
5285 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5287 {"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}}}
5288 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5290 {"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}}}
5291 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5293 {"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}}}
5294 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5296 {"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}}}
5297 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5299 -- Sync mode full tests --
5301 {"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}}}
5302 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5304 {"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}}}
5305 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5307 {"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}}}
5308 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5310 {"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}}}
5311 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5313 {"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}}}
5314 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5316 {"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}}}
5317 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5319 {"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}}}
5320 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5322 {"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}}}
5323 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'full'"}}
5325 {"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}}}
5326 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5328 -- Sync mode top tests --
5330 {"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}}}
5331 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5333 {"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}}}
5334 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5336 {"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}}}
5337 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5339 {"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}}}
5340 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5342 {"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}}}
5343 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5345 {"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}}}
5346 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5348 {"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}}}
5349 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5351 {"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}}}
5352 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'top'"}}
5354 {"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}}}
5355 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5357 -- Sync mode none tests --
5359 {"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}}}
5360 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5362 {"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}}}
5363 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5365 {"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}}}
5366 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5368 {"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}}}
5369 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5371 {"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}}}
5372 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5374 {"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}}}
5375 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5377 {"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}}}
5378 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5380 {"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}}}
5381 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5383 {"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}}}
5384 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5386 {"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}}}
5387 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5389 {"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}}}
5390 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}