Parallels image file can be corrupted this way: two guest memory areas refer to the same host memory area (duplicated offsets in BAT). qemu-img check copies data from duplicated cluster to the new cluster and writes new corresponding offset to BAT instead of duplicated one.
Test 314 uses sample corrupted image parallels-2-duplicated-cluster.bz2. Reading from duplicated offset and from original offset returns the same data. After repairing changing either of these blocks of data does not affect another one. Natalia Kuzmina (3): qemu-img check: fixing duplicated clusters for parallels format iotests: 314 test on duplicated clusters (parallels format) docs: parallels image format supports consistency checks block/parallels.c | 66 ++++++++++++- docs/tools/qemu-img.rst | 2 +- tests/qemu-iotests/314 | 88 ++++++++++++++++++ tests/qemu-iotests/314.out | 36 +++++++ .../parallels-2-duplicated-cluster.bz2 | Bin 0 -> 148 bytes 5 files changed, 189 insertions(+), 3 deletions(-) create mode 100755 tests/qemu-iotests/314 create mode 100644 tests/qemu-iotests/314.out create mode 100644 tests/qemu-iotests/sample_images/parallels-2-duplicated-cluster.bz2 -- 2.25.1