From 54027e92aead8b8acbb254da19a53b4a7b385a26 Mon Sep 17 00:00:00 2001 From: Michal Mielewczyk Date: Tue, 9 Apr 2019 05:39:29 -0400 Subject: [PATCH] Allow reset stats for all cores within cache instance at once. Signed-off-by: Michal Mielewczyk --- modules/cas_cache/layer_cache_management.c | 18 +++++++++++------- modules/cas_cache/layer_cache_management.h | 2 +- modules/cas_cache/service_ui_ioctl.c | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index 5d7ff5d..40e863a 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -742,12 +742,12 @@ rd_unlock: return result; } -int cache_mng_reset_core_stats(ocf_cache_id_t cache_id, +int cache_mng_reset_stats(ocf_cache_id_t cache_id, ocf_core_id_t core_id) { ocf_cache_t cache; ocf_core_t core; - int result; + int result = 0; result = ocf_mngt_cache_get_by_id(cas_ctx, cache_id, &cache); if (result) @@ -759,16 +759,20 @@ int cache_mng_reset_core_stats(ocf_cache_id_t cache_id, return result; } - result = ocf_core_get(cache, core_id, &core); - if (result) - goto out; + if (core_id != OCF_CORE_ID_INVALID) { + result = ocf_core_get(cache, core_id, &core); + if (result) + goto out; - ocf_core_stats_initialize(core); + ocf_core_stats_initialize(core); + } else { + ocf_core_stats_initialize_all(cache); + } out: ocf_mngt_cache_unlock(cache); ocf_mngt_cache_put(cache); - return 0; + return result; } static inline void io_class_info2cfg(ocf_part_id_t part_id, diff --git a/modules/cas_cache/layer_cache_management.h b/modules/cas_cache/layer_cache_management.h index 54794c4..62c724f 100644 --- a/modules/cas_cache/layer_cache_management.h +++ b/modules/cas_cache/layer_cache_management.h @@ -25,7 +25,7 @@ int cache_mng_add_core_to_cache(struct ocf_mngt_core_config *cfg, int cache_mng_remove_core_from_cache(struct kcas_remove_core *cmd); -int cache_mng_reset_core_stats(ocf_cache_id_t cache_id, +int cache_mng_reset_stats(ocf_cache_id_t cache_id, ocf_core_id_t core_id); int cache_mng_set_partitions(struct kcas_io_classes *cfg); diff --git a/modules/cas_cache/service_ui_ioctl.c b/modules/cas_cache/service_ui_ioctl.c index d66ec45..ffd8bc4 100644 --- a/modules/cas_cache/service_ui_ioctl.c +++ b/modules/cas_cache/service_ui_ioctl.c @@ -197,7 +197,7 @@ long cas_service_ioctl_ctrl(struct file *filp, unsigned int cmd, GET_CMD_INFO(cmd_info, arg); - retval = cache_mng_reset_core_stats(cmd_info->cache_id, + retval = cache_mng_reset_stats(cmd_info->cache_id, cmd_info->core_id); RETURN_CMD_RESULT(cmd_info, arg, retval);