From 60680b15b2ecc6c946b28c33a5d3ba2727b3f361 Mon Sep 17 00:00:00 2001 From: Michal Mielewczyk Date: Mon, 7 Dec 2020 04:15:51 -0500 Subject: [PATCH] Accessors for `req->info.mapping_error` Signed-off-by: Michal Mielewczyk --- src/engine/engine_common.c | 10 +++++----- src/engine/engine_rd.c | 2 +- src/engine/engine_wb.c | 2 +- src/engine/engine_wt.c | 2 +- src/eviction/eviction.c | 2 +- src/ocf_request.h | 10 ++++++++++ 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/engine/engine_common.c b/src/engine/engine_common.c index 2f25137..6eb5083 100644 --- a/src/engine/engine_common.c +++ b/src/engine/engine_common.c @@ -256,7 +256,7 @@ static void ocf_engine_map_cache_line(struct ocf_request *req, ocf_cleaning_t clean_policy_type; if (!ocf_freelist_get_cache_line(cache->freelist, cache_line)) { - req->info.mapping_error = 1; + ocf_req_set_mapping_error(req); return; } @@ -336,7 +336,7 @@ static void ocf_engine_map(struct ocf_request *req) if (ocf_engine_unmapped_count(req) > ocf_freelist_num_free(cache->freelist)) { - req->info.mapping_error = 1; + ocf_req_set_mapping_error(req); return; } @@ -355,7 +355,7 @@ static void ocf_engine_map(struct ocf_request *req) ocf_engine_map_cache_line(req, entry->core_line, entry->hash, &entry->coll_idx); - if (req->info.mapping_error) { + if (ocf_req_test_mapping_error(req)) { /* * Eviction error (mapping error), need to * clean, return and do pass through @@ -377,7 +377,7 @@ static void ocf_engine_map(struct ocf_request *req) } - if (!req->info.mapping_error) { + if (!ocf_req_test_mapping_error(req)) { /* request has been inserted into cache - purge it from promotion * policy */ ocf_promotion_req_purge(cache->promotion_policy, req); @@ -578,7 +578,7 @@ int ocf_engine_prepare_clines(struct ocf_request *req, promote = ocf_promotion_req_should_promote( req->cache->promotion_policy, req); if (!promote) { - req->info.mapping_error = 1; + ocf_req_set_mapping_error(req); ocf_req_hash_unlock_rd(req); return lock; } diff --git a/src/engine/engine_rd.c b/src/engine/engine_rd.c index 0d999eb..b118262 100644 --- a/src/engine/engine_rd.c +++ b/src/engine/engine_rd.c @@ -243,7 +243,7 @@ int ocf_read_generic(struct ocf_request *req) lock = ocf_engine_prepare_clines(req, &_rd_engine_callbacks); - if (!req->info.mapping_error) { + if (!ocf_req_test_mapping_error(req)) { if (lock >= 0) { if (lock != OCF_LOCK_ACQUIRED) { /* Lock was not acquired, need to wait for resume */ diff --git a/src/engine/engine_wb.c b/src/engine/engine_wb.c index d4c7041..a018969 100644 --- a/src/engine/engine_wb.c +++ b/src/engine/engine_wb.c @@ -189,7 +189,7 @@ int ocf_write_wb(struct ocf_request *req) lock = ocf_engine_prepare_clines(req, &_wb_engine_callbacks); - if (!req->info.mapping_error) { + if (!ocf_req_test_mapping_error(req)) { if (lock >= 0) { if (lock != OCF_LOCK_ACQUIRED) { /* WR lock was not acquired, need to wait for resume */ diff --git a/src/engine/engine_wt.c b/src/engine/engine_wt.c index 040c25c..26d1163 100644 --- a/src/engine/engine_wt.c +++ b/src/engine/engine_wt.c @@ -183,7 +183,7 @@ int ocf_write_wt(struct ocf_request *req) lock = ocf_engine_prepare_clines(req, &_wt_engine_callbacks); - if (!req->info.mapping_error) { + if (!ocf_req_test_mapping_error(req)) { if (lock >= 0) { if (lock != OCF_LOCK_ACQUIRED) { /* WR lock was not acquired, need to wait for resume */ diff --git a/src/eviction/eviction.c b/src/eviction/eviction.c index 51f2ec9..9c5a948 100644 --- a/src/eviction/eviction.c +++ b/src/eviction/eviction.c @@ -125,6 +125,6 @@ int space_managment_evict_do(struct ocf_cache *cache, if (evict_cline_no <= evicted) return LOOKUP_MAPPED; - req->info.mapping_error |= true; + ocf_req_set_mapping_error(req); return LOOKUP_MISS; } diff --git a/src/ocf_request.h b/src/ocf_request.h index 1603d38..08431dc 100644 --- a/src/ocf_request.h +++ b/src/ocf_request.h @@ -381,6 +381,16 @@ static inline void ocf_req_clear(struct ocf_request *req) env_atomic_set(&req->req_remaining, 0); } +static inline void ocf_req_set_mapping_error(struct ocf_request *req) +{ + req->info.mapping_error = true; +} + +static inline bool ocf_req_test_mapping_error(struct ocf_request *req) +{ + return req->info.mapping_error; +} + /** * @brief Return OCF request reference count *