On Fri, Apr 20, 2012 at 9:24 AM, Kevin Wolf <kw...@redhat.com> wrote: > Am 19.04.2012 23:18, schrieb Marcelo Tosatti: >> 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. > > Okay, so something must be wrong only with the new code paths, which > makes things a bit easier. I'll have another closer look. Stefan, can > you re-review 250196f1 as well?
I'm taking a look. Stefan