Commit 8ac0f15f335 accidently broke the COW of non changed areas of newly allocated clusters, when the write spans multiple clusters, and needs COW both prior and after the write. This results in 'after' COW area being encrypted with wrong sector address, which render it corrupted.
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1745922 CC: qemu-stable <qemu-sta...@nongnu.org> V2: grammar, spelling and code style fixes. V3: more fixes after the review. V4: addressed review comments from Max Reitz, and futher refactored the qcow2_co_encrypt to just take full host and guest offset which simplifies everything. V5: reworked the patches so one of them fixes the bug only and other one is just refactoring V6: removed do_perform_cow_encrypt Best regards, Maxim Levitsky Maxim Levitsky (3): Fix qcow2+luks corruption introduced by commit 8ac0f15f335 block/qcow2: refactor threaded encryption code qemu-iotests: Add test for bz #1745922 block/qcow2-cluster.c | 34 ++++---------- block/qcow2-threads.c | 81 +++++++++++++++++++++++++++------ block/qcow2.c | 5 ++- block/qcow2.h | 8 ++-- tests/qemu-iotests/263 | 91 ++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/263.out | 40 +++++++++++++++++ tests/qemu-iotests/group | 1 + 7 files changed, 215 insertions(+), 45 deletions(-) create mode 100755 tests/qemu-iotests/263 create mode 100644 tests/qemu-iotests/263.out -- 2.17.2