blobstore: don't ignore bserror

If IO fail e.g. during hotremove error shouldn't be ignored as this will
trigger operations (like crc checking) that shouldn't be done. Also
false error messages are printed.

Change-Id: Ie023ddcd9bdba2378e69808302ff9978497c7852
Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/440889
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Pawel Wodkowski 2019-01-16 15:19:54 +01:00 committed by Jim Harris
parent 01455bb15b
commit 53bb2cc3bc

View File

@ -934,6 +934,15 @@ _spdk_blob_load_cpl(spdk_bs_sequence_t *seq, void *cb_arg, int bserrno)
int rc;
uint32_t crc;
if (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);
free(ctx);
return;
}
page = &ctx->pages[ctx->num_pages - 1];
crc = _spdk_blob_md_page_calc_crc(page);
if (crc != page->crc) {
@ -2600,6 +2609,11 @@ _spdk_bs_write_used_md(spdk_bs_sequence_t *seq, void *arg, spdk_bs_sequence_cpl
struct spdk_bs_load_ctx *ctx = arg;
uint64_t mask_size, lba, lba_count;
if (seq->bserrno) {
_spdk_bs_load_ctx_fail(seq, ctx, seq->bserrno);
return;
}
mask_size = ctx->super->used_page_mask_len * SPDK_BS_PAGE_SIZE;
ctx->mask = spdk_dma_zmalloc(mask_size, 0x1000, NULL);
if (!ctx->mask) {