[PATCH v4 04/21] parallels: Limit search in parallels_mark_used to the last marked claster

Alexander Ivanov posted 21 patches 11 months ago
Maintainers: Stefan Hajnoczi <stefanha@redhat.com>, "Denis V. Lunev" <den@openvz.org>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
There is a newer version of this series
[PATCH v4 04/21] parallels: Limit search in parallels_mark_used to the last marked claster
Posted by Alexander Ivanov 11 months ago
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);
-- 
2.40.1
Re: [PATCH v4 04/21] parallels: Limit search in parallels_mark_used to the last marked claster
Posted by Denis V. Lunev 10 months, 2 weeks ago
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>