diff --git a/lib/blob/blobstore.c b/lib/blob/blobstore.c index 07e82fae9..38ce0fdde 100644 --- a/lib/blob/blobstore.c +++ b/lib/blob/blobstore.c @@ -1428,7 +1428,7 @@ _spdk_blob_resize(struct spdk_blob *blob, uint64_t sz) } static void -_spdk_blob_persist_start(struct spdk_blob_persist_ctx *ctx) +_spdk_blob_persist_generate_new_md(struct spdk_blob_persist_ctx *ctx) { spdk_bs_sequence_t *seq = ctx->seq; struct spdk_blob *blob = ctx->blob; @@ -1438,16 +1438,6 @@ _spdk_blob_persist_start(struct spdk_blob_persist_ctx *ctx) void *tmp; int rc; - if (blob->active.num_pages == 0) { - /* This is the signal that the blob should be deleted. - * Immediately jump to the clean up routine. */ - assert(blob->clean.num_pages > 0); - blob->state = SPDK_BLOB_STATE_CLEAN; - _spdk_blob_persist_zero_pages(seq, ctx, 0); - return; - - } - /* Generate the new metadata */ rc = _spdk_blob_serialize(blob, &ctx->pages, &blob->active.num_pages); if (rc < 0) { @@ -1497,6 +1487,25 @@ _spdk_blob_persist_start(struct spdk_blob_persist_ctx *ctx) _spdk_blob_persist_write_page_chain(seq, ctx, 0); } +static void +_spdk_blob_persist_start(struct spdk_blob_persist_ctx *ctx) +{ + spdk_bs_sequence_t *seq = ctx->seq; + struct spdk_blob *blob = ctx->blob; + + if (blob->active.num_pages == 0) { + /* This is the signal that the blob should be deleted. + * Immediately jump to the clean up routine. */ + assert(blob->clean.num_pages > 0); + blob->state = SPDK_BLOB_STATE_CLEAN; + _spdk_blob_persist_zero_pages(seq, ctx, 0); + return; + + } + + _spdk_blob_persist_generate_new_md(ctx); +} + static void _spdk_blob_persist_dirty_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno) {