From 719676c444bc0e3b258db3a27f543a3c2e5ef21d Mon Sep 17 00:00:00 2001 From: Adam Rutkowski Date: Wed, 31 Mar 2021 11:13:47 -0500 Subject: [PATCH] Fix repartitioning in request refresh path update_req_info() should include REMAPPED cachelines in repart stats (number of cachelines within request belonging to other than the target partition). Signed-off-by: Adam Rutkowski --- src/engine/engine_common.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/engine/engine_common.c b/src/engine/engine_common.c index c7dbdc1..60bb2d4 100644 --- a/src/engine/engine_common.c +++ b/src/engine/engine_common.c @@ -150,9 +150,13 @@ static void ocf_engine_update_req_info(struct ocf_cache *cache, start_sector = ocf_map_line_start_sector(req, idx); end_sector = ocf_map_line_end_sector(req, idx); + ENV_BUG_ON(entry->status != LOOKUP_HIT && + entry->status != LOOKUP_MISS && + entry->status != LOOKUP_REMAPPED && + entry->status != LOOKUP_INSERTED); + /* Handle return value */ - switch (entry->status) { - case LOOKUP_HIT: + if (entry->status == LOOKUP_HIT) { if (metadata_test_valid_sec(cache, entry->coll_idx, start_sector, end_sector)) { req->info.hit_no++; @@ -169,7 +173,9 @@ static void ocf_engine_update_req_info(struct ocf_cache *cache, start_sector, end_sector)) req->info.dirty_all++; } + } + if (entry->status == LOOKUP_HIT || entry->status == LOOKUP_REMAPPED) { if (req->part_id != ocf_metadata_get_partition_id(cache, entry->coll_idx)) { /* @@ -178,17 +184,12 @@ static void ocf_engine_update_req_info(struct ocf_cache *cache, entry->re_part = true; req->info.re_part_no++; } + } - break; - case LOOKUP_INSERTED: - case LOOKUP_REMAPPED: + + if (entry->status == LOOKUP_INSERTED || + entry->status == LOOKUP_REMAPPED) { req->info.insert_no++; - break; - case LOOKUP_MISS: - break; - default: - ENV_BUG(); - break; } /* Check if cache hit is sequential */