/* 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]));
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;
return 0;
err:
- free(spr_info->validity_dist);
+ free(validity_dist);
free(spr_info->invalid_pct);
return -ENOMEM;
}
if (!info)
return;
- free(info->validity_dist);
free(info->invalid_pct);
free(info->invalid_buf);
free(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;