Message ID | 20191120140319.1505-1-kwolf@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | block: Fix resize (extending) of short overlays | expand |
20.11.2019 17:03, Kevin Wolf wrote: > 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. Note, that committing to base should still be broken after these series, and is fixed in my "[PATCH 0/4] fix & merge block_status_above and is_allocated_above". I think, I'll post a 5/4 patch, to add this case to your new test. > > 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 >