On 05/30/2016 06:58 AM, Pavel Butsykin wrote:

> 
> Sorry, but it seems this will never happen, because the second write
> will not pass this check:
> 
> uint64_t qcow2_alloc_compressed_cluster_offset(BlockDriverState *bs,
>                                                uint64_t offset,
>                                                int compressed_size)
> {
>     ...
>     /* Compression can't overwrite anything. Fail if the cluster was
> already
>      * allocated. */
>     cluster_offset = be64_to_cpu(l2_table[l2_index]);
>     if (cluster_offset & L2E_OFFSET_MASK) {
>         qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
>         return 0;
>     }
>    ...
> 
> As you can see we can't do the compressed write in the already allocated
> cluster.

Umm, doesn't that defeat the point of compression, if every compressed
cluster becomes the head of a new cluster?  The whole goal of
compression is to be able to fit multiple clusters within one.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to