diff --git a/casadm/cas_lib.c b/casadm/cas_lib.c index 57f7ea3..88867f4 100644 --- a/casadm/cas_lib.c +++ b/casadm/cas_lib.c @@ -2894,7 +2894,7 @@ int check_cache_device(const char *device_path) fprintf(intermediate_file[1], TAG(TABLE_HEADER) "Is cache,Clean Shutdown,Cache dirty\n"); fprintf(intermediate_file[1], TAG(TABLE_ROW)); - if (cmd_info.is_cache_device) { + if (cmd_info.is_cache_device && cmd_info.metadata_compatible) { fprintf(intermediate_file[1], "yes,%s,%s\n", cmd_info.clean_shutdown ? "yes" : "no", cmd_info.cache_dirty ? "yes" : "no"); diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index cde4ad3..b6e4097 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -1012,11 +1012,17 @@ static void cache_mngt_metadata_probe_end(void *priv, int error, *context->result = error; - if (error == -OCF_ERR_NO_METADATA || error == -OCF_ERR_METADATA_VER) { + if (error == -OCF_ERR_NO_METADATA) { cmd_info->is_cache_device = false; + cmd_info->metadata_compatible = false; + *context->result = 0; + } else if (error == -OCF_ERR_METADATA_VER) { + 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->clean_shutdown = status->clean_shutdown; cmd_info->cache_dirty = status->cache_dirty; } diff --git a/modules/include/cas_ioctl_codes.h b/modules/include/cas_ioctl_codes.h index 923aecb..ad772ff 100644 --- a/modules/include/cas_ioctl_codes.h +++ b/modules/include/cas_ioctl_codes.h @@ -314,7 +314,12 @@ struct kcas_core_pool_remove { struct kcas_cache_check_device { char path_name[MAX_STR_LEN]; /**< path to a device */ - bool is_cache_device; + bool is_cache_device; /* OCF metadata detected */ + + /* following bool flags are defined is_cache_device == 1 */ + bool metadata_compatible; /* OCF metadata is in current version */ + + /* following bool flags are defined iff is_metadata_compatible == 1 */ bool clean_shutdown; bool cache_dirty; bool format_atomic;