Commit 530f4812 authored by Darek Stojaczyk's avatar Darek Stojaczyk Committed by Jim Harris
Browse files

blobstore: switch to spdk_*malloc().



spdk_dma_*malloc() is about to be deprecated.

Change-Id: I0da485ec68329ee9f819cf6dfdb8744c5993e6f2
Signed-off-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448171


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 38902a5a
Loading
Loading
Loading
Loading
+77 −69
Original line number Diff line number Diff line
@@ -595,16 +595,14 @@ _spdk_blob_serialize_add_page(const struct spdk_blob *blob,
	if (*page_count == 0) {
		assert(*pages == NULL);
		*page_count = 1;
		*pages = spdk_dma_malloc(SPDK_BS_PAGE_SIZE,
					 SPDK_BS_PAGE_SIZE,
					 NULL);
		*pages = spdk_malloc(SPDK_BS_PAGE_SIZE, SPDK_BS_PAGE_SIZE,
				     NULL, SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	} else {
		assert(*pages != NULL);
		(*page_count)++;
		*pages = spdk_dma_realloc(*pages,
		*pages = spdk_realloc(*pages,
				      SPDK_BS_PAGE_SIZE * (*page_count),
					  SPDK_BS_PAGE_SIZE,
					  NULL);
				      SPDK_BS_PAGE_SIZE);
	}

	if (*pages == NULL) {
@@ -764,7 +762,7 @@ _spdk_blob_serialize_xattrs(const struct spdk_blob *blob,
			rc = _spdk_blob_serialize_add_page(blob, pages, page_count,
							   &cur_page);
			if (rc < 0) {
				spdk_dma_free(*pages);
				spdk_free(*pages);
				*pages = NULL;
				*page_count = 0;
				return rc;
@@ -780,7 +778,7 @@ _spdk_blob_serialize_xattrs(const struct spdk_blob *blob,
							&required_sz, internal);

			if (rc < 0) {
				spdk_dma_free(*pages);
				spdk_free(*pages);
				*pages = NULL;
				*page_count = 0;
				return rc;
@@ -897,7 +895,7 @@ _spdk_blob_load_final(void *cb_arg, int bserrno)
	ctx->cb_fn(ctx->seq, ctx->cb_arg, bserrno);

	/* Free the memory */
	spdk_dma_free(ctx->pages);
	spdk_free(ctx->pages);
	free(ctx);
}

@@ -925,7 +923,7 @@ error:
	SPDK_ERRLOG("Snapshot fail\n");
	_spdk_blob_free(blob);
	ctx->cb_fn(ctx->seq, NULL, bserrno);
	spdk_dma_free(ctx->pages);
	spdk_free(ctx->pages);
	free(ctx);
}

@@ -944,7 +942,7 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
		SPDK_ERRLOG("Metadata page read failed: %d\n", bserrno);
		_spdk_blob_free(blob);
		ctx->cb_fn(seq, NULL, bserrno);
		spdk_dma_free(ctx->pages);
		spdk_free(ctx->pages);
		free(ctx);
		return;
	}
@@ -955,7 +953,7 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
		SPDK_ERRLOG("Metadata page %d crc mismatch\n", ctx->num_pages);
		_spdk_blob_free(blob);
		ctx->cb_fn(seq, NULL, -EINVAL);
		spdk_dma_free(ctx->pages);
		spdk_free(ctx->pages);
		free(ctx);
		return;
	}
@@ -969,8 +967,8 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)

		/* Read the next page */
		ctx->num_pages++;
		ctx->pages = spdk_dma_realloc(ctx->pages, (sizeof(*page) * ctx->num_pages),
					      sizeof(*page), NULL);
		ctx->pages = spdk_realloc(ctx->pages, (sizeof(*page) * ctx->num_pages),
					  sizeof(*page));
		if (ctx->pages == NULL) {
			ctx->cb_fn(seq, ctx->cb_arg, -ENOMEM);
			free(ctx);
@@ -989,7 +987,7 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
	if (rc) {
		_spdk_blob_free(blob);
		ctx->cb_fn(seq, NULL, rc);
		spdk_dma_free(ctx->pages);
		spdk_free(ctx->pages);
		free(ctx);
		return;
	}
@@ -1002,7 +1000,7 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
			if (len != sizeof(spdk_blob_id)) {
				_spdk_blob_free(blob);
				ctx->cb_fn(seq, NULL, -EINVAL);
				spdk_dma_free(ctx->pages);
				spdk_free(ctx->pages);
				free(ctx);
				return;
			}
@@ -1043,8 +1041,7 @@ _spdk_blob_load(spdk_bs_sequence_t *seq, struct spdk_blob *blob,
	}

	ctx->blob = blob;
	ctx->pages = spdk_dma_realloc(ctx->pages, SPDK_BS_PAGE_SIZE,
				      SPDK_BS_PAGE_SIZE, NULL);
	ctx->pages = spdk_realloc(ctx->pages, SPDK_BS_PAGE_SIZE, SPDK_BS_PAGE_SIZE);
	if (!ctx->pages) {
		free(ctx);
		cb_fn(seq, cb_arg, -ENOMEM);
@@ -1104,7 +1101,7 @@ _spdk_blob_persist_complete(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
	ctx->cb_fn(seq, ctx->cb_arg, bserrno);

	/* Free the memory */
	spdk_dma_free(ctx->pages);
	spdk_free(ctx->pages);
	free(ctx);
}

@@ -1474,7 +1471,7 @@ _spdk_blob_persist_dirty_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)

	ctx->blob->bs->clean = 0;

	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);

	_spdk_blob_persist_start(ctx);
}
@@ -1523,7 +1520,8 @@ _spdk_blob_persist(spdk_bs_sequence_t *seq, struct spdk_blob *blob,
	ctx->cb_arg = cb_arg;

	if (blob->bs->clean) {
		ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
		ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
					  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
		if (!ctx->super) {
			cb_fn(seq, cb_arg, -ENOMEM);
			free(ctx);
@@ -1567,7 +1565,7 @@ _spdk_blob_allocate_and_copy_cluster_cpl(void *cb_arg, int bserrno)
		}
	}

	spdk_dma_free(ctx->buf);
	spdk_free(ctx->buf);
	free(ctx);
}

