From f87e6970a5dfec9a1335423428e10ed772ac4165 Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Wed, 30 Dec 2020 17:58:16 +0100 Subject: [PATCH] Fix listing caches Signed-off-by: Robert Baldyga --- modules/cas_cache/layer_cache_management.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/modules/cas_cache/layer_cache_management.c b/modules/cas_cache/layer_cache_management.c index 2970ebc..eaaebee 100644 --- a/modules/cas_cache/layer_cache_management.c +++ b/modules/cas_cache/layer_cache_management.c @@ -2376,14 +2376,20 @@ put: return status; } +struct cache_mngt_list_ctx { + struct kcas_cache_list *list; + int pos; +}; + static int cache_mngt_list_caches_visitor(ocf_cache_t cache, void *cntx) { - struct kcas_cache_list *list = cntx; + struct cache_mngt_list_ctx *context = cntx; + struct kcas_cache_list *list = context->list; uint16_t id; BUG_ON(cache_id_from_name(&id, ocf_cache_get_name(cache))); - if (list->id_position >= id) + if (context->pos++ < list->id_position) return 0; if (list->in_out_num >= ARRAY_SIZE(list->cache_id_tab)) @@ -2397,8 +2403,14 @@ static int cache_mngt_list_caches_visitor(ocf_cache_t cache, void *cntx) int cache_mngt_list_caches(struct kcas_cache_list *list) { + struct cache_mngt_list_ctx context = { + .list = list, + .pos = 0 + }; + list->in_out_num = 0; - return ocf_mngt_cache_visit(cas_ctx, cache_mngt_list_caches_visitor, list); + return ocf_mngt_cache_visit(cas_ctx, cache_mngt_list_caches_visitor, + &context); } int cache_mngt_interrupt_flushing(const char *cache_name, size_t name_len)