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? Kevin