Message ID | 20231228101232.372142-5-alexander.ivanov@virtuozzo.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | parallels: Add full dirty bitmap support | expand |
On 12/28/23 11:12, Alexander Ivanov wrote: > There is no necessity to search to the end of the bitmap. Limit the search > area as cluster_index + count. > > Add cluster_end variable to avoid its calculation in a few places. > > Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com> > --- > block/parallels.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/block/parallels.c b/block/parallels.c > index ae524f1820..4470519656 100644 > --- a/block/parallels.c > +++ b/block/parallels.c > @@ -182,13 +182,14 @@ int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap, > uint32_t bitmap_size, int64_t off, uint32_t count) > { > BDRVParallelsState *s = bs->opaque; > - uint32_t cluster_index = host_cluster_index(s, off); > + uint32_t cluster_end, cluster_index = host_cluster_index(s, off); > unsigned long next_used; > - if (cluster_index + count > bitmap_size) { > + cluster_end = cluster_index + count; > + if (cluster_end > bitmap_size) { > return -E2BIG; > } > - next_used = find_next_bit(bitmap, bitmap_size, cluster_index); > - if (next_used < cluster_index + count) { > + next_used = find_next_bit(bitmap, cluster_end, cluster_index); > + if (next_used < cluster_end) { > return -EBUSY; > } > bitmap_set(bitmap, cluster_index, count); Reviewed-by: Denis V. Lunev <den@openvz.org>
diff --git a/block/parallels.c b/block/parallels.c index ae524f1820..4470519656 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -182,13 +182,14 @@ int parallels_mark_used(BlockDriverState *bs, unsigned long *bitmap, uint32_t bitmap_size, int64_t off, uint32_t count) { BDRVParallelsState *s = bs->opaque; - uint32_t cluster_index = host_cluster_index(s, off); + uint32_t cluster_end, cluster_index = host_cluster_index(s, off); unsigned long next_used; - if (cluster_index + count > bitmap_size) { + cluster_end = cluster_index + count; + if (cluster_end > bitmap_size) { return -E2BIG; } - next_used = find_next_bit(bitmap, bitmap_size, cluster_index); - if (next_used < cluster_index + count) { + next_used = find_next_bit(bitmap, cluster_end, cluster_index); + if (next_used < cluster_end) { return -EBUSY; } bitmap_set(bitmap, cluster_index, count);
There is no necessity to search to the end of the bitmap. Limit the search area as cluster_index + count. Add cluster_end variable to avoid its calculation in a few places. Signed-off-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com> --- block/parallels.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)