On Fri, Dec 23, 2016 at 05:28:45PM +0300, Vladimir Sementsov-Ogievskiy wrote: > +/* init copy_bitmap from sync_bitmap */ > +static void backup_incremental_init_copy_bitmap(BackupBlockJob *job) > +{ > + int64_t sector; > + BdrvDirtyBitmapIter *dbi; > + uint32_t sect_gran = > + bdrv_dirty_bitmap_granularity(job->sync_bitmap) >> BDRV_SECTOR_BITS; > + int64_t sz = bdrv_dirty_bitmap_size(job->sync_bitmap); > + int64_t sectors_per_cluster = cluster_size_sectors(job); > + uint32_t cl_gran = MAX(1, sect_gran / sectors_per_cluster); > + > + dbi = bdrv_dirty_iter_new(job->sync_bitmap, 0); > + while ((sector = bdrv_dirty_iter_next(dbi)) != -1) { > + int64_t cluster = sector / sectors_per_cluster; > + int64_t next_sector = (cluster + cl_gran) * sectors_per_cluster; > + > + hbitmap_set(job->copy_bitmap, cluster, cl_gran); > + > + if (next_sector >= sz) { > + break; > + } > + > + bdrv_set_dirty_iter(dbi, (cluster + cl_gran) * sectors_per_cluster);
Simpler and clearer: bdrv_set_dirty_iter(dbi, next_sector);
signature.asc
Description: PGP signature