Consider the following scenario where the overlay is shorter than its backing file:
base.qcow2: AAAAAAAA overlay.qcow2: BBBB When resizing (extending) overlay.qcow2, the new blocks should not stay unallocated and make the additional As from base.qcow2 visible like before this series, but zeros should be read. A similar case happens with the various variants of a commit job when an intermediate file is short (- for unallocated): base.qcow2: A-A-AAAA mid.qcow2: BB-B top.qcow2: C--C--C- After commit top.qcow2 to mid.qcow2, the following happens: mid.qcow2: CB-C00C0 (correct result) mid.qcow2: CB-C--C- (before this fix) Without the fix, blocks that previously read as zeros on top.qcow2 suddenly turn into A. Kevin Wolf (6): block: bdrv_co_do_pwrite_zeroes: 64 bit 'bytes' parameter block: truncate: Don't make backing file data visible iotests: Add qemu_io_log() iotests: Fix timeout in run_job() iotests: Support job-complete in run_job() iotests: Test committing to short backing file block/io.c | 31 ++++++- tests/qemu-iotests/274 | 131 +++++++++++++++++++++++++++++ tests/qemu-iotests/274.out | 150 ++++++++++++++++++++++++++++++++++ tests/qemu-iotests/group | 1 + tests/qemu-iotests/iotests.py | 11 ++- 5 files changed, 319 insertions(+), 5 deletions(-) create mode 100755 tests/qemu-iotests/274 create mode 100644 tests/qemu-iotests/274.out -- 2.20.1