diff --git a/inc/ocf_err.h b/inc/ocf_err.h index a6116b4..53bc626 100644 --- a/inc/ocf_err.h +++ b/inc/ocf_err.h @@ -47,6 +47,9 @@ typedef enum { /** Metadata on the device doesn't match with metadata in DRAM */ OCF_ERR_SUPERBLOCK_MISMATCH, + /** Metadata checksum is not correct. Metadata is damaged */ + OCF_ERR_CRC_MISMATCH, + /** Invalid volume type */ OCF_ERR_INVAL_VOLUME_TYPE, diff --git a/src/metadata/metadata_segment.c b/src/metadata/metadata_segment.c index 86553aa..8a4599c 100644 --- a/src/metadata/metadata_segment.c +++ b/src/metadata/metadata_segment.c @@ -88,7 +88,7 @@ void ocf_metadata_check_crc(ocf_pipeline_t pipeline, ocf_cache_log(cache, log_err, "Loading %s ERROR, invalid checksum\n", ocf_metadata_segment_names[segment_id]); - OCF_PL_FINISH_RET(pipeline, -OCF_ERR_INVAL); + OCF_PL_FINISH_RET(pipeline, -OCF_ERR_CRC_MISMATCH); } ocf_pipeline_next(pipeline); diff --git a/src/mngt/ocf_mngt_cache.c b/src/mngt/ocf_mngt_cache.c index 39a335d..b5ee5a1 100644 --- a/src/mngt/ocf_mngt_cache.c +++ b/src/mngt/ocf_mngt_cache.c @@ -1547,8 +1547,7 @@ static void _ocf_mngt_load_superblock_complete(void *priv, int error) if (error) { ocf_cache_log(cache, log_err, "ERROR: Cannot load cache state\n"); - OCF_PL_FINISH_RET(context->pipeline, - -OCF_ERR_START_CACHE_FAIL); + OCF_PL_FINISH_RET(context->pipeline, error); } if (cache->conf_meta->cachelines != diff --git a/tests/functional/pyocf/types/shared.py b/tests/functional/pyocf/types/shared.py index 793b563..0093aec 100644 --- a/tests/functional/pyocf/types/shared.py +++ b/tests/functional/pyocf/types/shared.py @@ -23,6 +23,7 @@ class OcfErrorCode(IntEnum): OCF_ERR_NO_METADATA = auto() OCF_ERR_METADATA_FOUND = auto() OCF_ERR_SUPERBLOCK_MISMATCH = auto() + OCF_ERR_CRC_MISMATCH = auto() OCF_ERR_INVAL_VOLUME_TYPE = auto() OCF_ERR_UNKNOWN = auto() OCF_ERR_TOO_MANY_CACHES = auto()