blob: e0775d4815b0e9dbb1d1d0d456791d1b43d3a3b4 [file] [log] [blame]
=== Bitmap Sync Mode never with simulated failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-cancel", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 655360,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 10 dirty sectors; have 10. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 983040,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 15 dirty sectors; have 15. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 983040,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 15 dirty sectors; have 15. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode never with intermediate failure ===
--- Preparing image & VM ---
{"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"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"return": ""}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
{"data": {"action": "report", "device": "bitmap_backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "error": "Input/output error", "len": 67108864, "offset": 66781184, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 917504,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 14 dirty sectors; have 14. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 917504,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 14 dirty sectors; have 14. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode never without failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 655360,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 10 dirty sectors; have 10. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 983040,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 15 dirty sectors; have 15. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "never", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 983040,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 15 dirty sectors; have 15. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode on-success with simulated failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-cancel", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 655360,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 10 dirty sectors; have 10. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 983040,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 15 dirty sectors; have 15. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode on-success with intermediate failure ===
--- Preparing image & VM ---
{"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"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"return": ""}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
{"data": {"action": "report", "device": "bitmap_backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "error": "Input/output error", "len": 67108864, "offset": 66781184, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 917504,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 14 dirty sectors; have 14. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode on-success without failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 458752,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 7 dirty sectors; have 7. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 786432,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 12 dirty sectors; have 12. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "on-success", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode always with simulated failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-cancel", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_CANCELLED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 458752,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 7 dirty sectors; have 7. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 786432,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 12 dirty sectors; have 12. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode always with intermediate failure ===
--- Preparing image & VM ---
{"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"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"return": ""}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
{"data": {"action": "report", "device": "bitmap_backup_1", "operation": "read"}, "event": "BLOCK_JOB_ERROR", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "error": "Input/output error", "len": 67108864, "offset": 66781184, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 327680,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 5 dirty sectors; have 5. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 851968,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 13 dirty sectors; have 13. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Mismatch, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
=== Bitmap Sync Mode always without failure ===
--- Preparing image & VM ---
{"execute": "blockdev-add", "arguments": {"driver": "qcow2", "file": {"driver": "file", "filename": "TEST_DIR/PID-img"}, "node-name": "drive0"}}
{"return": {}}
{"execute": "device_add", "arguments": {"drive": "drive0", "driver": "scsi-hd", "id": "device0", "share-rw": true}}
{"return": {}}
--- Write #0 ---
write -P0x49 0x0000000 0x10000
{"return": ""}
write -P0x6c 0x0100000 0x10000
{"return": ""}
write -P0x6f 0x2000000 0x10000
{"return": ""}
write -P0x76 0x3ff0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": []
}
}
--- Reference Backup #0 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_0", "sync": "full", "target": "ref_target_0"}}
{"return": {}}
{"data": {"device": "ref_backup_0", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Add Bitmap ---
{"execute": "block-dirty-bitmap-add", "arguments": {"granularity": 65536, "name": "bitmap0", "node": "drive0"}}
{"return": {}}
--- Write #1 ---
write -P0x65 0x0000000 0x10000
{"return": ""}
write -P0x77 0x00f8000 0x10000
{"return": ""}
write -P0x72 0x2008000 0x10000
{"return": ""}
write -P0x69 0x3fe0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
--- Reference Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_1", "sync": "full", "target": "ref_target_1"}}
{"return": {}}
{"data": {"device": "ref_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #1 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_1", "sync": "bitmap", "target": "bitmap_target_1"}}
{"return": {}}
--- Write #2 ---
write -P0x74 0x0010000 0x10000
{"return": ""}
write -P0x69 0x00e8000 0x10000
{"return": ""}
write -P0x6e 0x2018000 0x10000
{"return": ""}
write -P0x67 0x3fe0000 0x20000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"persistent": false,
"recording": false,
"status": "disabled"
},
{
"busy": false,
"count": 458752,
"granularity": 65536,
"persistent": false,
"recording": true,
"status": "active"
},
{
"busy": true,
"count": 393216,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "frozen"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 6 dirty sectors; have 6. OK!
= Checking Bitmap (anonymous) =
expecting 7 dirty sectors; have 7. OK!
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_1"}}
{"return": {}}
{"data": {"id": "bitmap_backup_1", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_1", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 458752,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 7 dirty sectors; have 7. OK!
--- Write #3 ---
write -P0xaa 0x0010000 0x30000
{"return": ""}
write -P0xbb 0x00d8000 0x10000
{"return": ""}
write -P0xcc 0x2028000 0x10000
{"return": ""}
write -P0xdd 0x3fc0000 0x10000
{"return": ""}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 786432,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 12 dirty sectors; have 12. OK!
--- Reference Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"device": "drive0", "job-id": "ref_backup_2", "sync": "full", "target": "ref_target_2"}}
{"return": {}}
{"data": {"device": "ref_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
--- Bitmap Backup #2 ---
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-file-job"}}
{"return": {}}
{}
{}
{"execute": "job-dismiss", "arguments": {"id": "bdc-fmt-job"}}
{"return": {}}
{}
{"execute": "blockdev-backup", "arguments": {"auto-finalize": false, "bitmap": "bitmap0", "bitmap-mode": "always", "device": "drive0", "job-id": "bitmap_backup_2", "sync": "bitmap", "target": "bitmap_target_2"}}
{"return": {}}
{"execute": "job-finalize", "arguments": {"id": "bitmap_backup_2"}}
{"return": {}}
{"data": {"id": "bitmap_backup_2", "type": "backup"}, "event": "BLOCK_JOB_PENDING", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"data": {"device": "bitmap_backup_2", "len": 67108864, "offset": 67108864, "speed": 0, "type": "backup"}, "event": "BLOCK_JOB_COMPLETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{
"bitmaps": {
"device0": [
{
"busy": false,
"count": 0,
"granularity": 65536,
"name": "bitmap0",
"persistent": false,
"recording": true,
"status": "active"
}
]
}
}
= Checking Bitmap bitmap0 =
expecting 0 dirty sectors; have 0. OK!
--- Cleanup ---
{"execute": "block-dirty-bitmap-remove", "arguments": {"name": "bitmap0", "node": "drive0"}}
{"return": {}}
{
"bitmaps": {
"device0": []
}
}
--- Verification ---
qemu_img compare "TEST_DIR/PID-bsync1" "TEST_DIR/PID-fbackup1" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-bsync2" "TEST_DIR/PID-fbackup2" ==> Identical, OK!
qemu_img compare "TEST_DIR/PID-img" "TEST_DIR/PID-fbackup2" ==> Identical, OK!