From 94d27c0f4350cde4a0ecedd9a70117767e45d972 Mon Sep 17 00:00:00 2001 From: Jan Musial Date: Mon, 9 Dec 2019 11:00:13 +0100 Subject: [PATCH] Fix counting occupancy on WB write insert error During error handling in WB write insert we didn't invalidate affected cache lines. Because of that the cache stopped properly (as it's supposed to), but cache lines were marked as inserted which caused occupancy stats to increase even though nothing was succesfully inserted. Signed-off-by: Jan Musial --- src/engine/engine_wb.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/engine/engine_wb.c b/src/engine/engine_wb.c index 7602f8e..dc20fbc 100644 --- a/src/engine/engine_wb.c +++ b/src/engine/engine_wb.c @@ -8,6 +8,7 @@ #include "cache_engine.h" #include "engine_common.h" #include "engine_wb.h" +#include "engine_inv.h" #include "../metadata/metadata.h" #include "../ocf_request.h" #include "../utils/utils_io.h" @@ -98,11 +99,9 @@ static void _ocf_write_wb_complete(struct ocf_request *req, int error) if (req->error) { ocf_engine_error(req, true, "Failed to write data to cache"); - ocf_req_unlock_wr(req); - req->complete(req, req->error); - ocf_req_put(req); + ocf_engine_invalidate(req); } else { ocf_engine_push_req_front_if(req, &_io_if_wb_flush_metadata, true);