[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 0/2] qemu-img: Special post-backing convert hand
From: |
Max Reitz |
Subject: |
Re: [Qemu-block] [PATCH 0/2] qemu-img: Special post-backing convert handle |
Date: |
Fri, 1 Jun 2018 13:15:04 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 2018-05-01 18:57, Max Reitz wrote:
> This is the issue:
>
> $ qemu-img create -f qcow2 base.qcow2 512M
> Formatting 'base.qcow2', fmt=qcow2 size=536870912 cluster_size=65536
> lazy_refcounts=off refcount_bits=16
> $ qemu-img create -f qcow2 -b base.qcow2 source.qcow2 1G
> Formatting 'source.qcow2', fmt=qcow2 size=1073741824 backing_file=base.qcow2
> cluster_size=65536 lazy_refcounts=off refcount_bits=16
> $ qemu-img convert -O qcow2 -B base.qcow2 -o compat=0.10 \
> source.qcow2 target.qcow2
> $ qemu-img info target.qcow2
> image: target.qcow2
> file format: qcow2
> virtual size: 1.0G (1073741824 bytes)
> disk size: 512M <-------------------- this here
> cluster_size: 65536
> backing file: base.qcow2
> Format specific information:
> compat: 0.10
> refcount bits: 16
> $ qemu-img map target.qcow2
> Offset Length Mapped to File
> 0x20000000 0x20000000 0x50000 target.qcow2
>
> So qemu-img convert sees that source.qcow2 contains only zeroes past the
> end of base.qcow2 -- but that is not the backing file, so it will
> explicitly write zeroes to target.qcow2. But that file is compat=0.10,
> so it does not support efficient zero writes and will actually fill that
> area with real zeroes. Hence the mapping, hence the disk size.
>
> However, we don't need to write zeroes to an image when it is
> initialized to zeroes -- which the current qemu-img code says doesn't
> happen for target images with backing files. But it does happen when
> the target backing file is shorter than the target image, then the area
> past the end of the backing file may indeed read as zeroes and we don't
> need to write anything there.
>
> So the first patch in this series makes qemu-img convert detect that
> case and handle zeroes past the end of the backing file as "fall back to
> the backing file" (because that means zeroes, at least if unallocated
> areas read as zeroes (which I presume they have to for formats
> supporting backing files, but better be safe than sorry)), and the
> second adds an iotest.
>
>
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1527898
>
>
> Max Reitz (2):
> qemu-img: Special post-backing convert handling
> iotests: Test post-backing convert target behavior
>
> qemu-img.c | 26 +++++++++++++++++++++++++-
> tests/qemu-iotests/122 | 42 ++++++++++++++++++++++++++++++++++++++++++
> tests/qemu-iotests/122.out | 18 ++++++++++++++++++
> 3 files changed, 85 insertions(+), 1 deletion(-)
Applied to my block branch.
Max
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-block] [PATCH 0/2] qemu-img: Special post-backing convert handle,
Max Reitz <=