From 048f25379b30112c04759b9051ce2630c16f0ba1 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Mon, 25 Jan 2021 13:12:08 -0600 Subject: [PATCH] Check dirty status in case of metadata mismatch Signed-off-by: Adam Rutkowski --- casadm/cas_lib.c | 12 +----------- modules/cas_cache/layer_cache_management.c | 9 +++------ 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/casadm/cas_lib.c b/casadm/cas_lib.c index 88dbbeb..a6b0c8e 100644 --- a/casadm/cas_lib.c +++ b/casadm/cas_lib.c @@ -2988,17 +2988,7 @@ int zero_md(const char *cache_device, bool force) return FAILURE; } - if (!cmd_info.metadata_compatible) { - if (!force) { - cas_printf(LOG_ERR, "Unable to determine whether cache contains dirty data due to metadata mismatch.\n" - "Clearing metadata might result in loss of dirty data. In order to inspect cache content\n" - "please load cache instance using matching OpenCAS version. Alternatively, if you wish to clear\n" - "metadata anyway, please use '--force' option.\n"); - return FAILURE; - } else { - cas_printf(LOG_WARNING, "Clearing metadata with unknown version - potential loss of dirty data.\n"); - } - } else if (!cmd_info.clean_shutdown) { + if (!cmd_info.clean_shutdown) { if (!force) { cas_printf(LOG_ERR, "Cache instance did not shut down cleanly. It might contain dirty data. \n" "Clearing metadata might result in loss of dirty data. Please recover cache instance\n" diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index 1f12432..60134cf 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -1016,15 +1016,12 @@ static void cache_mngt_metadata_probe_end(void *priv, int error, cmd_info->is_cache_device = false; cmd_info->metadata_compatible = false; *context->result = 0; - } else if (error == -OCF_ERR_METADATA_VER) { + } else if (error == -OCF_ERR_METADATA_VER || error == 0) { cmd_info->is_cache_device = true; - cmd_info->metadata_compatible = false; - *context->result = 0; - } else if (error == 0) { - cmd_info->is_cache_device = true; - cmd_info->metadata_compatible = true; + cmd_info->metadata_compatible = !error; cmd_info->clean_shutdown = status->clean_shutdown; cmd_info->cache_dirty = status->cache_dirty; + *context->result = 0; } complete(&context->cmpl);