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