blob: allow _spdk_bs_recover to operate as a sequence completion

This prepares for a future change where we need to use the
recovery path when loading pre-v3 on-disk formats, since the
older disk formats do not save a blobid mask.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ia94d56450202f81373c3de94237eca2dfd96526c

Reviewed-on: https://review.gerrithub.io/391694
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
This commit is contained in:
Jim Harris 2017-12-13 09:33:43 -07:00
parent ac1aa04ba7
commit d8022e1357

View File

@ -1943,11 +1943,16 @@ _spdk_bs_load_replay_md(spdk_bs_sequence_t *seq, void *cb_arg)
} }
static void static void
_spdk_bs_recover(spdk_bs_sequence_t *seq, void *cb_arg) _spdk_bs_recover(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
{ {
struct spdk_bs_load_ctx *ctx = cb_arg; struct spdk_bs_load_ctx *ctx = cb_arg;
int rc; int rc;
if (bserrno != 0) {
_spdk_bs_load_ctx_fail(seq, ctx, -EIO);
return;
}
rc = spdk_bit_array_resize(&ctx->bs->used_md_pages, ctx->super->md_len); rc = spdk_bit_array_resize(&ctx->bs->used_md_pages, ctx->super->md_len);
if (rc < 0) { if (rc < 0) {
_spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM); _spdk_bs_load_ctx_fail(seq, ctx, -ENOMEM);
@ -2016,7 +2021,7 @@ _spdk_bs_load_super_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
ctx->super->clean = 0; ctx->super->clean = 0;
_spdk_bs_write_super(seq, ctx->bs, ctx->super, _spdk_bs_load_write_super_cpl, ctx); _spdk_bs_write_super(seq, ctx->bs, ctx->super, _spdk_bs_load_write_super_cpl, ctx);
} else { } else {
_spdk_bs_recover(seq, ctx); _spdk_bs_recover(seq, ctx, 0);
} }
} }