----- Messaggio originale ----- > Da: "Dietmar Maurer" <diet...@proxmox.com> > A: "Paolo Bonzini" <pbonz...@redhat.com> > Cc: qemu-devel@nongnu.org > Inviato: Giovedì, 21 febbraio 2013 12:40:52 > Oggetto: RE: [PATCH v3 2/6] add basic backup support to block driver > > > > > I think you do. You're wasting time reading unallocated > > > > clusters > > > > and checking that they are zero. bdrv_is_allocated_above gives > > > > you > > > > the same information much more efficiently. > > > > > > I thought that just returns information if the data is allocated, > > > or > > > if data is on backing file? > > > > > > Or is data guaranteed to be zero if bdrv_is_allocated_above() > > > return 0? > > > > Oh, I need to pass NULL for base to get that information? > > 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)? BTW, any reason why BACKUP_BLOCKS_PER_CLUSTER is hardcoded and you're not using the cluster size from bdrv_get_info? Paolo