blob: use bitarray function to count free clusters

Change-Id: I4830bcd2342551a6a02afd6e4551acbf463eb44c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/416256
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
Daniel Verkamp 2018-06-20 14:11:35 -07:00
parent 9d149a706b
commit a7b25a6770

View File

@ -2718,15 +2718,15 @@ _spdk_bs_load_used_clusters_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
return; return;
} }
ctx->bs->num_free_clusters = ctx->bs->total_clusters;
for (i = 0; i < ctx->mask->length; i++) { for (i = 0; i < ctx->mask->length; i++) {
if (ctx->mask->mask[i / 8] & (1U << (i % 8))) { if (ctx->mask->mask[i / 8] & (1U << (i % 8))) {
spdk_bit_array_set(ctx->bs->used_clusters, i); spdk_bit_array_set(ctx->bs->used_clusters, i);
assert(ctx->bs->num_free_clusters > 0);
ctx->bs->num_free_clusters--;
} }
} }
ctx->bs->num_free_clusters = spdk_bit_array_count_clear(ctx->bs->used_clusters);
assert(ctx->bs->num_free_clusters <= ctx->bs->total_clusters);
spdk_dma_free(ctx->mask); spdk_dma_free(ctx->mask);
/* Read the used blobids mask */ /* Read the used blobids mask */