From fd508435d64ca8dd2b01a3f1e7f572e5dccec439 Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Tue, 24 Sep 2024 20:04:09 +0200 Subject: [PATCH 1/2] Fix double completion in engine_wi Signed-off-by: Robert Baldyga --- src/engine/engine_wi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/engine/engine_wi.c b/src/engine/engine_wi.c index 4804038c..decd0301 100644 --- a/src/engine/engine_wi.c +++ b/src/engine/engine_wi.c @@ -90,6 +90,8 @@ static int ocf_write_wi_update_and_flush_metadata(struct ocf_request *req) /* Request was dirty and need to flush metadata */ ocf_metadata_flush_do_asynch(cache, req, _ocf_write_wi_io_flush_metadata); + + return 0; } _ocf_write_wi_io_flush_metadata(req, 0); From 3e21b11703a0ab45c24c71d441016fa711bb093c Mon Sep 17 00:00:00 2001 From: Robert Baldyga Date: Tue, 24 Sep 2024 20:06:24 +0200 Subject: [PATCH 2/2] Remove unnecessary references to req->req_remaining Signed-off-by: Robert Baldyga --- src/engine/engine_inv.c | 2 -- src/engine/engine_wi.c | 2 -- src/engine/engine_zero.c | 1 - src/metadata/metadata.c | 2 -- 4 files changed, 7 deletions(-) diff --git a/src/engine/engine_inv.c b/src/engine/engine_inv.c index 87d41ab2..7a9ec5cc 100644 --- a/src/engine/engine_inv.c +++ b/src/engine/engine_inv.c @@ -36,8 +36,6 @@ static int _ocf_invalidate_do(struct ocf_request *req) { struct ocf_cache *cache = req->cache; - ENV_BUG_ON(env_atomic_read(&req->req_remaining)); - ocf_hb_req_prot_lock_wr(req); ocf_purge_map_info(req); ocf_hb_req_prot_unlock_wr(req); diff --git a/src/engine/engine_wi.c b/src/engine/engine_wi.c index decd0301..a72c5924 100644 --- a/src/engine/engine_wi.c +++ b/src/engine/engine_wi.c @@ -77,8 +77,6 @@ static int ocf_write_wi_update_and_flush_metadata(struct ocf_request *req) /* There are mapped cache line, need to remove them */ - env_atomic_set(&req->req_remaining, 1); /* One core IO */ - ocf_hb_req_prot_lock_wr(req); /*- Metadata WR access ---------------*/ /* Remove mapped cache lines from metadata */ diff --git a/src/engine/engine_zero.c b/src/engine/engine_zero.c index 6306a972..9647e86b 100644 --- a/src/engine/engine_zero.c +++ b/src/engine/engine_zero.c @@ -103,7 +103,6 @@ static int _ocf_zero_do(struct ocf_request *req) ocf_zero_map_info(req); /* Discard marked cache lines */ - env_atomic_set(&req->req_remaining, 1); if (req->info.flush_metadata) { /* Request was dirty and need to flush metadata */ ocf_metadata_flush_do_asynch(cache, req, diff --git a/src/metadata/metadata.c b/src/metadata/metadata.c index 96a9aeb3..f9c8a01f 100644 --- a/src/metadata/metadata.c +++ b/src/metadata/metadata.c @@ -1191,8 +1191,6 @@ void ocf_metadata_flush_do_asynch(struct ocf_cache *cache, * line persistent in case of recovery */ - env_atomic_inc(&req->req_remaining); /* Core device IO */ - result |= ocf_metadata_raw_flush_do_asynch(cache, req, &(ctrl->raw_desc[metadata_segment_collision]), complete);