On Thu, Apr 19, 2012 at 05:14:20PM -0300, Marcelo Tosatti wrote: > > There is one intended change in functionality in this patch, which is > > that it allocates new clusters even when it could satisfy the first part > > of the request with already allocated clusters. In order to check if > > there is a problem with this scenario, the following patch should revert > > to the old behaviour: > > > > --- a/block/qcow2-cluster.c > > +++ b/block/qcow2-cluster.c > > @@ -847,7 +847,7 @@ again: > > keep_clusters = count_contiguous_clusters(nb_clusters, > > s->cluster_size, > > &l2_table[l2_index], > > 0, 0); > > assert(keep_clusters <= nb_clusters); > > - nb_clusters -= keep_clusters; > > + nb_clusters = 0; > > } else { > > /* For the moment, overwrite compressed clusters one by one */ > > if (cluster_offset & QCOW_OFLAG_COMPRESSED) { > > > > The rest is meant to be a functionally equivalent rewrite of the old > > code that was required in order to allow this change. > > Testing.
Corruption gone with patch above.