sprandom: drop validity_dist after use
authorTomas Winkler <tomas.winkler@sandisk.com>
Thu, 28 Aug 2025 06:36:35 +0000 (09:36 +0300)
committerTomas Winkler <tomas.winkler@sandisk.com>
Sun, 31 Aug 2025 08:32:48 +0000 (11:32 +0300)
The validity_dist buffer is only needed to compute the invalid_pct
array. Once that is done, we can free it instead of keeping it
around unnecessarily.

Signed-off-by: Tomas Winkler <tomas.winkler@sandisk.com>
sprandom.c
sprandom.h

index 2c37a740612b3e10461a31accf49ef3adbc5b106..05e8c88a62400e384a7ea61311ee140d7cca2da2 100644 (file)
@@ -590,9 +590,6 @@ static int sprandom_setup(struct sprandom_info *spr_info, uint64_t logical_size,
        /* Initialize validity_distribution */
        print_d_array("validity resampled:", validity_dist, spr_info->num_regions);
 
-       spr_info->validity_dist = validity_dist;
-       total_alloc += spr_info->num_regions * sizeof(spr_info->validity_dist[0]);
-
        /* Precompute invalidity percentage array */
        spr_info->invalid_pct = calloc(spr_info->num_regions,
                                       sizeof(spr_info->invalid_pct[0]));
@@ -605,6 +602,8 @@ static int sprandom_setup(struct sprandom_info *spr_info, uint64_t logical_size,
                double inv = (1.0 - validity_dist[i]) * (double)PCT_PRECISION;
                spr_info->invalid_pct[i] = (int)round(inv);
        }
+       free(validity_dist);
+       validity_dist = NULL;
 
        region_sz = physical_size / spr_info->num_regions;
        region_write_count = region_sz / align_bs;
@@ -644,7 +643,7 @@ static int sprandom_setup(struct sprandom_info *spr_info, uint64_t logical_size,
 
        return 0;
 err:
-       free(spr_info->validity_dist);
+       free(validity_dist);
        free(spr_info->invalid_pct);
        return -ENOMEM;
 }
@@ -830,7 +829,6 @@ void sprandom_free(struct sprandom_info *info)
        if (!info)
                return;
 
-       free(info->validity_dist);
        free(info->invalid_pct);
        free(info->invalid_buf);
        free(info);
index ea8b829dd5ecb3dc24a898228967c17b50017067..175df8f592c57053072e3c305029a589ddd04b43 100644 (file)
@@ -33,12 +33,11 @@ struct sprandom_info {
        uint64_t  region_sz;
        uint32_t  num_regions;
 
-       double    *validity_dist;
        uint32_t  *invalid_pct;
 
        /* Invalidation list*/
        struct pc_buf *invalid_buf;
-       uint64_t  invalid_capacity;
+       uint64_t invalid_capacity;
        size_t   invalid_count[2];
        uint32_t current_region;
        uint32_t curr_phase;