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"}}
8 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
13 write -P0x49 0x0000000 0x10000
15 write -P0x6c 0x0100000 0x10000
17 write -P0x6f 0x2000000 0x10000
19 write -P0x76 0x3ff0000 0x10000
27 --- Reference Backup #0 ---
30 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
34 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
37 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
39 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
43 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
48 write -P0x65 0x0000000 0x10000
50 write -P0x77 0x00f8000 0x10000
52 write -P0x72 0x2008000 0x10000
54 write -P0x69 0x3fe0000 0x10000
72 = Checking Bitmap bitmap0 =
73 expecting 6 dirty sectors; have 6. OK!
75 --- Reference Backup #1 ---
78 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
82 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
85 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
87 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
89 --- Test Backup #1 ---
92 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
96 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
99 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
104 write -P0x74 0x0010000 0x10000
106 write -P0x69 0x00e8000 0x10000
108 write -P0x6e 0x2018000 0x10000
110 write -P0x67 0x3fe0000 0x20000
118 "granularity": 65536,
126 "granularity": 65536,
134 "granularity": 65536,
144 = Checking Bitmap bitmap0 =
145 expecting 6 dirty sectors; have 6. OK!
147 = Checking Bitmap (anonymous) =
148 expecting 7 dirty sectors; have 7. OK!
150 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
152 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
153 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
160 "granularity": 65536,
170 = Checking Bitmap bitmap0 =
171 expecting 10 dirty sectors; have 10. OK!
175 write -P0xaa 0x0010000 0x30000
177 write -P0xbb 0x00d8000 0x10000
179 write -P0xcc 0x2028000 0x10000
181 write -P0xdd 0x3fc0000 0x10000
189 "granularity": 65536,
199 = Checking Bitmap bitmap0 =
200 expecting 15 dirty sectors; have 15. OK!
202 --- Reference Backup #2 ---
205 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
209 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
212 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
214 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
216 --- Test Backup #2 ---
219 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
223 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
226 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
228 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
230 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
231 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
238 "granularity": 65536,
248 = Checking Bitmap bitmap0 =
249 expecting 15 dirty sectors; have 15. OK!
253 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
263 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
264 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
265 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
268 === Mode bitmap; Bitmap Sync never with intermediate failure ===
270 --- Preparing image & VM ---
272 {"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"}}
274 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
279 write -P0x49 0x0000000 0x10000
281 write -P0x6c 0x0100000 0x10000
283 write -P0x6f 0x2000000 0x10000
285 write -P0x76 0x3ff0000 0x10000
293 --- Reference Backup #0 ---
296 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
300 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
303 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
305 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
309 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
314 write -P0x65 0x0000000 0x10000
316 write -P0x77 0x00f8000 0x10000
318 write -P0x72 0x2008000 0x10000
320 write -P0x69 0x3fe0000 0x10000
328 "granularity": 65536,
338 = Checking Bitmap bitmap0 =
339 expecting 6 dirty sectors; have 6. OK!
341 --- Reference Backup #1 ---
344 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
348 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
351 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
353 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
357 --- Test Backup #1 ---
360 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
364 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
367 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
369 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
370 {"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"}}
377 "granularity": 65536,
387 = Checking Bitmap bitmap0 =
388 expecting 6 dirty sectors; have 6. OK!
392 write -P0xaa 0x0010000 0x30000
394 write -P0xbb 0x00d8000 0x10000
396 write -P0xcc 0x2028000 0x10000
398 write -P0xdd 0x3fc0000 0x10000
406 "granularity": 65536,
416 = Checking Bitmap bitmap0 =
417 expecting 14 dirty sectors; have 14. OK!
419 --- Reference Backup #2 ---
422 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
426 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
429 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
431 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
433 --- Test Backup #2 ---
436 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
440 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
443 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
445 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
447 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
448 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
455 "granularity": 65536,
465 = Checking Bitmap bitmap0 =
466 expecting 14 dirty sectors; have 14. OK!
470 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
480 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
481 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
482 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
485 === Mode bitmap; Bitmap Sync never without failure ===
487 --- Preparing image & VM ---
489 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
491 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
496 write -P0x49 0x0000000 0x10000
498 write -P0x6c 0x0100000 0x10000
500 write -P0x6f 0x2000000 0x10000
502 write -P0x76 0x3ff0000 0x10000
510 --- Reference Backup #0 ---
513 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
517 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
520 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
522 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
526 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
531 write -P0x65 0x0000000 0x10000
533 write -P0x77 0x00f8000 0x10000
535 write -P0x72 0x2008000 0x10000
537 write -P0x69 0x3fe0000 0x10000
545 "granularity": 65536,
555 = Checking Bitmap bitmap0 =
556 expecting 6 dirty sectors; have 6. OK!
558 --- Reference Backup #1 ---
561 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
565 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
568 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
570 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
572 --- Test Backup #1 ---
575 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
579 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
582 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
587 write -P0x74 0x0010000 0x10000
589 write -P0x69 0x00e8000 0x10000
591 write -P0x6e 0x2018000 0x10000
593 write -P0x67 0x3fe0000 0x20000
601 "granularity": 65536,
609 "granularity": 65536,
617 "granularity": 65536,
627 = Checking Bitmap bitmap0 =
628 expecting 6 dirty sectors; have 6. OK!
630 = Checking Bitmap (anonymous) =
631 expecting 7 dirty sectors; have 7. OK!
633 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
635 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
636 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
643 "granularity": 65536,
653 = Checking Bitmap bitmap0 =
654 expecting 10 dirty sectors; have 10. OK!
658 write -P0xaa 0x0010000 0x30000
660 write -P0xbb 0x00d8000 0x10000
662 write -P0xcc 0x2028000 0x10000
664 write -P0xdd 0x3fc0000 0x10000
672 "granularity": 65536,
682 = Checking Bitmap bitmap0 =
683 expecting 15 dirty sectors; have 15. OK!
685 --- Reference Backup #2 ---
688 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
692 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
695 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
697 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
699 --- Test Backup #2 ---
702 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
706 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
709 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
711 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
713 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
714 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
721 "granularity": 65536,
731 = Checking Bitmap bitmap0 =
732 expecting 15 dirty sectors; have 15. OK!
736 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
746 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
747 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
748 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
751 === Mode bitmap; Bitmap Sync on-success with simulated failure ===
753 --- Preparing image & VM ---
755 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
757 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
762 write -P0x49 0x0000000 0x10000
764 write -P0x6c 0x0100000 0x10000
766 write -P0x6f 0x2000000 0x10000
768 write -P0x76 0x3ff0000 0x10000
776 --- Reference Backup #0 ---
779 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
783 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
786 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
788 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
792 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
797 write -P0x65 0x0000000 0x10000
799 write -P0x77 0x00f8000 0x10000
801 write -P0x72 0x2008000 0x10000
803 write -P0x69 0x3fe0000 0x10000
811 "granularity": 65536,
821 = Checking Bitmap bitmap0 =
822 expecting 6 dirty sectors; have 6. OK!
824 --- Reference Backup #1 ---
827 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
831 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
834 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
836 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
838 --- Test Backup #1 ---
841 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
845 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
848 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
853 write -P0x74 0x0010000 0x10000
855 write -P0x69 0x00e8000 0x10000
857 write -P0x6e 0x2018000 0x10000
859 write -P0x67 0x3fe0000 0x20000
867 "granularity": 65536,
875 "granularity": 65536,
883 "granularity": 65536,
893 = Checking Bitmap bitmap0 =
894 expecting 6 dirty sectors; have 6. OK!
896 = Checking Bitmap (anonymous) =
897 expecting 7 dirty sectors; have 7. OK!
899 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
901 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
902 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
909 "granularity": 65536,
919 = Checking Bitmap bitmap0 =
920 expecting 10 dirty sectors; have 10. OK!
924 write -P0xaa 0x0010000 0x30000
926 write -P0xbb 0x00d8000 0x10000
928 write -P0xcc 0x2028000 0x10000
930 write -P0xdd 0x3fc0000 0x10000
938 "granularity": 65536,
948 = Checking Bitmap bitmap0 =
949 expecting 15 dirty sectors; have 15. OK!
951 --- Reference Backup #2 ---
954 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
958 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
961 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
963 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
965 --- Test Backup #2 ---
968 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
972 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
975 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
977 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
979 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
980 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
987 "granularity": 65536,
997 = Checking Bitmap bitmap0 =
998 expecting 0 dirty sectors; have 0. OK!
1002 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1010 --- Verification ---
1012 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1013 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1014 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1017 === Mode bitmap; Bitmap Sync on-success with intermediate failure ===
1019 --- Preparing image & VM ---
1021 {"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"}}
1023 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
1028 write -P0x49 0x0000000 0x10000
1030 write -P0x6c 0x0100000 0x10000
1032 write -P0x6f 0x2000000 0x10000
1034 write -P0x76 0x3ff0000 0x10000
1042 --- Reference Backup #0 ---
1045 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1049 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1052 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1054 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1058 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1063 write -P0x65 0x0000000 0x10000
1065 write -P0x77 0x00f8000 0x10000
1067 write -P0x72 0x2008000 0x10000
1069 write -P0x69 0x3fe0000 0x10000
1077 "granularity": 65536,
1079 "persistent": false,
1087 = Checking Bitmap bitmap0 =
1088 expecting 6 dirty sectors; have 6. OK!
1090 --- Reference Backup #1 ---
1093 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1097 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1100 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1102 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1106 --- Test Backup #1 ---
1109 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1113 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1116 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
1118 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1119 {"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"}}
1126 "granularity": 65536,
1128 "persistent": false,
1136 = Checking Bitmap bitmap0 =
1137 expecting 6 dirty sectors; have 6. OK!
1141 write -P0xaa 0x0010000 0x30000
1143 write -P0xbb 0x00d8000 0x10000
1145 write -P0xcc 0x2028000 0x10000
1147 write -P0xdd 0x3fc0000 0x10000
1155 "granularity": 65536,
1157 "persistent": false,
1165 = Checking Bitmap bitmap0 =
1166 expecting 14 dirty sectors; have 14. OK!
1168 --- Reference Backup #2 ---
1171 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1175 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1178 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1180 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1182 --- Test Backup #2 ---
1185 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1189 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1192 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
1194 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1196 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1197 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1204 "granularity": 65536,
1206 "persistent": false,
1214 = Checking Bitmap bitmap0 =
1215 expecting 0 dirty sectors; have 0. OK!
1219 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1227 --- Verification ---
1229 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1230 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1231 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1234 === Mode bitmap; Bitmap Sync on-success without failure ===
1236 --- Preparing image & VM ---
1238 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1240 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
1245 write -P0x49 0x0000000 0x10000
1247 write -P0x6c 0x0100000 0x10000
1249 write -P0x6f 0x2000000 0x10000
1251 write -P0x76 0x3ff0000 0x10000
1259 --- Reference Backup #0 ---
1262 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1266 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1269 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1271 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1275 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1280 write -P0x65 0x0000000 0x10000
1282 write -P0x77 0x00f8000 0x10000
1284 write -P0x72 0x2008000 0x10000
1286 write -P0x69 0x3fe0000 0x10000
1294 "granularity": 65536,
1296 "persistent": false,
1304 = Checking Bitmap bitmap0 =
1305 expecting 6 dirty sectors; have 6. OK!
1307 --- Reference Backup #1 ---
1310 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1314 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1317 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1319 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1321 --- Test Backup #1 ---
1324 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1328 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1331 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
1336 write -P0x74 0x0010000 0x10000
1338 write -P0x69 0x00e8000 0x10000
1340 write -P0x6e 0x2018000 0x10000
1342 write -P0x67 0x3fe0000 0x20000
1350 "granularity": 65536,
1351 "persistent": false,
1353 "status": "disabled"
1358 "granularity": 65536,
1359 "persistent": false,
1366 "granularity": 65536,
1368 "persistent": false,
1376 = Checking Bitmap bitmap0 =
1377 expecting 6 dirty sectors; have 6. OK!
1379 = Checking Bitmap (anonymous) =
1380 expecting 7 dirty sectors; have 7. OK!
1382 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
1384 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1385 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1392 "granularity": 65536,
1394 "persistent": false,
1402 = Checking Bitmap bitmap0 =
1403 expecting 7 dirty sectors; have 7. OK!
1407 write -P0xaa 0x0010000 0x30000
1409 write -P0xbb 0x00d8000 0x10000
1411 write -P0xcc 0x2028000 0x10000
1413 write -P0xdd 0x3fc0000 0x10000
1421 "granularity": 65536,
1423 "persistent": false,
1431 = Checking Bitmap bitmap0 =
1432 expecting 12 dirty sectors; have 12. OK!
1434 --- Reference Backup #2 ---
1437 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1441 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1444 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1446 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1448 --- Test Backup #2 ---
1451 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1455 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1458 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
1460 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1462 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1463 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1470 "granularity": 65536,
1472 "persistent": false,
1480 = Checking Bitmap bitmap0 =
1481 expecting 0 dirty sectors; have 0. OK!
1485 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1493 --- Verification ---
1495 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1496 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1497 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1500 === Mode bitmap; Bitmap Sync always with simulated failure ===
1502 --- Preparing image & VM ---
1504 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1506 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
1511 write -P0x49 0x0000000 0x10000
1513 write -P0x6c 0x0100000 0x10000
1515 write -P0x6f 0x2000000 0x10000
1517 write -P0x76 0x3ff0000 0x10000
1525 --- Reference Backup #0 ---
1528 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1532 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1535 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1537 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1541 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1546 write -P0x65 0x0000000 0x10000
1548 write -P0x77 0x00f8000 0x10000
1550 write -P0x72 0x2008000 0x10000
1552 write -P0x69 0x3fe0000 0x10000
1560 "granularity": 65536,
1562 "persistent": false,
1570 = Checking Bitmap bitmap0 =
1571 expecting 6 dirty sectors; have 6. OK!
1573 --- Reference Backup #1 ---
1576 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1580 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1583 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1585 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1587 --- Test Backup #1 ---
1590 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1594 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1597 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
1602 write -P0x74 0x0010000 0x10000
1604 write -P0x69 0x00e8000 0x10000
1606 write -P0x6e 0x2018000 0x10000
1608 write -P0x67 0x3fe0000 0x20000
1616 "granularity": 65536,
1617 "persistent": false,
1619 "status": "disabled"
1624 "granularity": 65536,
1625 "persistent": false,
1632 "granularity": 65536,
1634 "persistent": false,
1642 = Checking Bitmap bitmap0 =
1643 expecting 6 dirty sectors; have 6. OK!
1645 = Checking Bitmap (anonymous) =
1646 expecting 7 dirty sectors; have 7. OK!
1648 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
1650 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1651 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1658 "granularity": 65536,
1660 "persistent": false,
1668 = Checking Bitmap bitmap0 =
1669 expecting 7 dirty sectors; have 7. OK!
1673 write -P0xaa 0x0010000 0x30000
1675 write -P0xbb 0x00d8000 0x10000
1677 write -P0xcc 0x2028000 0x10000
1679 write -P0xdd 0x3fc0000 0x10000
1687 "granularity": 65536,
1689 "persistent": false,
1697 = Checking Bitmap bitmap0 =
1698 expecting 12 dirty sectors; have 12. OK!
1700 --- Reference Backup #2 ---
1703 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1707 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1710 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1712 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1714 --- Test Backup #2 ---
1717 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1721 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1724 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
1726 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1728 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1729 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1736 "granularity": 65536,
1738 "persistent": false,
1746 = Checking Bitmap bitmap0 =
1747 expecting 0 dirty sectors; have 0. OK!
1751 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1759 --- Verification ---
1761 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
1762 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1763 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1766 === Mode bitmap; Bitmap Sync always with intermediate failure ===
1768 --- Preparing image & VM ---
1770 {"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"}}
1772 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
1777 write -P0x49 0x0000000 0x10000
1779 write -P0x6c 0x0100000 0x10000
1781 write -P0x6f 0x2000000 0x10000
1783 write -P0x76 0x3ff0000 0x10000
1791 --- Reference Backup #0 ---
1794 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1798 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1801 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
1803 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1807 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
1812 write -P0x65 0x0000000 0x10000
1814 write -P0x77 0x00f8000 0x10000
1816 write -P0x72 0x2008000 0x10000
1818 write -P0x69 0x3fe0000 0x10000
1826 "granularity": 65536,
1828 "persistent": false,
1836 = Checking Bitmap bitmap0 =
1837 expecting 6 dirty sectors; have 6. OK!
1839 --- Reference Backup #1 ---
1842 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1846 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1849 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
1851 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1855 --- Test Backup #1 ---
1858 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1862 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1865 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
1867 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1868 {"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"}}
1875 "granularity": 65536,
1877 "persistent": false,
1885 = Checking Bitmap bitmap0 =
1886 expecting 5 dirty sectors; have 5. OK!
1890 write -P0xaa 0x0010000 0x30000
1892 write -P0xbb 0x00d8000 0x10000
1894 write -P0xcc 0x2028000 0x10000
1896 write -P0xdd 0x3fc0000 0x10000
1904 "granularity": 65536,
1906 "persistent": false,
1914 = Checking Bitmap bitmap0 =
1915 expecting 13 dirty sectors; have 13. OK!
1917 --- Reference Backup #2 ---
1920 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1924 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1927 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
1929 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1931 --- Test Backup #2 ---
1934 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
1938 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
1941 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
1943 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
1945 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1946 {"data": {"device": "backup_2", "len": 851968, "offset": 851968, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
1953 "granularity": 65536,
1955 "persistent": false,
1963 = Checking Bitmap bitmap0 =
1964 expecting 0 dirty sectors; have 0. OK!
1968 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
1976 --- Verification ---
1978 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
1979 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1980 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
1983 === Mode bitmap; Bitmap Sync always without failure ===
1985 --- Preparing image & VM ---
1987 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
1989 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
1994 write -P0x49 0x0000000 0x10000
1996 write -P0x6c 0x0100000 0x10000
1998 write -P0x6f 0x2000000 0x10000
2000 write -P0x76 0x3ff0000 0x10000
2008 --- Reference Backup #0 ---
2011 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2015 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2018 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2020 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2024 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2029 write -P0x65 0x0000000 0x10000
2031 write -P0x77 0x00f8000 0x10000
2033 write -P0x72 0x2008000 0x10000
2035 write -P0x69 0x3fe0000 0x10000
2043 "granularity": 65536,
2045 "persistent": false,
2053 = Checking Bitmap bitmap0 =
2054 expecting 6 dirty sectors; have 6. OK!
2056 --- Reference Backup #1 ---
2059 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2063 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2066 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2068 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2070 --- Test Backup #1 ---
2073 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2077 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2080 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "bitmap", "target": "backup_target_1"}}
2085 write -P0x74 0x0010000 0x10000
2087 write -P0x69 0x00e8000 0x10000
2089 write -P0x6e 0x2018000 0x10000
2091 write -P0x67 0x3fe0000 0x20000
2099 "granularity": 65536,
2100 "persistent": false,
2102 "status": "disabled"
2107 "granularity": 65536,
2108 "persistent": false,
2115 "granularity": 65536,
2117 "persistent": false,
2125 = Checking Bitmap bitmap0 =
2126 expecting 6 dirty sectors; have 6. OK!
2128 = Checking Bitmap (anonymous) =
2129 expecting 7 dirty sectors; have 7. OK!
2131 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2133 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2134 {"data": {"device": "backup_1", "len": 393216, "offset": 393216, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2141 "granularity": 65536,
2143 "persistent": false,
2151 = Checking Bitmap bitmap0 =
2152 expecting 7 dirty sectors; have 7. OK!
2156 write -P0xaa 0x0010000 0x30000
2158 write -P0xbb 0x00d8000 0x10000
2160 write -P0xcc 0x2028000 0x10000
2162 write -P0xdd 0x3fc0000 0x10000
2170 "granularity": 65536,
2172 "persistent": false,
2180 = Checking Bitmap bitmap0 =
2181 expecting 12 dirty sectors; have 12. OK!
2183 --- Reference Backup #2 ---
2186 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2190 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2193 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2195 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2197 --- Test Backup #2 ---
2200 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2204 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2207 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
2209 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2211 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2212 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2219 "granularity": 65536,
2221 "persistent": false,
2229 = Checking Bitmap bitmap0 =
2230 expecting 0 dirty sectors; have 0. OK!
2234 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2242 --- Verification ---
2244 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2245 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2246 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2249 === Mode full; Bitmap Sync on-success with simulated failure ===
2251 --- Preparing image & VM ---
2253 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2255 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
2260 write -P0x49 0x0000000 0x10000
2262 write -P0x6c 0x0100000 0x10000
2264 write -P0x6f 0x2000000 0x10000
2266 write -P0x76 0x3ff0000 0x10000
2274 --- Reference Backup #0 ---
2277 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2281 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2284 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2286 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2290 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2295 write -P0x65 0x0000000 0x10000
2297 write -P0x77 0x00f8000 0x10000
2299 write -P0x72 0x2008000 0x10000
2301 write -P0x69 0x3fe0000 0x10000
2309 "granularity": 65536,
2311 "persistent": false,
2319 = Checking Bitmap bitmap0 =
2320 expecting 6 dirty sectors; have 6. OK!
2322 --- Reference Backup #1 ---
2325 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2329 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2332 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2334 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2336 --- Test Backup #1 ---
2339 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2343 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2346 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
2351 write -P0x74 0x0010000 0x10000
2353 write -P0x69 0x00e8000 0x10000
2355 write -P0x6e 0x2018000 0x10000
2357 write -P0x67 0x3fe0000 0x20000
2365 "granularity": 65536,
2366 "persistent": false,
2368 "status": "disabled"
2373 "granularity": 65536,
2374 "persistent": false,
2381 "granularity": 65536,
2383 "persistent": false,
2391 = Checking Bitmap bitmap0 =
2392 expecting 6 dirty sectors; have 6. OK!
2394 = Checking Bitmap (anonymous) =
2395 expecting 7 dirty sectors; have 7. OK!
2397 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
2399 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2400 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2407 "granularity": 65536,
2409 "persistent": false,
2417 = Checking Bitmap bitmap0 =
2418 expecting 10 dirty sectors; have 10. OK!
2422 write -P0xaa 0x0010000 0x30000
2424 write -P0xbb 0x00d8000 0x10000
2426 write -P0xcc 0x2028000 0x10000
2428 write -P0xdd 0x3fc0000 0x10000
2436 "granularity": 65536,
2438 "persistent": false,
2446 = Checking Bitmap bitmap0 =
2447 expecting 15 dirty sectors; have 15. OK!
2449 --- Reference Backup #2 ---
2452 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2456 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2459 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2461 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2463 --- Test Backup #2 ---
2466 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2470 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2473 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
2475 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2477 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2478 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2485 "granularity": 65536,
2487 "persistent": false,
2495 = Checking Bitmap bitmap0 =
2496 expecting 0 dirty sectors; have 0. OK!
2500 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2508 --- Verification ---
2510 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2511 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2512 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2515 === Mode full; Bitmap Sync on-success with intermediate failure ===
2517 --- Preparing image & VM ---
2519 {"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"}}
2521 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
2526 write -P0x49 0x0000000 0x10000
2528 write -P0x6c 0x0100000 0x10000
2530 write -P0x6f 0x2000000 0x10000
2532 write -P0x76 0x3ff0000 0x10000
2540 --- Reference Backup #0 ---
2543 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2547 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2550 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2552 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2556 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2561 write -P0x65 0x0000000 0x10000
2563 write -P0x77 0x00f8000 0x10000
2565 write -P0x72 0x2008000 0x10000
2567 write -P0x69 0x3fe0000 0x10000
2575 "granularity": 65536,
2577 "persistent": false,
2585 = Checking Bitmap bitmap0 =
2586 expecting 6 dirty sectors; have 6. OK!
2588 --- Reference Backup #1 ---
2591 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2595 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2598 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2600 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2604 --- Test Backup #1 ---
2607 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2611 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2614 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
2616 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2617 {"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"}}
2624 "granularity": 65536,
2626 "persistent": false,
2634 = Checking Bitmap bitmap0 =
2635 expecting 6 dirty sectors; have 6. OK!
2639 write -P0xaa 0x0010000 0x30000
2641 write -P0xbb 0x00d8000 0x10000
2643 write -P0xcc 0x2028000 0x10000
2645 write -P0xdd 0x3fc0000 0x10000
2653 "granularity": 65536,
2655 "persistent": false,
2663 = Checking Bitmap bitmap0 =
2664 expecting 14 dirty sectors; have 14. OK!
2666 --- Reference Backup #2 ---
2669 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2673 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2676 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2678 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2680 --- Test Backup #2 ---
2683 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2687 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2690 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
2692 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2694 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2695 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2702 "granularity": 65536,
2704 "persistent": false,
2712 = Checking Bitmap bitmap0 =
2713 expecting 0 dirty sectors; have 0. OK!
2717 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2725 --- Verification ---
2727 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
2728 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2729 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2732 === Mode full; Bitmap Sync on-success without failure ===
2734 --- Preparing image & VM ---
2736 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
2738 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
2743 write -P0x49 0x0000000 0x10000
2745 write -P0x6c 0x0100000 0x10000
2747 write -P0x6f 0x2000000 0x10000
2749 write -P0x76 0x3ff0000 0x10000
2757 --- Reference Backup #0 ---
2760 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2764 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2767 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
2769 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2773 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
2778 write -P0x65 0x0000000 0x10000
2780 write -P0x77 0x00f8000 0x10000
2782 write -P0x72 0x2008000 0x10000
2784 write -P0x69 0x3fe0000 0x10000
2792 "granularity": 65536,
2794 "persistent": false,
2802 = Checking Bitmap bitmap0 =
2803 expecting 6 dirty sectors; have 6. OK!
2805 --- Reference Backup #1 ---
2808 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2812 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2815 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
2817 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2819 --- Test Backup #1 ---
2822 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2826 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2829 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
2834 write -P0x74 0x0010000 0x10000
2836 write -P0x69 0x00e8000 0x10000
2838 write -P0x6e 0x2018000 0x10000
2840 write -P0x67 0x3fe0000 0x20000
2848 "granularity": 65536,
2849 "persistent": false,
2851 "status": "disabled"
2856 "granularity": 65536,
2857 "persistent": false,
2864 "granularity": 65536,
2866 "persistent": false,
2874 = Checking Bitmap bitmap0 =
2875 expecting 6 dirty sectors; have 6. OK!
2877 = Checking Bitmap (anonymous) =
2878 expecting 7 dirty sectors; have 7. OK!
2880 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
2882 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2883 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2890 "granularity": 65536,
2892 "persistent": false,
2900 = Checking Bitmap bitmap0 =
2901 expecting 7 dirty sectors; have 7. OK!
2905 write -P0xaa 0x0010000 0x30000
2907 write -P0xbb 0x00d8000 0x10000
2909 write -P0xcc 0x2028000 0x10000
2911 write -P0xdd 0x3fc0000 0x10000
2919 "granularity": 65536,
2921 "persistent": false,
2929 = Checking Bitmap bitmap0 =
2930 expecting 12 dirty sectors; have 12. OK!
2932 --- Reference Backup #2 ---
2935 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2939 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2942 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
2944 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2946 --- Test Backup #2 ---
2949 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
2953 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
2956 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
2958 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
2960 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2961 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
2968 "granularity": 65536,
2970 "persistent": false,
2978 = Checking Bitmap bitmap0 =
2979 expecting 0 dirty sectors; have 0. OK!
2983 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
2991 --- Verification ---
2993 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
2994 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2995 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
2998 === Mode full; Bitmap Sync always with simulated failure ===
3000 --- Preparing image & VM ---
3002 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3004 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
3009 write -P0x49 0x0000000 0x10000
3011 write -P0x6c 0x0100000 0x10000
3013 write -P0x6f 0x2000000 0x10000
3015 write -P0x76 0x3ff0000 0x10000
3023 --- Reference Backup #0 ---
3026 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3030 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3033 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3035 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3039 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3044 write -P0x65 0x0000000 0x10000
3046 write -P0x77 0x00f8000 0x10000
3048 write -P0x72 0x2008000 0x10000
3050 write -P0x69 0x3fe0000 0x10000
3058 "granularity": 65536,
3060 "persistent": false,
3068 = Checking Bitmap bitmap0 =
3069 expecting 6 dirty sectors; have 6. OK!
3071 --- Reference Backup #1 ---
3074 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3078 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3081 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3083 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3085 --- Test Backup #1 ---
3088 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3092 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3095 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
3100 write -P0x74 0x0010000 0x10000
3102 write -P0x69 0x00e8000 0x10000
3104 write -P0x6e 0x2018000 0x10000
3106 write -P0x67 0x3fe0000 0x20000
3114 "granularity": 65536,
3115 "persistent": false,
3117 "status": "disabled"
3122 "granularity": 65536,
3123 "persistent": false,
3130 "granularity": 65536,
3132 "persistent": false,
3140 = Checking Bitmap bitmap0 =
3141 expecting 6 dirty sectors; have 6. OK!
3143 = Checking Bitmap (anonymous) =
3144 expecting 7 dirty sectors; have 7. OK!
3146 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3148 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3149 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3156 "granularity": 65536,
3158 "persistent": false,
3166 = Checking Bitmap bitmap0 =
3167 expecting 7 dirty sectors; have 7. OK!
3171 write -P0xaa 0x0010000 0x30000
3173 write -P0xbb 0x00d8000 0x10000
3175 write -P0xcc 0x2028000 0x10000
3177 write -P0xdd 0x3fc0000 0x10000
3185 "granularity": 65536,
3187 "persistent": false,
3195 = Checking Bitmap bitmap0 =
3196 expecting 12 dirty sectors; have 12. OK!
3198 --- Reference Backup #2 ---
3201 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3205 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3208 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3210 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3212 --- Test Backup #2 ---
3215 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3219 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3222 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
3224 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3226 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3227 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3234 "granularity": 65536,
3236 "persistent": false,
3244 = Checking Bitmap bitmap0 =
3245 expecting 0 dirty sectors; have 0. OK!
3249 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3257 --- Verification ---
3259 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3260 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3261 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3264 === Mode full; Bitmap Sync always with intermediate failure ===
3266 --- Preparing image & VM ---
3268 {"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"}}
3270 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
3275 write -P0x49 0x0000000 0x10000
3277 write -P0x6c 0x0100000 0x10000
3279 write -P0x6f 0x2000000 0x10000
3281 write -P0x76 0x3ff0000 0x10000
3289 --- Reference Backup #0 ---
3292 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3296 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3299 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3301 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3305 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3310 write -P0x65 0x0000000 0x10000
3312 write -P0x77 0x00f8000 0x10000
3314 write -P0x72 0x2008000 0x10000
3316 write -P0x69 0x3fe0000 0x10000
3324 "granularity": 65536,
3326 "persistent": false,
3334 = Checking Bitmap bitmap0 =
3335 expecting 6 dirty sectors; have 6. OK!
3337 --- Reference Backup #1 ---
3340 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3344 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3347 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3349 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3353 --- Test Backup #1 ---
3356 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3360 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3363 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
3365 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3366 {"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"}}
3373 "granularity": 65536,
3375 "persistent": false,
3383 = Checking Bitmap bitmap0 =
3384 expecting 1009 dirty sectors; have 1009. OK!
3388 write -P0xaa 0x0010000 0x30000
3390 write -P0xbb 0x00d8000 0x10000
3392 write -P0xcc 0x2028000 0x10000
3394 write -P0xdd 0x3fc0000 0x10000
3402 "granularity": 65536,
3404 "persistent": false,
3412 = Checking Bitmap bitmap0 =
3413 expecting 1014 dirty sectors; have 1014. OK!
3415 --- Reference Backup #2 ---
3418 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3422 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3425 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3427 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3429 --- Test Backup #2 ---
3432 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3436 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3439 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
3441 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3443 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3444 {"data": {"device": "backup_2", "len": 66453504, "offset": 66453504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3451 "granularity": 65536,
3453 "persistent": false,
3461 = Checking Bitmap bitmap0 =
3462 expecting 0 dirty sectors; have 0. OK!
3466 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3474 --- Verification ---
3476 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
3477 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3478 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3481 === Mode full; Bitmap Sync always without failure ===
3483 --- Preparing image & VM ---
3485 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3487 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
3492 write -P0x49 0x0000000 0x10000
3494 write -P0x6c 0x0100000 0x10000
3496 write -P0x6f 0x2000000 0x10000
3498 write -P0x76 0x3ff0000 0x10000
3506 --- Reference Backup #0 ---
3509 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3513 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3516 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3518 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3522 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3527 write -P0x65 0x0000000 0x10000
3529 write -P0x77 0x00f8000 0x10000
3531 write -P0x72 0x2008000 0x10000
3533 write -P0x69 0x3fe0000 0x10000
3541 "granularity": 65536,
3543 "persistent": false,
3551 = Checking Bitmap bitmap0 =
3552 expecting 6 dirty sectors; have 6. OK!
3554 --- Reference Backup #1 ---
3557 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3561 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3564 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3566 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3568 --- Test Backup #1 ---
3571 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3575 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3578 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "full", "target": "backup_target_1"}}
3583 write -P0x74 0x0010000 0x10000
3585 write -P0x69 0x00e8000 0x10000
3587 write -P0x6e 0x2018000 0x10000
3589 write -P0x67 0x3fe0000 0x20000
3597 "granularity": 65536,
3598 "persistent": false,
3600 "status": "disabled"
3605 "granularity": 65536,
3606 "persistent": false,
3613 "granularity": 65536,
3615 "persistent": false,
3623 = Checking Bitmap bitmap0 =
3624 expecting 6 dirty sectors; have 6. OK!
3626 = Checking Bitmap (anonymous) =
3627 expecting 7 dirty sectors; have 7. OK!
3629 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
3631 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3632 {"data": {"device": "backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3639 "granularity": 65536,
3641 "persistent": false,
3649 = Checking Bitmap bitmap0 =
3650 expecting 7 dirty sectors; have 7. OK!
3654 write -P0xaa 0x0010000 0x30000
3656 write -P0xbb 0x00d8000 0x10000
3658 write -P0xcc 0x2028000 0x10000
3660 write -P0xdd 0x3fc0000 0x10000
3668 "granularity": 65536,
3670 "persistent": false,
3678 = Checking Bitmap bitmap0 =
3679 expecting 12 dirty sectors; have 12. OK!
3681 --- Reference Backup #2 ---
3684 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3688 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3691 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3693 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3695 --- Test Backup #2 ---
3698 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3702 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3705 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
3707 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3709 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3710 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3717 "granularity": 65536,
3719 "persistent": false,
3727 = Checking Bitmap bitmap0 =
3728 expecting 0 dirty sectors; have 0. OK!
3732 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
3740 --- Verification ---
3742 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
3743 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3744 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
3747 === Mode top; Bitmap Sync on-success with simulated failure ===
3749 --- Preparing image & VM ---
3751 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
3753 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
3758 write -P0x49 0x0000000 0x10000
3760 write -P0x6c 0x0100000 0x10000
3762 write -P0x6f 0x2000000 0x10000
3764 write -P0x76 0x3ff0000 0x10000
3772 --- Reference Backup #0 ---
3775 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3779 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3782 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
3784 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3788 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
3793 write -P0x65 0x0000000 0x10000
3795 write -P0x77 0x00f8000 0x10000
3797 write -P0x72 0x2008000 0x10000
3799 write -P0x69 0x3fe0000 0x10000
3807 "granularity": 65536,
3809 "persistent": false,
3817 = Checking Bitmap bitmap0 =
3818 expecting 6 dirty sectors; have 6. OK!
3820 --- Reference Backup #1 ---
3823 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3827 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3830 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
3832 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3834 --- Test Backup #1 ---
3837 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3841 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3844 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
3849 write -P0x74 0x0010000 0x10000
3851 write -P0x69 0x00e8000 0x10000
3853 write -P0x6e 0x2018000 0x10000
3855 write -P0x67 0x3fe0000 0x20000
3863 "granularity": 65536,
3864 "persistent": false,
3866 "status": "disabled"
3871 "granularity": 65536,
3872 "persistent": false,
3879 "granularity": 65536,
3881 "persistent": false,
3889 = Checking Bitmap bitmap0 =
3890 expecting 6 dirty sectors; have 6. OK!
3892 = Checking Bitmap (anonymous) =
3893 expecting 7 dirty sectors; have 7. OK!
3895 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
3897 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3898 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3905 "granularity": 65536,
3907 "persistent": false,
3915 = Checking Bitmap bitmap0 =
3916 expecting 10 dirty sectors; have 10. OK!
3920 write -P0xaa 0x0010000 0x30000
3922 write -P0xbb 0x00d8000 0x10000
3924 write -P0xcc 0x2028000 0x10000
3926 write -P0xdd 0x3fc0000 0x10000
3934 "granularity": 65536,
3936 "persistent": false,
3944 = Checking Bitmap bitmap0 =
3945 expecting 15 dirty sectors; have 15. OK!
3947 --- Reference Backup #2 ---
3950 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3954 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3957 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
3959 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3961 --- Test Backup #2 ---
3964 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
3968 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
3971 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
3973 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
3975 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3976 {"data": {"device": "backup_2", "len": 983040, "offset": 983040, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
3983 "granularity": 65536,
3985 "persistent": false,
3993 = Checking Bitmap bitmap0 =
3994 expecting 0 dirty sectors; have 0. OK!
3998 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4006 --- Verification ---
4008 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4009 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4010 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4013 === Mode top; Bitmap Sync on-success with intermediate failure ===
4015 --- Preparing image & VM ---
4017 {"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"}}
4019 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
4024 write -P0x49 0x0000000 0x10000
4026 write -P0x6c 0x0100000 0x10000
4028 write -P0x6f 0x2000000 0x10000
4030 write -P0x76 0x3ff0000 0x10000
4038 --- Reference Backup #0 ---
4041 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4045 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4048 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4050 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4054 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4059 write -P0x65 0x0000000 0x10000
4061 write -P0x77 0x00f8000 0x10000
4063 write -P0x72 0x2008000 0x10000
4065 write -P0x69 0x3fe0000 0x10000
4073 "granularity": 65536,
4075 "persistent": false,
4083 = Checking Bitmap bitmap0 =
4084 expecting 6 dirty sectors; have 6. OK!
4086 --- Reference Backup #1 ---
4089 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4093 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4096 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4098 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4102 --- Test Backup #1 ---
4105 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4109 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4112 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
4114 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4115 {"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"}}
4122 "granularity": 65536,
4124 "persistent": false,
4132 = Checking Bitmap bitmap0 =
4133 expecting 6 dirty sectors; have 6. OK!
4137 write -P0xaa 0x0010000 0x30000
4139 write -P0xbb 0x00d8000 0x10000
4141 write -P0xcc 0x2028000 0x10000
4143 write -P0xdd 0x3fc0000 0x10000
4151 "granularity": 65536,
4153 "persistent": false,
4161 = Checking Bitmap bitmap0 =
4162 expecting 14 dirty sectors; have 14. OK!
4164 --- Reference Backup #2 ---
4167 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4171 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4174 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4176 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4178 --- Test Backup #2 ---
4181 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4185 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4188 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
4190 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4192 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4193 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4200 "granularity": 65536,
4202 "persistent": false,
4210 = Checking Bitmap bitmap0 =
4211 expecting 0 dirty sectors; have 0. OK!
4215 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4223 --- Verification ---
4225 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4226 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4227 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4230 === Mode top; Bitmap Sync on-success without failure ===
4232 --- Preparing image & VM ---
4234 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4236 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
4241 write -P0x49 0x0000000 0x10000
4243 write -P0x6c 0x0100000 0x10000
4245 write -P0x6f 0x2000000 0x10000
4247 write -P0x76 0x3ff0000 0x10000
4255 --- Reference Backup #0 ---
4258 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4262 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4265 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4267 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4271 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4276 write -P0x65 0x0000000 0x10000
4278 write -P0x77 0x00f8000 0x10000
4280 write -P0x72 0x2008000 0x10000
4282 write -P0x69 0x3fe0000 0x10000
4290 "granularity": 65536,
4292 "persistent": false,
4300 = Checking Bitmap bitmap0 =
4301 expecting 6 dirty sectors; have 6. OK!
4303 --- Reference Backup #1 ---
4306 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4310 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4313 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4315 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4317 --- Test Backup #1 ---
4320 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4324 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4327 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
4332 write -P0x74 0x0010000 0x10000
4334 write -P0x69 0x00e8000 0x10000
4336 write -P0x6e 0x2018000 0x10000
4338 write -P0x67 0x3fe0000 0x20000
4346 "granularity": 65536,
4347 "persistent": false,
4349 "status": "disabled"
4354 "granularity": 65536,
4355 "persistent": false,
4362 "granularity": 65536,
4364 "persistent": false,
4372 = Checking Bitmap bitmap0 =
4373 expecting 6 dirty sectors; have 6. OK!
4375 = Checking Bitmap (anonymous) =
4376 expecting 7 dirty sectors; have 7. OK!
4378 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
4380 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4381 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4388 "granularity": 65536,
4390 "persistent": false,
4398 = Checking Bitmap bitmap0 =
4399 expecting 7 dirty sectors; have 7. OK!
4403 write -P0xaa 0x0010000 0x30000
4405 write -P0xbb 0x00d8000 0x10000
4407 write -P0xcc 0x2028000 0x10000
4409 write -P0xdd 0x3fc0000 0x10000
4417 "granularity": 65536,
4419 "persistent": false,
4427 = Checking Bitmap bitmap0 =
4428 expecting 12 dirty sectors; have 12. OK!
4430 --- Reference Backup #2 ---
4433 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4437 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4440 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4442 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4444 --- Test Backup #2 ---
4447 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4451 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4454 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
4456 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4458 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4459 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4466 "granularity": 65536,
4468 "persistent": false,
4476 = Checking Bitmap bitmap0 =
4477 expecting 0 dirty sectors; have 0. OK!
4481 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4489 --- Verification ---
4491 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4492 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4493 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4496 === Mode top; Bitmap Sync always with simulated failure ===
4498 --- Preparing image & VM ---
4500 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4502 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
4507 write -P0x49 0x0000000 0x10000
4509 write -P0x6c 0x0100000 0x10000
4511 write -P0x6f 0x2000000 0x10000
4513 write -P0x76 0x3ff0000 0x10000
4521 --- Reference Backup #0 ---
4524 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4528 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4531 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4533 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4537 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4542 write -P0x65 0x0000000 0x10000
4544 write -P0x77 0x00f8000 0x10000
4546 write -P0x72 0x2008000 0x10000
4548 write -P0x69 0x3fe0000 0x10000
4556 "granularity": 65536,
4558 "persistent": false,
4566 = Checking Bitmap bitmap0 =
4567 expecting 6 dirty sectors; have 6. OK!
4569 --- Reference Backup #1 ---
4572 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4576 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4579 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4581 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4583 --- Test Backup #1 ---
4586 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4590 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4593 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
4598 write -P0x74 0x0010000 0x10000
4600 write -P0x69 0x00e8000 0x10000
4602 write -P0x6e 0x2018000 0x10000
4604 write -P0x67 0x3fe0000 0x20000
4612 "granularity": 65536,
4613 "persistent": false,
4615 "status": "disabled"
4620 "granularity": 65536,
4621 "persistent": false,
4628 "granularity": 65536,
4630 "persistent": false,
4638 = Checking Bitmap bitmap0 =
4639 expecting 6 dirty sectors; have 6. OK!
4641 = Checking Bitmap (anonymous) =
4642 expecting 7 dirty sectors; have 7. OK!
4644 {"execute": "job-cancel", "arguments": {"id": "backup_1"}}
4646 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4647 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4654 "granularity": 65536,
4656 "persistent": false,
4664 = Checking Bitmap bitmap0 =
4665 expecting 7 dirty sectors; have 7. OK!
4669 write -P0xaa 0x0010000 0x30000
4671 write -P0xbb 0x00d8000 0x10000
4673 write -P0xcc 0x2028000 0x10000
4675 write -P0xdd 0x3fc0000 0x10000
4683 "granularity": 65536,
4685 "persistent": false,
4693 = Checking Bitmap bitmap0 =
4694 expecting 12 dirty sectors; have 12. OK!
4696 --- Reference Backup #2 ---
4699 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4703 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4706 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4708 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4710 --- Test Backup #2 ---
4713 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4717 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4720 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
4722 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4724 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4725 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4732 "granularity": 65536,
4734 "persistent": false,
4742 = Checking Bitmap bitmap0 =
4743 expecting 0 dirty sectors; have 0. OK!
4747 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4755 --- Verification ---
4757 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
4758 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4759 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4762 === Mode top; Bitmap Sync always with intermediate failure ===
4764 --- Preparing image & VM ---
4766 {"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"}}
4768 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
4773 write -P0x49 0x0000000 0x10000
4775 write -P0x6c 0x0100000 0x10000
4777 write -P0x6f 0x2000000 0x10000
4779 write -P0x76 0x3ff0000 0x10000
4787 --- Reference Backup #0 ---
4790 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4794 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4797 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
4799 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4803 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
4808 write -P0x65 0x0000000 0x10000
4810 write -P0x77 0x00f8000 0x10000
4812 write -P0x72 0x2008000 0x10000
4814 write -P0x69 0x3fe0000 0x10000
4822 "granularity": 65536,
4824 "persistent": false,
4832 = Checking Bitmap bitmap0 =
4833 expecting 6 dirty sectors; have 6. OK!
4835 --- Reference Backup #1 ---
4838 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4842 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4845 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
4847 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4851 --- Test Backup #1 ---
4854 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4858 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4861 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
4863 {"data": {"action": "report", "device": "backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4864 {"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"}}
4871 "granularity": 65536,
4873 "persistent": false,
4881 = Checking Bitmap bitmap0 =
4882 expecting 6 dirty sectors; have 6. OK!
4886 write -P0xaa 0x0010000 0x30000
4888 write -P0xbb 0x00d8000 0x10000
4890 write -P0xcc 0x2028000 0x10000
4892 write -P0xdd 0x3fc0000 0x10000
4900 "granularity": 65536,
4902 "persistent": false,
4910 = Checking Bitmap bitmap0 =
4911 expecting 14 dirty sectors; have 14. OK!
4913 --- Reference Backup #2 ---
4916 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4920 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4923 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
4925 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4927 --- Test Backup #2 ---
4930 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
4934 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
4937 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
4939 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
4941 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4942 {"data": {"device": "backup_2", "len": 917504, "offset": 917504, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
4949 "granularity": 65536,
4951 "persistent": false,
4959 = Checking Bitmap bitmap0 =
4960 expecting 0 dirty sectors; have 0. OK!
4964 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
4972 --- Verification ---
4974 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
4975 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4976 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
4979 === Mode top; Bitmap Sync always without failure ===
4981 --- Preparing image & VM ---
4983 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
4985 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
4990 write -P0x49 0x0000000 0x10000
4992 write -P0x6c 0x0100000 0x10000
4994 write -P0x6f 0x2000000 0x10000
4996 write -P0x76 0x3ff0000 0x10000
5004 --- Reference Backup #0 ---
5007 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5011 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5014 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
5016 {"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5020 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5025 write -P0x65 0x0000000 0x10000
5027 write -P0x77 0x00f8000 0x10000
5029 write -P0x72 0x2008000 0x10000
5031 write -P0x69 0x3fe0000 0x10000
5039 "granularity": 65536,
5041 "persistent": false,
5049 = Checking Bitmap bitmap0 =
5050 expecting 6 dirty sectors; have 6. OK!
5052 --- Reference Backup #1 ---
5055 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5059 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5062 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
5064 {"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5066 --- Test Backup #1 ---
5069 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5073 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5076 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_1", "sync": "top", "target": "backup_target_1"}}
5081 write -P0x74 0x0010000 0x10000
5083 write -P0x69 0x00e8000 0x10000
5085 write -P0x6e 0x2018000 0x10000
5087 write -P0x67 0x3fe0000 0x20000
5095 "granularity": 65536,
5096 "persistent": false,
5098 "status": "disabled"
5103 "granularity": 65536,
5104 "persistent": false,
5111 "granularity": 65536,
5113 "persistent": false,
5121 = Checking Bitmap bitmap0 =
5122 expecting 6 dirty sectors; have 6. OK!
5124 = Checking Bitmap (anonymous) =
5125 expecting 7 dirty sectors; have 7. OK!
5127 {"execute": "job-finalize", "arguments": {"id": "backup_1"}}
5129 {"data": {"id": "backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5130 {"data": {"device": "backup_1", "len": 458752, "offset": 458752, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5137 "granularity": 65536,
5139 "persistent": false,
5147 = Checking Bitmap bitmap0 =
5148 expecting 7 dirty sectors; have 7. OK!
5152 write -P0xaa 0x0010000 0x30000
5154 write -P0xbb 0x00d8000 0x10000
5156 write -P0xcc 0x2028000 0x10000
5158 write -P0xdd 0x3fc0000 0x10000
5166 "granularity": 65536,
5168 "persistent": false,
5176 = Checking Bitmap bitmap0 =
5177 expecting 12 dirty sectors; have 12. OK!
5179 --- Reference Backup #2 ---
5182 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5186 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5189 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
5191 {"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5193 --- Test Backup #2 ---
5196 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5200 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5203 {"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "backup_2", "sync": "bitmap", "target": "backup_target_2"}}
5205 {"execute": "job-finalize", "arguments": {"id": "backup_2"}}
5207 {"data": {"id": "backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5208 {"data": {"device": "backup_2", "len": 786432, "offset": 786432, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
5215 "granularity": 65536,
5217 "persistent": false,
5225 = Checking Bitmap bitmap0 =
5226 expecting 0 dirty sectors; have 0. OK!
5230 {"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
5238 --- Verification ---
5240 qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
5241 qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5242 qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
5245 === API failure tests ===
5247 --- Preparing image & VM ---
5249 {"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
5251 {"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0"}}
5255 {"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
5259 {"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
5263 {"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
5266 -- Testing invalid QMP commands --
5268 -- Sync mode incremental tests --
5270 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5271 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5273 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5274 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5276 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5277 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5279 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5280 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'incremental' sync mode"}}
5282 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5283 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5285 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5286 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5288 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5289 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5291 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5292 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5294 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5295 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5297 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "incremental", "target": "backup_target"}}
5298 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be 'on-success' when using sync mode 'incremental'"}}
5300 -- Sync mode bitmap tests --
5302 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5303 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5305 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5306 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5308 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5309 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5311 {"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5312 {"error": {"class": "GenericError", "desc": "must provide a valid bitmap name for 'bitmap' sync mode"}}
5314 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5315 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5317 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5318 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5320 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5321 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5323 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5324 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5326 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "job-id": "api_job", "sync": "bitmap", "target": "backup_target"}}
5327 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5329 -- Sync mode full tests --
5331 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5332 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5334 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5335 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5337 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5338 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5340 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5341 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5343 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5344 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5346 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5347 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5349 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5350 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5352 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5353 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'full'"}}
5355 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "job-id": "api_job", "sync": "full", "target": "backup_target"}}
5356 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5358 -- Sync mode top tests --
5360 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5361 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5363 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5364 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5366 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5367 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5369 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5370 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5372 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5373 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5375 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5376 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5378 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5379 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5381 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5382 {"error": {"class": "GenericError", "desc": "Bitmap sync mode 'never' has no meaningful effect when combined with sync mode 'top'"}}
5384 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "job-id": "api_job", "sync": "top", "target": "backup_target"}}
5385 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}
5387 -- Sync mode none tests --
5389 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5390 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5392 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5393 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5395 {"execute": "blockdev-backup", "arguments": {"bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5396 {"error": {"class": "GenericError", "desc": "Cannot specify bitmap sync mode without a bitmap"}}
5398 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5399 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5401 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5402 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5404 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5405 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5407 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap404", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5408 {"error": {"class": "GenericError", "desc": "Bitmap 'bitmap404' could not be found"}}
5410 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5411 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5413 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5414 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5416 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5417 {"error": {"class": "GenericError", "desc": "sync mode 'none' does not produce meaningful bitmap outputs"}}
5419 {"execute": "blockdev-backup", "arguments": {"bitmap": "bitmap0", "device": "drive0", "job-id": "api_job", "sync": "none", "target": "backup_target"}}
5420 {"error": {"class": "GenericError", "desc": "Bitmap sync mode must be given when providing a bitmap"}}