@@ -1670,7 +1668,8 @@ _spdk_bs_allocate_and_copy_cluster(struct spdk_blob *blob,
	ctx->page = cluster_start_page;

	if (blob->parent_id != SPDK_BLOBID_INVALID) {
		ctx->buf = spdk_dma_malloc(blob->bs->cluster_sz, blob->back_bs_dev->blocklen, NULL);
		ctx->buf = spdk_malloc(blob->bs->cluster_sz, blob->back_bs_dev->blocklen,
				       NULL, SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
		if (!ctx->buf) {
			SPDK_ERRLOG("DMA allocation for cluster of size = %" PRIu32 " failed.\n",
				    blob->bs->cluster_sz);
@@ -1682,7 +1681,7 @@ _spdk_bs_allocate_and_copy_cluster(struct spdk_blob *blob,

	rc = _spdk_bs_allocate_cluster(blob, cluster_number, &ctx->new_cluster, false);
	if (rc != 0) {
		spdk_dma_free(ctx->buf);
		spdk_free(ctx->buf);
		free(ctx);
		spdk_bs_user_op_abort(op);
		return;
@@ -1695,7 +1694,7 @@ _spdk_bs_allocate_and_copy_cluster(struct spdk_blob *blob,
	ctx->seq = spdk_bs_sequence_start(_ch, &cpl);
	if (!ctx->seq) {
		_spdk_bs_release_cluster(blob->bs, ctx->new_cluster);
		spdk_dma_free(ctx->buf);
		spdk_free(ctx->buf);
		free(ctx);
		spdk_bs_user_op_abort(op);
		return;
@@ -2535,7 +2534,7 @@ _spdk_bs_load_ctx_fail(spdk_bs_sequence_t *seq, struct spdk_bs_load_ctx *ctx, in
{
	assert(bserrno != 0);

	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);
	spdk_bs_sequence_finish(seq, bserrno);
	_spdk_bs_free(ctx->bs);
	free(ctx);
@@ -2597,7 +2596,8 @@ _spdk_bs_write_used_clusters(spdk_bs_sequence_t *seq, void *arg, spdk_bs_sequenc

	/* Write out the used clusters mask */
	mask_size = ctx->super->used_cluster_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL,
				 SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2625,7 +2625,8 @@ _spdk_bs_write_used_md(spdk_bs_sequence_t *seq, void *arg, spdk_bs_sequence_cpl
	}

	mask_size = ctx->super->used_page_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL,
				 SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2657,7 +2658,8 @@ _spdk_bs_write_used_blobids(spdk_bs_sequence_t *seq, void *arg, spdk_bs_sequence
	}

	mask_size = ctx->super->used_blobid_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL, SPDK_ENV_SOCKET_ID_ANY,
				 SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2701,8 +2703,8 @@ _spdk_bs_load_iter(void *arg, struct spdk_blob *blob, int bserrno)

	ctx->iter_cb_fn = NULL;

	spdk_dma_free(ctx->super);
	spdk_dma_free(ctx->mask);
	spdk_free(ctx->super);
	spdk_free(ctx->mask);
	spdk_bs_sequence_finish(ctx->seq, bserrno);
	free(ctx);
}
@@ -2733,7 +2735,7 @@ _spdk_bs_load_used_blobids_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrn

	rc = _spdk_bs_load_mask(&ctx->bs->used_blobids, ctx->mask);
	if (rc < 0) {
		spdk_dma_free(ctx->mask);
		spdk_free(ctx->mask);
		_spdk_bs_load_ctx_fail(seq, ctx, rc);
		return;
	}
@@ -2758,7 +2760,7 @@ _spdk_bs_load_used_clusters_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr

	rc = _spdk_bs_load_mask(&ctx->bs->used_clusters, ctx->mask);
	if (rc < 0) {
		spdk_dma_free(ctx->mask);
		spdk_free(ctx->mask);
		_spdk_bs_load_ctx_fail(seq, ctx, rc);
		return;
	}
@@ -2766,11 +2768,12 @@ _spdk_bs_load_used_clusters_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
	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_free(ctx->mask);

	/* Read the used blobids mask */
	mask_size = ctx->super->used_blobid_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL, SPDK_ENV_SOCKET_ID_ANY,
				 SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2798,16 +2801,17 @@ _spdk_bs_load_used_pages_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)

	rc = _spdk_bs_load_mask(&ctx->bs->used_md_pages, ctx->mask);
	if (rc < 0) {
		spdk_dma_free(ctx->mask);
		spdk_free(ctx->mask);
		_spdk_bs_load_ctx_fail(seq, ctx, rc);
		return;
	}

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);

	/* Read the used clusters mask */
	mask_size = ctx->super->used_cluster_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL, SPDK_ENV_SOCKET_ID_ANY,
				 SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2826,7 +2830,8 @@ _spdk_bs_load_read_used_pages(spdk_bs_sequence_t *seq, void *cb_arg)

	/* Read the used pages mask */
	mask_size = ctx->super->used_page_mask_len * SPDK_BS_PAGE_SIZE;
	ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
	ctx->mask = spdk_zmalloc(mask_size, 0x1000, NULL,
				 SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->mask) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -2930,7 +2935,7 @@ _spdk_bs_load_write_used_blobids_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);
	ctx->mask = NULL;

	_spdk_bs_write_used_clusters(seq, cb_arg, _spdk_bs_load_write_used_clusters_cpl);
@@ -2941,7 +2946,7 @@ _spdk_bs_load_write_used_pages_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bs
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);
	ctx->mask = NULL;

	_spdk_bs_write_used_blobids(seq, cb_arg, _spdk_bs_load_write_used_blobids_cpl);
@@ -3001,7 +3006,7 @@ _spdk_bs_load_replay_md_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
		for (i = 0; i < num_md_clusters; i++) {
			_spdk_bs_claim_cluster(ctx->bs, i);
		}
		spdk_dma_free(ctx->page);
		spdk_free(ctx->page);
		_spdk_bs_load_write_used_md(seq, ctx, bserrno);
	}
}
@@ -3026,9 +3031,8 @@ _spdk_bs_load_replay_md(spdk_bs_sequence_t *seq, void *cb_arg)

	ctx->page_index = 0;
	ctx->cur_page = 0;
	ctx->page = spdk_dma_zmalloc(SPDK_BS_PAGE_SIZE,
				     SPDK_BS_PAGE_SIZE,
				     NULL);
	ctx->page = spdk_zmalloc(SPDK_BS_PAGE_SIZE, SPDK_BS_PAGE_SIZE,
				 NULL, SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->page) {
		_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
		return;
@@ -3193,7 +3197,8 @@ spdk_bs_load(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,
	ctx->iter_cb_arg = opts.iter_cb_arg;

	/* Allocate memory for the super block */
	ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
	ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
				  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->super) {
		free(ctx);
		_spdk_bs_free(bs);
@@ -3208,7 +3213,7 @@ spdk_bs_load(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,

	seq = spdk_bs_sequence_start(bs->md_channel, &cpl);
	if (!seq) {
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		_spdk_bs_free(bs);
		cb_fn(cb_arg, NULL, -ENOMEM);
@@ -3239,7 +3244,7 @@ struct spdk_bs_dump_ctx {
static void
_spdk_bs_dump_finish(spdk_bs_sequence_t *seq, struct spdk_bs_dump_ctx *ctx, int bserrno)
{
	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);

	/*
	 * We need to defer calling spdk_bs_call_cpl() until after
@@ -3361,7 +3366,7 @@ _spdk_bs_dump_read_md_page_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrn
	if (ctx->cur_page < ctx->super->md_len) {
		_spdk_bs_dump_read_md_page(seq, cb_arg);
	} else {
		spdk_dma_free(ctx->page);
		spdk_free(ctx->page);
		_spdk_bs_dump_finish(seq, ctx, 0);
	}
}
@@ -3415,9 +3420,8 @@ _spdk_bs_dump_super_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
	fprintf(ctx->fp, "Metadata Length: %" PRIu32 "\n", ctx->super->md_len);

	ctx->cur_page = 0;
	ctx->page = spdk_dma_zmalloc(SPDK_BS_PAGE_SIZE,
				     SPDK_BS_PAGE_SIZE,
				     NULL);
	ctx->page = spdk_zmalloc(SPDK_BS_PAGE_SIZE, SPDK_BS_PAGE_SIZE,
				 NULL, SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->page) {
		_spdk_bs_dump_finish(seq, ctx, -ENOMEM);
		return;
@@ -3459,7 +3463,8 @@ spdk_bs_dump(struct spdk_bs_dev *dev, FILE *fp, spdk_bs_dump_print_xattr print_x
	ctx->print_xattr_fn = print_xattr_fn;

	/* Allocate memory for the super block */
	ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
	ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
				  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->super) {
		free(ctx);
		_spdk_bs_free(bs);
@@ -3473,7 +3478,7 @@ spdk_bs_dump(struct spdk_bs_dev *dev, FILE *fp, spdk_bs_dump_print_xattr print_x

	seq = spdk_bs_sequence_start(bs->md_channel, &cpl);
	if (!seq) {
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		_spdk_bs_free(bs);
		cb_fn(cb_arg, -ENOMEM);
@@ -3500,7 +3505,7 @@ _spdk_bs_init_persist_super_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
{
	struct spdk_bs_init_ctx *ctx = cb_arg;

	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);
	free(ctx);

	spdk_bs_sequence_finish(seq, bserrno);
@@ -3597,7 +3602,8 @@ spdk_bs_init(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,
	ctx->bs = bs;

	/* Allocate memory for the super block */
	ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
	ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
				  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->super) {
		free(ctx);
		_spdk_bs_free(bs);
@@ -3664,7 +3670,7 @@ spdk_bs_init(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,
		SPDK_ERRLOG("Blobstore metadata cannot use more clusters than is available, "
			    "please decrease number of pages reserved for metadata "
			    "or increase cluster size.\n");
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		_spdk_bs_free(bs);
		cb_fn(cb_arg, NULL, -ENOMEM);
@@ -3684,7 +3690,7 @@ spdk_bs_init(struct spdk_bs_dev *dev, struct spdk_bs_opts *o,

	seq = spdk_bs_sequence_start(bs->md_channel, &cpl);
	if (!seq) {
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		_spdk_bs_free(bs);
		cb_fn(cb_arg, NULL, -ENOMEM);
@@ -3782,7 +3788,7 @@ _spdk_bs_unload_write_super_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserr
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);

	/*
	 * We need to defer calling spdk_bs_call_cpl() until after
@@ -3803,7 +3809,7 @@ _spdk_bs_unload_write_used_clusters_cpl(spdk_bs_sequence_t *seq, void *cb_arg, i
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);
	ctx->super->clean = 1;

	_spdk_bs_write_super(seq, ctx->bs, ctx->super, _spdk_bs_unload_write_super_cpl, ctx);
@@ -3814,7 +3820,7 @@ _spdk_bs_unload_write_used_blobids_cpl(spdk_bs_sequence_t *seq, void *cb_arg, in
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);
	ctx->mask = NULL;

	_spdk_bs_write_used_clusters(seq, cb_arg, _spdk_bs_unload_write_used_clusters_cpl);
@@ -3825,7 +3831,7 @@ _spdk_bs_unload_write_used_pages_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int
{
	struct spdk_bs_load_ctx	*ctx = cb_arg;

	spdk_dma_free(ctx->mask);
	spdk_free(ctx->mask);
	ctx->mask = NULL;

	_spdk_bs_write_used_blobids(seq, cb_arg, _spdk_bs_unload_write_used_blobids_cpl);
@@ -3860,7 +3866,8 @@ spdk_bs_unload(struct spdk_blob_store *bs, spdk_bs_op_complete cb_fn, void *cb_a

	ctx->bs = bs;

	ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
	ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
				  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->super) {
		free(ctx);
		cb_fn(cb_arg, -ENOMEM);
@@ -3873,7 +3880,7 @@ spdk_bs_unload(struct spdk_blob_store *bs, spdk_bs_op_complete cb_fn, void *cb_a

	seq = spdk_bs_sequence_start(bs->md_channel, &cpl);
	if (!seq) {
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		cb_fn(cb_arg, -ENOMEM);
		return;
@@ -3903,7 +3910,7 @@ _spdk_bs_set_super_write_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
		SPDK_ERRLOG("Unable to write to super block of blobstore\n");
	}

	spdk_dma_free(ctx->super);
	spdk_free(ctx->super);

	spdk_bs_sequence_finish(seq, bserrno);

@@ -3917,7 +3924,7 @@ _spdk_bs_set_super_read_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)

	if (bserrno != 0) {
		SPDK_ERRLOG("Unable to read super block of blobstore\n");
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		spdk_bs_sequence_finish(seq, bserrno);
		free(ctx);
		return;
@@ -3944,7 +3951,8 @@ spdk_bs_set_super(struct spdk_blob_store *bs, spdk_blob_id blobid,

	ctx->bs = bs;

	ctx->super = spdk_dma_zmalloc(sizeof(*ctx->super), 0x1000, NULL);
	ctx->super = spdk_zmalloc(sizeof(*ctx->super), 0x1000, NULL,
				  SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
	if (!ctx->super) {
		free(ctx);
		cb_fn(cb_arg, -ENOMEM);
@@ -3957,7 +3965,7 @@ spdk_bs_set_super(struct spdk_blob_store *bs, spdk_blob_id blobid,

	seq = spdk_bs_sequence_start(bs->md_channel, &cpl);
	if (!seq) {
		spdk_dma_free(ctx->super);
		spdk_free(ctx->super);
		free(ctx);
		cb_fn(cb_arg, -ENOMEM);
		return;