Il 21/02/2013 16:25, Dietmar Maurer ha scritto: >>> I just posted v5 of the patch. But I get a slow down of 15% if I use >>> bdrv_is_allocated_above. (tested with empty qcow2 files.) >> >> Strange, for an unallocated area bdrv_is_allocated_above and bdrv_read really >> do the same thing apart from writing the zeroes to the buffer. >> The code looks okay, does a profile say where the time is being spent? >> Or does the is_allocated_above ever trigger (are you using metadata >> preallocation)? > > Yes, I use metadata preallocation. But that does not explain why it gets > slower?
Because then this is not an empty qcow2 file, it is a full qcow2 file where reads are particularly cheap because they always hit holes. It is the worst case for this optimization, I think 15% is not wonderful but not particularly bad. >> BTW, any reason why BACKUP_BLOCKS_PER_CLUSTER is hardcoded and you're >> not using the cluster size from bdrv_get_info? > > A backup includes several block devices, and I want to have the same cluster > size > for all. It makes the code easier. Paolo