From c1935b5c252a49f93ac992a550c88f1c381a9f6c Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 30 Nov 2021 15:33:32 +0100 Subject: [PATCH 1/4] Add missing error messages in casadm Signed-off-by: Adam Rutkowski --- casadm/extended_err_msg.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/casadm/extended_err_msg.c b/casadm/extended_err_msg.c index 11caf43..c81b5e0 100644 --- a/casadm/extended_err_msg.c +++ b/casadm/extended_err_msg.c @@ -166,6 +166,18 @@ struct { OCF_ERR_NO_LOCK, "Failed to lock cache for management operation." }, + { + OCF_ERR_METADATA_LAYOUT_MISMATCH, + "Metadata layout mismatch" + }, + { + OCF_ERR_CACHE_LINE_SIZE_MISMATCH, + "Cache line size mismatch" + }, + { + OCF_ERR_CACHE_STANDBY, + "Operation not permitted in failover standby mode" + }, /* CAS kernel error mappings*/ { From 5c1987440eb03564285b52a42c7ad5c7f6bc40d3 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 30 Nov 2021 15:49:54 +0100 Subject: [PATCH 2/4] OCF update Failover fixes and Makefile exec bit clear Signed-off-by: Adam Rutkowski --- ocf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ocf b/ocf index e72018b..aac21ca 160000 --- a/ocf +++ b/ocf @@ -1 +1 @@ -Subproject commit e72018bc02478f3ac73ee8984fafaf61f09c425d +Subproject commit aac21cab6321632b4ccb159466b94ea41e148d9a From 8f536829549965dd9676e8b96f349f29b19e9600 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 30 Nov 2021 15:41:32 +0100 Subject: [PATCH 3/4] extended error messages in casadm --failover-activate Signed-off-by: Adam Rutkowski --- casadm/cas_lib.c | 7 ++++++- casadm/extended_err_msg.c | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/casadm/cas_lib.c b/casadm/cas_lib.c index 0f8f0de..2690bb1 100644 --- a/casadm/cas_lib.c +++ b/casadm/cas_lib.c @@ -3011,5 +3011,10 @@ int failover_activate(int cache_id, const char *cache_device) } } - return cas_ioctl(KCAS_IOCTL_FAILOVER_ACTIVATE, &data); + if (cas_ioctl(KCAS_IOCTL_FAILOVER_ACTIVATE, &data) != SUCCESS) { + print_err(data.ext_err_code ? : KCAS_ERR_SYSTEM); + return FAILURE; + } + + return SUCCESS; } diff --git a/casadm/extended_err_msg.c b/casadm/extended_err_msg.c index c81b5e0..c2c6707 100644 --- a/casadm/extended_err_msg.c +++ b/casadm/extended_err_msg.c @@ -178,6 +178,10 @@ struct { OCF_ERR_CACHE_STANDBY, "Operation not permitted in failover standby mode" }, + { + OCF_ERR_FAILOVER_ATTACHED, + "Cache device is attached, please detach it first with --failover-detach" + }, /* CAS kernel error mappings*/ { From 0f6a02402576aaa1fa80d67ec35c8eb33ed59672 Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Tue, 30 Nov 2021 15:42:09 +0100 Subject: [PATCH 4/4] Make device parameter obligatory in failover activate Signed-off-by: Adam Rutkowski --- casadm/cas_lib.c | 8 ++---- casadm/cas_main.c | 2 +- modules/cas_cache/layer_cache_management.c | 33 +++++----------------- 3 files changed, 11 insertions(+), 32 deletions(-) diff --git a/casadm/cas_lib.c b/casadm/cas_lib.c index 2690bb1..9b08437 100644 --- a/casadm/cas_lib.c +++ b/casadm/cas_lib.c @@ -3004,11 +3004,9 @@ int failover_activate(int cache_id, const char *cache_device) { struct kcas_failover_activate data = {.cache_id = cache_id}; - if (cache_device) { - if (set_device_path(data.cache_path, sizeof(data.cache_path), - cache_device, MAX_STR_LEN) != SUCCESS) { - return FAILURE; - } + if (set_device_path(data.cache_path, sizeof(data.cache_path), + cache_device, MAX_STR_LEN) != SUCCESS) { + return FAILURE; } if (cas_ioctl(KCAS_IOCTL_FAILOVER_ACTIVATE, &data) != SUCCESS) { diff --git a/casadm/cas_main.c b/casadm/cas_main.c index 62c3b9d..e15f7c0 100644 --- a/casadm/cas_main.c +++ b/casadm/cas_main.c @@ -1497,7 +1497,7 @@ static cli_option failover_detach_options[] = { static cli_option failover_activate_options[] = { {'i', "cache-id", CACHE_ID_DESC, 1, "ID", CLI_OPTION_REQUIRED}, - {'d', "cache-device", CACHE_DEVICE_DESC, 1, "DEVICE"}, + {'d', "cache-device", CACHE_DEVICE_DESC, 1, "DEVICE", CLI_OPTION_REQUIRED}, {} }; diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index e618d13..6d60e60 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -1819,8 +1819,6 @@ static int cache_mngt_initialize_cache_exported_object(ocf_cache_t cache) int cache_mngt_prepare_cache_device_cfg(struct ocf_mngt_cache_device_config *cfg, char *cache_path) { - int result = 0; - memset(cfg, 0, sizeof(*cfg)); if (strnlen(cache_path, MAX_STR_LEN) == MAX_STR_LEN) @@ -1830,18 +1828,11 @@ int cache_mngt_prepare_cache_device_cfg(struct ocf_mngt_cache_device_config *cfg cfg->uuid.size = strnlen(cfg->uuid.data, MAX_STR_LEN) + 1; cfg->perform_test = false; - if (cfg->uuid.size == 1) { - // empty string means empty uuid - cfg->uuid.size = 0; - return 0; - } + if (cfg->uuid.size <= 1) + return -OCF_ERR_INVAL; - if (cfg->uuid.size > 1) { - result = cas_blk_identify_type(cfg->uuid.data, - &cfg->volume_type); - } - - return result; + return cas_blk_identify_type(cfg->uuid.data, + &cfg->volume_type); } @@ -2250,8 +2241,6 @@ int cache_mngt_activate(struct ocf_mngt_cache_device_config *cfg, struct _cache_mngt_attach_context *context; ocf_cache_t cache; struct cache_priv *cache_priv; - ocf_volume_t cache_volume; - const struct ocf_volume_uuid *cache_uuid; char cache_name[OCF_CACHE_NAME_SIZE]; int result = 0; @@ -2274,17 +2263,9 @@ int cache_mngt_activate(struct ocf_mngt_cache_device_config *cfg, if (result) goto out_cache_put; - if (strnlen(cmd->cache_path, MAX_STR_LEN) > 0) { - cache_volume = ocf_cache_get_volume(cache); - cache_uuid = ocf_volume_get_uuid(cache_volume); - if (cache_uuid->size > 0 && - strcmp(cfg->uuid.data, cache_uuid->data) - != 0) { - result = cache_mngt_check_bdev(cfg, false); - if (result) - goto out_cache_unlock; - } - } + result = cache_mngt_check_bdev(cfg, false); + if (result) + goto out_cache_unlock; context = kzalloc(sizeof(*context), GFP_KERNEL); if (!context) {