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"}}
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
68 = Checking Bitmap bitmap0 =
69 expecting 6 dirty sectors; have 6. OK!
71 --- Reference Backup #1 ---
74 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
78 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
81 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
83 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
85 --- Test Backup #1 ---
88 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
92 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
95 {"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"}}
100 write -P0x74 0x0010000 0x10000
102 write -P0x69 0x00e8000 0x10000
104 write -P0x6e 0x2018000 0x10000
106 write -P0x67 0x3fe0000 0x20000
114 "granularity": 65536,
122 "granularity": 65536,
130 "granularity": 65536,
140 = Checking Bitmap bitmap0 =
141 expecting 6 dirty sectors; have 6. OK!
143 = Checking Bitmap (anonymous) =
144 expecting 7 dirty sectors; have 7. OK!
146 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
148 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
149 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
156 "granularity": 65536,
166 = Checking Bitmap bitmap0 =
167 expecting 10 dirty sectors; have 10. OK!
171 write -P0xaa 0x0010000 0x30000
173 write -P0xbb 0x00d8000 0x10000
175 write -P0xcc 0x2028000 0x10000
177 write -P0xdd 0x3fc0000 0x10000
185 "granularity": 65536,
195 = Checking Bitmap bitmap0 =
196 expecting 15 dirty sectors; have 15. OK!
198 --- Reference Backup #2 ---
201 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
205 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
208 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
210 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
212 --- Test Backup #2 ---
215 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
219 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
222 {"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"}}
224 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
226 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
227 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
234 "granularity": 65536,
244 = Checking Bitmap bitmap0 =
245 expecting 15 dirty sectors; have 15. OK!
249 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
257 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
258 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
259 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
262 === Mode bitmap; Bitmap Sync never with intermediate failure ===
264 --- Preparing image & VM ---
266 {"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"}}
271 write -P0x49 0x0000000 0x10000
273 write -P0x6c 0x0100000 0x10000
275 write -P0x6f 0x2000000 0x10000
277 write -P0x76 0x3ff0000 0x10000
283 --- Reference Backup #0 ---
286 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
290 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
293 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
295 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
299 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
304 write -P0x65 0x0000000 0x10000
306 write -P0x77 0x00f8000 0x10000
308 write -P0x72 0x2008000 0x10000
310 write -P0x69 0x3fe0000 0x10000
318 "granularity": 65536,
328 = Checking Bitmap bitmap0 =
329 expecting 6 dirty sectors; have 6. OK!
331 --- Reference Backup #1 ---
334 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
338 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
341 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
343 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
347 --- Test Backup #1 ---
350 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
354 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
357 {"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"}}
359 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
360 {"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"}}
367 "granularity": 65536,
377 = Checking Bitmap bitmap0 =
378 expecting 6 dirty sectors; have 6. OK!
382 write -P0xaa 0x0010000 0x30000
384 write -P0xbb 0x00d8000 0x10000
386 write -P0xcc 0x2028000 0x10000
388 write -P0xdd 0x3fc0000 0x10000
396 "granularity": 65536,
406 = Checking Bitmap bitmap0 =
407 expecting 14 dirty sectors; have 14. OK!
409 --- Reference Backup #2 ---
412 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
416 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
419 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
421 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
423 --- Test Backup #2 ---
426 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
430 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
433 {"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"}}
435 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
437 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
438 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
445 "granularity": 65536,
455 = Checking Bitmap bitmap0 =
456 expecting 14 dirty sectors; have 14. OK!
460 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
468 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
469 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
470 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
473 === Mode bitmap; Bitmap Sync never without failure ===
475 --- Preparing image & VM ---
477 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
482 write -P0x49 0x0000000 0x10000
484 write -P0x6c 0x0100000 0x10000
486 write -P0x6f 0x2000000 0x10000
488 write -P0x76 0x3ff0000 0x10000
494 --- Reference Backup #0 ---
497 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
501 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
504 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
506 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
510 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
515 write -P0x65 0x0000000 0x10000
517 write -P0x77 0x00f8000 0x10000
519 write -P0x72 0x2008000 0x10000
521 write -P0x69 0x3fe0000 0x10000
529 "granularity": 65536,
539 = Checking Bitmap bitmap0 =
540 expecting 6 dirty sectors; have 6. OK!
542 --- Reference Backup #1 ---
545 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
549 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
552 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
554 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
556 --- Test Backup #1 ---
559 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
563 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
566 {"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"}}
571 write -P0x74 0x0010000 0x10000
573 write -P0x69 0x00e8000 0x10000
575 write -P0x6e 0x2018000 0x10000
577 write -P0x67 0x3fe0000 0x20000
585 "granularity": 65536,
593 "granularity": 65536,
601 "granularity": 65536,
611 = Checking Bitmap bitmap0 =
612 expecting 6 dirty sectors; have 6. OK!
614 = Checking Bitmap (anonymous) =
615 expecting 7 dirty sectors; have 7. OK!
617 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
619 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
620 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
627 "granularity": 65536,
637 = Checking Bitmap bitmap0 =
638 expecting 10 dirty sectors; have 10. OK!
642 write -P0xaa 0x0010000 0x30000
644 write -P0xbb 0x00d8000 0x10000
646 write -P0xcc 0x2028000 0x10000
648 write -P0xdd 0x3fc0000 0x10000
656 "granularity": 65536,
666 = Checking Bitmap bitmap0 =
667 expecting 15 dirty sectors; have 15. OK!
669 --- Reference Backup #2 ---
672 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
676 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
679 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
681 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
683 --- Test Backup #2 ---
686 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
690 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
693 {"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"}}
695 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
697 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
698 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
705 "granularity": 65536,
715 = Checking Bitmap bitmap0 =
716 expecting 15 dirty sectors; have 15. OK!
720 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
728 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
729 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
730 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
733 === Mode bitmap; Bitmap Sync on-success with simulated failure ===
735 --- Preparing image & VM ---
737 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
742 write -P0x49 0x0000000 0x10000
744 write -P0x6c 0x0100000 0x10000
746 write -P0x6f 0x2000000 0x10000
748 write -P0x76 0x3ff0000 0x10000
754 --- Reference Backup #0 ---
757 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
761 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
764 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
766 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
770 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
775 write -P0x65 0x0000000 0x10000
777 write -P0x77 0x00f8000 0x10000
779 write -P0x72 0x2008000 0x10000
781 write -P0x69 0x3fe0000 0x10000
789 "granularity": 65536,
799 = Checking Bitmap bitmap0 =
800 expecting 6 dirty sectors; have 6. OK!
802 --- Reference Backup #1 ---
805 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
809 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
812 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
814 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
816 --- Test Backup #1 ---
819 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
823 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
826 {"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"}}
831 write -P0x74 0x0010000 0x10000
833 write -P0x69 0x00e8000 0x10000
835 write -P0x6e 0x2018000 0x10000
837 write -P0x67 0x3fe0000 0x20000
845 "granularity": 65536,
853 "granularity": 65536,
861 "granularity": 65536,
871 = Checking Bitmap bitmap0 =
872 expecting 6 dirty sectors; have 6. OK!
874 = Checking Bitmap (anonymous) =
875 expecting 7 dirty sectors; have 7. OK!
877 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
879 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
880 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
887 "granularity": 65536,
897 = Checking Bitmap bitmap0 =
898 expecting 10 dirty sectors; have 10. OK!
902 write -P0xaa 0x0010000 0x30000
904 write -P0xbb 0x00d8000 0x10000
906 write -P0xcc 0x2028000 0x10000
908 write -P0xdd 0x3fc0000 0x10000
916 "granularity": 65536,
926 = Checking Bitmap bitmap0 =
927 expecting 15 dirty sectors; have 15. OK!
929 --- Reference Backup #2 ---
932 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
936 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
939 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
941 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
943 --- Test Backup #2 ---
946 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
950 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
953 {"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"}}
955 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
957 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
958 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
965 "granularity": 65536,
975 = Checking Bitmap bitmap0 =
976 expecting 0 dirty sectors; have 0. OK!
980 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
988 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
989 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
990 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
993 === Mode bitmap; Bitmap Sync on-success with intermediate failure ===
995 --- Preparing image & VM ---
997 {"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"}}
1002 write -P0x49 0x0000000 0x10000
1004 write -P0x6c 0x0100000 0x10000
1006 write -P0x6f 0x2000000 0x10000
1008 write -P0x76 0x3ff0000 0x10000
1014 --- Reference Backup #0 ---
1017 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1021 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1024 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1026 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1030 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1035 write -P0x65 0x0000000 0x10000
1037 write -P0x77 0x00f8000 0x10000
1039 write -P0x72 0x2008000 0x10000
1041 write -P0x69 0x3fe0000 0x10000
1049 "granularity": 65536,
1051 "persistent": false,
1059 = Checking Bitmap bitmap0 =
1060 expecting 6 dirty sectors; have 6. OK!
1062 --- Reference Backup #1 ---
1065 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1069 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1072 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1074 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1078 --- Test Backup #1 ---
1081 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1085 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1088 {"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"}}
1090 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1091 {"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"}}
1098 "granularity": 65536,
1100 "persistent": false,
1108 = Checking Bitmap bitmap0 =
1109 expecting 6 dirty sectors; have 6. OK!
1113 write -P0xaa 0x0010000 0x30000
1115 write -P0xbb 0x00d8000 0x10000
1117 write -P0xcc 0x2028000 0x10000
1119 write -P0xdd 0x3fc0000 0x10000
1127 "granularity": 65536,
1129 "persistent": false,
1137 = Checking Bitmap bitmap0 =
1138 expecting 14 dirty sectors; have 14. OK!
1140 --- Reference Backup #2 ---
1143 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1147 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1150 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1152 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1154 --- Test Backup #2 ---
1157 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1161 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1164 {"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"}}
1166 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1168 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1169 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1176 "granularity": 65536,
1178 "persistent": false,
1186 = Checking Bitmap bitmap0 =
1187 expecting 0 dirty sectors; have 0. OK!
1191 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1197 --- Verification ---
1199 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1200 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1201 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1204 === Mode bitmap; Bitmap Sync on-success without failure ===
1206 --- Preparing image & VM ---
1208 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1213 write -P0x49 0x0000000 0x10000
1215 write -P0x6c 0x0100000 0x10000
1217 write -P0x6f 0x2000000 0x10000
1219 write -P0x76 0x3ff0000 0x10000
1225 --- Reference Backup #0 ---
1228 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1232 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1235 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1237 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1241 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1246 write -P0x65 0x0000000 0x10000
1248 write -P0x77 0x00f8000 0x10000
1250 write -P0x72 0x2008000 0x10000
1252 write -P0x69 0x3fe0000 0x10000
1260 "granularity": 65536,
1262 "persistent": false,
1270 = Checking Bitmap bitmap0 =
1271 expecting 6 dirty sectors; have 6. OK!
1273 --- Reference Backup #1 ---
1276 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1280 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1283 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1285 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1287 --- Test Backup #1 ---
1290 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1294 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1297 {"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"}}
1302 write -P0x74 0x0010000 0x10000
1304 write -P0x69 0x00e8000 0x10000
1306 write -P0x6e 0x2018000 0x10000
1308 write -P0x67 0x3fe0000 0x20000
1316 "granularity": 65536,
1317 "persistent": false,
1319 "status": "disabled"
1324 "granularity": 65536,
1325 "persistent": false,
1332 "granularity": 65536,
1334 "persistent": false,
1342 = Checking Bitmap bitmap0 =
1343 expecting 6 dirty sectors; have 6. OK!
1345 = Checking Bitmap (anonymous) =
1346 expecting 7 dirty sectors; have 7. OK!
1348 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
1350 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1351 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1358 "granularity": 65536,
1360 "persistent": false,
1368 = Checking Bitmap bitmap0 =
1369 expecting 7 dirty sectors; have 7. OK!
1373 write -P0xaa 0x0010000 0x30000
1375 write -P0xbb 0x00d8000 0x10000
1377 write -P0xcc 0x2028000 0x10000
1379 write -P0xdd 0x3fc0000 0x10000
1387 "granularity": 65536,
1389 "persistent": false,
1397 = Checking Bitmap bitmap0 =
1398 expecting 12 dirty sectors; have 12. OK!
1400 --- Reference Backup #2 ---
1403 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1407 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1410 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1412 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1414 --- Test Backup #2 ---
1417 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1421 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1424 {"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"}}
1426 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1428 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1429 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1436 "granularity": 65536,
1438 "persistent": false,
1446 = Checking Bitmap bitmap0 =
1447 expecting 0 dirty sectors; have 0. OK!
1451 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1457 --- Verification ---
1459 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1460 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1461 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1464 === Mode bitmap; Bitmap Sync always with simulated failure ===
1466 --- Preparing image & VM ---
1468 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1473 write -P0x49 0x0000000 0x10000
1475 write -P0x6c 0x0100000 0x10000
1477 write -P0x6f 0x2000000 0x10000
1479 write -P0x76 0x3ff0000 0x10000
1485 --- Reference Backup #0 ---
1488 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1492 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1495 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1497 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1501 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1506 write -P0x65 0x0000000 0x10000
1508 write -P0x77 0x00f8000 0x10000
1510 write -P0x72 0x2008000 0x10000
1512 write -P0x69 0x3fe0000 0x10000
1520 "granularity": 65536,
1522 "persistent": false,
1530 = Checking Bitmap bitmap0 =
1531 expecting 6 dirty sectors; have 6. OK!
1533 --- Reference Backup #1 ---
1536 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1540 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1543 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1545 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1547 --- Test Backup #1 ---
1550 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1554 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1557 {"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"}}
1562 write -P0x74 0x0010000 0x10000
1564 write -P0x69 0x00e8000 0x10000
1566 write -P0x6e 0x2018000 0x10000
1568 write -P0x67 0x3fe0000 0x20000
1576 "granularity": 65536,
1577 "persistent": false,
1579 "status": "disabled"
1584 "granularity": 65536,
1585 "persistent": false,
1592 "granularity": 65536,
1594 "persistent": false,
1602 = Checking Bitmap bitmap0 =
1603 expecting 6 dirty sectors; have 6. OK!
1605 = Checking Bitmap (anonymous) =
1606 expecting 7 dirty sectors; have 7. OK!
1608 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
1610 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1611 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1618 "granularity": 65536,
1620 "persistent": false,
1628 = Checking Bitmap bitmap0 =
1629 expecting 7 dirty sectors; have 7. OK!
1633 write -P0xaa 0x0010000 0x30000
1635 write -P0xbb 0x00d8000 0x10000
1637 write -P0xcc 0x2028000 0x10000
1639 write -P0xdd 0x3fc0000 0x10000
1647 "granularity": 65536,
1649 "persistent": false,
1657 = Checking Bitmap bitmap0 =
1658 expecting 12 dirty sectors; have 12. OK!
1660 --- Reference Backup #2 ---
1663 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1667 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1670 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1672 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1674 --- Test Backup #2 ---
1677 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1681 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1684 {"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"}}
1686 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1688 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1689 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1696 "granularity": 65536,
1698 "persistent": false,
1706 = Checking Bitmap bitmap0 =
1707 expecting 0 dirty sectors; have 0. OK!
1711 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1717 --- Verification ---
1719 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1720 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1721 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1724 === Mode bitmap; Bitmap Sync always with intermediate failure ===
1726 --- Preparing image & VM ---
1728 {"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"}}
1733 write -P0x49 0x0000000 0x10000
1735 write -P0x6c 0x0100000 0x10000
1737 write -P0x6f 0x2000000 0x10000
1739 write -P0x76 0x3ff0000 0x10000
1745 --- Reference Backup #0 ---
1748 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1752 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1755 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1757 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1761 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1766 write -P0x65 0x0000000 0x10000
1768 write -P0x77 0x00f8000 0x10000
1770 write -P0x72 0x2008000 0x10000
1772 write -P0x69 0x3fe0000 0x10000
1780 "granularity": 65536,
1782 "persistent": false,
1790 = Checking Bitmap bitmap0 =
1791 expecting 6 dirty sectors; have 6. OK!
1793 --- Reference Backup #1 ---
1796 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1800 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1803 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1805 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1809 --- Test Backup #1 ---
1812 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1816 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1819 {"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"}}
1821 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1822 {"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"}}
1829 "granularity": 65536,
1831 "persistent": false,
1839 = Checking Bitmap bitmap0 =
1840 expecting 5 dirty sectors; have 5. OK!
1844 write -P0xaa 0x0010000 0x30000
1846 write -P0xbb 0x00d8000 0x10000
1848 write -P0xcc 0x2028000 0x10000
1850 write -P0xdd 0x3fc0000 0x10000
1858 "granularity": 65536,
1860 "persistent": false,
1868 = Checking Bitmap bitmap0 =
1869 expecting 13 dirty sectors; have 13. OK!
1871 --- Reference Backup #2 ---
1874 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1878 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1881 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1883 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1885 --- Test Backup #2 ---
1888 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1892 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1895 {"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"}}
1897 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1899 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1900 {"data": {"device": "backup_2", "len": 851968, "offset": 851968, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1907 "granularity": 65536,
1909 "persistent": false,
1917 = Checking Bitmap bitmap0 =
1918 expecting 0 dirty sectors; have 0. OK!
1922 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1928 --- Verification ---
1930 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1931 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1932 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1935 === Mode bitmap; Bitmap Sync always without failure ===
1937 --- Preparing image & VM ---
1939 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1944 write -P0x49 0x0000000 0x10000
1946 write -P0x6c 0x0100000 0x10000
1948 write -P0x6f 0x2000000 0x10000
1950 write -P0x76 0x3ff0000 0x10000
1956 --- Reference Backup #0 ---
1959 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1963 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1966 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1968 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1972 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1977 write -P0x65 0x0000000 0x10000
1979 write -P0x77 0x00f8000 0x10000
1981 write -P0x72 0x2008000 0x10000
1983 write -P0x69 0x3fe0000 0x10000
1991 "granularity": 65536,
1993 "persistent": false,
2001 = Checking Bitmap bitmap0 =
2002 expecting 6 dirty sectors; have 6. OK!
2004 --- Reference Backup #1 ---
2007 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2011 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2014 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2016 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2018 --- Test Backup #1 ---
2021 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2025 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2028 {"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"}}
2033 write -P0x74 0x0010000 0x10000
2035 write -P0x69 0x00e8000 0x10000
2037 write -P0x6e 0x2018000 0x10000
2039 write -P0x67 0x3fe0000 0x20000
2047 "granularity": 65536,
2048 "persistent": false,
2050 "status": "disabled"
2055 "granularity": 65536,
2056 "persistent": false,
2063 "granularity": 65536,
2065 "persistent": false,
2073 = Checking Bitmap bitmap0 =
2074 expecting 6 dirty sectors; have 6. OK!
2076 = Checking Bitmap (anonymous) =
2077 expecting 7 dirty sectors; have 7. OK!
2079 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2081 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2082 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2089 "granularity": 65536,
2091 "persistent": false,
2099 = Checking Bitmap bitmap0 =
2100 expecting 7 dirty sectors; have 7. OK!
2104 write -P0xaa 0x0010000 0x30000
2106 write -P0xbb 0x00d8000 0x10000
2108 write -P0xcc 0x2028000 0x10000
2110 write -P0xdd 0x3fc0000 0x10000
2118 "granularity": 65536,
2120 "persistent": false,
2128 = Checking Bitmap bitmap0 =
2129 expecting 12 dirty sectors; have 12. OK!
2131 --- Reference Backup #2 ---
2134 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2138 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2141 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2143 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2145 --- Test Backup #2 ---
2148 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2152 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2155 {"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"}}
2157 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2159 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2160 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2167 "granularity": 65536,
2169 "persistent": false,
2177 = Checking Bitmap bitmap0 =
2178 expecting 0 dirty sectors; have 0. OK!
2182 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2188 --- Verification ---
2190 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2191 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2192 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2195 === Mode full; Bitmap Sync on-success with simulated failure ===
2197 --- Preparing image & VM ---
2199 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2204 write -P0x49 0x0000000 0x10000
2206 write -P0x6c 0x0100000 0x10000
2208 write -P0x6f 0x2000000 0x10000
2210 write -P0x76 0x3ff0000 0x10000
2216 --- Reference Backup #0 ---
2219 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2223 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2226 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2228 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2232 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2237 write -P0x65 0x0000000 0x10000
2239 write -P0x77 0x00f8000 0x10000
2241 write -P0x72 0x2008000 0x10000
2243 write -P0x69 0x3fe0000 0x10000
2251 "granularity": 65536,
2253 "persistent": false,
2261 = Checking Bitmap bitmap0 =
2262 expecting 6 dirty sectors; have 6. OK!
2264 --- Reference Backup #1 ---
2267 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2271 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2274 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2276 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2278 --- Test Backup #1 ---
2281 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2285 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2288 {"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"}}
2293 write -P0x74 0x0010000 0x10000
2295 write -P0x69 0x00e8000 0x10000
2297 write -P0x6e 0x2018000 0x10000
2299 write -P0x67 0x3fe0000 0x20000
2307 "granularity": 65536,
2308 "persistent": false,
2310 "status": "disabled"
2315 "granularity": 65536,
2316 "persistent": false,
2323 "granularity": 65536,
2325 "persistent": false,
2333 = Checking Bitmap bitmap0 =
2334 expecting 6 dirty sectors; have 6. OK!
2336 = Checking Bitmap (anonymous) =
2337 expecting 7 dirty sectors; have 7. OK!
2339 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2341 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2342 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2349 "granularity": 65536,
2351 "persistent": false,
2359 = Checking Bitmap bitmap0 =
2360 expecting 10 dirty sectors; have 10. OK!
2364 write -P0xaa 0x0010000 0x30000
2366 write -P0xbb 0x00d8000 0x10000
2368 write -P0xcc 0x2028000 0x10000
2370 write -P0xdd 0x3fc0000 0x10000
2378 "granularity": 65536,
2380 "persistent": false,
2388 = Checking Bitmap bitmap0 =
2389 expecting 15 dirty sectors; have 15. OK!
2391 --- Reference Backup #2 ---
2394 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2398 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2401 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2403 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2405 --- Test Backup #2 ---
2408 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2412 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2415 {"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"}}
2417 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2419 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2420 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2427 "granularity": 65536,
2429 "persistent": false,
2437 = Checking Bitmap bitmap0 =
2438 expecting 0 dirty sectors; have 0. OK!
2442 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2448 --- Verification ---
2450 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2451 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2452 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2455 === Mode full; Bitmap Sync on-success with intermediate failure ===
2457 --- Preparing image & VM ---
2459 {"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"}}
2464 write -P0x49 0x0000000 0x10000
2466 write -P0x6c 0x0100000 0x10000
2468 write -P0x6f 0x2000000 0x10000
2470 write -P0x76 0x3ff0000 0x10000
2476 --- Reference Backup #0 ---
2479 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2483 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2486 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2488 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2492 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2497 write -P0x65 0x0000000 0x10000
2499 write -P0x77 0x00f8000 0x10000
2501 write -P0x72 0x2008000 0x10000
2503 write -P0x69 0x3fe0000 0x10000
2511 "granularity": 65536,
2513 "persistent": false,
2521 = Checking Bitmap bitmap0 =
2522 expecting 6 dirty sectors; have 6. OK!
2524 --- Reference Backup #1 ---
2527 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2531 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2534 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2536 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2540 --- Test Backup #1 ---
2543 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2547 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2550 {"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"}}
2552 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2553 {"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"}}
2560 "granularity": 65536,
2562 "persistent": false,
2570 = Checking Bitmap bitmap0 =
2571 expecting 6 dirty sectors; have 6. OK!
2575 write -P0xaa 0x0010000 0x30000
2577 write -P0xbb 0x00d8000 0x10000
2579 write -P0xcc 0x2028000 0x10000
2581 write -P0xdd 0x3fc0000 0x10000
2589 "granularity": 65536,
2591 "persistent": false,
2599 = Checking Bitmap bitmap0 =
2600 expecting 14 dirty sectors; have 14. OK!
2602 --- Reference Backup #2 ---
2605 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2609 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2612 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2614 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2616 --- Test Backup #2 ---
2619 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2623 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2626 {"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"}}
2628 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2630 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2631 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2638 "granularity": 65536,
2640 "persistent": false,
2648 = Checking Bitmap bitmap0 =
2649 expecting 0 dirty sectors; have 0. OK!
2653 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2659 --- Verification ---
2661 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
2662 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2663 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2666 === Mode full; Bitmap Sync on-success without failure ===
2668 --- Preparing image & VM ---
2670 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2675 write -P0x49 0x0000000 0x10000
2677 write -P0x6c 0x0100000 0x10000
2679 write -P0x6f 0x2000000 0x10000
2681 write -P0x76 0x3ff0000 0x10000
2687 --- Reference Backup #0 ---
2690 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2694 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2697 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2699 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2703 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2708 write -P0x65 0x0000000 0x10000
2710 write -P0x77 0x00f8000 0x10000
2712 write -P0x72 0x2008000 0x10000
2714 write -P0x69 0x3fe0000 0x10000
2722 "granularity": 65536,
2724 "persistent": false,
2732 = Checking Bitmap bitmap0 =
2733 expecting 6 dirty sectors; have 6. OK!
2735 --- Reference Backup #1 ---
2738 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2742 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2745 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2747 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2749 --- Test Backup #1 ---
2752 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2756 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2759 {"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"}}
2764 write -P0x74 0x0010000 0x10000
2766 write -P0x69 0x00e8000 0x10000
2768 write -P0x6e 0x2018000 0x10000
2770 write -P0x67 0x3fe0000 0x20000
2778 "granularity": 65536,
2779 "persistent": false,
2781 "status": "disabled"
2786 "granularity": 65536,
2787 "persistent": false,
2794 "granularity": 65536,
2796 "persistent": false,
2804 = Checking Bitmap bitmap0 =
2805 expecting 6 dirty sectors; have 6. OK!
2807 = Checking Bitmap (anonymous) =
2808 expecting 7 dirty sectors; have 7. OK!
2810 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2812 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2813 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2820 "granularity": 65536,
2822 "persistent": false,
2830 = Checking Bitmap bitmap0 =
2831 expecting 7 dirty sectors; have 7. OK!
2835 write -P0xaa 0x0010000 0x30000
2837 write -P0xbb 0x00d8000 0x10000
2839 write -P0xcc 0x2028000 0x10000
2841 write -P0xdd 0x3fc0000 0x10000
2849 "granularity": 65536,
2851 "persistent": false,
2859 = Checking Bitmap bitmap0 =
2860 expecting 12 dirty sectors; have 12. OK!
2862 --- Reference Backup #2 ---
2865 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2869 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2872 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2874 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2876 --- Test Backup #2 ---
2879 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2883 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2886 {"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"}}
2888 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2890 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2891 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2898 "granularity": 65536,
2900 "persistent": false,
2908 = Checking Bitmap bitmap0 =
2909 expecting 0 dirty sectors; have 0. OK!
2913 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2919 --- Verification ---
2921 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2922 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2923 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2926 === Mode full; Bitmap Sync always with simulated failure ===
2928 --- Preparing image & VM ---
2930 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2935 write -P0x49 0x0000000 0x10000
2937 write -P0x6c 0x0100000 0x10000
2939 write -P0x6f 0x2000000 0x10000
2941 write -P0x76 0x3ff0000 0x10000
2947 --- Reference Backup #0 ---
2950 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2954 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2957 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2959 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2963 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2968 write -P0x65 0x0000000 0x10000
2970 write -P0x77 0x00f8000 0x10000
2972 write -P0x72 0x2008000 0x10000
2974 write -P0x69 0x3fe0000 0x10000
2982 "granularity": 65536,
2984 "persistent": false,
2992 = Checking Bitmap bitmap0 =
2993 expecting 6 dirty sectors; have 6. OK!
2995 --- Reference Backup #1 ---
2998 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3002 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3005 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3007 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3009 --- Test Backup #1 ---
3012 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3016 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3019 {"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"}}
3024 write -P0x74 0x0010000 0x10000
3026 write -P0x69 0x00e8000 0x10000
3028 write -P0x6e 0x2018000 0x10000
3030 write -P0x67 0x3fe0000 0x20000
3038 "granularity": 65536,
3039 "persistent": false,
3041 "status": "disabled"
3046 "granularity": 65536,
3047 "persistent": false,
3054 "granularity": 65536,
3056 "persistent": false,
3064 = Checking Bitmap bitmap0 =
3065 expecting 6 dirty sectors; have 6. OK!
3067 = Checking Bitmap (anonymous) =
3068 expecting 7 dirty sectors; have 7. OK!
3070 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3072 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3073 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3080 "granularity": 65536,
3082 "persistent": false,
3090 = Checking Bitmap bitmap0 =
3091 expecting 7 dirty sectors; have 7. OK!
3095 write -P0xaa 0x0010000 0x30000
3097 write -P0xbb 0x00d8000 0x10000
3099 write -P0xcc 0x2028000 0x10000
3101 write -P0xdd 0x3fc0000 0x10000
3109 "granularity": 65536,
3111 "persistent": false,
3119 = Checking Bitmap bitmap0 =
3120 expecting 12 dirty sectors; have 12. OK!
3122 --- Reference Backup #2 ---
3125 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3129 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3132 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3134 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3136 --- Test Backup #2 ---
3139 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3143 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3146 {"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"}}
3148 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3150 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3151 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3158 "granularity": 65536,
3160 "persistent": false,
3168 = Checking Bitmap bitmap0 =
3169 expecting 0 dirty sectors; have 0. OK!
3173 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3179 --- Verification ---
3181 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3182 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3183 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3186 === Mode full; Bitmap Sync always with intermediate failure ===
3188 --- Preparing image & VM ---
3190 {"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"}}
3195 write -P0x49 0x0000000 0x10000
3197 write -P0x6c 0x0100000 0x10000
3199 write -P0x6f 0x2000000 0x10000
3201 write -P0x76 0x3ff0000 0x10000
3207 --- Reference Backup #0 ---
3210 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3214 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3217 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3219 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3223 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3228 write -P0x65 0x0000000 0x10000
3230 write -P0x77 0x00f8000 0x10000
3232 write -P0x72 0x2008000 0x10000
3234 write -P0x69 0x3fe0000 0x10000
3242 "granularity": 65536,
3244 "persistent": false,
3252 = Checking Bitmap bitmap0 =
3253 expecting 6 dirty sectors; have 6. OK!
3255 --- Reference Backup #1 ---
3258 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3262 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3265 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3267 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3271 --- Test Backup #1 ---
3274 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3278 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3281 {"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"}}
3283 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3284 {"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"}}
3291 "granularity": 65536,
3293 "persistent": false,
3301 = Checking Bitmap bitmap0 =
3302 expecting 1009 dirty sectors; have 1009. OK!
3306 write -P0xaa 0x0010000 0x30000
3308 write -P0xbb 0x00d8000 0x10000
3310 write -P0xcc 0x2028000 0x10000
3312 write -P0xdd 0x3fc0000 0x10000
3320 "granularity": 65536,
3322 "persistent": false,
3330 = Checking Bitmap bitmap0 =
3331 expecting 1014 dirty sectors; have 1014. OK!
3333 --- Reference Backup #2 ---
3336 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3340 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3343 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3345 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3347 --- Test Backup #2 ---
3350 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3354 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3357 {"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"}}
3359 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3361 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3362 {"data": {"device": "backup_2", "len": 66453504, "offset": 66453504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3369 "granularity": 65536,
3371 "persistent": false,
3379 = Checking Bitmap bitmap0 =
3380 expecting 0 dirty sectors; have 0. OK!
3384 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3390 --- Verification ---
3392 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
3393 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3394 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3397 === Mode full; Bitmap Sync always without failure ===
3399 --- Preparing image & VM ---
3401 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3406 write -P0x49 0x0000000 0x10000
3408 write -P0x6c 0x0100000 0x10000
3410 write -P0x6f 0x2000000 0x10000
3412 write -P0x76 0x3ff0000 0x10000
3418 --- Reference Backup #0 ---
3421 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3425 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3428 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3430 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3434 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3439 write -P0x65 0x0000000 0x10000
3441 write -P0x77 0x00f8000 0x10000
3443 write -P0x72 0x2008000 0x10000
3445 write -P0x69 0x3fe0000 0x10000
3453 "granularity": 65536,
3455 "persistent": false,
3463 = Checking Bitmap bitmap0 =
3464 expecting 6 dirty sectors; have 6. OK!
3466 --- Reference Backup #1 ---
3469 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3473 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3476 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3478 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3480 --- Test Backup #1 ---
3483 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3487 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3490 {"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"}}
3495 write -P0x74 0x0010000 0x10000
3497 write -P0x69 0x00e8000 0x10000
3499 write -P0x6e 0x2018000 0x10000
3501 write -P0x67 0x3fe0000 0x20000
3509 "granularity": 65536,
3510 "persistent": false,
3512 "status": "disabled"
3517 "granularity": 65536,
3518 "persistent": false,
3525 "granularity": 65536,
3527 "persistent": false,
3535 = Checking Bitmap bitmap0 =
3536 expecting 6 dirty sectors; have 6. OK!
3538 = Checking Bitmap (anonymous) =
3539 expecting 7 dirty sectors; have 7. OK!
3541 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
3543 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3544 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3551 "granularity": 65536,
3553 "persistent": false,
3561 = Checking Bitmap bitmap0 =
3562 expecting 7 dirty sectors; have 7. OK!
3566 write -P0xaa 0x0010000 0x30000
3568 write -P0xbb 0x00d8000 0x10000
3570 write -P0xcc 0x2028000 0x10000
3572 write -P0xdd 0x3fc0000 0x10000
3580 "granularity": 65536,
3582 "persistent": false,
3590 = Checking Bitmap bitmap0 =
3591 expecting 12 dirty sectors; have 12. OK!
3593 --- Reference Backup #2 ---
3596 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3600 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3603 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3605 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3607 --- Test Backup #2 ---
3610 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3614 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3617 {"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"}}
3619 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3621 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3622 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3629 "granularity": 65536,
3631 "persistent": false,
3639 = Checking Bitmap bitmap0 =
3640 expecting 0 dirty sectors; have 0. OK!
3644 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3650 --- Verification ---
3652 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3653 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3654 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3657 === Mode top; Bitmap Sync on-success with simulated failure ===
3659 --- Preparing image & VM ---
3661 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3666 write -P0x49 0x0000000 0x10000
3668 write -P0x6c 0x0100000 0x10000
3670 write -P0x6f 0x2000000 0x10000
3672 write -P0x76 0x3ff0000 0x10000
3678 --- Reference Backup #0 ---
3681 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3685 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3688 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3690 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3694 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3699 write -P0x65 0x0000000 0x10000
3701 write -P0x77 0x00f8000 0x10000
3703 write -P0x72 0x2008000 0x10000
3705 write -P0x69 0x3fe0000 0x10000
3713 "granularity": 65536,
3715 "persistent": false,
3723 = Checking Bitmap bitmap0 =
3724 expecting 6 dirty sectors; have 6. OK!
3726 --- Reference Backup #1 ---
3729 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3733 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3736 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3738 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3740 --- Test Backup #1 ---
3743 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3747 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3750 {"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"}}
3755 write -P0x74 0x0010000 0x10000
3757 write -P0x69 0x00e8000 0x10000
3759 write -P0x6e 0x2018000 0x10000
3761 write -P0x67 0x3fe0000 0x20000
3769 "granularity": 65536,
3770 "persistent": false,
3772 "status": "disabled"
3777 "granularity": 65536,
3778 "persistent": false,
3785 "granularity": 65536,
3787 "persistent": false,
3795 = Checking Bitmap bitmap0 =
3796 expecting 6 dirty sectors; have 6. OK!
3798 = Checking Bitmap (anonymous) =
3799 expecting 7 dirty sectors; have 7. OK!
3801 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3803 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3804 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3811 "granularity": 65536,
3813 "persistent": false,
3821 = Checking Bitmap bitmap0 =
3822 expecting 10 dirty sectors; have 10. OK!
3826 write -P0xaa 0x0010000 0x30000
3828 write -P0xbb 0x00d8000 0x10000
3830 write -P0xcc 0x2028000 0x10000
3832 write -P0xdd 0x3fc0000 0x10000
3840 "granularity": 65536,
3842 "persistent": false,
3850 = Checking Bitmap bitmap0 =
3851 expecting 15 dirty sectors; have 15. OK!
3853 --- Reference Backup #2 ---
3856 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3860 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3863 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3865 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3867 --- Test Backup #2 ---
3870 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3874 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3877 {"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"}}
3879 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3881 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3882 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3889 "granularity": 65536,
3891 "persistent": false,
3899 = Checking Bitmap bitmap0 =
3900 expecting 0 dirty sectors; have 0. OK!
3904 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3910 --- Verification ---
3912 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3913 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3914 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3917 === Mode top; Bitmap Sync on-success with intermediate failure ===
3919 --- Preparing image & VM ---
3921 {"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"}}
3926 write -P0x49 0x0000000 0x10000
3928 write -P0x6c 0x0100000 0x10000
3930 write -P0x6f 0x2000000 0x10000
3932 write -P0x76 0x3ff0000 0x10000
3938 --- Reference Backup #0 ---
3941 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3945 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3948 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3950 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3954 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3959 write -P0x65 0x0000000 0x10000
3961 write -P0x77 0x00f8000 0x10000
3963 write -P0x72 0x2008000 0x10000
3965 write -P0x69 0x3fe0000 0x10000
3973 "granularity": 65536,
3975 "persistent": false,
3983 = Checking Bitmap bitmap0 =
3984 expecting 6 dirty sectors; have 6. OK!
3986 --- Reference Backup #1 ---
3989 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3993 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3996 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3998 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4002 --- Test Backup #1 ---
4005 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4009 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4012 {"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"}}
4014 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4015 {"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"}}
4022 "granularity": 65536,
4024 "persistent": false,
4032 = Checking Bitmap bitmap0 =
4033 expecting 6 dirty sectors; have 6. OK!
4037 write -P0xaa 0x0010000 0x30000
4039 write -P0xbb 0x00d8000 0x10000
4041 write -P0xcc 0x2028000 0x10000
4043 write -P0xdd 0x3fc0000 0x10000
4051 "granularity": 65536,
4053 "persistent": false,
4061 = Checking Bitmap bitmap0 =
4062 expecting 14 dirty sectors; have 14. OK!
4064 --- Reference Backup #2 ---
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_2", "sync": "full", "target": "ref_target_2"}}
4076 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4078 --- Test Backup #2 ---
4081 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4085 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4088 {"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"}}
4090 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4092 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4093 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4100 "granularity": 65536,
4102 "persistent": false,
4110 = Checking Bitmap bitmap0 =
4111 expecting 0 dirty sectors; have 0. OK!
4115 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4121 --- Verification ---
4123 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4124 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4125 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4128 === Mode top; Bitmap Sync on-success without failure ===
4130 --- Preparing image & VM ---
4132 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4137 write -P0x49 0x0000000 0x10000
4139 write -P0x6c 0x0100000 0x10000
4141 write -P0x6f 0x2000000 0x10000
4143 write -P0x76 0x3ff0000 0x10000
4149 --- Reference Backup #0 ---
4152 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4156 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4159 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4161 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4165 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4170 write -P0x65 0x0000000 0x10000
4172 write -P0x77 0x00f8000 0x10000
4174 write -P0x72 0x2008000 0x10000
4176 write -P0x69 0x3fe0000 0x10000
4184 "granularity": 65536,
4186 "persistent": false,
4194 = Checking Bitmap bitmap0 =
4195 expecting 6 dirty sectors; have 6. OK!
4197 --- Reference Backup #1 ---
4200 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4204 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4207 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4209 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4211 --- Test Backup #1 ---
4214 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4218 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4221 {"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"}}
4226 write -P0x74 0x0010000 0x10000
4228 write -P0x69 0x00e8000 0x10000
4230 write -P0x6e 0x2018000 0x10000
4232 write -P0x67 0x3fe0000 0x20000
4240 "granularity": 65536,
4241 "persistent": false,
4243 "status": "disabled"
4248 "granularity": 65536,
4249 "persistent": false,
4256 "granularity": 65536,
4258 "persistent": false,
4266 = Checking Bitmap bitmap0 =
4267 expecting 6 dirty sectors; have 6. OK!
4269 = Checking Bitmap (anonymous) =
4270 expecting 7 dirty sectors; have 7. OK!
4272 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4274 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4275 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4282 "granularity": 65536,
4284 "persistent": false,
4292 = Checking Bitmap bitmap0 =
4293 expecting 7 dirty sectors; have 7. OK!
4297 write -P0xaa 0x0010000 0x30000
4299 write -P0xbb 0x00d8000 0x10000
4301 write -P0xcc 0x2028000 0x10000
4303 write -P0xdd 0x3fc0000 0x10000
4311 "granularity": 65536,
4313 "persistent": false,
4321 = Checking Bitmap bitmap0 =
4322 expecting 12 dirty sectors; have 12. OK!
4324 --- Reference Backup #2 ---
4327 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4331 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4334 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4336 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4338 --- Test Backup #2 ---
4341 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4345 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4348 {"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"}}
4350 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4352 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4353 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4360 "granularity": 65536,
4362 "persistent": false,
4370 = Checking Bitmap bitmap0 =
4371 expecting 0 dirty sectors; have 0. OK!
4375 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4381 --- Verification ---
4383 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4384 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4385 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4388 === Mode top; Bitmap Sync always with simulated failure ===
4390 --- Preparing image & VM ---
4392 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4397 write -P0x49 0x0000000 0x10000
4399 write -P0x6c 0x0100000 0x10000
4401 write -P0x6f 0x2000000 0x10000
4403 write -P0x76 0x3ff0000 0x10000
4409 --- Reference Backup #0 ---
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_0", "sync": "full", "target": "ref_target_0"}}
4421 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4425 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4430 write -P0x65 0x0000000 0x10000
4432 write -P0x77 0x00f8000 0x10000
4434 write -P0x72 0x2008000 0x10000
4436 write -P0x69 0x3fe0000 0x10000
4444 "granularity": 65536,
4446 "persistent": false,
4454 = Checking Bitmap bitmap0 =
4455 expecting 6 dirty sectors; have 6. OK!
4457 --- Reference Backup #1 ---
4460 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4464 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4467 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4469 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4471 --- Test Backup #1 ---
4474 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4478 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4481 {"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"}}
4486 write -P0x74 0x0010000 0x10000
4488 write -P0x69 0x00e8000 0x10000
4490 write -P0x6e 0x2018000 0x10000
4492 write -P0x67 0x3fe0000 0x20000
4500 "granularity": 65536,
4501 "persistent": false,
4503 "status": "disabled"
4508 "granularity": 65536,
4509 "persistent": false,
4516 "granularity": 65536,
4518 "persistent": false,
4526 = Checking Bitmap bitmap0 =
4527 expecting 6 dirty sectors; have 6. OK!
4529 = Checking Bitmap (anonymous) =
4530 expecting 7 dirty sectors; have 7. OK!
4532 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
4534 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4535 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4542 "granularity": 65536,
4544 "persistent": false,
4552 = Checking Bitmap bitmap0 =
4553 expecting 7 dirty sectors; have 7. OK!
4557 write -P0xaa 0x0010000 0x30000
4559 write -P0xbb 0x00d8000 0x10000
4561 write -P0xcc 0x2028000 0x10000
4563 write -P0xdd 0x3fc0000 0x10000
4571 "granularity": 65536,
4573 "persistent": false,
4581 = Checking Bitmap bitmap0 =
4582 expecting 12 dirty sectors; have 12. OK!
4584 --- Reference Backup #2 ---
4587 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4591 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4594 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4596 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4598 --- Test Backup #2 ---
4601 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4605 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4608 {"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"}}
4610 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4612 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4613 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4620 "granularity": 65536,
4622 "persistent": false,
4630 = Checking Bitmap bitmap0 =
4631 expecting 0 dirty sectors; have 0. OK!
4635 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4641 --- Verification ---
4643 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4644 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4645 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4648 === Mode top; Bitmap Sync always with intermediate failure ===
4650 --- Preparing image & VM ---
4652 {"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"}}
4657 write -P0x49 0x0000000 0x10000
4659 write -P0x6c 0x0100000 0x10000
4661 write -P0x6f 0x2000000 0x10000
4663 write -P0x76 0x3ff0000 0x10000
4669 --- Reference Backup #0 ---
4672 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4676 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4679 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4681 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4685 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4690 write -P0x65 0x0000000 0x10000
4692 write -P0x77 0x00f8000 0x10000
4694 write -P0x72 0x2008000 0x10000
4696 write -P0x69 0x3fe0000 0x10000
4704 "granularity": 65536,
4706 "persistent": false,
4714 = Checking Bitmap bitmap0 =
4715 expecting 6 dirty sectors; have 6. OK!
4717 --- Reference Backup #1 ---
4720 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4724 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4727 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4729 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4733 --- Test Backup #1 ---
4736 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4740 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4743 {"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"}}
4745 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4746 {"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"}}
4753 "granularity": 65536,
4755 "persistent": false,
4763 = Checking Bitmap bitmap0 =
4764 expecting 6 dirty sectors; have 6. OK!
4768 write -P0xaa 0x0010000 0x30000
4770 write -P0xbb 0x00d8000 0x10000
4772 write -P0xcc 0x2028000 0x10000
4774 write -P0xdd 0x3fc0000 0x10000
4782 "granularity": 65536,
4784 "persistent": false,
4792 = Checking Bitmap bitmap0 =
4793 expecting 14 dirty sectors; have 14. OK!
4795 --- Reference Backup #2 ---
4798 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4802 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4805 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4807 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4809 --- Test Backup #2 ---
4812 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4816 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4819 {"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"}}
4821 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4823 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4824 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4831 "granularity": 65536,
4833 "persistent": false,
4841 = Checking Bitmap bitmap0 =
4842 expecting 0 dirty sectors; have 0. OK!
4846 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4852 --- Verification ---
4854 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4855 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4856 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4859 === Mode top; Bitmap Sync always without failure ===
4861 --- Preparing image & VM ---
4863 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4868 write -P0x49 0x0000000 0x10000
4870 write -P0x6c 0x0100000 0x10000
4872 write -P0x6f 0x2000000 0x10000
4874 write -P0x76 0x3ff0000 0x10000
4880 --- Reference Backup #0 ---
4883 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4887 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4890 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4892 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4896 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4901 write -P0x65 0x0000000 0x10000
4903 write -P0x77 0x00f8000 0x10000
4905 write -P0x72 0x2008000 0x10000
4907 write -P0x69 0x3fe0000 0x10000
4915 "granularity": 65536,
4917 "persistent": false,
4925 = Checking Bitmap bitmap0 =
4926 expecting 6 dirty sectors; have 6. OK!
4928 --- Reference Backup #1 ---
4931 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4935 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4938 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4940 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4942 --- Test Backup #1 ---
4945 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4949 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4952 {"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"}}
4957 write -P0x74 0x0010000 0x10000
4959 write -P0x69 0x00e8000 0x10000
4961 write -P0x6e 0x2018000 0x10000
4963 write -P0x67 0x3fe0000 0x20000
4971 "granularity": 65536,
4972 "persistent": false,
4974 "status": "disabled"
4979 "granularity": 65536,
4980 "persistent": false,
4987 "granularity": 65536,
4989 "persistent": false,
4997 = Checking Bitmap bitmap0 =
4998 expecting 6 dirty sectors; have 6. OK!
5000 = Checking Bitmap (anonymous) =
5001 expecting 7 dirty sectors; have 7. OK!
5003 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
5005 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5006 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5013 "granularity": 65536,
5015 "persistent": false,
5023 = Checking Bitmap bitmap0 =
5024 expecting 7 dirty sectors; have 7. OK!
5028 write -P0xaa 0x0010000 0x30000
5030 write -P0xbb 0x00d8000 0x10000
5032 write -P0xcc 0x2028000 0x10000
5034 write -P0xdd 0x3fc0000 0x10000
5042 "granularity": 65536,
5044 "persistent": false,
5052 = Checking Bitmap bitmap0 =
5053 expecting 12 dirty sectors; have 12. OK!
5055 --- Reference Backup #2 ---
5058 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5062 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5065 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
5067 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5069 --- Test Backup #2 ---
5072 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5076 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5079 {"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"}}
5081 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
5083 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5084 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5091 "granularity": 65536,
5093 "persistent": false,
5101 = Checking Bitmap bitmap0 =
5102 expecting 0 dirty sectors; have 0. OK!
5106 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
5112 --- Verification ---
5114 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
5115 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5116 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5119 === API failure tests ===
5121 --- Preparing image & VM ---
5123 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
5127 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5131 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5135 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5138 -- Testing invalid QMP commands --
5140 -- Sync mode incremental tests --
5142 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5143 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5145 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5146 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5148 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5149 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5151 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5152 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5154 {"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"}}
5155 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5157 {"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"}}
5158 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5160 {"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"}}
5161 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5163 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5164 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5166 {"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"}}
5167 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5169 {"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"}}
5170 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5172 -- Sync mode bitmap tests --
5174 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5175 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5177 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5178 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5180 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5181 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5183 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5184 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5186 {"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"}}
5187 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5189 {"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"}}
5190 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5192 {"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"}}
5193 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5195 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5196 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5198 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5199 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5201 -- Sync mode full tests --
5203 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5204 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5206 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5207 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5209 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5210 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5212 {"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"}}
5213 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5215 {"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"}}
5216 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5218 {"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"}}
5219 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5221 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5222 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5224 {"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"}}
5225 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'full'"}}
5227 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5228 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5230 -- Sync mode top tests --
5232 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5233 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5235 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5236 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5238 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5239 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5241 {"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"}}
5242 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5244 {"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"}}
5245 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5247 {"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"}}
5248 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5250 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5251 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5253 {"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"}}
5254 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'top'"}}
5256 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5257 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5259 -- Sync mode none tests --
5261 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5262 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5264 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5265 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5267 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5268 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5270 {"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"}}
5271 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5273 {"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"}}
5274 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5276 {"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"}}
5277 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5279 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5280 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5282 {"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"}}
5283 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5285 {"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"}}
5286 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5288 {"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"}}
5289 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5291 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "filter-node-name": "backup-top", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5292 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}